Community寫作與編輯github.com

sxivansx/loop-engineering

Claude Code 技能,用於建立循環工程:一個自主、自我運行的 AI 編碼代理,可發現工作、使用獨立的檢查代理進行驗證,並反覆執行,直到達成可驗證的目標。

loop-engineering 是什麼?

本技能(Loop Engineering)旨在為 Claude Code 建立一個自主的「循環」系統,讓 AI 代理能持續自動地發現、執行並驗證工作,直到滿足預先定義的可驗證目標。它會深度整合至現有專案中,自動讀取專案既有的測試、建置與工作追蹤慣例,並據此動態調整循環設定,而非強制套用通用模板。循環由觸發器、狀態、發現、製造者、檢查者及停止條件六大基本元件構成,並可搭配監控者(防漂移、空轉)、工作樹與 MCP 連接器等擴充元件。其核心原則是「檢查者絕不能是製造者」,所有輸出均需經過獨立驗證,且狀態檔案(LOOP.md)會在每個週期被寫入,以確保循環具備記憶與可追溯性。此技能適用於 Claude Code,透過標準設定步驟(從讀取專案、釘選目標、建立子代理到設定觸發器),讓開發者輕鬆部署具備人類監督閘門的安全自主工作流程。

相容平台✓Claude Code~Codex CLI~Cursor
npx skills add sxivansx/loop-engineering

Installed? Explore more 寫作與編輯 skills: steipete/notion, langchain-ai/langchain, bytedance/podcast-generation · View all 6 →

在你喜歡的 AI 中提問

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

說明文件

循環工程(Loop Engineering)

建立一個循環:一個自主系統,會主動提示代理,讓你無需手動介入。你只需定義一次目標與停止條件;循環會自行尋找工作、執行、檢查、記錄結果,然後再次運行,直到目標達成為止。此技能會在你的現有專案中建立這個循環:它會讀取你已使用的測試、建置與工作追蹤方式,然後根據你的習慣來調整循環,而不是強加通用的規則。

循環由六個基本元件構成。僅設定目標所需的元件即可。

元件在循環中的角色Claude Code 機制
觸發器(Trigger)按排程或事件啟動每個週期/goal(持續工作直到滿足條件)、/loop、排程任務、鉤子、GitHub Actions
狀態(State)循環在週期之間的記憶,儲存在磁碟上一個 Markdown 檔案(LOOP.md)或透過 MCP 連接的問題追蹤器
發現(Discovery)找出當前週期要處理的工作一個分類步驟,會讀取 CI、問題、差異、佇列
製造者(Maker)執行一個單位的工作一個位於 .claude/agents/ 的子代理
檢查者(Checker)獨立驗證製造者的產出一個不同的位於 .claude/agents/ 的子代理
停止條件(Stop condition)結束循環的規則一個由檢查者執行的可驗證檢查

對於任何無人看管的循環,請添加一個監控者(Monitor):一個監督代理,它會從整體觀察循環,並在發生偏移(偏離目標)、空轉(無淨進展)或越界(超過週期數、時間過長)時停止循環。製造者和檢查者確保每個項目的正確性;監控者則確保整個循環始終指向目標,這樣循環就不會悄悄偏離並運行數小時。

另外兩個可選附加元件:工作樹(Worktrees)(git worktree)可隔離並行的製造者,避免它們編輯相同檔案;**MCP 連接器(MCP connectors)**可讓循環連結真實工具(開啟 PR、更新工單、發布狀態)。當目標需要並行性或外部副作用時,即可添加上述元件。

設定步驟

