Files
ewoooc/docs/p9_completion_report_v2_20260424.md
ogt fcac03379d [V10.4-A] 加強 commit-quality Hook + P9 文件歸檔
新增 Edit/Write/MultiEdit 事件攔截(原僅攔截 git commit Bash 指令),
補齊 getenv fallback 模式偵測,防止 hardcoded Token 透過工具直寫入檔案。

- .claude/hooks/commit-quality.js: 改寫為 PreToolUse JSON 格式,覆蓋 Edit/Write/MultiEdit
- .claude/settings.json: 新增 Edit|Write|MultiEdit|Bash matcher 註冊
- .claude/hooks/__test__/commit-quality.test.sh: 4 case 自動化測試
- docs/guides/DISK_EXPANSION_GUIDE.md: 磁碟擴充 SOP 歸檔
- docs/p9_completion_report_*.md: P9-1 + P9-2 Sprint 完成報告
- docs/refactor/callback_prefix_proposal.md: 308 按鈕回呼前綴分析(Method C)
- docs/refactor/openclaw_bot_routes_split_plan.md: 5999 行神檔拆分計畫

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-25 01:42:40 +08:00

12 KiB
Raw Permalink Blame History

[P9-COMPLETION-v2] 三 AI NLP 修復 + P9-1 合併 Sprint 總報告

日期2026-04-24
統籌者plannerP9 模式)
前身:docs/p9_completion_report_20260424.mdP9-1
本報告合併P9-1 遺留 + P9-2 三 AI NLP 全斷修復成果,給出完整 Sprint 時程與部署批次建議。
鐵律:本報告只做規劃,不含任何程式碼修改。


0. Executive Summary

P9-2 六階段跑完A 診斷 → B DB 覆核 → C 外部文件覆核 → D 實作 → E 暫停等 KEY → F critic 審查中),合計 13 個檔案 / +985 / -227 行(含 P9-1 既有變動)。

核心成果:

  • 三 AI NLP 全斷根因鎖定並修正Hermes/NemoTron 方法補齊、ai_orchestrator SQL 加 text()、OpenClaw 接入 telegram_ai_integration、繁中化回應。
  • AIOps/KM 真問題重新定義db-expert 推翻 Phase 1-E 誤判,指出 AIOps writer 從未實作incidents/heal_logs 表從頭沒人寫入ai_insights 63/70 旁路繞過 _enqueue_embedding
  • 外部風險警報Gemini 2.0 Flash 2026-06-01 EOL(僅剩 5 週NVIDIA NIM 40 RPM 硬牆未加限流Ollama /api/embeddings 已 deprecated。
  • Sprint 0 阻斷項.env 完全沒有 GEMINI_API_KEY(三容器都沒),必須統帥親手提供才能推進 Sprint 1。

1. Git 變更全景git diff --stat

 .claude/hooks/commit-quality.js         | 134 +++++++++++------
 .claude/settings.json                   |  80 +++++++++-
 .env.example                            |   8 +
 config.py                               |  10 ++
 docker-compose.yml                      |  10 +-
 routes/openclaw_bot_routes.py           | 251 ++++++++++++++++++--------------
 services/ai_orchestrator.py             |  14 +-
 services/hermes_analyst_service.py      | 126 ++++++++++++++++
 services/nemoton_dispatcher_service.py  |  57 ++++++++
 services/openclaw_strategist_service.py |  51 +++++++
 services/telegram_bot_service.py        | 221 +++++++++++++++++++++++++---
 services/telegram_templates.py          | 154 +++++++++++++++++++-
 telegram_ai_integration.py              |  96 ++++++++----
 13 files changed, 985 insertions(+), 227 deletions(-)

分類:

類別 檔案
Hook + 本地設定 .claude/hooks/commit-quality.js, .claude/settings.json
環境 / 配置 .env.example, config.py, docker-compose.yml
P9-1 Telegram runtime routes/openclaw_bot_routes.py, services/telegram_bot_service.py, services/telegram_templates.py
P9-2 三 AI NLP 修復 services/ai_orchestrator.py, services/hermes_analyst_service.py, services/nemoton_dispatcher_service.py, services/openclaw_strategist_service.py, telegram_ai_integration.py
新檔staged services/mcp_context_service.py
Untracked待決 sqlite:/, scripts/diagnose_env.py, scripts/cleanup_harbor_data.sh, scripts/setup_harbor_cleanup_cron.sh, n8n-workflows/27-*.json, docs/guides/DISK_EXPANSION_GUIDE.md, docs/refactor/

2. 合併 Sprint 時程P9-1 + P9-2

Sprint 0 — 本日統帥親操Agent 無法代勞)

