Delivery Gate — 機械式品質閘門 for Claude Code
一個 Stop hook,在 Claude 完成工作前檢查三件事,僅使用確定性檢查 — 檔案修改時間戳記、磁碟用量以及 transcript 文字中的正則表達式。無任何 AI 推論。
這與推理閘門(如 self-audit)不同:delivery-gate 檢查機器可驗證的事實;self-audit 則從四個推理維度檢查輸出品質。兩者共同形成縱深防禦:
- delivery-gate:「學習庫今天有更新嗎?磁碟空間安全嗎?」
- self-audit:「檔案內容正確、完整且誠實嗎?」
這與 CI 管線閘門相同 — 自動化、確定性的檢查,驗證機器可讀的事實,而非信任自我回報的狀態。
檢查項目
| 檢查項目 | 機制 | 觸發結果 |
|---|---|---|
| 合理化模式 | 對 transcript 結尾進行正則比對 | 僅警告(永不阻擋) |
| 學習庫過時 | 檢查 5 個可設定路徑的 mtime | 若部分過時則警告;若 ≥3 個過時 或 growth-log 過時且任務複雜則阻擋 |
| 磁碟空間 < 50GB | shutil.disk_usage | 警告 |
| 磁碟空間 < 15GB | shutil.disk_usage | 阻擋(exit 2) |
合理化偵測會針對諸如「先跳過測試」和「預先存在的錯誤」等模式發出警告 — 這些是思考可能被中斷的表面跡象。它永遠不會自行阻擋,因為正則啟發式可能誤判。阻擋條件為:磁碟空間危急、≥3 個學習庫過時,或 growth-log 特定過時(均需複雜任務編輯次數 ≥3)。
為什麼需要
Claude Code 內建的檢查涵蓋程式碼品質(建置 → 型別檢查 → 語法檢查 → 測試)。但存在另一種失敗模式:AI 產出可運作的程式碼,但工作階段的衛生習慣被忽略 — 學習未被記錄、合理化捷徑、磁碟空間悄悄用完。
在多次「出貨後就忘記」的工作階段後,人類沒有成長。這個 hook 強制執行習慣:複雜任務 → 必須更新學習庫。
安裝
cp quality-gate.py ~/.claude/scripts/
在 ~/.claude/settings.json 中加入:
{
"hooks": {
"Stop": [{
"hooks": [{
"type": "command",
"command": "python3 ~/.claude/scripts/quality-gate.py",
"timeout": 5000
}]
}]
}
}
學習庫
在專案的記憶體目錄中建立以下檔案。hook 會檢查是否至少有一個在今天被更新:
memory/
├── growth-log/ # 每日學習記錄(目錄)
├── decisions/log.md # 決策日誌
├── output-index.md # 工作階段輸出索引
├── ratings-tracker.md # 技能評分隨時間變化
└── tooling_capabilities.md # 已知工具清單
可自訂 LIBS 字典以符合您自己的檔案結構。
設定
編輯 quality-gate.py:
| 變數 | 預設值 | 用途 |
|---|---|---|
RATIONALIZE | 4 個模式 | 用於合理化偵測的正則表達式模式 |
LIBS | 5 個學習庫 | 檢查今天是否有更新的檔案/目錄 |
COMPLEX_THRESHOLD | 3 | 判定為複雜任務的編輯/寫入次數 |
DISK_WARN_GB | 50 | 低於此值發出警告 |
DISK_CRIT_GB | 15 | 低於此值阻擋 |
範例
簡單任務 — 允許:
edit_count=1 (< 3,非複雜任務) → exit 0
複雜任務,有學習記錄 — 允許:
edit_count=5 (複雜) → 檢查 LIBS → growth-log 今天已更新 → exit 0
複雜任務,無學習記錄 — 阻擋:
edit_count=4 (複雜) → 檢查 LIBS → 全部 5 個過時 → exit 2
stderr: "Blocked: complex task completed but no learning captured today."
磁碟空間不足 — 阻擋:
disk_free=12GB < 15GB 危急 → exit 2
stderr: "Blocked: disk space at 12GB (threshold: 15GB)."
限制
這個 hook 強制的是更新學習庫的習慣,而非記錄的品質。如果 output-index.md 已更新但 growth-log 被跳過,hook 仍會通過(5 個學習庫中更新了 1 個)。這是刻意設計的:機械式閘門檢查機器可驗證的事實。若要驗證內容品質,請搭配 self-audit 使用。
相容性
- Python 3.8+(使用
from __future__ import annotations) - 跨平台:Windows、macOS、Linux
- 無任何第三方相依套件
品質
此程式碼經過 4 輪自動化程式碼審查(CodeRabbit + Greptile),共發現並修復了 9 個實際錯誤。
參見
self-audit— 推理品質閘門(完整性/一致性/根據性/誠實性)verification-loop— 程式碼品質檢查(建置/型別檢查/語法檢查/測試)gateguard— PreToolUse 安全閘門