兩個新模組

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