Skip to content

实践任务索引

本书的实践分四类:A/B 类是独立的小实验(labs/ 目录,每个都能单独运行);C 类是嵌在源码分析章节里的观察任务(在 Pi 仓库里跑命令、看文件);D 类是最终综合项目 Mini Agent Harness。全部实验都不需要 API Key(唯一例外是 D 类的可选步骤 step08,且无 Key 也能离线跑完它的 demo)。

通用运行方式

每个实验目录都是一个独立的 npm 项目:

bash
cd labs/<>/<实验>
bash
npm install && npm start

每个实验都有 README.md(学习目标、步骤、常见问题、完成标准)和 expected-output.txt(真实运行采集的预期输出,毫秒等浮动数字会有微小差异)。做完后把你的输出与 expected-output.txt 对照即可判断成功。

A 类:TypeScript 基础(labs/typescript-basics/)

实验内容对应章节
01-hello第一个 TS 程序、tsx 与 tsc、第一次类型报错1.2
02-npm-projectpackage.json、npm 脚本串联1.3
03-modules多文件项目、import/export、type-only import1.4
04-types基本类型、对象、optional、readonly、类型擦除2.1
05-interfacesinterface、type、函数类型、结构化类型2.2
06-unionsunion、字面量类型、可辨识联合、never 兜底2.3
07-generics泛型、class、类型收窄、type guard2.4
08-promisesPromise、async/await、顺序 vs 并发计时2.5
09-async-iterators异步生成器、for await、打字机效果2.6
10-events-abort迷你事件发射器、AbortSignal 中断倒计时2.7
11-filesnode:fs/path/process,读文件统计行数2.8
12-errors-tests自定义错误、node:test 单元测试2.9

B 类:Agent 概念(labs/agent-concepts/)

不碰 Pi、不碰网络,用 Fake Model 建立 Agent 心智模型。这四个实验是循序渐进的一条线,请按顺序做

实验内容对应章节
01-fake-model消息类型 + 脚本化假模型:一次「补全」3.13.2
02-streaming把假模型改成事件流:start / delta / done3.3
03-tool-call手工走一遍 Tool Call → Tool Result 协议3.4
04-agent-loop完整 while 循环:两轮完成一次计算任务(基础篇压轴)3.53.6

C 类:Pi 源码观察(嵌在章节内)

这类任务在 Pi 仓库(_sources/pi,按 4.2 checkout)里进行,动手前先完成 4.1 的环境准备。代表性任务:

任务所在章节
从源码启动 Pi、观察 Trust 对话框与启动清单4.1
从 package.json 亲手挖出依赖图4.3
用临时配置目录观察 Pi 生成的文件5.1
grep 验证请求主链路的关键调用点5.2
运行 agent-loop 的真实测试(工具循环用例)5.3
手工构造 session.jsonl 并用脚本检查会话树6.5
用 faux provider 跑一次零 Key 的流式假对话6.1
用 SDK 创建内存 Session 完成零 Key 对话6.11
写最小 Extension 并在启动清单看到它7.1
写最小 SKILL.md 并加载7.2
注册自定义工具与斜杠命令7.3

D 类:Mini Agent Harness(labs/mini-agent-harness/)

最终综合项目:8 个独立可运行的步骤,从 60 行的 CLI 循环长成一个带工具、会话、取消与扩展的完整教学版 Harness。每步都有交互模式(npm start)与脚本化演示(npm run demo,输出可与 expected-output.txt 对照)。总览与设计取舍见 8.0

步骤新增能力对应章节
step01-hello-clireadline 命令行循环8.1
step02-fake-model消息可辨识联合 + FakeModel8.1
step03-streaming流式事件 + StreamFn 抽象 + 打字机8.2
step04-agent-loopAgent Loop + toolCall 内容块8.3
step05-tools工具注册、参数校验、越界拒绝、输出截断8.3
step06-sessionsJSONL 会话保存与 --continue 恢复8.4
step07-abort-extensionsAbortController 取消 + Extension 钩子8.5
step08-real-provider(可选)接入 Anthropic API(无 Key 时离线 demo 仍可跑)8.6

推荐路线

  1. 每读一章就做该章实验,不要攒。
  2. 时间有限时的最小集:06-unions09-async-iterators → B 类全部 → D 类 step04–step07。
  3. 做 C 类任务前先完成 4.1/4.2 的源码 checkout 与依赖安装,一次准备处处可用。

本书分析的 Pi 版本:earendil-works/pi@c13ffe1(2026-07-30)