兩個新模組
Reflector(149 行):決策後生成繁中反思,自動截斷 2000 字符,
LLM 失敗回 None 不中斷 recon。
Judge(140 行):對推薦品質評 0.0–1.0 分,自動 clamp,
評估相似度 / 接受度 / 歷史成功率。
五個設計決策
| 原則 | 怎麼落實 |
|---|---|
| 異步優先 | 所有 LLM 呼叫 async/await,Reflector/Judge 為 coroutine,不阻塞 recon |
| 優雅降級 | LLM 失敗 → 回 None + warning,recon 繼續;反思/評分是 bonus 不是關鍵路徑 |
| 環境變數開關 | NOMAD_ENABLE_REFLECTOR / NOMAD_ENABLE_JUDGE 預設關閉 |
| 不可變性 | frozen dataclass、pure function 作 prompt builder |
| 繁中提示工程 | system / user prompt 與輸出全繁體中文 |
品質門檻
187/187 測試通過(Sprint D 特定 13/13),全程 0.84s。 所有函數 <50 行、檔案 <800 行、無深層嵌套、無硬編碼值、80%+ 覆蓋率。 Code review 收斂到 0 CRITICAL / 0 HIGH。
關鍵教訓
把 AI 功能當 bonus,不當關鍵路徑。「LLM 失敗就回 None、主流程照走」這個降級設計,是讓非確定性元件能安全進產品的前提。
環境變數預設關閉:新能力先 scaffold、可開關,而不是預設啟用後再補救。
subagent-driven-development:9 個任務拆給子代理並行推進,單日 +2101 行跨 17 檔完成。
來源:個人開發日誌 2026-05-07(Antigravity-Stack Phase 4)、2026-05-14(nomad-recon Sprint D)· 4 commits · 187/187 tests