前置知识地图
不需要先学完一整套 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、错误和 usage | LLM 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 的私有协议差异。
第一次遇到它们时,先理解“它在当前调用链中负责什么”,只有准备修改相关模块时再深入。
自检
如果你能回答下面五个问题,就可以开始“运行与源码地图”:
await为什么不能随意省略?asyncio.Queue与普通列表相比解决了什么问题?- 模型返回 Tool Call 后,为什么不能直接把工具结果当作最终回复?
- Session 历史为什么不一定原样进入下一次模型请求?
- 一个 pytest 测试失败时,你如何找到被测函数和调用方?
答不上来不代表不能继续。阅读本目录三篇最低要求文档后,再回来回答即可。