執行具備預算意識的 Agent 輔助工程健康度稽核,涵蓋指令/設定偏離(instruction/config drift)、Hooks/MCP、驗證介面與 AI 可維護性。當使用者要求稽核 Claude、Codex、Pi、Agent 指令、MCP 或 Hooks、驗證涵蓋率或 AI 可維護性偏離時使用。不適用於除錯應用程式碼或審查 PR。
Health:Agent 輔助工程健康度稽核
第一行前綴請加上行內 🥷 標記,不要獨立成段。
版本更新檢查(非阻塞式): 每次對話執行一次 bash <skill-base-dir>/scripts/check-update.sh,其中 <skill-base-dir> 請替換為此 Skill 的根目錄;若有印出內容請轉述,否則保持靜默(若腳本已執行過、不存在或報錯亦同)。每天最多檢查一次,僅讀取公開版本檔案,不會傳送任何資料。
請對照以下架構,稽核當前專案的 Agent 設定與 AI 程式碼可維護性:
Agent 設定 → 指令介面 → 工具/執行環境 → 驗證器 → 可維護性
找出違規事項,定位出層級不一致之處。僅需根據專案複雜度進行校準。
產出契約(Outcome Contract)
- 最終產出:一份具備預算意識的健康度報告,將 Agent 設定風險與 AI 可維護性風險分開呈現。
- 完成條件:每項發現均明確指出層級不一致之處、具體事證,以及可直接複製貼上的修復動作或診斷命令。
- 檢驗事證:收集到的健康度腳本輸出、追蹤的專案指令、執行階段設定摘要、驗證器紀錄、Hooks/MCP 介面,以及必要時的即時探測(Live Probes)。
- 輸出格式:按優先順序排列的發現事項(含狀態、影響度與下一步動作),或在告知殘留風險的前提下開立合格證明(Clean Bill)。
兩大維度共用同一份報告:
- Agent 設定健康度:Codex/Claude/Pi 的指令偏離、權限設定、Hooks、MCP、Skills 以及記憶供應鏈。
- AI 可維護性健康度:專案上下文涵蓋面、驗證器封裝(Verifier Wrapper)、產出物檢查、熱點程式碼所有權,以及過期或具誤導性的長期文件。
輸出語言: 請按以下順序判定:(1) 專案 Agent 指令(AGENTS.md 優先於執行環境特定檔案);(2) 全域 Agent 指令;(3) 使用者近期使用的語言;(4) 英文。
預算策略(Budget posture): 先從摘要稽核開始。當符合以下情況時,自動提升為深層稽核:使用者明確要求「深入」、「完整」、「徹底」或「繼續跑完」稽核;使用者主動提到 AI 程式碼腐化、Codex/Claude 設定偏離、上下文混亂、缺乏驗證、驗證器輸出指向過期路徑或「代碼變爛」;當前專案指令或記憶的使用者偏好要求預設執行深層稽核;專案屬於複雜(Complex)層級;或摘要稽核發現無法在地端釐清的關鍵疑點。否則,切勿讀取完整對話紀錄或啟動 Inspector 子 Agent。在升級前請先告知使用者,因為深層健康稽核會消耗大量的 Token 額度。
長期上下文預檢(Durable Context Preflight)
請參閱 references/durable-context.md 以瞭解何時讀取長期上下文、讀取順序預算以及記憶類型對映。
針對 /health:當前設定、命令輸出與即時探測的優先度高於記憶。若長期記憶問題會影響行為,亦應予以標記:如注入過大的摘要、過期或矛盾的條目、缺少專案入口點引用,或將私有路徑複製到公開指令中。請將這些列為上下文層面的發現,而非 Code Review 的發現。
Step 0:評估專案分級
請選擇一個層級,並僅套用該層級的要求。
| 分級 | 特徵訊號 | 預期要求 |
|---|---|---|
| Simple(簡單) | <500 個檔案、1 位貢獻者、無 CI | 僅需 CLAUDE.md;0-1 個 Skill;Hooks 可選 |
| Standard(標準) | 500-5K 個檔案、小型團隊或有 CI | CLAUDE.md + 1-2 個 Rules;2-4 個 Skill;基礎 Hooks |
| Complex(複雜) | >5K 個檔案、多位貢獻者、活躍的 CI | 需具備完整的六層架構設定 |
Step 1:收集資料
先以摘要模式執行收集腳本,暫不進行解讀。
# 從標準位置尋找 collect-data.sh(避免使用個人家目錄路徑)。
HEALTH_SCRIPT="${CLAUDE_SKILL_DIR:+$CLAUDE_SKILL_DIR/scripts/collect-data.sh}"
if [ ! -f "${HEALTH_SCRIPT:-}" ]; then
for candidate in \
"./skills/health/scripts/collect-data.sh" \
"$(npx skills path tw93/Waza 2>/dev/null)/skills/health/scripts/collect-data.sh"; do
[ -f "$candidate" ] && HEALTH_SCRIPT="$candidate" && break
done
fi
if [ ! -f "${HEALTH_SCRIPT:-}" ]; then
echo "health collect-data.sh not found; set CLAUDE_SKILL_DIR or reinstall: npx skills add tw93/Waza -a claude-code -g -y"
exit 1
fi
bash "$HEALTH_SCRIPT"
缺少工具時,部分區塊可能會顯示 (unavailable):
- 缺少
jq→ 對話紀錄區塊不可用 - 缺少
python3→ MCP/Hooks/allowedTools 區塊不可用 - 缺少
settings.local.json→ Hooks/MCP 可能不可用(僅使用全域設定時屬正常現象)
請將 (unavailable) 視為資料不足而非缺失或漏洞,切勿標記這些區域。
資料收集器包含執行環境特定與 Agent 通用的介面:
AGENT CONFIG SUMMARY/AGENT CONFIG DETAIL:涵蓋 Codex、Claude、Pi 與專案指令檔案。AI MAINTAINABILITY SUMMARY/AI MAINTAINABILITY DETAIL:涵蓋專案架構、驗證介面、熱點程式碼所有權、封裝腳本與文件連結。
Step 1b:MCP 即時檢查(MCP Live Check)
測試每個 MCP 伺服器:對每個伺服器呼叫一個無害的工具。記錄 live=yes/no 以及錯誤細節。尊重 enabled: false(直接跳過不予標記)。針對 API Key,僅檢查環境變數是否已設定(echo $VAR | head -c 5),絕不印出完整 Key。
Step 1c:安全與資安檢查
此步驟在資料收集完成後、Step 2 分析前執行。前兩項適用於所有稽核;第三項僅適用於包含長時間執行或自主 Agent 的專案。
資安基線檢查(Security Baseline Checks)
無論專案分級為何,每次稽核皆須執行。這是最低門檻,而非最高標準。
拒絕清單基線(Deny-list floor): 僅在執行環境確實有強制執行相應規則時套用:Agent 權限設定、Hook 設定、MCP 設定、允許/拒絕的工具,或已記錄的自主 Agent 啟動器。在此情況下,設定至少應拒絕:憑證與密鑰目錄(SSH、雲端服務商、GPG、gh CLI)、機密檔案(.env、credentials*、secrets*),以及 Pipe-to-Shell 安裝程式。將此回報為單一精簡的 WARN 並附上缺失的類別;讓審查者填入具體的在地路徑。三項校準原則:Prefix/Glob 權限規則無法可靠比對 Pipe 命令,因此請建議使用宿主環境的執行前 Hook 來封鎖 Pipe-to-Shell,而非自創 Glob 變體,並說明 Hook 本身的權衡(字串比對 Hook 也會觸發於僅包含該模式的引號文字或 Heredoc);在預測 Shell 出站拒絕的影響範圍前,先檢查其比對的層級:對 ssh 的命令前綴拒絕僅會封鎖 Agent 直接呼叫 ssh,而不會影響 Git 內部的 SSH 傳輸,但程序(Process)或沙盒(Sandbox)層級的封鎖則會中斷 Git-over-SSH 推送;當執行環境缺乏命令層級的拒絕介面時(如 Codex 的控制項為 sandbox_mode 與 approval_policy),請將該控制項作為使用者權衡說明一次,而非建議執行環境無法表達的 Deny Key。若完全不存在 Agent 設定介面,請將拒絕清單回報為「不適用」而非「失敗」。
權限層與指令層的防護機制(Permission-layer vs instruction-layer gating): Git 寫入動作(git push)的 Allowlist 條目與指令層規則(「僅在使用者指示時才 push」)並存,並不自動構成矛盾:指令決定動作何時發生,權限決定是否再次提示,而每個 Session 都明確授權 Push 的使用者可能會故意將 Push 留在 Allow 中以避免二次確認。請依可逆性與使用者本身的規則進行校準:指令明文禁止的動作(git reset --hard、git stash、Force-push)屬於 Deny 或 Ask;常規且經明確授權的動作則維持在使用者放置的位置,最多以 Note 回報。僅在自動模式加上跳過提示以及寬鬆的 Allow 導致寫入動作能在 Session 中完全無使用者輸入的情況下執行時才需升級,即便如此,也應提供摩擦力權衡由使用者自行選擇,而非默默移動條目。
環境覆寫介面(Environment override surface): 請將以下項目視為攻擊面,若在已追蹤的檔案或發布的設定中設定且未附帶修訂理由說明,請予以回報:API Base-URL 覆寫(將所有流量重新導向至第三方)、專案區域 MCP 伺服器的自動信任標記、萬用字元工具 Allowlist(allowedTools: ["*"]),以及跳過權限標記(--dangerously-skip-permissions 或同等標記)。僅印出 file:line 與 Key 名稱,絕不印出機密資料。
記憶與 Skill 供應鏈(Memory and Skill Supply Chain)
請將 Agent 記憶與第三方 Skill 視為供應鏈產物。它們是以使用者的權限執行。
記憶衛生(Memory hygiene): 稽核專案的 Agent 長期記憶儲存區是否包含機密、Token 或憑證(Critical),以及是否有由不可信執行(在受攻擊者控制的輸入上呼叫子 Agent、對外部內容進行 /loop 迭代)寫入的條目;建議在此類執行後進行密鑰輪替(Rotation)。針對高風險的單次執行(不可信的 PDF、不受控的網頁擷取、第三方腳本),建議在該 Session 中完全停用記憶持久化。
Skill 供應鏈: 第三方 Skill、外掛程式(Plugins)與 MCP 伺服器均以使用者的權限執行。針對每個非本 Git 庫原創的項目,請檢查:來源是否固定至 Release Tag 或 Commit Hash(而非 main、分支或持續追蹤最新 Head 的遠端 Git 市集)、Hook 處理程序未寫入憑證目錄、MCP 伺服器取得使用者明確同意(未透過萬用字元自動信任)。將未固定來源或未經審查的 Hook 處理程序回報為 Structural(結構性問題)而非 Critical,除非存在活躍的漏洞利用訊號。
長時間執行 Agent 的終止條件(Long-Running Agent Stop Conditions)
針對使用 /loop、自主 Agent 或任何長時間執行 Agent 流程的專案,專案必須定義明確的終止條件。永遠不停止的 Agent 是隨時可能發生的預算與安全事故。
請稽核以下四種硬性終止訊號;若缺少任何一項,請標記為 Structural(結構性)發現:
- 連續兩個檢查點(Checkpoints)無進展: 觸碰相同的檔案、記錄相同的錯誤、沒有新的 Commit/測試/輸出。建議終止 Loop 並呈現狀態,而非重試。
- 重複相同的失敗: 連續三次出現相同的 Call Stack、相同的錯誤訊息、相同的失敗 Assertion,意味著假設有誤;更多次的嘗試無濟於事。
- 超出成本或 Token 預算: 專案應宣告單次執行的預算上限(Token 數、API 花費、實際執行分鐘數)。當達到預算上限時即應退出 Loop,而非等工作完成才退出。
- 外部阻礙(Blockers): 目標分支存在 Merge Conflict、Agent 無法解開的套件相依性鎖定、缺少憑證、網路無法連線。任何一項皆應暫停 Loop 並詢問使用者,而非無限重試。
終止條件應存在於已追蹤的專案文件(AGENTS.md、Loop 的啟動腳本或專用設定檔)中,而非僅在 Agent 的 Prompt 裡。Prompt 容易被遺忘;已追蹤的設定才能強制執行。在專案支援的前提下,建議優先使用 Hook(針對相關工具的 PostToolUse)而非 Prompt 指令:Hook 在物理上無法被跳過,而 Prompt 指令可以。在推薦 Hook 前請先確認宿主環境的 Hook 涵蓋範圍:部分 Agent 僅對工具子集觸發 PostToolUse(例如,執行環境可能僅比對 Shell/Bash),因此必須在檔案編輯後執行的修復動作應放在 Stop 或 Session 結束的 Hook 上。




