| 序章 | 00 | 一次 README 读取请求怎样走完 Agent 闭环 | 跟随一次 README 请求,把用户消息、两次模型调用、工具调用与结果、最终回答连成完整闭环。 |
| I · 模型与协议 | 01 | TypeScript 生存集:四个 DemoEvent 怎样进入测试 | 用四个 DemoEvent 串起联合类型、运行时校验、Promise 与 ESM 测试。 |
| I · 模型与协议 | 02 | EventStream:同一个对象怎样交付下一项和最终结果 | 实现 EventStream,让事件先到与消费者先等两种时序都能交付过程项和最终结果。 |
| I · 模型与协议 | 03 | 保存一次完整的工具往返 | 把文本、工具调用和配对结果保存为统一消息,并从模型事件收束出完整 assistant message。 |
| I · 模型与协议 | 04 | ScriptedModel:同一个实例怎样依次播放两个回合 | 实现可重复播放预设回合的 ScriptedModel,保存请求快照并投影稳定事件流。 |
| I · 模型与协议 | 05 | 模型调用:在课程协议和 Provider API 之间转换 | 把课程消息写成 Provider 请求,再将 SSE 响应还原为统一模型事件。 |
| II · 工具与循环 | 06 | 工具调用:一条 echo 请求怎样变成配对结果 | 让 echo 调用经过 schema、Registry 和 executor,返回沿用原 call id 的工具结果。 |
| II · 工具与循环 | 07 | Agent Loop:一次 README 往返怎样调用模型两次 | 实现两轮 Agent Loop:模型提出 read,工具结果写回后再生成最终回答。 |
| II · 工具与循环 | 08 | 四个工具怎样在同一个 workspace 里完成文件任务 | 让 read、write、edit、bash 在同一 workspace 内完成受控的文件与进程操作。 |
| III · 状态与历史 | 09 | 从单次循环到有状态 Agent | 让同一个 Agent 保存跨运行消息,并管理订阅、取消、运行中指令、follow-up 与重入。 |
| III · 状态与历史 | 10 | 从一棵会话树恢复当前对话 | 把完成消息追加为带父指针的 JSONL 记录,再从指定叶子恢复当前对话路径。 |
| III · 状态与历史 | 11 | 历史不动,上下文按预算重建 | 按完整工具交互切分历史,在 token 预算内保留后缀,并用结构化摘要补回早期事实。 |
| IV · 扩展与验证 | 12 | 知识按需进入上下文,代码先过信任门 | 发现项目规则、Skill 与模板,按需送入上下文,并让可信扩展原子注册工具与 hooks。 |
| IV · 扩展与验证 | 13 | 把已有能力接成一个能提交历史的 Runtime | 把 Agent、Session Store、上下文、资源与扩展接成 Runtime,让 prompt 在新消息被接受后完成。 |
| IV · 扩展与验证 | 14 | 给完整的 Pi 建一套独立评测 | 用全新 fixture 运行 Runtime,核对活动路径与文件结果,再输出稳定的分类和计数。 |