Communitygithub.com

循環設計與審查

設計一個目標導向的代理循環,並審查其可能出錯的方式——空轉浪費代幣、為了通過驗證而作弊、或將錯誤答案執行到底。提供兩個動作:(1) 撰寫循環——判斷是否應該建構、定義機器可決策的目標、選擇循環類型與骨架;(2) 審查循環——針對五種失敗模式進行檢查,包含可決策性、邊界條件、備援機制、裁判獨立性,以及「將判斷權保留給人類」的紅線。適用於設計自主代理循環時,或是當你已經有一個循環卻擔心它會空轉、作弊或將錯誤答案執行到底時。與機制層的循環技能(autonomous-loops、continuous-agent-loop)互補,涵蓋它們未提及的判斷層面。

循環設計與審查 是什麼?

這個「循環設計與審查」技能旨在幫助開發者為 LLM 代理設計正確且安全的目標導向循環。它認為 LLM 本質上是前饋系統,要使其具備目標導向行為,必須透過人為建構的循環來實現。該技能提供兩個核心動作:首先是「撰寫循環」,包含五個步驟,從判斷是否值得建構循環、定義機器可決策的目標(強調可驗證性、邊界條件、備援機制與調和基準)、選擇循環類型(伺服、調節器或排程)、挑選骨架(維護型或新建型),到最後添加阻尼以防止震盪。第二個動作是「審查循環」,透過五種具體的失敗模式(如目標模糊導致空轉、驗證依賴主觀判斷、只以測試通過為門檻導致作弊、依賴執行中釐清、以及記憶體陳舊)以及三條不可違背的紅線(將判斷權保留給人類、不轉移責任、以及自動化程度越高人類審查越嚴格),確保循環不會失控。此技能與機制層的 autonomous-loops 或 continuous-agent-loop 技能互補,專注於目標定義與防止失控,而非循環的技術實現。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/affaan-m/everything-claude-code/tree/main/skills/loop-design-check

在你喜歡的 AI 中提問

開啟一個已預先載入此 Agent Skill 的新對話。

說明文件

循環設計與審查 是做什麼的?

前提。 LLM 是一個前饋系統:輸入提示 → 輸出 token,沒有內建的「跨回合朝向目標行進」機制。要讓它「表現得」像一個目標導向的系統,你需要在它周圍包裹一個反饋迴路。本技能幫助你正確撰寫這個迴路,並審查它,使其不會失控。

何時使用 / 不使用

使用時機:

  • 你想要將一個重複性任務交給一個代理,讓它反覆執行(寫→測、測→修、修→驗……)。
  • 你已經有一個循環,但你擔心它會空轉、作弊,或將錯誤答案執行到底。

不要用於:

  • 一次性任務 → 直接執行即可;不需要包裝成循環。
  • 簡單的定時器 / 輪詢 → 使用 /loop 即可;不需要設計。
  • 如何設計循環架構(管線 → DAG、長期執行復原)→ 這是機制層;請參閱 autonomous-loops / continuous-agent-loop。本技能僅涵蓋「目標是否正確,以及它是否會失控」——不會重新解釋機制。

紅線前提:兩個層級的反饋

層級擁有者功能
執行(低層)機器 / 代理衡量「距離具體目標有多遠」並將其修正為零。機器在此處擅長。
判斷(高層)人類決定「目標本身是否正確、是否應該改變、是否應該停止」。機器無法跳出自己的循環來質疑目標。

恆溫器可以反饋「距離 26°C 還有多遠」,但當你發燒且想要 28°C 時,它無法判斷 26°C 是否是正確的目標——它只會朝 26°C 修正。「今天該設定幾度」始終是人類的決定。 將判斷權 / 簽核權 / 最終開關交給機器 = 移除高層級反饋 = 它會快速且猛烈地朝一個無人質疑的目標衝去 → 產生錯誤的輸出。


動作 1 — 撰寫循環(5 個步驟)

步驟 0 · 先減法:你真的應該建構它嗎?(4 條件閘門,任一不符合即否決)

① 任務每週或更頻繁重複 ② 驗證可以自動化 ③ Token 預算可負擔 ④ 代理擁有能夠實際執行並查看結果的工具

任何一項不符合 → 不要建構循環;改用手動或其他方式。

