从 SDK 进入源码的关键不是把所有文件看一遍,而是把表层 API 背后的工程问题拆出来:谁创建 session,谁加载上下文,谁选择模型,谁注册工具,谁驱动 agent loop,谁持久化历史。
读源码时,怎样避免陷入文件树,而是沿一个已经跑通的行为追问?
- 先从用户可见行为提出问题。
- 再找到负责这个行为的运行时边界。
- 然后只读能解释这个行为的核心代码。
- 最后把结论回写到自己的心智模型。
源码推演(省略版)
Section titled “源码推演(省略版)”下面不是完整源码,而是把本课主线压缩成可以在文档里直接阅读的关键形状。读者即使不打开本地源码,也应该能看出运行时如何组织职责。
const readingCard = { behavior: "A prompt produces streamed text and tool events", question: "Who turns model chunks into session events?", runtimeBoundary: "session -> agent loop -> provider stream", evidence: ["message update", "tool execution", "turn end"],};- 源码阅读卡片比路径清单更适合教学,因为它强迫学生先说清楚要验证什么。
behavior是入口,question是阅读目标,evidence是读完后的证明。- 后续第 13 到 18 课都可以用这个卡片格式推进。
为“工具调用完成后模型为什么会继续回答”写一张源码阅读卡片。
- 能把 SDK 行为转成源码问题。
- 能避免按目录树盲读。
- 能用证据而不是印象说明自己读懂了。
- 实践题:基于本课的省略版源码,补出一个最小实现草图,要求写清输入、输出、副作用和错误处理。
- 思考题:本课机制如果只靠 prompt 约束,而不放进 harness 或 runtime,会出现什么工程风险?