nanobot 源码解读 · 02 | 核心引擎:AgentLoop 与 AgentRunner 的分工
逐函数拆解 nanobot 的两个核心引擎:AgentLoop(面向通道的一回合编排,负责会话、权限、持久化、流式投递)与 AgentRunner(纯模型循环,负责调 LLM、执行工具、重试与上下文治理)。本文把『一条消息从通道进来、到答案流出去』的完整链路讲透,并点明权限红线与安全边界落在哪一层。
逐函数拆解 nanobot 的两个核心引擎:AgentLoop(面向通道的一回合编排,负责会话、权限、持久化、流式投递)与 AgentRunner(纯模型循环,负责调 LLM、执行工具、重试与上下文治理)。本文把『一条消息从通道进来、到答案流出去』的完整链路讲透,并点明权限红线与安全边界落在哪一层。
逐函数拆解 nanobot 的上下文装配与治理:ContextBuilder 如何把身份/记忆/技能/历史/运行时上下文拼成 system+history;ContextGovernor 如何在每一轮把消息「修干净」再送进模型——剥离占位符、剔除畸形 tool_call、补齐缺失结果、工具结果预算与超大结果落盘、在飞压缩与历史裁剪。配真实代码、消息流向图与可运行的例子。
逐函数拆解 nanobot 的记忆与状态层:MemoryStore 如何用纯文件 I/O 管理 MEMORY.md/history.jsonl;Dream 引擎如何把会话历史沉淀进长期记忆并用 GitStore 做审计;以及 DeepWiki 完全漏掉的会话压缩层 Consolidator 与 AutoCompact——它们如何把超长会话压成 [Archived Context Summary] 注入系统提示。配真实代码、消息流向图与例子。
逐层拆解 nanobot 的工具体系:Tool 抽象与参数校验(base.py)、注册与发现(registry.py/loader.py)、三类内置工具(shell 命令、文件系统、Web 抓取)各自的执行与安全检查点,以及 runner 如何在每一轮把工具编排起来。重点讲清两条安全边界线——SSRF(security/network.py 的 IP 黑名单 + DNS 钉死)与工作区路径边界(security/workspace_policy.py),并用真实代码与例子说明软边界与硬边界的区别。
逐函数拆解 nanobot 的 MCP 客户端(agent/tools/mcp.py,1573 行):从配置到 ClientSession 的启动建连、stdio/sse/streamableHttp 三种传输、mcp_{server}_{tool} 命名与 allowlist 注册、MCPToolWrapper 如何作为普通 Tool 复用 05 篇的全部机制、MCP JSON Schema 到 OpenAI 函数 schema 的翻译、调用时的超时/取消/重连韧性、连接所有权模型、以及不重启即热重载。配真实代码、消息流向图与一个 filesystem server 的完整例子。
逐函数拆解 nanobot 的 Provider 层:registry.py 如何用一张 ProviderSpec 表做唯一真相源、factory 如何把模型名解析到具体后端、OpenAICompatProvider 如何统一适配几十家 OpenAI 兼容服务、FallbackProvider 如何用熔断器+流式续接做模型降级,以及 base.py 里对瞬态错误的自动重试。配真实代码、路由流向图与可运行例子。
逐函数拆解 nanobot 的多 Agent 委派:SubagentManager 如何用 spawn(后台) 与 run_inline(同步) 两种方法派活、子 Agent 如何复用 02 篇的 AgentRunner 引擎、独立的工具注册表与权限红线如何隔离、结果又如何通过 MessageBus 注入回主 Agent 的 pending 队列。配真实代码、委派流向图与可运行例子。
本系列终篇:拆开 nanobot 如何把一个核心引擎变成可对外服务的产品。Channels 插件机制(BaseChannel + _handle_message 权限/配对/入总线、ChannelManager 的发现/构建/出站合并与重试)、Python SDK(SessionClient/MemoryClient/RuntimeClient + RunStream 事件流)、OpenAI 兼容 API(/v1/chat/completions 的 JSON/多部件/流式 SSE)、以及 cron 定时任务(at/every/cron + 经 submit_cron_turn 回汇总线)。核心结论:四个表面全部汇流到 MessageBus + AgentLoop。配真实代码与汇流图。
覆盖 nanobot 项目定位、AgentLoop 与 AgentRunner 分层、主循环与流式输出等基础与架构面试题,附详细解答。
覆盖上下文工程、记忆系统、工具安全边界与 MCP 集成等 nanobot 核心机制面试题,附详细解答。