Appearance
🐣 小a出师
七步走完,小a攒齐了所有零件:LLM 调用、循环、工具、记忆、交互、安全。老z说:"把它们拼起来,让你的 Agent 真正跑起来。 然后你就算出师了。"
小a激动:"终于!"
老z递上一杯茶:"跑起来后,我们还要回头看看——这一路,你和 pi 学到了什么。"
32.1 完整产物:拼起来
把你写的所有文件组织成项目:
my-agent/
├── llm.ts # 第 25 章:LLM 调用层(~50 行)
├── agent.ts # 第 26 章:Agent 循环(~80 行,核心)
├── memory.ts # 第 28 章:滑动窗口(~30 行)
├── session.ts # 第 28 章:JSONL 存盘(~20 行)
├── cli.ts # 第 29 章:print 交互(~20 行)
├── tools/
│ ├── read.ts # 第 27 章:读文件(含截断+敏感检查)
│ ├── write.ts # 第 27 章:写文件(含范围限制)
│ ├── bash.ts # 第 27 章:执行命令(含危险检查)
│ └── index.ts # 工具注册(第 30 章:registerTool)
└── tsconfig.json总代码量 ~500 行(含注释)。跑起来:
bash
tsx cli.ts然后跟它对话:"读 package.json,告诉我项目用什么依赖"——Agent 会自己调 read,读文件,回答你。
🐣 小a看着自己的 Agent 干活,热泪盈眶:"我造出来了!一个真能干活的 Agent!"
老z欣慰:"是的。它不大,~500 行。但五脏俱全,本质清晰——这就是 Agent 该有的样子。"
32.2 三种范式回顾(呼应第 14 章)
我们造的是 Loop 范式。回头对比三种范式,加深理解:
🧙 我们的 Loop vs RAG vs Graph:
Loop(我们造的) RAG Graph 核心机制 模型自主循环 检索 + 生成 节点 + 边路由 我们实现了吗 ✅(~80 行核心) ❌ ❌ 适合 编程、探索性任务 知识库问答 复杂多分支 我们选 Loop,因为它最适合编程场景,也最简单。 如果你的场景是知识库问答,应该加 RAG;如果是固定流程,该用 Workflow。范式不是选"高级的",是选"合适的"。
32.3 回顾:我们从 pi 学到了什么
七步走完,老z让小a总结 pi 教会它的事。
🐣 核心启示一:Agent 的本质极简
pi 的循环看起来 22KB,但本质就是 80 行——prompt→生成→调工具→回喂→循环。pi 多出来的复杂性,都是在解决"把它做健壮"的工程细节(并发、恢复、压缩)。
理解本质,你不会被复杂吓倒。
🐣 核心启示二:抽象都有代价
pi-ai 的统一接口(近 40 家厂商)很美,但代价是"差异黑洞"(第 17 章)。pi-tui 的差分渲染很炫,但代价是大工作量(第 19 章)。
每一个抽象,都是用复杂度换功能。你的需求决定该不该上。
🐣 核心启示三:简单能跑,胜过复杂完美
我们的 ~500 行 Agent,能干活、能记、安全。它不如 pi 强大,但够用、好懂、能改。
这是 pi 给我们最大的启示:先让简单的东西跑起来,再按需长大。 YAGNI 是终身原则。
32.4 pi 和我们的对照总表
| 维度 | 我们的(~500行) | pi(几万行) |
|---|---|---|
| LLM 调用 | 1 家,裸 fetch | 近 40 家,Provider 抽象 |
| 循环 | ~80 行核心 | ~600 行(并发/恢复/压缩) |
| 工具 | 3 个 | 十几个 + 队列/累积 |
| 记忆 | JSONL + 滑动窗口 | SQLite/JSONL/fork/compaction |
| 交互 | print 模式 | TUI + print + RPC |
| 安全 | 三道防线 | trust-manager + output-guard |
| 评测 | 无 | pi-evals |
| 多 Agent | 无 | 无(单兵哲学) |
| RAG/Graph | 无 | 无(Loop 够了) |
🧙 看这张表,两个洞察:
- 本质一致:我们和 pi 的"骨架"完全一样(LLM + 循环 + 工具 + 记忆)。差的都是"工程打磨"。
- pi 也不全:pi 和我们一样,没做多 Agent、没做 RAG、没做 Graph。克制是成熟的表现。
32.5 下一步:你的 Agent 该往哪走?
出师了,但学习不止。老z给小a指了几条路:
🧙 如果你想深入:
- 读 pi 源码:Part II 讲的每个包,去仓库逐行读。本书是"地图",源码是"实景"。
- 给你的 Agent 加功能:用第 31 章的决策框架,按需长大。
- 做评测:给你的 Agent 加 eval(第 23 章),量化它的好坏。
- 看其他框架:Mastra(附录 F)、Paseo(附录 G)——对比不同哲学。
🧙 如果你想用 pi:
- 直接用 pi(它比我们造的强大得多)
- 写 skill/extension 扩展它(第 11 章)
- 理解它的 trust/hook 机制(附录 H)
32.6 全书结语
🐣 小a的告别
从概念篇的"我是什么",到源码篇的"拆解 pi",再到实现篇的"自己造一个"——小a走完了从懵懂到出师的路。
老z送它一句话:"Agent 不是魔法,是工程。 理解了本质,你就能造、能改、能判断。别被复杂性吓倒,也别为了复杂而复杂。"
小a背上行囊,走进了它自己的工坊。这一次,它是师傅。
🎉 全书完
《大话 Pi:一只 AI 的成长史》到此结束。 三个 Part、32 章、9 个附录(A-I)。
- Part I 概念篇:让你听懂所有术语
- Part II 源码篇:让你看懂 pi 怎么造
- Part III 实现篇:让你自己造一个
希望你读完,不仅理解了 pi,更具备了"判断和造 Agent"的能力。
课后实验(终极)
- 完成你的 Agent:把所有章节的代码拼起来,跑通"读 package.json 并分析"。
- 让它干真活:让它帮你改一个小 bug、写一段代码。感受真实使用。
- 回头看 pi:用你新学的眼光,再去读 pi 的某个文件(比如
agent-loop.ts),你会发现"原来如此"的时刻比之前多得多。 - 决定下一步:你的 Agent 该长大吗?用第 31 章的框架,做你的第一个架构决策。
感谢读完。 如果这本书帮到了你,记得:Agent 的本质是简单的,别让它变复杂。 — 小a & 老z