运行与源码地图

本阶段先让 nanobot 在一个隔离的学习 workspace 中完成真实请求,再建立源码全貌。不要从 agent/loop.py 第一行开始顺序阅读;先知道不同入口如何进入核心。

对应源码

本阶段主题源码
CLI、配置和第一次请求nanobot/cli/commands.py、nanobot/config/、nanobot/providers/
入口汇合nanobot/agent/loop.py::AgentLoop.process_direct、_process_message
核心执行nanobot/agent/runner.py、nanobot/agent/context.py
持久化和外围表面nanobot/session/manager.py、nanobot/channels/、nanobot/api/、nanobot/sdk/、nanobot/webui/

学习目标

完成本阶段后,你应当能够:

  • 使用当前源码安装 nanobot;
  • 用 DeepSeek 完成一次非流式和一次交互式请求;
  • 说出 CLI、Gateway、API、SDK、WebUI 的主要区别;
  • 找到每个入口最终进入 AgentLoop 的位置;
  • 根据问题选择正确的源码起点。

阅读顺序

  1. 使用 DeepSeek 完成第一次请求
  2. 五个入口与运行边界
  3. 源码目录与阅读顺序
  4. 最小故障定位流程

本阶段暂不做

  • 不连接聊天平台;
  • 不配置 MCP;
  • 不修改 nanobot 源码;
  • 不启动生产部署;
  • 不深入 React WebUI;
  • 不尝试同时理解所有 Provider。

为什么先用 CLI

nanobot agent -m 路径短、外围变量少,最适合证明安装、配置、Provider、模型和 workspace 是否可用。核心调用成功后,再学习 Gateway、Channel 和 WebUI。

最小运行图

flowchart LR
    CMD["nanobot agent -m"] --> CLI["cli/commands.py::agent"]
    CLI --> CFG["加载 Config"]
    CFG --> LOOP["AgentLoop.from_config"]
    LOOP --> DIRECT["AgentLoop.process_direct"]
    DIRECT --> TURN["_process_message / TurnState"]
    TURN --> RUNNER["AgentRunner.run"]
    RUNNER --> DS["DeepSeek API"]
    DS --> RUNNER
    RUNNER --> SAVE["保存 Session"]
    SAVE --> CLI

入口选择速览

目标首选入口
验证配置和模型nanobot status、nanobot agent -m
终端多轮对话nanobot agent
长期运行 Channel、WebUI、Cronnanobot gateway
提供 OpenAI-compatible HTTP 接口nanobot serve
从 Python 程序嵌入Nanobot SDK
浏览器交互WebSocket Channel + Gateway + WebUI

下一步

开始 使用 DeepSeek 完成第一次请求。