@antiAIvo: 把之前写的「从零手写 Agent」教程 整理成了一个 GitHub 开源项目:NamiAgent 这不只是一个教程,也是一个能在你电脑上跑起来的 Agent: 在指定的工作区里读写文件、执行命令、接入 MCP、记住你是谁 写文件、跑命令前…
摘要
作者将「从零手写 Agent」教程整理成开源项目 NamiAgent:一个既能当 11 课图文+代码教程、又能在本地跑起来的 Agent,支持读写文件、执行命令、MCP 接入、长期记忆与网页端可视化,仅依赖 openai 一个包。
查看缓存全文
缓存时间: 2026/10/31 07:26
把之前写的「从零手写 Agent」教程 整理成了一个 GitHub 开源项目:NamiAgent
这不只是一个教程,也是一个能在你电脑上跑起来的 Agent: 在指定的工作区里读写文件、执行命令、接入 MCP、记住你是谁 写文件、跑命令前都会先问你,你点头才执行
还带一个本地网页端: 左边看它每一步怎么想、调了什么工具 右边看每次发给模型的完整上下文,一圈圈怎么变长
18 篇图文的原稿和 11 课代码都放进去了,每课一个目录,直接能跑
教程部分,从 100 行的最小循环开始,一课加一个能力: 工具、权限、上下文管理、Skills、MCP、子 Agent、计划、记忆 后 7 篇拿这些零件当尺子,拆解 Claude Code、Codex、Pi、Grok、DeepSeek Harness、OpenClaw
只依赖 openai 一个包,没用任何 Agent 框架 上一个项目 NamiGPT 讲模型本身,这个讲给模型加上手脚
aa1143/NamiAgent
Source: https://github.com/aa1143/NamiAgent
NamiAgent
零基础入门 AI Agent 的基础教程
不只是教程,也是一个能在本地跑起来的 Agent,自带网页端,每一步都看得见
![]() |
![]() |
| 写 hello.py 并运行:写文件、跑命令前弹窗确认 | 长期记忆:新会话里它还记得你是谁 |
Agent 没有什么神秘的,核心就是一个 while 循环:调模型、执行工具、把结果写回上下文,再调模型。
它是教程:从 100 行的最小循环开始,一课加一个能力:工具、权限、上下文管理、Skills、MCP、子 Agent、计划、记忆。最后拆解 Claude Code、Codex 等主流 Agent 是怎么做的。内容是我自己一步步学习、动手实践后整理出来的。
它也是一个能用的本地 Agent:在你指定的工作区里读写文件、执行命令、接入 MCP、记住你是谁;写文件、跑命令前都会先问你。python web/app.py 打开网页端,左边看它每一步怎么想、调了什么工具,右边看每次发给模型的完整上下文。
- 每课一个可运行的快照:
lessons/lesson-01到lesson-11,每个目录都是学完这一课时的完整代码,可以直接运行,也可以对比相邻两课的差异 - 不绑定厂商:使用 OpenAI 兼容接口,默认用 DeepSeek,换模型只需要改两个环境变量
- 测试不花钱:第 3 课起每课都有测试,第 11 课共 49 个,用假模型跑,不需要 API Key
- 只依赖
openai一个包:没有任何 Agent 框架 - 本地网页端:在浏览器里看每一步,上下文怎么变长、模型怎么想、调了什么工具,一目了然(见下文)
先学 NamiGPT 搞懂模型本身,再学 NamiAgent 搞懂模型外面那一圈。
课程目录
第一部分:手写核心
| 课 | 文章 | 代码 | 这一课新增 |
|---|---|---|---|
| 01 | 最小循环 | lesson-01 | agent.py:三个工具 + 一个 while 循环 |
| 02 | 工具系统 | lesson-02 | tools.py:注册表、统一执行器 |
| 03 | 权限 | lesson-03 | permissions.py:硬规则 → 风险分级 → 人工确认 |
| 04 | 上下文管理 | lesson-04 | context.py:截断 → 清理 → 摘要,会话持久化 |
| 05 | Skills | lesson-05 | skills.py:AGENTS.md 常驻,技能按需加载 |
| 06 | 接入聊天软件 | lesson-06 | telegram.py、bot.py:常驻、聊天确认、白名单 |
| 07 | 定时任务与心跳 | lesson-07 | scheduler.py:无人值守的预授权、心跳 |
第二部分:补上主流能力
| 课 | 文章 | 代码 | 这一课新增 |
|---|---|---|---|
| 08 | MCP | lesson-08 | mcp_client.py:stdio MCP 客户端 |
| 09 | 子 Agent 与多 Agent | lesson-09 | subagent.py:独立上下文,并行只读 |
| 10 | 计划 | lesson-10 | planning.py:待办清单、由代码强制只读的计划模式 |
| 11 | 记忆 | lesson-11 | memory.py:长期记忆(每条确认)、会话检索 |
第三部分:拆解主流 Agent(只有文章,没有新代码)
| 课 | 文章 |
|---|---|
| 12 | 拆解 Claude Code |
| 13 | 拆解 Codex |
| 14 | 拆解 Pi |
| 15 | 拆解 Grok Bot |
| 16 | 拆解 DeepSeek Harness |
| 17 | 拆解 OpenClaw 与 Hermes |
| 18 | 总对照表 |
第三部分写的是截至 2026 年 10 月的情况。这些产品更新很快,细节请以各自官方文档为准。
配套可视化
Agent 是怎么工作的:10 章逐格播放,看上下文每转一圈怎么变长、在哪里出问题,以及各种 Agent 技巧到底在上下文里做了什么。下面是其中第 3 章,配合第 1 课看效果最好:

