Community程式設計與開發github.com

emernuness/gauntlet-loop

將雄心勃勃的請求轉變為自我評判、自我改進的代理執行,而非僅是初稿。設定具體的外部品質標準,將目標拆解為可評判的片段,為每個片段提供獨立的評論者與乾淨的上下文,強制進行盲測 A/B 比對,並以無固定回合數的方式循環。

gauntlet-loop 是什麼?

Gauntlet Loop 是一套由 Matt Shumer 提出的結構化代理執行協議,專為處理複雜或開放式建構任務而設計。它將單一目標拆解為最小的可獨立改進與評判的片段,每個片段分別由一個建構者與一個獨立的評論者處理,評論者在盲測環境下將實際產出與具體的外部品質標準(例如:截圖、可執行測試、參考文件)進行 A/B 比對。此循環沒有預設的回合數上限,僅在達成具體停止條件(例如:使用者從進度檔案確認完成、每回合改進效益不再顯著、或預算耗盡)時終止。其核心價值在於透過強制分離建構與評判上下文、並對每個子代理進行模型與推理成本的動態路由(例如:機械性編輯使用最小模型、判斷性任務使用旗艦模型),來避免常見的「過早滿意」與「不必要的 token 浪費」,從而顯著提升最終工件品質。此技能適用於任何可以客觀檢查的產出,包括應用程式、網站、UI、遊戲、API、服務、管線、報告、文章、行銷活動與研究,尤其適合在需要「追求卓越」、「達到生產級品質」、「與參考基準比較」或關心多代理執行中的 token 成本與模型選擇時觸發。

相容平台✓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 在指定負載下低於 120 毫秒」以及「讓這個段落至少與參考段落一樣清晰」。

6. 建構與評判,絕不在同一個上下文中

對於每個片段,一個建構者和一個獨立的評論者。始終使用不同的上下文,絕不交由同一個代理。

建構者看到了所有決策並記得為何做出這些決策,這使得它非常擅長解釋為何結果是合理的。但合理並非目標。

使用 assets/delegation-templates.md 對他們進行簡報。評論者會收到目標、標準、限制條件以及實際工件。它絕不會收到建構者的執行紀錄、建構者的解釋、或哪一方是我們的作品。

在產出每個子代理時,使用步驟 2 的路由表對其進行路由。在每個建構者之前詢問三個問題:成功是否可以由命令檢查(無需模型,直接執行);目標狀態是否已完全指定(最小模型,最低努力);或者縮小差距是否需要決定什麼是「好」(使用旗艦模型)。評判品味的評論者始終使用旗艦模型;檢查數字的評論者先執行命令,只需小型模型來報告結果。

完整程序在 references/critic-protocol.md 中。要點:盲測 A/B 比對、檢查真實工件、二元判決、指出唯一最大的差距、將其送回。

7. 持續循環

永遠不要設定回合數。任何約定的最終回合都將成為天花板。

當以下情況之一成立時停止,並記錄是哪一個:

  1. 使用者從進度檔案中確認完成。
  2. 每回合的改進對目標來說已不再重要。
  3. 運算預算用完,以步驟 2 設定的預算為基準。

只有在有證據時才將某個片段提升層級:在同一個差距上連續輸掉兩次,則提高其努力程度;第三次則提高其模型層級。一個開始獲勝的片段,在剩餘的執行中會降回較低層級。在預算花費達 80% 時,停止為已經獲勝的片段增加回合,並將剩餘預算投入離標準最遠的片段。

如果同一個差距存活了連續三個回合,則停止該片段並在領導者層級重新決策。這可能是結構性問題、該片段的標準錯了、或者建構者與評論者在測量不同的東西。此時在此片段上花費更多資源是燒光預算最常見的方式。

8. 維護即時進度檔案

在工作區維護一個簡單的 HTML 頁面或 Markdown 檔案,並隨著工作完成更新:螢幕截圖、草稿、測試結果、逐回合判決、未解決的差距。不要過度指定格式,並在你輸出的第一行告知使用者其位置。

此檔案的存在是為了讓使用者可以在不中斷的情況下觀看進度。中斷會耗費上下文視窗並破壞循環。

9. 波次間的平滑處理

當許多代理編輯一個工件的不同部分時,各個部分會變得個別優秀,但整體卻會變得不相關。

在每個主要波次結束時,產生一個全新的代理來檢查整體結果、解決衝突,並使其感覺像是一個統一的整體。它不會重新設計任何東西。

此步驟有用,但非核心。核心始終是:拆分、建構、評判、重複。

結束執行

交付工件,然後提供一份簡短摘要,包含:

  • 所使用的標準及其原因。
  • 工作相對於該標準達到的程度。
  • 最後一個未解決的差距,這是為下一個接手者提供的交接資訊。
  • 為取代未提問而做出的假設。
  • 是哪個停止條件結束了此次執行。
  • 其成本:執行的回合數、預算的大致流向、以及任何消耗了大量預算卻未取得進展的片段。

不對工件進行讚美。評論者的判決已經說了一切重要的東西。

反模式

症狀修正方法
將一個提示交給使用者讓他們自己執行執行此協議,這才是重點
建構者說:「這看起來很棒!」產生一個擁有乾淨上下文、無歷史記錄的評論者
評論者閱讀報告而非工件本身強制檢查實際輸出
主觀標準(如「世界級」、「Apple 等級」)替換為一個你可以開啟的具體工件
在檢視工件之前就固定了拆解方式讓形狀從工作中浮現
「做 3 次迭代」開放式循環,搭配明確的停止條件
詢問要使用哪個參考選擇一個,用一句話說明理由,然後繼續
在對話中報告狀態更新使用即時進度檔案
各部分良好,但整體不相關在波次結束時進行平滑處理
標準在第一輪就被通過標準太低,提高它
同一個差距存活三個回合升級處理,這是結構性問題
每個代理都繼承了此對話的模型與努力程度對每個產生的子代理進行路由:判斷性任務使用旗艦模型,機械性工作使用小型模型
用最高努力的旗艦模型來重新命名一個變數使用 T1 及最低努力,或者直接使用無需模型的命令
為了省一輪而使用便宜的評論者規則零。一個弱的評論者會過早批准,從而取消此方法
在關於品味的片段上使用便宜的建構者輸掉四輪的總成本,高於一場昂貴的勝利
因為任務感覺困難就提升層級根據重複的判決結果來升級,而非根據直覺
評論者的預算被用於額外的建構回合儲備不是一個共用資金池。判斷性任務有權使用它

相關技能