跳转至

从零复刻 nanobot:手把手造一个 AI Agent

通过亲手构建一个完整的 AI Agent 框架,深入理解 nanobot 的架构设计。

这部分教程的定位是“教学版复刻”,重点是帮助你理解架构分层和演进过程,不等同于逐行复现当前仓库实现,也不是生产级脚手架。

为什么要从零造一个?

"听过不如看过,看过不如做过。"

用 nanobot 只需要 5 分钟,但理解 nanobot 需要自己造一个。这个教程会带你从一个 40 行的聊天脚本,逐步演进到一个完整的多平台 AI Agent——和 nanobot 走过的路一样。

教程目录

章节 代码量 你将构建 对应 nanobot 模块
第 1 章:最简 Agent ~40 行 能对话的 LLM 客户端 providers/
第 2 章:工具系统 ~200 行 能执行命令、读写文件的 Agent agent/tools/, agent/loop.py
第 3 章:记忆与上下文 ~300 行 有记忆、有人格的 Agent agent/context.py, agent/memory.py, session/
第 4 章:消息总线 ~400 行 能接入多平台的 Agent bus/, channels/
第 5 章:技能与扩展 ~500 行 可动态扩展的完整 Agent agent/skills.py, cron/
第 6 章:从 Mini Agent 到真实项目 架构桥接 从教学版过渡到可维护项目 工程化边界、安全、并发、重试

怎么读这一部分

这部分最容易出现两种低效读法:

  • 一口气通读所有代码,但没有真正跑过任何示例
  • 只复制完整代码运行,却不知道这一章到底新增了什么

更推荐下面两种读法:

读法 A:只想先懂原理

每章优先看这 4 个位置:

  1. 开头的“问题 / 目标”
  2. 中间新增的核心抽象
  3. “本章你真正学到的抽象”
  4. “还缺什么?”

读法 B:边读边敲

每章固定按这个顺序:

  1. 先看“相对上一章,只新增了什么”
  2. 再读核心代码段,而不是一上来就看完整代码
  3. 最后再复制完整代码运行,并做最小验证

如果你不是程序员,建议把这一部分主要当作架构解释材料来读,不必强求自己完整敲完全部代码。

前置要求

  • Python >= 3.11
  • 一个 OpenAI 兼容的 API Key(推荐 OpenRouter
  • 基础 Python 知识(函数、类、async/await)

安装依赖

pip install openai

建议额外准备:

  • 一个单独的虚拟环境,避免和现有项目依赖冲突
  • 可访问的 OpenAI 兼容接口,以及一个已经验证可用的模型名
  • 一个临时工作目录,方便测试读写文件和执行命令

后续章节会按需加入新依赖,每章开头会说明。

约定

  • 每章末尾有完整的可运行代码,直接复制就能跑
  • nanobot/xxx.py 表示 nanobot 源码中的对应模块;行号可能随版本变化
  • 每章的代码都在前一章基础上增量演进,不是推倒重来

如何使用这部分教程

推荐用下面的方式阅读,而不是一次性通读:

  1. 先跑通当前章节代码,确认最小示例可运行
  2. 再对照对应的 nanobot 模块,看真实实现多解决了哪些工程问题
  3. 如果示例代码和仓库实现不完全一致,优先把它理解成“教学简化版”

如果你的目标已经不是“理解原理”,而是“开始做自己的 bot 项目”,建议读完第 5 章后继续看第 6 章。第 6 章会专门说明教学版和真实项目之间还差哪些工程能力,以及应该先补什么、后补什么。

每章都建议做两类验证:

  • 功能验证:代码是否真的能运行出本章目标效果
  • 理解验证:你是否能说清这一章新增了哪一层抽象,以及为什么要加它

每章到底新增了什么

你可以把这 6 章理解成 6 次“只补一层”的递进:

  • 第 1 章:新增 Provider 和最小 messages 状态
  • 第 2 章:新增 ToolRegistryReAct Loop
  • 第 3 章:新增 Session 持久化、Context BuilderMemory
  • 第 4 章:新增 MessageBusChannel,把 Agent 从终端解耦出来
  • 第 5 章:新增 Skills,把“新知识”从底层代码里拆出去
  • 第 6 章:不再加新机制,专门说明教学版和真实项目之间还差什么

配套示例文件

如果你更习惯“先打开代码文件,再对照文档阅读”,可以直接看:

这些示例是按章节整理的教学快照,目的是降低复制 Markdown 代码块的成本。它们依然是教学版,不是生产脚手架。