Duel Loop

v1.0.0

彻底断绝主代理长期对话中累积的偏见与情绪对产出的裹挟,确保每次产出忠实于需求本身,不再随对话越长越偏离预期。你只负责提需求和最终验收。传统单agent反复调prompt、人工审核输出的工作流,在这里被架构级消解了。角色隔离的双子代理对抗架构:执行和QA子代理运行在完全架空的环境中,看不到主代理的会话上下文、用户画...

0· 88· 1 versions· 0 current· 0 all-time· Updated 5h ago· MIT-0

Install

openclaw skills install duel-loop

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_spawnruntime="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 次验收不通过 → 触发熔断

熔断后主代理必须:

  1. 停止自动修订循环
  2. 向用户输出:
    • 总共经历的轮次和每轮评分趋势
    • QA 在最后一轮提出的剩余扣分点
    • 最后一版草稿的文件路径
    • 建议用户人工介入的原因(持续未通过的共性模式,如维度定义模糊、约束矛盾等)
  3. 等待用户决策:接受当前版本 / 手动调整后继续 / 放弃

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

Version tags

latestvk97acx2ypg013rbnmqeb3ejcks84sv82