跳转到内容

子代理驱动开发(SDD)模式

子代理驱动开发(SDD)模式

学习目标

读完本章后,你将能够:

  • 理解 SDD 模式的核心原则:新鲜子代理 per task + 两阶段审核
  • 设计按任务复杂度路由到不同模型的策略
  • 处理子代理的四种状态报告(DONE / DONE_WITH_CONCERNS / NEEDS_CONTEXT / BLOCKED)
  • 对比 SDD 与并行会话执行、手动执行的适用场景

前置知识

建议先阅读:


核心模式

为什么用子代理而非单 Agent 连续执行

单 Agent 在长会话中面临上下文膨胀上下文污染两个问题:

  • 上下文膨胀:随着实现推进,会话历史越来越长,压缩/摘要会丢失关键细节
  • 上下文污染:前一个任务的决策和代码会不自觉影响后一个任务

SDD 模式的解决方式:每个任务分派全新的子代理,由控制器精心构造其指令和上下文。子代理只获得完成任务所需的最小信息,不受之前任务的污染。控制器自身的上下文只用于协调,不用于实现。

两阶段审核架构

关键顺序约束:必须先通过规格合规审核,才能进入代码质量审核。颠倒顺序会导致质量审核在规格尚未满足时浪费精力。

规格合规审核检查:代码是否实现了计划要求的全部内容?是否实现了计划未要求的内容?(防止过度工程)

代码质量审核检查:实现是否健壮?是否有安全隐患?是否有代码异味?测试是否充分?

模型路由策略

SDD 模式为不同角色选择不同的模型,以平衡成本、速度和质量:

角色模型选择理由
实现(1-2 文件,规格完整)最快/最便宜的模型机械实现任务,不需要深度推理
实现(多文件协调,集成)标准模型需要理解跨文件依赖
架构 / 设计 / 审核最强模型需要广泛理解和判断力

复杂度信号

  • 触及 1-2 个文件 + 完整规格 → 便宜模型
  • 触及多文件 + 集成考量 → 标准模型
  • 需要设计判断或广泛代码库理解 → 最强模型

子代理状态处理

实现子代理报告四种状态之一:

状态含义控制器动作
DONE任务完成进入规格合规审核
DONE_WITH_CONCERNS完成但有疑虑先阅读疑虑内容,判断是否影响正确性或范围,再决定是否进入审核
NEEDS_CONTEXT缺少必要信息提供缺失上下文,重新分派
BLOCKED无法完成任务评估阻塞原因:上下文问题 → 补充上下文重试;需要更多推理 → 升级模型;任务过大 → 拆分子任务;计划错误 → 上报人类

关键原则:永远不要忽略子代理的失败报告。如果子代理说它卡住了,一定有什么需要改变。不要用相同模型重试相同指令。

SDD vs. 其他执行模式

维度SDD并行会话执行手动执行
会话同一会话内跨会话同一会话
上下文每个子代理独立每个会话独立共享,持续污染
审核自动两阶段手动检查点无审核
速度快(无需人类介入)中等(需要会话切换)
安全性高(审核门控)中等
成本较高(每任务 3 次子代理调用)中等最低

选择指南

  • 任务 mostly 独立 + 同一会话 → SDD
  • 任务紧密耦合 → 手动执行或 brainstorm 后再拆分
  • 需要跨会话并行 → 并行会话执行

陷阱与对策

陷阱表现对策
上下文泄漏控制器把整个会话历史传给子代理只构造任务所需的最小上下文,包含场景设定和文件范围
跳过审核顺序先做质量审核再做规格审核在 Skill 中用 flowchart 和 Red Flags 强制执行顺序
子代理读取计划文件子代理花费 token 阅读完整计划控制器预先提取任务全文直接注入,不让子代理读文件
并行分派冲突同时分派多个实现子代理编辑相同文件严格串行分派,一次只一个任务在实现中
审核循环无限审核者反复拒绝,实现者反复修复失败设定最大循环次数(通常 3 次),超限后控制器介入分析

设计取舍

为什么不用并行实现子代理?

并行执行看似更快,但存在文件编辑冲突的风险。SDD 选择严格串行:一个任务完成后才分派下一个。这在多文件修改时尤为重要——前一个任务的提交可能改变后一个任务的基线。

为什么每个任务需要两个审核子代理而非一个?

合并审核会导致审核者混淆”规格是否满足”和”代码质量如何”两个不同维度的判断。分离审核确保:

  1. 规格审核者只关心”做对了事”,不关心代码风格
  2. 质量审核者假设规格已满足,专注”做得好不好”

为什么需要自审 + 实际审核两轮?

自审是子代理自己的第一道检查,能捕获明显遗漏。但自审不可靠——子代理可能看不到自己的盲点。实际审核由独立子代理执行,提供新鲜视角。两者缺一不可。

参考来源