fix(mcp): tag legacy provider calls with audit context
All checks were successful
Code Review / ai-code-review (push) Successful in 10s
CD Pipeline / tests (push) Successful in 59s
CD Pipeline / build-and-deploy (push) Successful in 3m22s
CD Pipeline / post-deploy-checks (push) Successful in 1m19s

This commit is contained in:
Your Name
2026-05-06 17:18:52 +08:00
parent 76aaaf480c
commit fa0e956c0e
11 changed files with 300 additions and 11 deletions

View File

@@ -1,3 +1,33 @@
## 2026-05-06 | MCP legacy provider 路徑補上飛輪稽核脈絡
**背景**AwoooP MCP Gateway 已有五閘門與 gateway audit但 production 仍有多條 legacy caller 直接走 ProviderRegistry 或 provider wrapper。硬切 Gateway 會因 contract/grant 尚未覆蓋所有路徑而造成修復鏈中斷,因此本輪先做「不改語義的稽核包裝」。
**本次修補**
- 新增 `mcp_audit_context.py`,統一產生 `_mcp_audit` 脈絡,保留 `session_id``incident_id``flywheel_node``agent_role``gateway_path`
- `PreDecisionInvestigator` MCP 感官蒐集注入 `flywheel_node=sense`
- `PostExecutionVerifier` 執行後驗證注入 `flywheel_node=verify`
- `CallbackDispatcher` Telegram 操作按鈕注入 `flywheel_node=operate``operator_user_id`
- `MCPBridge` legacy bridge 注入 `gateway_path=legacy_mcp_bridge`
- `HeartbeatReportService` 的 K8s / Velero probe 改用 `AuditedMCPToolProvider`,讓系統報告也留下 govern 稽核軌跡。
**策略**
- 這不是最終 enforcement。它先讓所有 legacy production path 可觀測、可追蹤,下一步才依 AwoooP contract/grant 分 lane 切到 `McpGateway.call()`
## 2026-05-06 | 111 Ollama 第三順位目前是網路不可達,不是 Router 跳過
**背景**:統帥指出 111 主機應該一直活著,但告警仍可能顯示 Gemini。重新用 live network path 驗證後GCP-A / GCP-B 可從 K8s Pod 與本機存取,但 `192.168.0.111` 在多來源均不可達。
**現場證據**
- `awoooi-prod` Pod 連 `34.143.170.20:11434``34.21.145.224:11434` `/api/tags` 成功。
- `awoooi-prod` Pod 連 `192.168.0.111:11434` timeout。
- 本機連 `192.168.0.111:11434` timeoutSSH `192.168.0.111:22` timeout。
- 110 / 120 / 121 / 188 對 `192.168.0.111` ping 100% loss`nc 22``No route to host``curl 11434``No route to host` 或 timeout。
- production log 顯示 provider order 仍是 `ollama_gcp_a → ollama_gcp_b → ollama_local → gemini`,且 GCP-A/GCP-B 都判定 healthy`ollama_local` 被判為 offline 是網路事實,不是順序設定錯誤。
**判讀**
- 188 Ollama 已退場;`192.168.0.188:11434` 從 LAN / K8s 連線被拒絕,這是預期狀態。
- 111 需要另行恢復 LAN reachability 或改走 mesh/proxy在 111 不可達期間第三順位無法提供備援Gemini 仍只保留為 Ollama 全部失敗後的付費備援。
## 2026-05-06 | MCPToolResult 相容舊 provider 的 data alias
**背景**AwoooP 整合風險 P0-D 指出部分 MCP provider 成功路徑仍使用 `MCPToolResult(data=...)`,但標準 dataclass 欄位是 `output``execution_id` 必填Sentry / ArgoCD 等成功路徑可能因此在有效 API 回應後反而 crash。