# 動作 負責 阻斷
S0-1 BotFather /revoke 吊銷 OpenClawAwoooI_Bot 既有 Token取得新 Token 統帥 三專案共用 Botrevoke 後三個 .env 都要換
S0-2 提供 GEMINI_API_KEYGoogle AI Studio 申請 / Vault 取出) 統帥 P9-2-E 暫停點,無此 KEY 則 OpenClaw L3 全斷
S0-3 裁定三容器注入策略:momo-pro-system / momo-scheduler / momo-telegram-bot 各自是否需 GEMINI_API_KEY 統帥 影響 docker-compose env 段與 .env
S0-4 重啟三容器(docker compose up -d --no-deps --force-recreate禁 --remove-orphans 統帥/Agent ADR-011

Sprint 1 — 48 小時內Agent 推進commit + 部署 + smoke test

# 動作 執行
S1-1 critic 審查 P9-2-D 的 5 檔實作P9-2-F 完成後) critic
S1-2 分四批次 commit詳見 §3 fullstack-engineer
S1-3 推送 main 觸發 Gitea Actions sync 部署 Git push
S1-4 Smoke test/health、Telegram cmd:ppt:daily、L1/L2/L3 三路 NLP 對話 統帥 + Agent
S1-5 建立 P9-1 Hook 對主機 Compose 指令白名單測試 tool-expert

Sprint 2 — 一週內(基礎建設補強)

# 動作 執行 來源
S2-1 AIOps writer 實作incidents / heal_logs 表) db-expert + fullstack P9-2-B P0
S2-2 ai_insights 旁路寫入改走 _enqueue_embeddingcode_review / elephant_alpha 兩處) db-expert + fullstack P9-2-B P1
S2-3 M4 module-level dict 改為 Redis / worker-safe store fullstack P9-1
S2-4 NVIDIA NIM 40 RPM rate limitertoken bucket+ 429 退避 fullstack P9-2-C P1
S2-5 Embedding worker 從「import 時啟動」改為獨立 service / scheduler 任務 db-expert P9-2-B P2
S2-6 KM 雙寫斷鏈驗證:隨機抽 10 筆 ai_insights 確認 embedding 補齊 db-expert P9-1

Sprint 3 — 兩週內(架構決策與重構)

# 動作 執行 來源
S3-1 Gemini 2.5 遷移Flash 或 Pro2.0 於 2026-06-01 EOL剩 5 週) fullstack + web-researcher P9-2-C P0
S3-2 Callback prefix 統一(方案 C308 按鈕加 momo: refactor-specialist P9-1
S3-3 telegram_bot_service.py 5969 行拆分H1地圖已有45h refactor-specialist P9-1
S3-4 雙 Bot 架構決策(繼續共用 OpenClawAwoooI_Bot vs 獨立 MomoProBot 統帥 + 架構會議 P9-1
S3-5 config.py / docker-compose.yml / sqlite:/ 落地處置(裁定留存 or 刪除) 統帥 P9-1

Sprint 4 — 監控期(效能調校與 Deprecation 清理)

# 動作 執行 來源
S4-1 Ollama /api/embeddings/api/embed 全域遷移 fullstack P9-2-C P1
S4-2 OLLAMA_KEEP_ALIVE=-1 設定bge-m3 常駐記憶體) 運維 P9-2-C P2
S4-3 三 AI NLP 成本與延遲指標儀表板Superset fullstack 新增
S4-4 Gemini 2.5 遷移後 7 日對比觀察成本、token、延遲 統帥 + AI S3-1 收尾

3. 部署批次建議

為避免一次性大改(違反「保守迭代切入」鐵律),分四批 push

批次 AHook + 散落檔清理(風險最低)

檔案.claude/hooks/commit-quality.js.claude/settings.json.env.example
Smoke test

  • 本機 git commit 嘗試塞入假 TokenHook 應阻擋
  • Claude Code 重新啟動settings.json 能正常載入
  • .env.example diff 內容不含真實 KEY

批次 BTelegram Runtime 主修P9-1 BLOCKER

檔案routes/openclaw_bot_routes.pyservices/telegram_bot_service.pyservices/telegram_templates.py
Smoke test

  • Telegram 發送 cmd:ppt:dailycmd:ppt:weekly,按鈕回應正常
  • EventRouter.dispatch() 發出的六類模板各選一筆檢視格式
  • 308 個 callback_data 不跨專案衝突momo:/openclaw:/awoooi: 隔離)
  • /health 200

批次 C三 AI NLPP9-2 主修Sprint 0 完成後)