快速开始
需要 Python 3.10+。
git clone https://github.com/aa1143/NamiAgent.git
cd NamiAgent
pip install -r requirements.txt
export API_KEY=你的模型密钥
# 默认用 DeepSeek;换其他 OpenAI 兼容模型:
# export BASE_URL=https://... MODEL=模型名
export NAMI_WORKSPACE=~/agent-workspace # 第 3 课起,Agent 只能操作这个目录
mkdir -p $NAMI_WORKSPACE
cd lessons/lesson-05
python agent.py
跑测试(不需要 API Key):
cd lessons/lesson-11 && pytest -q
网页端:在浏览器里看 Agent 的每一步
页首的两张动图就是网页端的真实运行录屏。
python web/app.py --demo # 演示模式:脚本化的假模型,不需要 API Key,先看看效果
python web/app.py # 用真实模型,和命令行版一样读 API_KEY / BASE_URL / MODEL
macOS 也可以直接双击 web/start.command:自动建虚拟环境、装依赖、让你粘贴 API Key(直接回车就是演示模式),然后打开浏览器。Agent 的工作区默认是 ~/agent-workspace。
然后打开 http://localhost:8765 :
- 左边:每一次调用模型、模型的思考过程、调用了什么工具、工具返回了什么
- 右边:这一次发给模型的完整上下文。每一块是谁写的、大概占多少 token,转一圈就长一截
- 权限确认:写文件、跑命令这类有副作用的操作会弹窗,要你点头才执行(第 3 课的规则)
- 开头写
/plan让它先出计划,批准后再动手(第 10 课)
网页端直接导入 lessons/lesson-11 的 Agent,没有改课程代码,只换了三个接口:模型客户端(把每次发出去的上下文推给浏览器)、handle_call(把工具调用推给浏览器)、权限确认的 ask(终端 input() 换成弹窗)。只用 Python 标准库,不需要装 Web 框架。
DeepSeek 默认开启思考模式,模型返回的思考过程(reasoning_content)会单独显示。带工具调用时,这段思考要原样放回上下文再发给 API,右边的上下文面板里也能看到它。界面里展示的思考只是模型写出来的文字,不等于模型内部真实的计算过程。
环境变量
| 变量 | 作用 | 默认值 |
|---|---|---|
API_KEY | 模型密钥 | 必填 |
BASE_URL | OpenAI 兼容接口地址 | https://api.deepseek.com |
MODEL | 模型名 | deepseek-flash |
NAMI_WORKSPACE | Agent 的工作区(第 3 课起) | 启动时所在的目录 |
NAMI_STATE_DIR | 会话记录、定时任务等状态(第 4 课起),放在工作区之外 | ~/.nami-agent |
第 6 课起的 bot.py 还需要 TG_BOT_TOKEN 和 TG_ALLOWED_USERS,见第 6 课。第 8 课起可以接入 MCP 服务器,配置放在 ~/.nami-agent/mcp.json,格式见第 8 课。
安全提醒
这是教学代码,Agent 会真的执行命令、读写文件。第 3 课的权限机制能挡住误操作和低成本的越界,挡不住有意的攻击(第 3 课第八节专门讲了它防不住什么)。
请在专门的工作区目录里运行,不要把工作区指向你的主目录。
这个仓库不是什么
NamiAgent 是一个看得懂的最小 Agent,不是生产级框架,也不打算和 Claude Code、Codex 比功能。目标是让你读完之后,再看任何 Agent 产品,都知道它在上下文里做了什么。
相关
- NamiGPT:从零手写 GPT-2
- 图解大模型:推理、训练、Agent 三部分逐格可视化
- 从零手写 Agent 图文版
License
代码采用 MIT,docs/ 下的文章采用 CC BY-NC 4.0。
相似文章
@antiAIvo: 想学会如何用 AI Agent 写代码? 最好的免费教程之一,是斯坦福这门课 CS146S The Modern Software Developer 讲师 Mihail Eric 不是学院派教授 斯坦福 NLP 组出身,做过 Alexa…
推荐斯坦福免费课程 CS146S《The Modern Software Developer》(讲师 Mihail Eric),并介绍配套的开源项目 NamiAgent——一个从零手写 AI Agent 的中文教程,逐步实现工具、权限、上下文、Skills、MCP、子 Agent、记忆等核心能力,附网页端可视化调试。
@antiAIvo: 如何从零手写一个Agent?整了一套 Agent 教程,共18 篇 Claude Code、Codex 这些编码 Agent 内核其实就是一个循环: 模型请求工具,代码执行,结果放回对话,直到模型不再请求 这套教程从100 行代码开始 用…
分享了一套共18篇的手写Agent教程,从100行Python代码起步,逐步实现工具调用、权限、上下文管理、Skills、MCP、子Agent、计划与记忆等核心模块,并对照拆解Claude Code、Codex、Grok Bot、DeepSeek Harness等主流编码Agent的实现取舍,指出其最大分歧在于安全层应交给提示词还是代码。
@yibie: 每个程序员都应该自己手写一个 agent。 只要 50 行代码,很有趣,而且会让你惊讶。但为了获得最大收获,请做这两件事: 第一,从零手写。打开空白文本文件,自己敲完每一行代码。不要用任何 AI,连自动补全都不要。 第二,只依赖标准库文档…
本文鼓励程序员亲手手写一个简单的AI agent(约50行代码),以加深对agent工作机制的理解,并建议从零手工编写、只依赖标准库和API文档。
@XAMTO_AI: 想自己写一个编码 Agent,原理文章没少看,一动手就卡在第一行。 最近发现《动手学 Pi》这本中文教程,从一段真实的离线 Agent 日志开始,带你把 15 个关卡从头过一遍。 真正从零撸一个完整的编码 Agent,每一步都有可运行的代…
介绍中文教程《动手学 Pi》,通过 15 个可运行 checkpoint 从零实现一个 Pi-style 编码 Agent,涵盖协议、工具循环、会话树、上下文压缩与评测,每个章节配有正文、commit、测试和故障实验。
@vintcessun: 今晚翻到一个学习路线项目,重新理解了Agent该从哪开始学。以前总觉得Agent就是堆工具和框架,但它的核心是那个“观察-思考-执行”循环,以及harness工程对权限、状态、回溯的组织。它把学习拆成从0构建最小Agent loop到最终…
一个名为Agent-Learning-Hub的开源学习路线项目,将AI Agent学习拆分为8个阶段,从构建最小Agent loop到生产部署,提供可执行的todo list和推荐资源,由Datawhale社区成员维护。

