Self Evolution
双子代理执行-审核流水线。主代理负责调度和验收,不直接产出敏感内容。
<!-- baseDir = /root/.openclaw/workspace/skills/duel-loop -->触发
用户创建/修改规则、方案、协议、策略,且明确要求走 QA 流程。关键词:走QA、审核、QA、质量检查、评审、review。
核心原则
主代理禁止直接执行以下类型的内容生成:
- 拟定规则/方案/协议文本
- 总结、归纳、建议类输出
- 任何高度依赖上下文质量的创造性或分析性工作
主代理的唯一职责:调度、传递上下文、验收、打回。
流程总览
Dispatch(执行子代理) → Review(QA子代理) → Accept/Reject(主代理)
↓ Reject
Dispatch(修订子代理) → Review(QA子代理) → ...
↓ 5次未通过
CIRCUIT BREAK → 报告用户
Step 1: Dispatch(派发执行)
将任务委派给执行子代理(sessions_spawn,runtime="subagent",mode="run")。
执行子代理 prompt 要求:
- 包含任务描述(做什么)
- 包含必要的上下文(相关文件路径、背景信息、约束条件)
- 不包含主代理的完整会话历史(避免污染,只传递任务相关上下文)
- 输出写入
drafts/<name>-v1.md
上下文传递规则:
- 只传递与任务直接相关的文件内容,不传递完整会话上下文
- 如果需要引用会话中的具体信息,由主代理提取关键片段后注入 prompt
- 执行子代理是隔离环境,不应感知到主代理的身份/用户画像/memory
Step 2: Review(QA 审核)
派 QA 子代理审核执行子代理的产出。QA prompt 模板见 templates/qa-review-prompt.md。
评分维度(满分 10):
| 维度 | 分值 | 评估标准 |
|---|---|---|
| 根因分析深度 | 2 | 是否追溯到问题本质而非仅描述表象;是否识别出因果链条和递进关系 |
| 方案完备性 | 3 | 是否覆盖所有已识别的子问题;边界条件、异常路径、默认行为是否明确 |
| 领域无关性 | 2 | 规则/方案是否不绑定特定实现细节,具有通用可复用性 |
| 可操作性 | 2 | 是否有明确的执行步骤或判断标准,而非模糊原则;执行者能否无歧义地落实 |
| 副作用评估 | 1 | 是否评估了方案引入的新风险/开销/兼容性问题,并给出控制措施 |
Step 3: Accept/Reject(验收)
主代理对 QA 结果进行验收。
通过条件:QA 评分 10/10
打回条件:QA 评分 < 10/10
打回时,主代理将 QA 反馈(评分 + 扣分点 + 改进建议)作为输入,派发新的执行子代理进行修订。修订子代理必须收到:
- 上一版本草稿路径
- QA 审核的完整评分和扣分点
- 明确指令:"根据以下 QA 反馈修订方案"
修订后文件版本号递增:<name>-v2.md。
Step 4: Approve(落地)
10/10 通过后,主代理将草稿内容落地到目标生产文件。
熔断机制
5 次验收不通过 → 触发熔断。
熔断后主代理必须:
- 停止自动修订循环
- 向用户输出:
- 总共经历的轮次和每轮评分趋势
- QA 在最后一轮提出的剩余扣分点
- 最后一版草稿的文件路径
- 建议用户人工介入的原因(持续未通过的共性模式,如维度定义模糊、约束矛盾等)
- 等待用户决策:接受当前版本 / 手动调整后继续 / 放弃
QA Prompt 构造
派发 QA 子代理时,读取模板后填入实际参数:
read {baseDir}/templates/qa-review-prompt.md
占位符替换:
{{DRAFT_PATH}}→ 草稿文件绝对路径{{ROUND}}→ 当前轮次(1-5){{PREV_CONTEXT}}→ 上一轮 QA 评分和扣分点(第 1 轮为空){{TASK_BRIEF}}→ 用户原始需求的简要描述(由主代理从会话中提取,不超过 200 字)
与主代理上下文的关系
| 角色 | 职责 | 看到的上下文 |
|---|---|---|
| 主代理 | 调度、验收、打回、落地、熔断处理 | 完整会话上下文 |
| 执行子代理 | 产出方案/修订文本 | 仅任务描述 + 相关文件内容 |
| QA 子代理 | 审核方案质量 | 仅草稿文件 + 评分维度 + 上一轮反馈 |
执行子代理和 QA 子代理之间没有直接通信,全部通过主代理中转。
目录结构
skills/self-evolution/
├── SKILL.md # 本文件
└── templates/
└── qa-review-prompt.md # QA 子代理 prompt 模板
草稿存放于 workspace 根目录:drafts/<name>-v<n>.md