檔案services/ai_orchestrator.pyservices/hermes_analyst_service.pyservices/nemoton_dispatcher_service.pyservices/openclaw_strategist_service.pytelegram_ai_integration.py
前置GEMINI_API_KEY 已注入並重啟三容器
Smoke test

  • L1 路Telegram 問 "昨天業績怎樣" → Hermes 回繁中摘要
  • L2 路Telegram 問 "下禮拜要不要漲價" → NemoTron 分派
  • L3 路Telegram 問 "幫我規劃 Q2 策略" → OpenClawGemini回繁中策略
  • ai_orchestrator.py 的 SQL 查詢不再丟 ProgrammingError: text() required
  • ai_insights 表新增紀錄embedding 欄位有值(走 _enqueue_embedding

批次 Dcompose + docs最後收尾

檔案docker-compose.ymlconfig.pyservices/mcp_context_service.pydocs/*
Smoke test

  • Gitea Actions rebuild 模式觸發(因 compose 變動)
  • 三容器重啟後 docker ps 皆 healthy
  • momo-db 未被動到ADR-011 防線)
  • ADR / 新文件可在 Gitea 瀏覽

批次 A/B 可於 Sprint 1 前半併行推進(不等 S0-2 KEY批次 C 強制等 Sprint 0 完成;批次 D 收尾。


4. 統帥決策點 Checklist

本次累計共 9 項需統帥裁定,打勾才能進下一階段

Sprint 0阻斷項本日必決

  • D1:是否立即 BotFather /revoke OpenClawAwoooI_Bot?(影響三專案 Token 同步換)
  • D2:提供 GEMINI_API_KEYP9-2-E 暫停點,無此 KEY 則 L3 全斷)
  • D3GEMINI_API_KEY 注入策略 — 僅 momo-telegram-bot?或三容器全注入?(影響 docker-compose

Sprint 1部署階段

  • D4:四批次 commit 順序是否依 §3 推進?是否同意批次 A/B 併行、C 等 KEY、D 收尾?
  • D5P9-2-F critic 若出 🔴/🟠 finding是否沿用 ADR-014「finding 一律 auto_fix=true」

Sprint 2-3中期決策

  • D6Gemini 2.5 Flash vs Pro 選型(成本 vs 效能web-researcher 已列比較表)
  • D7Callback prefix 方案 C全 308 按鈕加 momo:)是否同意?
  • D8telegram_bot_service.py H1 拆分 45h 工時,是否排入 Sprint 3還是延後
  • D9:雙 Bot 架構 — 繼續共用 vs 獨立 MomoProBot(影響 2 個兄弟專案,需跨專案協調)

散落檔裁定(隨時可決)

  • D10sqlite:/telegram_*_fix.pyfix_*.pypatch_tc.pysimple_fix.py 等 untracked 雜檔 — 留存或批量刪除?

5. 風險雷達

# 風險 嚴重度 應對 Sprint
R1 Gemini 2.0 Flash 2026-06-01 EOL 🔴 P0 5 週內完成 2.5 遷移 S3-1
R2 AIOps writer 從未實作incidents/heal_logs 空表 🔴 P0 db-expert 立即補 writer S2-1
R3 .envGEMINI_API_KEY 導致 L3 全斷 🔴 P0 統帥手動提供 S0-2
R4 NVIDIA NIM 40 RPM 硬牆未加限流,尖峰會 429 🟠 P1 token bucket + 退避 S2-4
R5 ai_insights 63/70 筆繞過 embedding 🟠 P1 旁路改走 _enqueue_embedding S2-2
R6 Ollama /api/embeddings deprecated 🟡 P2 /api/embed S4-1
R7 三專案共用 Bot Token 未 revoke 🔴 P0 BotFather 立即吊銷 S0-1
R8 M4 module-level dict 多 worker 不一致 🟡 P2 遷 Redis S2-3

6. 完成標準Definition of Done

P9-2 本批次

  • P9-2-A ~ D 完成5 檔實作落地
  • P9-2-E統帥提供 GEMINI_API_KEY
  • P9-2-Fcritic 審查無 🔴/🟠 遺留
  • 部署後三路 NLP smoke test 全綠

整體 P9-1 + P9-2 合併

  • 四批次 commit 依序部署完成
  • https://mo.wooo.work/health 持續 200
  • Telegram 三路對話繁中化正確
  • 統帥決策點 D1-D5 全打勾
  • 下一輪 Sprint 2AIOps writer + KM 補寫Task Prompts 出齊

7. 附錄:本報告相關檔案絕對路徑

  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/docs/p9_completion_report_20260424.mdP9-1 原報告)
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/docs/p9_completion_report_v2_20260424.md(本報告)
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/services/ai_orchestrator.py
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/services/hermes_analyst_service.py
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/services/nemoton_dispatcher_service.py
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/services/openclaw_strategist_service.py
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/telegram_ai_integration.py
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/services/telegram_bot_service.py
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/services/telegram_templates.py
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/routes/openclaw_bot_routes.py
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/docker-compose.yml
  • /Users/ooo/Library/Mobile Documents/com~apple~CloudDocs/momo-pro-system/.env.example

報告終。Sprint 0 卡在統帥 D1/D2/D3 三項決策,其餘 Agent 可備戰但不推進。