跳到主要内容
// Part 目标 v0.3 · 章节展开持续修订

从一次 API 调用,到一个几千行的编码 agent

Part 按真实任务需求划分:新能力带来新的工程压力,runtime 再承担新的责任。每个 Part 先固定出口,再从真实代码 checkpoint 反推章节。

每章结构
  1. 1为什么需要它
  2. 2原理拆解
  3. 3动手实现
  4. 4跑起来看效果
  5. 5练习与延伸
全书写作中:目前推进序章与第一部分。旧 00–16 条目只按最接近的 Part 临时归类;旧 ch10、ch12 横跨新边界,进入对应 Part 时再重切。
写作中 暂定 可读
序章

看见模型边界

从一次调用开始

打通终端输入到一次 HTTP 响应的最短路径,并亲手看见“模型调用还不是 agent”。

Part 出口
一个使用裸 fetch 的无状态聊天 CLI;连续追问时会失忆,读者能解释原因。
阶段验收
连续问“我叫什么”,第二轮稳定暴露客户端没有保存历史。
明确延后
跨轮 messages、tool use、agent loop、流式与 SDK。
// 当前章节素材 · 开发本 Part 前重切并冻结
00 导言:把黑盒拆开 写作中 里程碑 → 环境就绪,看完最终成品演示 为什么 agent 没有魔法;最终成品演示;环境准备(Node 22+、API key、~$5 预算)。 01 从 API 调用到聊天 CLI 写作中 里程碑 → 一个会失忆的聊天 CLI——连问"我叫什么"都答不出 messages 与角色;打通一次干净的调用,再套一个无状态对话循环。
第一部分

核心闭环

从 fetch 到 SDK

完成模型调用工具、改变环境、读回结果并继续行动的最小 coding agent,再结束 fetch 的教学使命。

Part 出口
SDK 版 agent 能 Read / Write / Edit / Bash,把失败测试修到通过;fetch 与 SDK 行为等价,runAgent 可复用。
阶段验收
对带失败测试的 fixture 完成“读、改、跑、再改、通过”,并用同一 transcript 验证 fetch / SDK 等价。
明确延后
环境注入、权限、长上下文、持久化和子 agent;不预留空回调。
// 当前章节素材 · 开发本 Part 前重切并冻结
02 Tool Use:给模型一双手 写作中 里程碑 → 能查询指定时区时间的助手 工具即 JSON Schema 声明;tool call 的请求-响应协议;为什么说"模型只是输出了一段 JSON"。 03 Agent Loop:循环直到完成 写作中 里程碑 → 记得住你上一句的代码问答 agent loop 的终止条件;messages 数组的增长方式;实现 read_file 工具。 04 写与改:Write、Edit 与 diff 写作中 里程碑 → 能修真实 bug 的最小编码 agent 全量写 vs 精确替换;old_string/new_string 的设计权衡;终端里渲染 diff。 05 Bash:让 agent 跑命令 写作中 里程碑 → 丢给它一个失败的测试,它自己修到通过 子进程、stdout/stderr 捕获、超时与输出截断;跑测试→看报错→改代码→再跑的自我迭代闭环。
第二部分

可控运行

让最小 agent 在真实项目中安全、可观察地执行,并在拒绝、故障或取消后保持可用。

Part 出口
理解项目环境、过程可见、危险操作受控、工具错误可恢复、网络瞬时错误可重试、Ctrl+C 无孤儿进程。
阶段验收
综合 fixture 覆盖项目指令、权限拒绝、工具失败、429 与 Ctrl+C,失败后当前对话仍可继续。
明确延后
token 预算、compaction、跨 prompt 保存,以及 Todo、子 agent、Skills 和 MCP。
// 当前章节素材 · 开发本 Part 前重切并冻结
06 系统提示词与环境感知 暂定 里程碑 → 注入环境后答对"当前分支有什么未提交改动" system prompt 的分层设计;注入 cwd、git 状态、目录结构;CLAUDE.md 式的项目记忆文件。 07 权限系统:信任但确认 暂定 里程碑 → agent 不再能悄悄 rm -rf 危险操作分级;写操作/命令执行的用户确认交互;白名单与会话内记忆。
第三部分

长任务与 Session

管理持续膨胀的上下文和成本,让工作跨 prompt、跨进程延续。

