迴圈系統架構師 (Loop System Architect)
將重複性任務轉變為一個可觀測的控制系統,使其能夠執行、證明結果、在中斷後恢復,並在無需重寫自身目標的前提下持續改進。
選擇模式
- 審計 (Audit):檢查現有工作流程,並報告遺漏或開環的部分。除非被要求,否則不要編輯。
- 設計 (Design):產出合約、狀態結構、角色圖、評估指標與執行時期設計。
- 操作化 (Operationalize):實作控制器、配接器、持久化、證據與一鍵執行路徑。
- 進化 (Evolve):分析已完成的執行,驗證提議的迴圈/知識/技能改進,並決定提升或拒絕。
當使用者要求「建構」或「讓它運作起來」時,請包含操作化。僅有 Markdown 計劃並非可運作的迴圈。
從實際現狀出發
- 讀取儲存庫說明與使用者置於範圍內的成品。
- 檢查實際的工具、進入點、狀態檔案、測試、排程器、代理人 CLI 與髒工作目錄。
- 將當前權威輸入與參考資料分離。請勿使用模型記憶來填補空白。
- 分類迴圈:
- 終端型 (Terminal):一個具有可展示終點線的目標。
- 重複型 (Recurring):每次執行都會終止,而監控/服務則持續運作直到退役。
- 在更改任何內容之前,說明哪些存在、哪些遺失,以及哪些僅是宣稱。
若要進行完整審計,請閱讀 audit-rubric.md。
要求閉合控制迴圈
識別並連接以下所有元素:
- 目標與擁有者;
- 完成條件或每次執行的成功條件;
- 權威來源邊界與來源;
- 觸發器與低成本前置檢查;
- 感測器與收集到的訊號;
- 比較器、視窗與閾值/規則;
- 控制器與有限的決策空間;
- 致動器與將新結果回傳至感測器的路徑;
- 持久狀態、指標、事件日誌與證據儲存;
- 協調器、執行器與獨立驗證者的職責;
- 開放式能力/技能發現與候選技能建立;
- 權限邊界與受保護的欄位;
- 驗收評估與必要的證據;
- 重試、超時、退避、失敗分類與回滾;
- 冪等性、重複資料刪除、並發鎖定與副作用扼流點;
- Token、成本、輪次與牆上時間預算;
- 可觀測性、警報與無操作的成功狀態;
- 直接取代已被取代的有效真相;
- 經驗蒸餾與受控提升;
- 停止、暫停、終止與退役條件。
感測器到致動器的回饋缺失意味著開環。持久狀態缺失意味著重複的提示。驗證者證據缺失意味著自我宣稱的完成。控制器/觸發器缺失意味著需要人類操作的程序。
精簡設定檔
並非每個迴圈都需要所有二十個元素。對於單一操作者、cron 等級的迴圈——一個使用者、一台機器、低爆炸半徑、無共享副作用——一份包含八個元素的合約就已足夠:
- 目標與擁有者;
- 成功條件(完成或每次執行);
- 觸發器與低成本前置檢查;
- 致動器及其副作用路徑;
- 持久狀態與指標;
- 副作用路徑上的冪等性/重複資料刪除;
- 可觀測性:在哪裡查看最後結果與下一個動作;
- 退役條件。
明確宣告省略的內容,而不是留白:設定 learning.enabled: false,並將 capabilities.discovery: "none" 加上 reason 欄位。Linter 接受這兩種設定。請參閱 loop.contract.minimal-example.json 以了解一個可通過的精簡合約範例。當迴圈獲得共享副作用、第二位操作者、外部租戶或任何形式的自我修改時,請升級為完整合約。
產出迴圈套件
根據儲存庫調整名稱,但保留一個機器可讀的規範合約與一個狀態記錄。迴圈套件、狀態與證據存在於使用者的專案中,永遠不在這個技能的套件內部。預設套件為:
loop/
├── LOOP-CONTRACT.md 人類可讀的操作合約
├── loop.contract.json 機器可讀的規範合約
├── RUN-STATE.json 當前執行、指標、嘗試次數、下一個機器動作
├── events/ 僅附加的執行事件或等效的事件儲存
├── evidence/ 驗證者可讀的收據
├── evals/ 確定性與語義驗收檢查
├── knowledge/ 型別化的已提升知識,非原始日誌
├── candidates/ 未提升的教訓與技能變更
└── scripts/run-loop 單一指令控制器或專案原生等效程式
使用 loop-contract.md 作為欄位合約。複製 loop.contract.template.json,填入所有佔位符,然後執行:
python3 scripts/loop_lint.py /path/to/loop.contract.json
當專案尚未納入 linter 時,使用此技能內部的副本。如果無法寫入磁碟,請將合約與控制器輸出為可複製的文字,並說明在迴圈可操作之前,仍需要將哪些內容放置於磁碟上。
建構控制器,而非僅有說明
控制器必須使一次呼叫就能推進迴圈,而無需使用者在不同代理人之間複製貼上:
- 獲取並發鎖定並推導出冪等鍵;
- 載入並檢查合約與狀態;
- 驗證凍結來源的雜湊值或當前來源權威;
- 執行低成本觸發器/前置檢查,並在無工作時記錄無操作成功;
- 解析所需能力;
- 為協調器/執行器建立最小上下文資訊包;
- 在可能進行變更時,於隔離工作區中執行;
- 擷取輸出、成本、工具呼叫、差異與證據;
- 執行一個無法認證自己寫入的獨立驗證者;
- 失敗時,分類並導向有限修的復、重試、回滾或停止;
- 通過時,原子化提升結果並更新當前狀態;
- 附加一個不可變的事件/收據;
- 僅在其觸發條件滿足時才調用蒸餾;
- 釋放鎖定並暴露下一個機器可執行的動作。
各種引擎的最小化驗證者獨立性:
- Claude Code(或任何具有子代理人的執行時期):將驗證者作為全新上下文的子代理人執行,該子代理人僅接收合約、驗收檢查與證據路徑——而非執行者的對話。
- 無子代理人機制:將驗證者作為一個獨立的程序或獨立調用執行,從磁碟重新讀取證據,並根據驗收檢查回傳裁決。
- 兩者皆不可用:相同上下文檢查自己的作品是自我審查——是表現,而非驗證。請在審計報告中如此說明,而非將其標記為驗證者。
對於觸發器、狀態轉換、結構檢查、權限、重試、雜湊值與提升,優先使用確定性程式碼。將判斷、規劃、診斷以及無法機械式決定的內容留給大型語言模型。
無需靜態許可清單即可發現或建立技能
使用開放式發現搭配受控執行:
- 從任務推導出能力合約:輸入、輸出、副作用、證據、風險。
- 根據中繼資料與合約契合度,搜尋已安裝的技能與專案能力。
- 檢查來源與依賴項;不要將嵌入的專案身份視為真相。
- 在沙盒中測試候選技能,並執行特定能力的評估。
- 如果沒有合適的,在隔離環境中建立一個候選技能,並附上自己的範例與評估。
- 僅在通過安全性、隱私、功能與回歸檢查後,才提升某個版本。
- 預設情況下僅在本地註冊。外部發佈遵循所屬環境的單獨政策。
開放式發現並不授予開放式權限。強制要求、資料範圍、副作用政策與執行時期權限仍然約束每個技能。
將經驗蒸餾為可用的知識
永遠不要將不斷增長的日誌提供給每個代理人。將原始證據、情節摘要、候選教訓、規範知識、程序性技能與評估分開存放。
執行提升路徑:
追蹤 + 結果
→ 標準化情節
→ 候選教訓
→ 重複資料刪除與衝突檢查
→ 對先前執行與反例進行重播
→ 影子或金絲雀測試
→ 提升某個版本
→ 監控接下來的執行
→ 保留或回滾
觸發蒸餾的條件是:重複失敗、重複手動工作、漂移、成本退化、有意義的結果證據,或配置的樣本大小——而不僅僅是因為時間過去。在設計或變更學習層之前,請閱讀 distillation.md。如果已安裝專用的蒸餾技能(例如 experience-pack),請讓它負責蒸餾工作流程本身;此技能僅設計調用它的迴圈。
進化過程可以改進標準作業程序、觸發器、上下文包裝、腳本、技能、檢索以及委託權限內的操作閾值。它不得在未經許可的情況下,靜默改寫目標、來源邊界、租戶/隱私邊界、權限模型,或定義成功的評估。
乾淨地取代有效真相
對於任何接受的更新:
- 計算合約、狀態結構、程式碼、測試、文件、視圖與技能之間的影響圖;
- 宣告
REPLACES、REMOVES與KEEPS; - 更新所有依賴項;
- 從有效檢索中移除已被取代的措辭與數值;
- 執行矛盾/過期數值掃描;
- 執行受影響的成功路徑與失敗路徑評估;
- 執行一個零上下文探測,該探測必須恢復出恰好一個當前答案;
- 原子化提升;僅在版本控制/事件歷史中保留先前版本,而非在有效上下文中。
校準自主性
- 當確定性且獨立驗證通過時,自動執行可逆、有邊界的動作。
- 對於高風險的自動化動作,使用金絲雀測試、影子測試、雙重驗證與回滾。
- 僅在缺少權限、所需決策改變目標、或動作本質上不可逆且尚未獲得授權時,才停止並等待使用者。
- 永遠不要將例行的人類批准,變成一個被宣傳為自主的迴圈中隱藏的致動器。
驗證完成
在以下所有條件都成立之前,不要稱迴圈為可操作:
- 一個命令或配置好的事件可以在無需提示傳遞的情況下推進它;
- 中斷恢復從持久狀態繼續,而不會重做已接受的工作;
- 重複的觸發器無法複製副作用;
- 驗證者失敗會導致有限的修復或乾淨的停止;
- 成功路徑與失敗關閉路徑皆有證據;
- 無工作的執行會成功且低成本地終止;
- 當前狀態、最後結果、成本、開放中的失敗、以及下一個動作都可觀測;
- 至少一個進化候選者已被重播,並已提升或正確拒絕(在精簡設定檔下,若
learning.enabled: false則可豁免); - 一個零上下文的代理人,僅從作用中的檔案就能解釋當前合約與下一個動作。
分別報告:哪些已實作、哪些已演練、哪些因缺乏即時感測器而處於休眠狀態、以及哪些仍然需要使用者的權限。