跳转到内容

第 11 课:SDK 小项目整合

将模型选择、工具权限、上下文加载、事件日志、会话和错误处理整合成一个小型 Repo Agent SDK Shell。

阶段二的终点不是会调用某个 API,而是能把 SDK 组合成一个可控的小型 coding agent shell。这个 shell 不需要功能很多,但必须有清晰边界:参数决定任务模式,模型配置决定推理能力,工具 allowlist 决定权限,上下文加载决定行为标准,事件日志提供证据,会话管理提供连续性。

怎样把前面几课的碎片能力组合成一个可维护的小型 repo agent?

  • Config 解析模型、权限、会话模式和 trace 选项。
  • Runtime factory 创建 session、工具、资源和事件订阅。
  • Task runner 驱动 prompt 并等待 idle。
  • Reporter 把结果、证据和风险交给用户。

下面不是完整源码,而是把本课主线压缩成可以在文档里直接阅读的关键形状。读者即使不打开本地源码,也应该能看出运行时如何组织职责。

async function runRepoAgent(args: Args) {
const config = parseConfig(args);
const runtime = await createRuntime(config);
const trace = attachTrace(runtime.session);
try {
await runtime.session.prompt(config.task);
return reportSuccess({ trace, diff: runtime.diffSummary() });
} catch (error) {
return reportFailure({ error, trace });
}
}
  • 这段源码形状把阶段二所有主题收束到一个 shell。
  • createRuntime() 不只是创建 session,还应该统一模型、资源、工具和会话策略。
  • 成功和失败都要带 trace,否则用户无法判断 agent 做了什么。

为 repo agent 设计启动配置,至少包含模型、权限模式、会话模式、trace 开关和任务文本。

  • 能把 SDK 能力组合成一个小型 shell。
  • 能说明各配置项属于哪个边界。
  • 能设计失败时仍然可复盘的输出。
  1. 实践题:基于本课的省略版源码,补出一个最小实现草图,要求写清输入、输出、副作用和错误处理。
  2. 思考题:本课机制如果只靠 prompt 约束,而不放进 harness 或 runtime,会出现什么工程风险?