// free · open-source · 无付费墙
Build Your Own AI Agent
从零复刻一个 Claude Code
普通 chatbot 回答你;agent 把同一个模型放进一个循环里——执行、观察、再执行——直到任务真的完成。这本书带你用 TypeScript 从零写出那个循环,不靠任何框架。
// 同一个问题,两种回应
把「修复 cart 的 bug,跑 npm test 直到全绿」这一句,
分别交给 chat 和 agent——
chat 读得懂问题,甚至猜得到 bug 就在 applyDiscount。但它改不动那一行、跑不了那次测试——建议给到,活还得你自己干。这是今天多数人用的 AI。
chat ›
修复 cart 的 bug,跑 npm test 直到全绿
发消息……
chat · 一问一答,没有下一步
你将亲手造出什么
每一章都有一个可运行的里程碑,比上一章明显更强。下面是完整的构建轴——按顺序读,按顺序写。
全书写作中:spike 周已跑通核心能力链,正在写第 0–5 章。结构已定,正文逐章补全、过程公开。
第一部分 核心循环 · agent 的本质
第二部分 从玩具到可用
第三部分 进阶能力
翻开是什么样
阅读体验本身就是这本书的第一个 demo:墨黑标题、灰正文、浅灰代码面、双主题语法高亮、随手展开的 callout。下面是真实排版的一小段。
agent loop 的形状
普通的一次 API 调用是「一问一答」:你发 messages,拿回一段文本,结束。要让模型真正做事,你得把它放进一个循环里,并给它一组工具——执行、观察、再执行,直到它不再请求工具。
// agent loop 的核心:每一轮都重发整个 messages 数组
async function runAgent(messages: Message[]) {
while (true) {
const res = await callModel(messages)
messages.push(res.message)
if (res.stopReason !== 'tool_use') return res
const results = await runTools(res.toolCalls)
messages.push(...results)
}
} 一个坑
while (true) 没有上界。真实实现里必须有 maxTurns 兜底——否则模型反复请求工具时会无限循环,把你的 API 账单烧穿。
// 正文逐章写作中,过程公开
不是源码导读,是从零跟写
同类项目要么收费止步、要么照着成品讲。这本书的不同,是诚实地从空文件开始。
- 免费,而且走得更深
- 对标的付费课止步于 Read/Write/Bash + 基础 loop。我们免费开源,一路走到上下文压缩、子 agent、MCP、skills、评测——多数教程停下的地方,正是这本书的后半程。
- 渐进式构建,逐行看得懂
- 不是把成品代码摊开导读。每一章从上一章的可运行版本出发,只加一个能力,代码按章打 git tag,随时能 diff 对照。
- 讲内部机制,不是用法
- tool use 就是一段 JSON、loop 就是重发数组、MCP 就是 JSON-RPC——把「黑魔法」拆成你能亲手复刻的协议。
- 照实暴露踩过的坑
- spike 周的失败、压缩把问题摘没、子 agent 自信答错——都写进正文,不营造「一切都很顺」的假象。
开始之前
门槛低、花费小,拿一把 key 就能跑。没有付费墙,你只为自己的 API 调用付费。
- 你需要什么
- 会任意一门编程语言就够了。书用 TypeScript,但语言只是表达的载体——你会 Go、Python 也一样跟得下来,需要时让你的 agent 把示例转写成你的语言,机制是相通的。再加 Node 22+ 和一个 API key,就能开工。
- 这要花多少钱
- 全程只为自己的 API 调用付费。spike 周从头跑通核心能力链,实测约 $1;跟完全书预计 不到 $5。对照付费同类平台 CodeCrafters 的年订阅约 $990——这本书免费、开源、无付费墙。
- 用哪个模型
- 正文用 Anthropic Messages 格式:
tool_use/tool_result是消息里显式的 JSON block,「loop 就是重发数组」一一对应,学起来心智负担最低。Anthropic、OpenRouter、DeepSeek 都能直接跑,OpenAI 兼容端点见附录 A。预算敏感推荐 DeepSeek(便宜,且自带 Anthropic 兼容端点)。