Skip to content

🐣 小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(我们造的)RAGGraph
核心机制模型自主循环检索 + 生成节点 + 边路由
我们实现了吗✅(~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 够了)

🧙 看这张表,两个洞察:

  1. 本质一致:我们和 pi 的"骨架"完全一样(LLM + 循环 + 工具 + 记忆)。差的都是"工程打磨"。
  2. 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"的能力。


课后实验(终极)

  1. 完成你的 Agent:把所有章节的代码拼起来,跑通"读 package.json 并分析"。
  2. 让它干真活:让它帮你改一个小 bug、写一段代码。感受真实使用。
  3. 回头看 pi:用你新学的眼光,再去读 pi 的某个文件(比如 agent-loop.ts),你会发现"原来如此"的时刻比之前多得多。
  4. 决定下一步:你的 Agent 该长大吗?用第 31 章的框架,做你的第一个架构决策。

感谢读完。 如果这本书帮到了你,记得:Agent 的本质是简单的,别让它变复杂。 — 小a & 老z