收口日期 2026-09-30。材料來自
FR-122-LOG.md七棒 block 濃縮,不憑記憶重建。 出貨版本 1.22.0,STG(188)/POC(189)/e2e 測試機(190)三環境同一份包(sha0f788947…)。
三支 AI 功能(小幫手、動態儀表板、證據自動分類)全部改走同一道 AI 閘道(jedi-ai-gateway);證據檔改在無金鑰、不出網的沙箱容器拆解;分類長工作搬進獨立背景工作行程 guidant-worker;每次 AI 呼叫留 ai_call_log 稽核紀錄;租戶與個人可設美金額度與每分鐘次數。從 09-28 需求討論到 09-30 三環境上線,共三天。
| 項目 | 數字 |
|---|---|
| Notion 卡 | 母卡 1+子需求 6+子任務/補強/文件/出包卡 64(CM-2293~CM-2363),全部 Done |
BE commits(712fb5b64..e62c3afcb,含出包鏈修正) |
133 |
FE commits(50bda00..3826339) |
31 |
jedi commits(18b52e50..017d12cb) |
35 |
| jedi 套件 | 新增 jedi-ai-gateway 0.1.0;升版 jedi-evidence-classification 1.5.0、jedi-ai-bot 1.4.0、jedi-ai-dashboard 1.5.0、jedi-license-runtime 1.1.3、jedi-remote-agent 1.2.3 |
| 主線 migration | 5 支(ai-call-log、background-jobs、ai-call-log-page、ai-quota-page、ai-usage-menu-rename),皆已進出貨基線 |
| 新服務 | guidant-worker、guidant-sandbox;退役 guidant-classifier |
/srv/guidant-ai/ai-gateway-rules/,客戶端可調、升級不覆蓋,改完重啟 api+worker 即生效。preload_app 共用)。| 決策 | 一句理由 |
|---|---|
| 閘道做 library 不做 proxy | 守門與稽核都自己做,多一個服務只是重疊;LiteLLM proxy 部分功能企業授權 |
| 沙箱純拆檔、無金鑰、不出網 | 解析不可信檔案的箱子不該握鑰匙又能打電話 |
稽核落自家 ai_call_log,預設只存 hash+長度 |
稽核紀錄不能變成新的外洩點;Langfuse 只 DEV |
| 成本用美金不用點數(推翻 09-28) | 點數換算表要另外維護且與實際花費脫鉤 |
| Prompt Guard 2 只量化詞彙表(513 MB) | 全量化 int8 帶 20 句內文時注入分數從 0.998 掉到 0.04 |
| 稽核寫入獨立交易 | 掛在業務交易上時「最該留紀錄的失敗呼叫」正是消失的那批 |
| 模型盲區用格式規則補,不調門檻 | Prompt Guard 對「索取密碼」分數 0.004,調門檻只會誤殺正常句 |
金鑰合併以既有列為底、刪除只認顯式 clear: true |
只走 payload 的鍵時,前端「不送沒改的」最佳化就把沿用變成刪除 |
design §7.1 十一條:1~7、11 在 DEV 由決策者親手驗過;8(沙箱無金鑰不出網)、10(classifier-jobs 清空)在 STG 與 190 驗過。第 9 條「分類中 restart guidant-api 不中斷」三環境皆未實跑——要先有分類工作在跑才驗得到,決策者裁收尾時接受此打折,留待下次 STG 有分類批次時順手驗。
「先存 A 家金鑰、再只填 B 家儲存,A 要保留」的修正(BE 62a864e62/FE 3826339)已在三環境部署,決策者手測未逐項回報,隨收尾一併視為接受。
ai-guard-tuning-guide.md(客戶端維運調守門,CM-2360)docs/release_notes/v1.22.0.md(CM-2362);spec-site 快照 docs/spec-site/current/legacy/v1.22.0/docs/analysis/2026-09-30-fr122-nuitka-hidden-deps-and-nofollow-closure.md(出包鏈根因)scripts/build/README.md:補「smoke 用臨時庫」SOP(本次)project_fr122_ai_gateway_shipped、followup_fr122_leftovers、feedback_fr122_push_delegated(失效)、新增三條教訓(見 §8)| 環境 | 狀態 | 備份 |
|---|---|---|
| 188 STG | 1.22.0/62a864e62,8 服務健康零重啟 |
/srv/guidant-ai/backup/guidant_ai-pre-1.21.0-20260930-213121.sql.gz |
| 189 POC | 同上(先停 api/socketio 再升,避開 Agent 心跳 deadlock) | /srv/guidant-ai/backup/guidant_ai-pre-1.21.0-20260930-225529.sql.gz |
| 190 e2e | 全新安裝後再 --upgrade --force 對齊 |
~/backups/pre-1.22.0-reinstall/(license_raw、guidant.env、.env、pki/agent) |
出貨包:188 /opt/guidant-ai-be/.build/bundle/guidant-ai-1.22.0.tar.gz(2.4 GB,sha256 0f788947424d66b83d3370bd38b2e3fc42d6d7dd9054d0979bd543c547ea3a55)。這是 --skip-prod-key-check 內部測試包,套件內只有 DEV/STG/POC 三把簽章鑰,不可交付客戶。
RestartCount 與 log。poetry.lock 在本 repo 入版控,舊 memory 寫反了(本次已改)。followup_fr122_leftovers)legacy/ 巢狀肥大,1.23.0 切版前必解。guidant_ai_smoke_1220 留刪待裁;.build/bundle/ 舊包 1.20/1.21 系列約 8 GB。key_source 篩選小卡、schema 歸屬規則、小幫手 FE 未接 needs_review。