Community编程与开发github.com

Gauntlet Loop(严苛循环)

将雄心勃勃的需求转化为自我评判、自我优化的智能体运行流程,而非直接输出初稿。通过设定具体外部质量标准、分解目标为可评判的片段、为每段分配独立评判者并执行盲测A/B对比,持续迭代直至达标。

Gauntlet Loop(严苛循环) 是什么?

Gauntlet Loop 是一个专为复杂或开放式构建任务设计的AI智能体技能(例如构建应用、网站、UI、游戏、API等)。它通过“拆分→构建→与外部标准对比评判→重复”的核心循环,将用户的单个高层次目标转化为智能体驱动的自我改进过程。该技能会隐式检测运行时环境(如Claude Code、Cursor等),自动选择模型和推理预算,并动态路由每个子智能体(如使用小型模型处理机械性任务,大型前沿模型处理关键判断),以优化成本和效果。它特别强调“盲测A/B对比”:每个片段由独立的构建者和评判者处理,评判者仅查看目标、标准和实际输出,避免受到构建者主观解释的影响。循环次数不固定,直到达到特定停止条件(如用户从进度文件确认完成、每轮收益递减、或预算耗尽)。最终交付物附带一份简洁总结,包括使用的标准、进展、剩余差距、假设和成本分析。该技能可应用于任何可客观检查的工件(代码、设计稿、文案等),但明确不适用于简单的信息查询或单行修复。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/emernuness/gauntlet-loop-skill/tree/main/gauntlet-loop

Installed? Explore more 编程与开发 skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

Gauntlet Loop(严苛循环) 是做什么的?

这是 Claude of Duty 背后的方法,已泛化至智能体能够检查的任何工作。一条提示产生了大约 55,000 行可玩的AAA级射击游戏,全程无需人工干预。模型并非关键差异所在,循环本身才是。

核心循环:

拆分→构建→与外部标准对比评判→重复。

方法来源于 Matt Shumer。参见 references/origin.md。

执行契约

你来执行此协议。用户不执行。

当此技能被触发时,不要交回一个提示词、一个待审批的计划,或一段关于 Gauntlet Loop 是什么的描述。设定标准,分解目标,派生出构建者和评判者,运行多轮循环,并交付最终工件。

用户只给出了一次目标。之后的一切都由你掌控。

  • 不提问任何澄清性问题。 每个未知项都是一个由你做出并记录在最终总结中的决策。
  • 自行选择标准。 用一句话陈述标准,然后继续执行。永不询问使用哪个参考。
  • 自行路由模型。 根据运行环境提供的能力,为每个派生出的智能体选择模型和推理努力程度。永不询问用户该用哪个模型,也永不将所有任务都置于会话默认设置下。
  • 运行过程中不汇报任何内容。 进度应写入实时进度文件,而非对话中。
  • 仅在以下情况中断: 凭据被阻止、缺少付费资源、或收到可能造成伤害的指令。

如果用户明确要求在检查点进行咨询,请尊重此要求。若无此信号,则运行至完成。

何时适用

满足三个条件:

  1. 请求是创建或改进某物,而非回答一个问题。
  2. 输出可以被客观检查:渲染、执行、打开、测量、测试、阅读。
  3. 可以负担超过一轮的成本。

跳过以下情况:查询、单行修复、解释说明。它会消耗大量计算资源,仅在质量比速度更重要时才值得投入。

操作手册

1. 检测运行环境

在开始其他任何操作前,先阅读 references/harness-setup.md 并选择正确的连接方式。它决定了评判者是来自并行子智能体、独立会话、还是严格隔离的多次传递。永远不要宣布这一步骤,只需适应。

同时,枚举此运行环境暴露出的模型和推理努力程度设置。你无法路由你尚未列出的事物。

2. 设定预算和路由表

循环会成倍增加调用次数。若不加以路由,每个调用都会继承会话的模型和努力程度,导致机械性编辑的扇出操作使用前沿模型进行最大推理却毫无收益。

在构建之前,一次性阅读 references/model-routing.md 并做出决定:

  • 层级划分。 将可用模型映射到 T0(一条命令,无需模型)、T1(小型快速)、T2(中型)、T3(高努力前沿模型)。
  • 路由表。 哪个角色使用哪个层级:领导者及所有关键判断使用 T3,标准构建使用 T2,机械性编辑和记账使用 T1,任何可用命令验证的任务使用 T0。
  • 预算。 如果用户给出了预算则尊重,否则自行设定,并预留大约四分之一的预算给评判者。

有两条规则可以覆盖任何节省策略。关键判断绝不路由到最便宜的层级,因为一个弱的评判者会过早批准并终止整个方法。并且涉及品味或新颖性的片段应从高层级开始,因为一个廉价构建者输掉四轮的成本,远高于一个昂贵构建者一轮就赢。

将路由表记录在进度文件中。不要宣布它,也不要要求用户批准。

3. 设定标准

标准决定了整个运行是否有效。无效的标准示例:"让它变得惊艳"、"达到生产质量"、"遵循最佳实践"。一个标准是一个真实的外部工件或度量标准,输出可以与之并排比较并可能落败。

使用 references/quality-bars.md 选择一个标准,该文件涵盖了视觉作品、前端、产品UI、后端、移动端、写作、设计系统、研究、数据和营销。