阻礙大多數人的不是「能不能寫出一個循環」,而是「我的儲存庫值不值得一個循環」。一個值得擁有循環的儲存庫,必須具備調和基準線(黃金樣本 / 上游總數)+ 測試 + 程式碼檢查防護。不值得擁有循環的儲存庫,只會讓其錯誤被循環放大。

步驟 1 · 定義一個機器可決策的目標(最困難的部分——循環的成敗取決於此)

整個循環取決於比較器「完成了嗎?」的判斷。比較器只有在你的退出條件可以被機器以是/否判斷時才能正常運作。

  • 不良:模糊不清(「讓它變好」、「寫得更精練」)→ 比較器無法判斷 → 要嘛永遠無法通過(卡住重試),要嘛隨機猜測(隨機通過或阻擋)。
  • 良好:可決策(「所有 96 個單元測試通過 並且 產生變更清單」、「模組-02 欄位已填寫、pytest 通過、業務邏輯未改動」)→ 一次檢查即可確定;循環平穩收斂。

五點目標框架:

  1. 完成標準是機器可驗證的。
  2. 與完成標準一同定義邊界條件(「它不得做的事」)——反古德哈特定律;缺少邊界條件等於授權作弊。
  3. 具備失敗備援機制——重試上限 N 次,超過則升級給人類處理。
  4. 目標是層次化的。
  5. 完成標準偏好使用調和基準而非斷言——將基準錨定於外部事實(黃金樣本 / 上游總數 / 財務對帳 / 平台後台數據),而不是依賴自己的斷言。「所有測試通過」可能被操弄(放鬆斷言、偽造模擬、吞掉例外);而「與參考資料的差異 < 0.01」則無法被操弄。

自我檢查: 將這個目標讀給一個不熟悉該領域的人聽——他們能否執行一條命令就判斷出是否完成?如果不能,表示目標的可決策性不夠。回去重新定義。

步驟 2 · 選擇循環類型

你的任務循環類型(控制論)如何停止
有明確的「完成」測試(撰寫到完成 / 一批影像處理完畢)伺服(/goal 風格的閉環)達成目標後停止
沒有終點,必須持續維護某種狀態(庫存警報 / 排程健康檢查)調節器(/loop 風格的恆溫器)永不停止;只在變化發生時行動(死區抑制雜訊)
定期採樣,滿足條件時停止(監看一個 PR 直到 CI 變綠)帶有退出條件的調節器當退出條件成立時停止
必須「確保某件事準時發生」將上述循環包裹在 /schedule 中由 cron 觸發

經驗法則:有明確的「完成」測試 → 使用伺服;必須持續維護、沒有終點 → 使用調節器;必須「準時發生」→ 將調節器包裹在排程中。

步驟 3 · 選擇骨架

維護型(照護已存在的東西)→ 文件驅動式分派。 這個循環不是「定時執行固定檢查」,而是**「定時讀取一份文件,且僅在文件發生變化時進行分派」。這份文件就是任務佇列 + 狀態機 + 人類介面。 三個紀律:① 問題欄位僅人類可寫,結果欄位僅循環可寫,狀態單向推進且永不回滾;② 退出碼是最終的(如果腳本回傳 exit 1,則腳本說了算);③ 狀態只推進到「待驗證」——「完成」儲存格只能由人類翻轉。**循環是工作者,不是驗收者。

新建型(從頭建構)→ 規劃 / 建構 / 裁判,三個角色。

角色職責關鍵點
規劃將目標分解為規格 + 可決策的驗收條件驗收條件必須能被腳本判斷
建構依據規格撰寫程式碼不得更改驗收條件
裁判獨立執行驗收;通過 → 停止,失敗 → 將失敗原因送回給建構角色獨立 + 確定性

三條鐵則(全部押注在裁判身上):① 裁判必須獨立——不能與建構角色是同一個代理(為自己的作業打分總是會膨脹);② 確定性規則——pytest / 調和差異 / 型別檢查 / 差異比較,絕不能是「看起來沒問題」;③ 建構角色不得為了讓驗收通過而修改驗收條件。三次重試失敗 → 升級給人類處理。

步驟 4 · 添加阻尼(對抗震盪 / 失控)

重試上限、硬停止、由人類翻轉最後的開關 = 阻尼。沒有阻尼的負反饋會產生震盪(Ralph-Wiggum 循環:原地空轉,浪費 token)。

步驟 5 · 分三個階段落地(不要在第一天就全自動化)