此步驟在現有專案內部執行。被調用時請遵循以下步驟。在執行任何具有副作用(排程任務、推送、工單寫入、部署)的操作之前,務必先與使用者確認。

  1. 先讀取專案。 在建立任何架構之前,先了解儲存庫:如何執行測試、建置與 lint(檢查 package.json、Makefile、CI 設定、CLAUDE.md);已有哪些慣例、現有技能或 .claude/agents/ 目錄;以及工作的來源(CI、問題追蹤器、待辦事項清單、佇列)。循環必須適應此專案。重複使用它真實的指令與慣例,不要發明新的。

  2. 明確釘選目標與停止條件。 詢問使用者循環的唯一目標以及一個可驗證的完成條件(測試 exit 0、佇列為空、零失敗檢查)。絕不能發布一個沒有停止條件的循環。如果使用者無法指定,則設定一個有界限的備用方案(在 N 個週期後停止),並明確告知。在 Claude Code 中,/goal <condition> 可使其可執行:Claude 會持續跨輪次工作,直到條件滿足,而 /goal clear 則可提前結束。

  3. 撰寫狀態檔案。 將 ${CLAUDE_SKILL_DIR}/templates/LOOP.md 複製到儲存庫根目錄,並填寫目標、停止條件、節奏以及人類閘門。它包含三個由循環維護的動態章節:## Open(已發現,尚未完成)、## Done(附帶驗證證據)、## Blocked(需要人類介入),以及一個 ## Rules 章節,作為循環中所有代理遵循的常設指令集。循環每次週期會先讀取此檔案,最後再寫入它。

  4. 建立製造者子代理。 將 ${CLAUDE_SKILL_DIR}/templates/loop-maker.md 複製到 .claude/agents/loop-maker.md,並將其指向你在步驟 1 中找到的慣例與測試指令。它只處理 ## Open 中的一個項目,遵循專案現有的技能與慣例,並且絕不自行標記自己的工作已完成。如果該名稱的檔案已存在,則進行更新而非盲目覆寫。

  5. 建立檢查者子代理。 將 ${CLAUDE_SKILL_DIR}/templates/loop-checker.md 複製到 .claude/agents/loop-checker.md。它是一個與製造者不同的代理,它會執行專案實際的驗證(來自步驟 1 的真實測試、建置或 lint 指令,而非其描述),並且是唯一允許將項目移至 ## Done 的代理。

  6. 建立監控者子代理(建議用於任何無人看管的循環)。 將 ${CLAUDE_SKILL_DIR}/templates/loop-monitor.md 複製到 .claude/agents/loop-monitor.md,並每隔數個週期或使用比循環更慢的定時器執行它。它從整體觀察循環,而非單一項目:它檢查循環是否仍在收斂到目標,並在偏移(不利於目標的工作)、空轉(無淨進展,項目在 Open 與 Blocked 之間來回跳動)或越界時停止循環並上報給人類。這就是防止循環悄悄偏離並運行數小時的機制。

  7. 設定程式碼審查與安全稽核的節奏(詢問使用者)。 詢問使用者循環應多久執行一次這兩項,並將結果記錄在 LOOP.md 中。提供明確的選項,並務必包含永不:

    • 程式碼審查(/code-review):每次變更、每次 PR 或合併前、每 N 個週期、每週或永不。
    • 安全稽核(/security-review):每次變更、每次 PR 或合併前、每週、每月或永不。

    按照選定的節奏,循環會執行該內建檢查,並將發現的結果作為新的工作項目歸檔到 ## Open 中,以便製造者修復,檢查者驗證修復。如果使用者選擇永不,則完全跳過該檢查,並在 LOOP.md 中記錄 never,這樣循環就不會重新引入它。

  8. 定義發現機制。 撰寫分類步驟,根據此專案實際工作所在的位置(CI 狀態、未結問題、最近的提交、工作佇列)來填充每個週期的 ## Open,並說明如何將發現結果轉化為離散的、可獨立檢查的項目。盡可能使其具有確定性。

  9. 選擇隔離方式(可選)。 如果每個週期有超過一個製造者運行,請為每個製造者提供各自的 git worktree 和分支,這樣它們絕不會寫入同一個檔案。每個項目一個工作樹。

  10. 連接外部工具(可選)。 如果循環必須開啟 PR、更新工單或發布狀態,請連線對應的 MCP 伺服器。否則,循環的輸出保留在本機,由人類負責轉發。

  11. 設定觸發器。 選擇最適合該節奏的輕量機制:

    • 在此會話中一直運行直到目標達成 → /goal <stop condition>(Claude 會跨輪次持續工作,直到條件為真;/goal clear 可提前結束)
    • 按某個節奏重複執行、按需啟動 → /loop
    • 定期且無人看管 → 排程任務(或用於 CI 端循環的 cron / GitHub Action)
    • 回應事件(推送、PR、檔案變更) → 鉤子或 GitHub Action

    在建立任何排程任務之前,務必與使用者確認。

  12. 進行乾執行、驗證,然後啟用。 手動執行一個週期。閱讀它產生的所有內容。確認檢查者確實會阻擋不良輸出,且狀態已被寫入。只有到那時才能開啟觸發器。

防護措施(不可協商)

  • 檢查者絕不能是製造者。 撰寫程式碼的代理無權宣告其正確。
  • 停止條件必須是可驗證的,而非憑感覺。「看起來完成了」不是停止條件。一個 exit 0 的指令才是。
  • 每個週期都必須寫入狀態。 如果循環忘記了它嘗試過什麼,它就會重複自己。模型會忘記;但檔案不會。
  • 任何不可逆的操作都必須有人類閘門。 發布、部署、刪除、花錢。循環負責草擬,由人來確認。無人看管的循環會犯下無人看管的錯誤。
  • 寧可阻塞也不要猜測。 當循環無法驗證或無法繼續時,它會寫入 ## Blocked 並停止該項目。它不會發布一個猜測。
  • 長時間運行的循環必須被監控且設定界限。 任何無人看管的循環都必須配備監控者與界限。如果它偏離目標或超出界限,監控者將停止它並上報。循環絕不能永遠朝錯誤的方向運行。

循環設定完成後的結構範例

your-project/
├── LOOP.md                   # 目標、停止條件、界限、規則、Open/Done/Blocked
├── .claude/
│   └── agents/
│       ├── loop-maker.md      # 執行一個單位的工作
│       ├── loop-checker.md    # 獨立驗證
│       └── loop-monitor.md    # 監控整個循環的偏移與失控
└── (觸發器:/goal、/loop、排程任務或 GitHub Action)

反模式:請勿發布這些

  • 一個沒有停止條件的循環(永遠運行,浪費權杖)。
  • 一個代理同時負責撰寫與評分自己的工作。
  • 一個沒有狀態檔案的循環(重新推導一切,重複工作,忘記什麼失敗了)。
  • 一個沒有監控者或界限的無人看管循環(偏離目標,在任何人注意到之前已運行數小時)。
  • 在不可逆操作上沒有設定人類閘門的無人發布。
  • 一個循環承載許多不相關的工作。一個循環、一個目標、一個停止條件。其餘工作請拆分到各自的循環中。

此技能包含的檔案

  • templates/LOOP.md:要複製到目標儲存庫的狀態檔案。
  • templates/loop-maker.md:製造者子代理定義。
  • templates/loop-checker.md:檢查者子代理定義。
  • templates/loop-monitor.md:監控者子代理定義(偏移與失控防護)。
  • examples/keep-ci-green.md:一個完整的真實循環範例,從目標到觸發器。

相關技能