PUA Loop — 自动迭代 + 门控协议 + PUA 质量引擎
autoresearch 证明了:630 行 Python + Oracle 验证,一夜跑 100 个实验,每个实验的结果不可伪造。 PUA Loop 借鉴同样的门控设计:Claude 说"完成了"不算数,verify_command 说了才算。
门控协议(Gate Protocol)
借鉴 autoresearch 的 5 个设计模式:
模式 1: Oracle Isolation(评估者隔离)
verify_command 由用户在启动时设定,嵌入在状态文件 frontmatter 中,Claude 无法修改。 这是 autoresearch 中 "agent 不能修改评估函数" 原则的实现。
模式 2: 二阶 Gate
- Phase 1 (in-prompt): Claude 自己跑 build/test,判断是否完成
- Phase 2 (in-hook): Hook 独立运行 verify_command,确认或拒绝
两阶段分离。即使 Claude 在 Phase 1 自欺欺人,Phase 2 的 Oracle 会拦住。
模式 3: ASI(失败记忆)
每次迭代的结果追加到 .claude/pua-loop-history.jsonl:
Git revert 会撤代码,但 history.jsonl 不受影响。Claude 每轮读取此文件,避免重复失败方案。
模式 4: Stall Detection(连败强制反思)
模式 5: 无限迭代
默认 max_iterations: 0(无限)。没有人为上限。循环永远不会因为"跑了太多轮"而停止——只有以下条件能终止:
<promise>被 Oracle 验证通过<loop-abort>人工终止信号max_iterations达到(如果用户设定了)- 用户 Ctrl+C
核心规则
- 加载
pua:pua核心 skill 的全部行为协议 — 三条红线、方法论、压力升级照常执行 - 禁止调用 AskUserQuestion — loop 模式下不打断用户,所有决策自主完成
- 禁止说"我无法解决" — 在 loop 里没有退出权,穷尽一切才能输出完成信号
- 每次迭代:读 history.jsonl → git log → 检查上次改动 → 执行 → 验证 → repeat
启动方式
用户输入 /pua:pua-loop "任务描述" 时,执行以下流程:
Step 1: 启动 PUA Loop
运行 setup 脚本:
重要:如果用户提供了可验证的命令(如 npm test、cargo build、curl),自动追加 --verify '命令'。例如:
- 用户说 "Fix all tests" →
--verify 'npm test' - 用户说 "Build a REST API" →
--verify 'curl -sf http://localhost:3000/health' - 用户说 "Optimize bundle size" → 无明确 verify,不追加
如果任务描述中能推断出验证命令,主动追加 --verify。如果不确定,不追加(退回 honor system)。
Step 2: 告知用户
输出:
Step 3: 开始执行任务
按 PUA 核心 skill 的行为协议执行。
迭代压力升级
完成条件
输出 <promise>LOOP_DONE</promise> 前,必须满足:
- 任务的核心功能已实现
- 自己先运行验证命令确认通过(Phase 1)
- 知道 Oracle 会独立再跑一遍验证(Phase 2)
- 同类问题已扫描
如果 Oracle 拒绝了你的 promise:
- 读取 hook 返回的验证输出
- 修复验证失败的原因
- 再次自己运行验证确认通过
- 再输出
<promise>
人工介入信号
<loop-abort> — 终止
不可能完成时使用(需外部权限、根本性需求变更)。删除状态文件,loop 终止。
<loop-pause> — 暂停
需要用户补全配置时使用。状态保留,新会话自动恢复。
输出前先写进度到 .claude/pua-loop-context.md。
禁止
- 不要用
<loop-abort>逃避困难——只有真正无法自动化才用 - 不要因为 Oracle 拒绝了就 abort——修复验证问题


