跳轉到

TestBot Anti-Drift Strategy

概念概覽

Anti-Drift 的正確起點

核心知識

Anti-Drift 的正確起點

不能先寫宣告性 metadata(如 Step.Covers),因為此時沒有可信基線,文件會比實作樂觀。

正確三階段順序: 1. 先觀測:讓 bot suite 穩定跑通,收集 all_calls.jsonl(實際 RPC 呼叫記錄) 2. 再宣告:基於 all_calls.jsonl 建立 coverage_manifest.yaml(有事實支撐) 3. 最後機械化:才引入 Step.Covers codegen 或其他自動化 metadata

最小防線組合

coverage_manifest.yaml   ← 可信 RPC 覆蓋基線
migration_lint_test.go   ← 防止違規 DDL 進入主幹
bootstrap_test.go        ← 驗 fresh DB + upgrade path

Bot Scratch State 的型別安全

每個 Step 的臨時狀態應使用 typed StepContext/Scratch(生命週期限單步驟),**不能**用 map[string]interface{} 替換 typed god object。後者犧牲型別安全換來的「靈活性」實際上是 anti-drift 的溫床。

Subagent 驗證原則

「確認檔案存在 ≠ 確認內容正確」。Subagent 回報的 code review 結論必須透過直接讀取檔案驗證,不能盲目信任。

經驗教訓

  • anti-drift 起點是觀測(all_calls.jsonl),不是宣告(Step.Covers)

  • Bot scratch 要用 typed struct,map[string]interface{} 是 anti-drift 溫床

  • Subagent 輸出需要直接驗證,不能只信回報

常見陷阱

  • 先寫 Step.Covers 宣告性 metadata,導致文件比實作樂觀

  • 用 map[string]interface{} 當 step scratch,失去型別安全

  • 接受 subagent 的「確認存在」作為「內容正確」的證明

最佳實踐

  • 先讓 bot suite 穩定跑通收集基線,再建立 coverage_manifest.yaml

  • coverage_manifest 建立在 all_calls.jsonl 可觀測事實上

  • bootstrap test 同時跑 fresh DB 和 upgrade path

相關概念

來源 Sessions

日期 Session 貢獻摘要

| 2026-03-30 | 45cbfb38-30e4-4de0-9d9c-1ea02a62e945 | 確立「先觀測,再宣告,最後機械化」的 anti-drift 建立順序,避免先寫宣告性 metadata 導致文件比實作樂觀的問題 |


本概念頁面由 Semi-Brain Wiki 系統自動維護

最後更新: 2026-03-30