规则:

  • 可在运行内部检查。 保存到工作区的截图、可以打开的 URL、可以执行的测试套件、可以阅读的文件。并非从训练数据中记住的标准。
  • 不必是可达到的。 Claude of Duty 从未击败过 Call of Duty。标准的存在是为了防止运行停留在“对于AI来说已经不错了”的水平。
  • 如果第一轮就达标,说明标准太低。 提高它并继续。

现在,在任何构建之前,获取或生成标准工件,并将其存储在工作区中,以便每个评判者都能访问。

4. 接受目标,而非实施方案

不要预先规定你自己的架构,也不要接受在审视工件之前就设想好的分解方案。重新陈述目的地,让形态自然浮现。

如果用户固定了技术栈或架构,那是真实的约束。尊重它,并保持其他所有选项开放。

5. 拆分工作

将目标分解为可以独立改进和评判的最小片段,并决定哪些可以并行运行。

粒度是关键杠杆。"让网站更好"无法处理。"让这个定价板块超越参考定价板块"则是一个你可以攻击直到获胜的问题。同理,"让 p95 在此负载下低于 120ms" 和 "让这个段落至少和这个参考段落一样清晰"也是如此。

6. 构建与评判,始终在不同上下文中

对于每个片段,有一个构建者和一个独立的评判者。始终使用不同的上下文,绝不同一个智能体。

构建者看到了所有决策并记得做出决策的原因,这使其非常擅长解释结果为什么是合理的。但合理并非目标。

使用 assets/delegation-templates.md 为它们简要说明任务。评判者接收目标、标准、约束条件和真实工件。它绝不接收构建者的对话记录、构建者的解释,或哪一侧是我们的。

在创建每个派生智能体时按第2步的路由表进行路由。在每次构建前问自己三个问题:成功是否可以通过命令检查(无需模型,直接运行命令实现)?目标状态是否已经完全指定(使用最小模型,最小努力)?或者弥合差距是否需要决定什么是好的(使用前沿模型)?评判品味的评判者始终使用前沿模型;检查数字的评判者先运行命令,只需一个小型模型报告结果即可。

完整流程见 references/critic-protocol.md。要点:盲测A/B,检查真实事物,二进制裁决,指出最大的单一差距,将其送回。

7. 持续循环

绝不设定轮数。任何同意的最终轮都会成为上限。

当以下条件之一为真时停止,并记录是哪一个:

  1. 用户根据进度文件宣布完成。
  2. 每轮收益对于目标而言已不再重要。
  3. 计算预算耗尽,根据第2步设定的预算衡量。

仅在证据确凿时将片段升级到更高层级:连续两次在同一个差距上失败会提高其努力程度,第三次失败则提高其模型。一个开始赢的片段会为运行的剩余部分降级。当预算花费达到80%时,停止为已经获胜的片段添加轮次,并将剩余预算投入到离标准最远的片段中。

如果同一个差距连续存活三轮,则停止该片段并在领导者级别重新决策。这要么是结构性问题,要么是标准对该片段不合适,要么是构建者和评判者在衡量不同的事物。此时继续投入是预算空耗最常见的方式。

8. 维护实时进度文件

在工作区中维护一个简单的 HTML 页面或 Markdown 文件,随着工作完成进行更新:截图、草稿、测试结果、逐轮裁决、未解决的差距。不要过度规定格式,并在你输出的第一行告诉用户文件的位置。

这样做的目的是让用户可以观察而无需中断。中断会消耗上下文窗口并破坏循环。

9. 各波次之间的平滑处理

当多个智能体编辑同一工件的不同部分时,各部分会变得各自优秀,但整体上失去协调性。

在每个主要波次结束时,派生一个全新的智能体来检查整个结果,解决冲突,使其感觉像一个整体。它不进行任何重新设计。

有用,但非核心。核心始终是:拆分、构建、评判、重复。

结束运行

交付工件,然后交付一份简短总结,包含:

  • 所使用的标准及原因。
  • 工作相对于该标准达到了什么程度。
  • 最后一个未解决的差距,这是给后续接手者的交接点。
  • 在未提问的情况下做出的假设。
  • 运行因哪个停止条件而结束。
  • 成本:运行的轮数、预算的大致去向,以及任何消耗了大量预算却进展甚微的片段。

不要对工作本身进行表扬。评判者的裁决已经说出了所有重要的事情。

反模式

症状修复方法
交给用户一个他们自己运行的提示词执行协议,这才是关键点
构建者说“看起来很棒!”派生出具有干净上下文、无历史记录的评判者
评判者阅读报告而非工件强制检查真实输出
主观标准(“世界级”、“苹果级别”)替换为可以打开的具体工件
在审视工件之前就已固定分解方案让形态从工作中自然浮现
“做3次迭代”使用明确停止条件的开放循环
询问使用哪个参考选择一个,用一句话说明理由,然后继续
在对话中更新状态使用实时进度文件
各部分好,整体不协调在波次结束时进行平滑处理
第一轮达标标准太低,提高它
同一个差距存活三轮升级处理,这是结构性问题
每个智能体都继承会话模型和努力程度为每个派生智能体路由:关键判断用前沿模型,机械性工作用小模型
用前沿模型以最大努力重命名一个变量使用T1并以最小努力,或者直接用一条命令无需模型
使用廉价评判者以节省一轮零号规则。一个弱的评判者会过早批准并终止整个方法
在涉及品味的片段上使用廉价构建者输掉四轮的成本远高于一轮昂贵的胜利
因为感觉困难就提高层级根据重复出现的裁决结果升级,而非凭直觉
评判者预算被花在额外的构建轮次上预备金不是普通资金池。关键判断应获得它

相关技能