① 手動執行一次(迫使你明確說明「裁判如何決定」)→ ② 將其打磨成一個技能 / Claude Code 子代理(一個主要的 Claude 負責循環,分派規劃/建構/裁判)→ ③ 將它掛在 cron 上以實現全自動化。


動作 2 — 審查循環(檢查清單 = 五種失敗模式)

將你的循環逐行比對。命中任何一項 = 這個循環將會失靈;打回去重做。 這五種是負面經驗(踩過的坑)——比正面規則更有價值。

#失敗模式(如何失效)審查問題(命中 = 紅燈)解決方案
1目標是正確的廢話 → 空轉、燒錢退出條件可否被機器以是/否判斷?還是像「管理好它 / 讓它變好」這種模糊說法?替換為可決策的結果條件(動作 1·步驟 1)
2「驗證」寫成「檢查它是否看起來沒問題」→ 代理自信滿滿地說沒問題並停止裁判就是被告本人嗎?驗證是依賴「看起來正確」還是確定性規則?使用調和機制 + 退出碼規則 + 獨立裁判
3(最糟)僅以「所有測試通過」作為門檻 → 代理刪除了測試是否有邊界條件(「它不得做的事」)?還是只有完成標準?同時具備完成標準 + 邊界條件(反古德哈特定律的解法)
4指望代理在執行過程中提出問題 → 它不會;它會將錯誤答案執行到底是否存在任何「僅在執行時釐清」的環節?預先釐清所有事項;在啟動前一次性解決
5CLAUDE.md 過於臃腫 + 過時的記憶 → 循環越快,錯誤越多它依賴的文件/記憶是否新鮮?誰負責維護?分層記憶 + 定期清理

加上三條紅線(違反任何一條 = 不得自動化):

  • 將判斷權保留給人類。 驗收 / 「完成」儲存格由人類翻轉;循環不是驗收者。
  • 責任不轉移。 任何你承擔不起失敗後果的事情(合併錯誤的 PR / 發布錯誤的內容 / 分配錯資金)→ 不要自動授予權限。
  • 反直覺的警告。 一個循環越是「自我改進 / 改寫自身規則」,它所需的人類審查就越嚴格(以查看它把規則改寫成了什麼)——而不是更寬鬆。機器太快了,事後無法攔截,因此人類的判斷必須設置在行動之前(一個硬性閘門),而不是事後的補丁。

實例演練——審查一個「夜間維穩員」循環

你想要一個每晚執行並修復所有失敗測試的循環。

  • 天真的目標:「讓所有測試通過。」→ 步驟 1 的自我檢查失敗:這正是失敗模式 #3 的誘餌。
  • 修正後的可決策目標:「所有測試變綠 且 沒有測試檔案被刪除或弱化 且 覆蓋率未降低 且 產生一份變更清單。」邊界條件現在已與完成標準一同定義。
  • 類型: 帶有重試上限 3 次的伺服(步驟 2 + 步驟 4)。
  • 骨架: 規劃/建構/裁判——裁判是獨立執行的 CI,絕不是負責修正的代理(步驟 3)。

現在運行審查檢查清單,它會捕捉到天真的版本會遺漏的問題:

  • 命中 #3 → 天真的「所有測試通過」會讓代理刪除一個失敗的測試來「贏得」目標。已透過邊界條件「沒有測試檔案被刪除/弱化」修正。
  • 命中 #2 → 如果修正代理同時也評斷自己的修正,它會讓自己通過。已透過「裁判 = 獨立的 CI,確定性」修正。
  • 命中 #4 → 如果某個修正有歧義,代理不會在凌晨兩點停下來詢問;它會猜一個答案並提交。已透過預先釐清修正:有歧義的修正留給人類處理,而不是猜測。
  • 紅線 → 循環會開啟一個 PR,但不會自動合併;由人類翻轉最終開關(責任不轉移)。

天真的循環與經審查的循環之間,只差四行約束條件——而這就是「醒來發現測試套件被刪除」與「醒來看到一個乾淨的 PR」之間的差異。


一句話總結

撰寫一個循環最困難的部分不是「能不能寫出一個循環」,而是定義一個機器可以調和的目標——可決策、有邊界、基於調和基準。控制器必須是確定性且外部的;將判斷權和標準保留給人類;系統傾向於熵增,因此需要維護。 一個循環只會回報那些已經深思熟慮過的人。指望它為你思考,它會樂於和你一起,大規模地、錯誤地思考。


