实践任务索引
本书的实践分四类: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-project | package.json、npm 脚本串联 | 1.3 |
03-modules | 多文件项目、import/export、type-only import | 1.4 |
04-types | 基本类型、对象、optional、readonly、类型擦除 | 2.1 |
05-interfaces | interface、type、函数类型、结构化类型 | 2.2 |
06-unions | union、字面量类型、可辨识联合、never 兜底 | 2.3 |
07-generics | 泛型、class、类型收窄、type guard | 2.4 |
08-promises | Promise、async/await、顺序 vs 并发计时 | 2.5 |
09-async-iterators | 异步生成器、for await、打字机效果 | 2.6 |
10-events-abort | 迷你事件发射器、AbortSignal 中断倒计时 | 2.7 |
11-files | node: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.1、3.2 |
02-streaming | 把假模型改成事件流:start / delta / done | 3.3 |
03-tool-call | 手工走一遍 Tool Call → Tool Result 协议 | 3.4 |
04-agent-loop | 完整 while 循环:两轮完成一次计算任务(基础篇压轴) | 3.5、3.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-cli | readline 命令行循环 | 8.1 |
step02-fake-model | 消息可辨识联合 + FakeModel | 8.1 |
step03-streaming | 流式事件 + StreamFn 抽象 + 打字机 | 8.2 |
step04-agent-loop | Agent Loop + toolCall 内容块 | 8.3 |
step05-tools | 工具注册、参数校验、越界拒绝、输出截断 | 8.3 |
step06-sessions | JSONL 会话保存与 --continue 恢复 | 8.4 |
step07-abort-extensions | AbortController 取消 + Extension 钩子 | 8.5 |
step08-real-provider(可选) | 接入 Anthropic API(无 Key 时离线 demo 仍可跑) | 8.6 |
推荐路线
- 每读一章就做该章实验,不要攒。
- 时间有限时的最小集:
06-unions→09-async-iterators→ B 类全部 → D 类 step04–step07。 - 做 C 类任务前先完成 4.1/4.2 的源码 checkout 与依赖安装,一次准备处处可用。