--- name: audit-loop description: 当用户说「审计循环」「循环审计」「audit loop」「温链复审」「审查修复循环」,或要求「审查→修复→再审查直到子代理审计通过」的迭代验证流程时必须加载。编排只读审查子代理对指定对象(提交区间、文件、实现或计划)做循环审计:审查→修复→温链续审→再修复,直至审查子代理明确无误通过。用户点名了子代理(如 oracle、metis、momus 等)就直接用;只说「进行审计循环」未点名时先从最近对话推断并向用户确认;绝不把负责执行 task 的子代理当作审计者。 --- # 审计循环(Audit Loop) ## 这是什么 以「子代理审查 → 修复 → 温链续审 → 再修复」的闭环收敛质量目标:审查者与修复者分离(审查者只读,修复由协调者侧完成),每轮修复后由**同一审查会话**(温链,`task_id` 续用)复核,直到审查者明确零未决发现。 **通过审计循环 = 最后一轮温链续审返回无误(无未决发现、无修复引入的新问题)。** 温链的价值:审查者带着上轮完整记忆只审增量(修复 delta),既不重新翻案已闭合项,也能专门检查修复本身是否引入新回归——这是每轮新开审查会话做不到的。 ## 触发与子代理识别(先于一切) | 用户话语 | 动作 | | --- | --- | | 点名了审查子代理(「用 oracle 审计循环」「metis 审计一遍再修再审」等) | 直接使用该子代理,进入循环 | | 只说「进行审计循环」「走审计循环」等,未点名 | 先从最近对话推断候选(上一轮审计用过谁、近期讨论中提及过哪个审查代理),以「是否用 X」一个定向问题确认;推断不出候选时,列出当前环境可用的审查型子代理让用户选 | | 点名的是执行 task 的子代理(build / Sisyphus-Junior / quick 等执行类) | 拒绝并请用户改选——审计者必须只读,执行者不能审自己生态里产出的修复 | 识别规则: - **不硬编码子代理名单**。判定标准是角色性质:只读咨询/评审型代理(oracle、metis、momus 这类高推理审查者)合格;承担文件修改、task 执行或构建的代理不合格。环境里没有用户点名的代理时,如实报告并请用户改选,不擅自替换。 - 审计对象同样从用户话语获取(提交区间、文件/目录、计划、刚完成的实现);对象模糊时,与确认子代理合并为同一个问题一次问清,不连环追问。 ## 循环协议 每轮三阶段;未通过则回到阶段 2。 ### 阶段 1:审查(ROUND N) - **首轮**:后台新派审查子代理,委托采用六段(TASK / EXPECTED OUTCOME / REQUIRED TOOLS / MUST DO / MUST NOT DO / CONTEXT),写明: - 审计对象与精确范围(如 `git log A..B` 的提交清单、文件集、计划文档); - 本轮改动的完整背景与已有验证证据(已跑过的测试/typecheck 结果,避免审查者重复长构建); - 只读约束(禁改文件、禁状态变更 git 操作、禁长构建); - 输出要求:逐项发现带 file:line 证据、严重级别(阻断/非阻断)、每项给最小修复方向; - 通过条件明示:零发现即 PASS。 - **续轮(温链)**:`task(task_id="ses_...", ...)` 复用**原审查会话**,prompt 只含增量——上轮发现清单、对应修复提交(hash)、修复后验证证据——要求审查者逐项裁定 `FIX-CORRECT / FIX-INCOMPLETE / FIX-INTRODUCES-REGRESSION`,并整体扫描修复是否引入新问题。审查者有上轮记忆,不需要重发背景。 ### 阶段 2:修复 - 收到审查完成通知后先取结果,按发现逐项修复(协调者按正常路由自修或派发;与审查者角色分离)。 - 修复本身必须过定向验证(受影响测试 / typecheck / diff 核对)才算完成;每轮修复按独立意图原子提交,提交 hash 供续审引用。 - 非阻断发现(测试缺口、建议级)默认也修;明确决定不修的,须在续审 prompt 中向审查者声明并给理由,由其裁定是否放行——不许静默跳过。 ### 阶段 3:裁定 - 审查者零未决发现且明确 PASS → **审计循环通过**,向用户报告终态。 - 仍有发现(含 FIX-INCOMPLETE / FIX-INTRODUCES-REGRESSION)→ 回到阶段 2,进入下一轮。 ## 防护与停止条件 - **温链不换人**:续审一律复用原会话 `task_id`;每轮新开审查会话会丢上下文并重新翻案已闭合项,禁止。仅当原会话因基础设施故障不可恢复时才允许重开,且 prompt 须携带前几轮全部发现与修复史。 - **不削弱换通过**:不得以删测试、改断言、压制错误制造 PASS;审查者裁定的必修项修完并通过验证才能送续审。 - **验证先行**:未过定向验证的修复不送审。 - **轮数熔断**:同一发现连续 2 轮修不掉,或连续 3 轮都在发现全新问题(范围蔓延),停止循环,把分歧点摊开给用户裁决——不无限循环消耗预算。 - **审查者只读**:任何轮次都禁止审查子代理直接改文件或执行修复。 ## 终态报告 至少包含:总轮数、每轮发现数与「发现→修复提交」对应关系、最终 PASS 证据(审查者结论摘录或原话要点)、残余非阻断项(若有,含已声明的放行理由)。 ## 示例 - 「审计循环,用 oracle 审 f1560864a..HEAD」→ oracle 首审 → 修复 → oracle 同会话续审 → …直至 PASS。 - 「对这份计划走审计循环」(未点名)→ 上一轮用过 momus 则问「是否继续用 momus?」→ 确认后进循环。 - 「审计循环,派 quick 审」→ 拒绝:quick 是执行类,请改选审查型子代理。