前置知识地图

不需要先学完一整套 Python、前端或分布式系统课程再读 nanobot。这里采用“够用再继续”的原则:只补当前源码阅读真正依赖的知识。

最低起点

开始核心路线前,你应当能够:

  • 运行 Python 命令并阅读 traceback;
  • 看懂函数、类、继承、dataclass 和类型标注;
  • 理解 async def、await、Task、Queue、Lock 的基本用途;
  • 读懂 JSON、JSONL 和简单配置;
  • 理解 LLM 的 system/user/assistant/tool 消息;
  • 知道模型可能返回 Tool Call,而不是最终文本;
  • 使用 rg 搜索符号并运行一个 pytest 测试文件。

如果其中一项不熟悉,先阅读本目录对应的“最低要求”文档,不需要扩大学习范围。

前置知识与掌握程度

主题需要掌握到什么程度推荐材料
Python能读类、异常、上下文管理器、抽象基类、dataclass、类型标注Python 基础目录
asyncio理解 coroutine、Task、Queue、Lock、取消和超时,不要求掌握底层事件循环实现Python 与异步编程最低要求
JSON 与 JSONL能区分 JSON 对象、数组和逐行记录,理解 schema 校验JSON 学习目录
LLM API理解请求生命周期、messages、stream、错误和 usageLLM API 集成
Tool Calling理解工具 schema、调用 ID、参数校验、工具结果回填Tool Calling
Context Engineering理解上下文窗口、历史、裁剪、摘要和信任分区上下文工程
Agent Loop理解“观察—决策—行动—反馈—终止”的基本循环Agent 核心
测试与调试能运行单个测试、读断言和 mock,不要求先会完整测试框架源码阅读与调试最低要求
安全知道最小权限、Prompt Injection、工具越权和不可信输入AI 安全
MCP只在学习 MCP 接入时需要;核心 Turn 不依赖MCP 架构与角色
React/TypeScript只在深入 WebUI 时需要基础阅读能力暂不作为核心前置知识

学习依赖图

flowchart LR
    PY["Python 基础"] --> ASYNC["asyncio 最低要求"]
    JSON["JSON / JSONL"] --> API["LLM API"]
    API --> TC["Tool Calling"]
    TC --> LOOP["Agent Loop"]
    CTX["上下文工程"] --> LOOP
    ASYNC --> LOOP
    LOOP --> NB["nanobot 核心源码"]
    TEST["pytest 与源码搜索"] --> NB
    SEC["安全基础"] --> EXT["扩展开发"]
    NB --> EXT
    MCP["MCP 基础"] --> EXT

可以边学边补的内容

以下内容不应阻塞开始阅读:

  • Pydantic 的全部高级用法;
  • aiohttp 的完整 API;
  • React 状态管理;
  • WebSocket 协议细节;
  • Python 打包和 entry point;
  • Linux namespace 或 bubblewrap;
  • 各 Provider 的私有协议差异。

第一次遇到它们时,先理解“它在当前调用链中负责什么”,只有准备修改相关模块时再深入。

自检

如果你能回答下面五个问题,就可以开始“运行与源码地图”:

  1. await 为什么不能随意省略?
  2. asyncio.Queue 与普通列表相比解决了什么问题?
  3. 模型返回 Tool Call 后,为什么不能直接把工具结果当作最终回复?
  4. Session 历史为什么不一定原样进入下一次模型请求?
  5. 一个 pytest 测试失败时,你如何找到被测函数和调用方?

答不上来不代表不能继续。阅读本目录三篇最低要求文档后,再回来回答即可。

下一步

  1. Python 与异步编程最低要求
  2. LLM 消息、流式输出与 Tool Calling
  3. 源码阅读与调试最低要求