Part 出口
能观测 token、截断大输出、验证 caching、安全 compaction,并用 JSONL 保存和恢复线性 Session。
阶段验收
压缩后保留原始任务和关键证据,cache usage 可见,关闭重开可恢复且损坏尾行不拖垮 Session。
明确延后
Todo、Skills、子 agent、MCP,以及 Session tree、事务恢复和 run 中途崩溃续跑。
// 当前章节素材 · 开发本 Part 前重切并冻结
08 token 感知:计数、截断与缓存 暂定 里程碑 → API 账单下降;大输出不再把窗口撑爆 token 计数与预算(count_tokens / usage 锚定);大输出截断策略;prompt caching 与账单观测。 09 上下文压缩:compaction 暂定 里程碑 → 长对话不再爆窗口,压缩前后 usage 眼见为实 手写客户端压缩:何时压(锚定真实 usage、双参数防 thrash);怎么压;切点结构性排除 toolResult;硬事实结构化留存。 10 健壮性与会话生命周期 暂定 里程碑 → 429 退避、Ctrl+C 优雅取消、关终端重开对话还在 三层健壮性:网络重试与退避;工具错误三段式编码进 tool_result;session JSONL 持久化。
第四部分

计划与分工

让 agent 显式规划多步任务,并把调查工作交给隔离的只读子 agent。

Part 出口
Todo 跨 prompt 保存进度;Task Tool 复用 runAgent,以新 messages 和只读工具集返回可复查证据。
阶段验收
Todo 对比不漏步骤;explorer 返回文件与行号证据,主上下文保持清晰,usage 与取消完整上卷。
明确延后
Skills、MCP、写操作子 agent、worktree 合并、并行调度和后台任务。
// 当前章节素材 · 开发本 Part 前重切并冻结
11 子 agent:分而治之 暂定 里程碑 → 主 agent 派只读子 agent 全库搜索,自己保持清爽 为什么需要隔离上下文;Task 工具的实现;只读工具集作结构性权限;结果附可复查证据。 12 计划、命令与 Skills 暂定 里程碑 → 开 todo 不漏步骤;/commit skill 按需加载眼见为实 扩展 agent 行为不碰核心 loop:TodoWrite 式工具、斜杠命令、skill 文件的按需加载。
第五部分

开放扩展

沿行为文本和外部工具两条轴增加能力,同时保持核心 loop 不变。

Part 出口
Skills 按需进入 system prompt;MCP 工具经过命名、权限和错误适配后进入同一个 Tool Map。
阶段验收
未加载 Skill 不占 token;真实 MCP server 可握手、分页、调用、失败降级并在退出时干净关闭。
明确延后
通用插件框架、多 Provider、MCP 自动重连、热更新和动态下架。
// 当前章节素材 · 开发本 Part 前重切并冻结
13 MCP:接入外部世界 暂定 里程碑 → 你的 agent 能用上整个 MCP 生态 MCP 协议拆解(不是黑魔法,就是 JSON-RPC);实现 MCP client,接入一个现成 server。
第六部分

验证与交付

把开发者自用的 CLI 变成体验可展示、能力可量化、边界诚实、别人能复现的开源作品。

Part 出口
终端体验完整,eval 产出确定性报告,能力证据分级,干净环境可在三分钟内安装跑通。
阶段验收
产出体验对比 GIF、通过率与成本报告,并由发布 CI 完成干净环境安装和 demo。
明确延后
生产级 harness、IDE / Web、多用户和企业治理。
// 当前章节素材 · 开发本 Part 前重切并冻结
14 终端体验打磨 暂定 里程碑 → 流式 markdown、spinner、工具调用折叠 不依赖重型 TUI 框架的渲染:spinner、工具调用折叠、流式 markdown 渲染;裸 SSE 手解析作练习。 15 评测:怎么知道它变好了 暂定 里程碑 → 三配置的通过率与 token 成本对比表 为 agent 写 mini eval:固定任务集 + 自动判分;用 eval 验证前面每个特性确实有效。 16 发布 暂定 里程碑 → 干净容器里 npm i -g 后三分钟跑通 demo 打包成 npm 全局命令;README 写法;如何让别人三分钟跑起来。
附录

Appendix

A API 提供商选择 暂定 里程碑 → Anthropic 直连 / OpenRouter / 兼容端点 Anthropic 直连 / OpenRouter / 任意 OpenAI 兼容端点(解决国内读者访问问题)。 B 多模型适配层 暂定 在不同模型供应商之间切换的适配层设计。 C 术语表(中英对照) 暂定 全书技术名词的中英文对照表。