來源:Wiener 的雙層反饋機制(《The Human Use of Human Beings》,1950 年)提供了判斷/執行分離與紅線的基礎;規劃/建構/裁判模式來自於 Anatoli 的《Loops explained》與 Addy 的《Loop Engineering》。 機制層(如何設計循環架構):請參閱 autonomous-loops / continuous-agent-loop。本技能不重新實現機制;僅涵蓋目標定義與防止失控。

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

accessibility

Design, implement, and audit inclusive digital products using WCAG 2.2 Level AA. Use when building or auditing UI that must meet WCAG 2.2 Level AA, or when reviewing a change for keyboard, contrast, or screen-reader support.

affaan-m/claude-api

Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.

affaan-m/everything-claude-code

End-to-end marketing campaign planning and execution. Covers audience research, positioning, campaign angle definition, landing page copy, email sequences, social posts, ad copy, short-form video scripts, and content calendars. Use as the orchestration layer for multi-channel product launches. Use when planning or executing a multi-channel product launch, or producing landing page, email, social, or ad copy.

affaan-m/everything-claude-code

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/everything-claude-code-conventions

Development conventions and patterns for everything-claude-code. JavaScript project with conventional commits.

affaan-m/frontend-design

Create distinctive, production-grade frontend interfaces with high design quality. Use when the user asks to build web components, pages, or applications and the visual direction matters as much as the code quality.

affaan-m/gget

gget CLI and Python workflow for quick genomic database queries, sequence lookup, BLAST-style searches, enrichment checks, and reproducible bioinformatics evidence logs.

affaan-m/literature-review

Systematic literature-review workflow for academic, biomedical, technical, and scientific topics, including search planning, source screening, synthesis, citation checks, and evidence logging.

affaan-m/motion-ui

Production-ready UI motion system for React/Next.js. Use when implementing animations, transitions, or motion patterns.

affaan-m/project-guidelines-example

Example project-specific skill template based on a real production application.

affaan-m/pubmed-database

Direct PubMed and NCBI E-utilities search workflows for biomedical literature, MeSH queries, PMID lookup, citation retrieval, and API-backed literature monitoring.

affaan-m/scholar-evaluation

Structured scholarly-work evaluation for papers, proposals, literature reviews, methods sections, evidence quality, citation support, and research-writing feedback.

affaan-m/uspto-database

USPTO patent and trademark data workflow for official record lookup, PatentSearch queries, TSDR checks, assignment data, and reproducible IP research logs.

agent-architecture-audit

Full-stack diagnostic for agent and LLM applications. Audits the 12-layer agent stack for wrapper regression, memory pollution, tool discipline failures, hidden repair loops, and rendering corruption. Produces severity-ranked findings with code-first fixes. Essential for developers building agent applications, autonomous loops, or any LLM-powered feature. Use when an agent or LLM feature misbehaves and the failing layer is unknown, or before shipping an agent stack.

agent-eval

Head-to-head comparison of coding agents (Claude Code, Aider, Codex, etc.) on custom tasks with pass rate, cost, time, and consistency metrics. Use when choosing between coding agents, or when a change to an agent setup needs measured pass rate, cost, and time rather than an impression.

agent-harness-construction

Design and optimize AI agent action spaces, tool definitions, and observation formatting for higher completion rates. Use when defining or revising an agent

agentic-engineering

Operate as an agentic engineer using eval-first execution, decomposition, and cost-aware model routing. Use when planning or executing engineering work that agents will carry out end to end.

agentic-os

Build persistent multi-agent operating systems on Claude Code. Covers kernel architecture, specialist agents, slash commands, file-based memory, scheduled automation, and state management without external databases. Use when building a persistent multi-agent system on Claude Code with its own memory, commands, and scheduling.

agent-introspection-debugging

Structured self-debugging workflow for AI agent failures using capture, diagnosis, contained recovery, and introspection reports. Use when an agent run fails and you need a reproducible diagnosis instead of a retry.

agent-payment-x402

Add x402 payment execution to AI agents with per-task budgets, spending controls, and non-custodial wallets. Supports Base through agentwallet-sdk and X Layer through OKX Payments / OKX Agent Payments Protocol. Use when an agent must pay for something itself and needs per-task budgets, spending controls, and a non-custodial wallet.

相關技能