1. 第一条调用链:创建 Agent
从 ctx.agents.create() 开始,追到 factory、agent-loop 的 setupAndPublish、SessionStore prepare/enter/announce、AgentRegistry enter,再看 driver 启动。把每个 rollback 点画出来。
2. 第二条调用链:一次纯文本回答
追 user inbox → turn/start → pre-step → step/start → deriveMessages → systemPrompt.assemble → agent/request → llm.stream → assistant/chunk → assistant/message → step/end → turn/end。
3. 第三条调用链:一次工具调用
在第二条基础上继续追 tool/call → tools/pre-execute → execute → post-execute → tool/result → 下一 step。重点看工具结果何时成为 model-visible。
4. 第四条调用链:恢复会话
从 persistence loader 得到事件 → validate/freeze → Session surface rebuild → agent resume → 下一次 deriveMessages。验证所有运行时状态是否真的能从 log 重建。
5. 第五条调用链:替换 Provider
选 shell 或 persistence seam:从 Definition 看接口,分别看两个 provider,再看 consumer。最后只改配置切换 provider,确认 consumer 源码不变。
6. 每次精读都做“六栏笔记”
| 文件 | 提供 | 依赖 | 事件 | effect/dispose | 不变量 |
|---|---|---|---|---|---|
| 例:agent-loop | ctx.agentLoop / factory | sessions,llm,tools,prompt | agent/* | driver ownership | 发布事务、turn/step闭合 |