worktrees-hives 技能 是做什麼的?
可安裝的智能體技能,用於 worktrees-hives 混合協調器。
使用時機
在以下情況使用此技能:
- 從 GitHub 或 Linear 問題中發現工作
- 為程式碼變更生成工作者子智能體
- 監護拉取請求通過 CI
- 將結果回報給操作者
安全防護措施
這些規則不可協商。任何智能體、協調器或平台覆蓋都不得放寬它們。
拒絕清單(絕不執行)
| 指令 / 操作 | 原因 |
|---|---|
gh pr merge | 智能體絕不應合併 PR。合併必須由人類進行。 |
gh pr merge --auto | 相同禁止;自動合併也是合併。 |
git push --force(裸) | 破壞性;會遺失歷史。僅允許使用 --force-with-lease。 |
git push -f(裸) | 相同破壞性推送的簡短形式。 |
GraphQL mergePullRequest | 透過 API 合併仍然是合併。 |
REST PUT /repos/.../merge | 透過 REST 合併仍然是合併。 |
| 建立任何合併提交 | git merge 在工作樹中合併 PR 分支。 |
允許使用帶租約的強制推送清單
git push --force-with-lease 僅在以下情況允許:
- 智能體正在將自己的功能分支基於更新的基底進行重定基底。
- 智能體正在修復因遠端參考過期而失敗的強制推送。
- 操作者明確指示進行強制推送。
在使用 --force-with-lease 之前,智能體必須:
- 驗證目前分支是指定的工作樹分支(不是
main、master或其他智能體的分支)。 - 確認遠端參考是智能體所預期的(沒有其他人意外的推送)。
修復上限語義
規則: 每個 PR 在每次監護循環中最多獲得 3 個程式碼修復提交。
- 計算項目: 更改原始碼、測試、配置或影響行為的文件之提交。
- 不計算項目: 來自重定基底的合併提交、CI 觸發的提交(例如鎖定文件更新)、對 PR 的回覆評論。
- 達到上限時: 智能體必須停止提交,並將剩餘問題報告為 PR 評論。智能體繼續回覆審查評論並監控 CI,但不會推送新的程式碼變更。
- 殘留問題報告: 達到上限時,智能體發布一條評論,列出:剩餘的 CI 失敗、未解決的審查討論串、以及建議人類或下一個循環採取的後續步驟。
- 重置: 當操作者開始新的監護循環時(明確重新啟動,非自動),上限重置。
分支/工作樹編輯前檢查清單
在進行任何程式碼變更之前,智能體必須驗證:
- 工作樹隔離:
pwd在指定的工作樹路徑內({worktree_root}/{owner}/{repo}/{job_id})。 - 分支正確性:
git branch --show-current與指定的功能分支匹配。 - 乾淨狀態:
git status顯示沒有來自其他工作的未提交變更。 - 遠端對齊:
git fetch && git status確認分支追蹤預期的遠端。 - 無跨邊界編輯: 不得修改工作樹外部的檔案(無
../路徑,無工作樹根目錄外的絕對路徑)。
如果任何檢查失敗,智能體必須中止並報告不匹配。
最終狀態指引
當監護循環結束時(成功或達到上限),智能體報告:
- PR 狀態: 開啟 / 準備好審查 / 受阻
- 修復計數: 此循環中推入的程式碼修復提交數量(例如「2/3」)
- 殘留問題: 列出未解決的 CI 失敗、審查評論或障礙
- 智能體歸屬: 每條 PR 評論和提交訊息都包含智能體識別資訊
智能體不得聲稱它合併了 PR。如果 PR 顯示為已合併,智能體報告「PR 由人類合併」並停止。
平台中立的工作者提示模板
在生成工作者子智能體時,在提示中包含以下安全說明:
安全規則(不可協商):
- 絕不合併 PR 或調用任何合併 API/CLI
- 絕不使用裸的 `git push --force` 或 `git push -f`
- `git push --force-with-lease` 僅允許用於重定基底自己的分支
- 絕不編輯指定工作樹外部的檔案
- 每個監護循環絕不提交超過 3 個程式碼修復提交
- 編輯前,驗證:工作樹路徑、分支名稱、乾淨狀態
- 推送後,回覆 SHA 和智能體歸屬
- 達到上限時,報告殘留問題;不要推送更多程式碼
實施層級
這些防護措施在多個層級實施:
- 智能體技能(此文件): 可攜帶的文件和提示模板。不是安全邊界——如果沒有受到平台約束,智能體可能繞過。
- Python 協調器: 通過子進程橋實施策略。計數修復提交、驗證路徑,並在指令到達 Rust 之前阻止拒絕清單中的指令。
- Rust 核心(
wh-core): 硬性實施。在進程邊界拒絕不安全的 git/GitHub 操作。這是權威的安全層。
縱深防禦:所有三個層級實施相同的規則。一個層級的失敗會被另一個層級捕獲。