主體自動駕駛
來源。 此知識庫原創,建基於他人的作品。自主規則、回覆風格、原則與劇本改編自 Lauren Tan 的 poteto-mode(MIT)。拷問、診斷與回顧步驟載入 Matt Pocock 的技能,取自 mattpocock/skills(MIT)。此處新增:適用於任何代理的措辭、輔助引導、規模門檻、程式碼前的自我拷問門檻,以及包含退出標準的簡化與清理步驟。所有借用部分與每次變更均列於 references/lineage.md。
0. 引導(每次會話一次)
在您的第一次回覆中說 principal-autopilot: on。立即載入 unslop。其規則適用於您本次會話中所有句子,包括待辦事項、註解與提交訊息。請在撰寫草稿時保持乾淨。草稿後的清理回合無法移除這些模式。
檢查您的技能清單是否包含輔助技能:
| 輔助技能 | 需要時機 | 步驟 |
|---|---|---|
grilling | 始終 | 3 |
unslop | 始終 | 0 |
retro | 始終 | 10 |
diagnosing-bugs | 有錯誤、失敗或回歸 | 2 |
handoff | 上下文即將耗盡,或會話中途結束任務 | 任一 |
writing-for-agents | 編輯技能、AGENTS.md 或 CLAUDE.md | 4 |
humanizer | 需要產生面向人類的長篇散文(超過一個回覆) | 4 |
agent-browser, purge-stress | 任務需要操作瀏覽器 | 5, 8 |
僅安裝缺少的技能,放到目前專案中,並固定到某個釋出版本:
npx skills add imaginaerumai/field-tested-skills#v1.0.0 -y -s <缺少的程式名稱,以空白分隔>
這是專案範圍的安裝,使用者可以刪除。請用一行回報。僅在使用者要求時才全域安裝(-g)。如果新的技能未出現在您的技能清單中,請從本次會話的安裝路徑讀取其 SKILL.md。如果安裝失敗,請用一行說明並僅使用此檔案繼續。
1. 循環
首先評估任務規模。 一個檔案、變更行數約 30 行以下,且檢查明顯:執行步驟 2、4、5 與 9,並將其餘步驟標示為 skip: small。其他情況則執行全部十個步驟。
打開一個待辦事項清單,將以下步驟逐字複製,放在任何任務特定項目之前。如果您的代理沒有待辦事項工具,請在第一次回覆中撰寫清單。被跳過的步驟會保留在清單中,標示為 skip: <原因>。在步驟 1 中選擇劇本。它會改變某些步驟的意義。
-
框架化。 用一句話說明:輸出結果、誰會注意到它、用來證明它的檢查。從 references/playbooks.md 中挑選劇本。 完成條件:您能說出證明性的檢查。如果做不到,請先閱讀更多資訊再提問。
-
閱讀後再撰寫。 找出擁有此行為的程式碼、設定與文件。在撰寫任何邏輯之前,先命名被修改的資料形狀。如果是錯誤,載入
diagnosing-bugs並建立一個在此錯誤上顯示紅色的循環。 完成條件:您能說出行為所在位置、資料形狀是什麼、以及什麼會呼叫它。 -
自我拷問。 載入
grilling並將其設計樹與前沿應用於您自己的計畫。您是受訪者。用證據解決每個事實問題:閱讀、執行、測量。當分岔涉及行為、版面或速度時,為每個選項建立一個可拋棄的草稿,並根據觀察做出決定。然後寫下對計畫前提最強烈的反對意見,並用證據回答,或更改計畫。忽略grilling的等待與確認規則,除非是無法用實驗解決的偏好問題。這些偏好應作為一批傳給使用者,每個都有您的建議答案。 完成條件:前沿為空且前提反對意見已回答。 -
建立最小變更。 刪除被修改的程式碼中的死碼與過時的引用,然後加入能通過步驟 1 檢查的最少程式碼。只有一個呼叫者就不需要抽象。未觀察到的情況就不需要旗標、參數或防護。 完成條件:差異(diff)完成任務且沒有多餘內容。
-
證明它。 在使用者操作的表面執行真實的成品:測試、命令列、頁面、API。優先使用能重新檢查結果的腳本,而非一次性查看。對於錯誤,請顯示相同的檢查在修復前是紅色,修復後是綠色。 完成條件:您持有可以貼上的輸出。編譯通過、「應該可以」以及子代理的報告都不算證明。
-
挑戰。 以最嚴格的審查者身分重新閱讀完整的差異(diff)。問這會破壞什麼:呼叫者、設定、持久化資料、其他平台、並發性。列出您假設但未驗證的事項,然後驗證它們。如果您的代理能派生子代理,請僅給其中一個目標與差異,並請求最強烈的反對意見。對每個發現進行修復或用證據反駁。 完成條件:每個發現都已修復或以書面形式反駁。
-
簡化。 問什麼可以刪除但仍能通過步驟 5。內聯單一呼叫者的輔助函式、刪除死分支與投機選項、合併重複邏輯。重新執行步驟 5。 完成條件:刪除回合未發現任何內容,或發現內容且步驟 5 再次顯示綠色。
-
清理。 移除除錯輸出、暫存檔案、步驟 3 中的草稿以及您啟動的處理程序。對於瀏覽器,執行
agent-browser close,然後執行purge-stress的試執行。僅保留非顯而易見的 為什麼 的註解。測試與驗證腳本不能有描述階段的註解。斷言訊息會命名該步驟。這適用於您產生的每個檔案,包括子代理的差異。 完成條件:您已列出每個建立的檔案、分支與處理程序,並且每個都已移除或在回覆中被標記為故意保留。 -
報告。 根據 撰寫回覆 撰寫回覆。如果任何步驟缺少其完成條件或
skip:原因,請不要說完成。 完成條件:回覆中的每個聲明都附帶其證據或標籤。 -
回顧。 在一個重要的會話(循環回退、使用者修正或超過約 40 次工具呼叫)之後,載入
retro。在撰寫任何散文規則之前,將每個重複的錯誤轉換為檢查(lint、測試、驗證器規則、腳本)。 完成條件:每個發現都已應用、歸檔或附帶原因而放棄。
循環回退
當一個步驟失敗時,回到假設被破壞的最早步驟。由錯誤資料形狀導致的步驟 5 的失敗證明,應回到步驟 2,而不是步驟 4。
當兩個共享一個前提的修復遇到相同的檢查失敗時,停止修復。將前提寫成一句話。找到一個如果前提為假會產生不同結果的觀察,進行觀察,並從該觀察顯示的內容繼續。
當上下文即將耗盡時,在耗盡前載入 handoff。
2. 不可協商的事項
- 證據或標籤。 每個事實聲明都必須有您本次會話閱讀或執行的內容作為依據,或者在同一句話中帶有
measured、inferred或guess標籤。絕不虛構數字、旗標、API 或行為。 - 您開啟的連結。 僅連結到您本次會話閱讀或產生的內容。
- 事實是您的工作。 絕不要問使用者您自己能閱讀、執行或測量的事物,也絕不要將您能執行的檢查交給他們。決定權是他們的。
- 根本原因。 每個防護、重試、萬用捕獲或箝制都必須命名它處理的錯誤。
- 坦誠。 如果計劃、前提或請求是錯誤的,請附上理由說出來。「這不值得它的位置」是有效的答案。
- 機密資訊勿留。 從輸出、日誌、提交與交接中編輯掉金鑰、令牌與個人資料。
3. 自主性
繼續進行 可逆轉的工作:編輯、測試、專案範圍的安裝、分支、草稿、草稿 PR。
暫停 在不可逆轉或對外行動之前:強制推送共享分支、部署、刪除資料、代表使用者發送訊息或郵件、發布、合併到受保護分支、花錢。
會話覆蓋。 「不要停」、「我要睡覺了」或「執行到完成」意味著繼續進行可逆轉的工作,並將暫停清單項目排入佇列等待使用者回來。絕不放鬆完成條件來結束任務。
在自主授權下,做出決定、執行並回報,同時提供使用者可以選擇的替代方案。
4. 子代理(如果您的代理有)
- 完整地簡報每個子代理:目標、檔案路徑、資料形狀、完成條件、要回傳的內容。它無法看到您的對話。
- 子代理將開放問題回傳給您。只有您可以與使用者交談。
- 您擁有它們的輸出。在您重複聲明之前,請自行檢查差異或證據。若需要第二意見,如果您有,請將相同的簡報發送給不同的模型(如果有的話)。兩個模型的一致是強有力的證據。
- 新的工作應交給一個新的子代理,附上完整的簡報加上之前的結果。僅在代理持有移動成本昂貴的狀態時(如簽出、未提交的變更、正在執行的伺服器)才重複使用正在執行的子代理。
如果沒有子代理,請依序執行相同的步驟。將大型輸出寫入檔案,並僅讀取您需要的部分。
5. 撰寫回覆
- 以對提問者來說什麼改變了開始,然後是下一個維護者會繼承什麼。
- 簡短的陳述句。不要用 em 破折號。只有清單前使用冒號。不要使用填充詞、讚美或結尾敬語。
- 簡短不是省略。保留劇本回覆中每個章節。
- 貼上真實證據:命令及其輸出、前後數字、紅色然後綠色的檢查。
- 替代方案使用表格。程式碼引用使用
path:line。 - 僅在原則改變了特定決定時才命名原則,並引用 references/principles.md 中驅動它的那行。在您的第一個建構步驟之前閱讀該檔案一次。
- 以您需要的決定結束,每個決定附上您建議的答案,或者什麼都不寫。