Phase 4 A10 — OpenClaw 雙塔重劃 - run_scheduler.py: Meta 自審 cron 6h → 每日 12:00(月省 2.25M Gemini, +20% 達標) - scheduler.py: 移除 icaim 內 2 處 inline meta 觸發 - openclaw_strategist 抽 _push_report_with_charts (call×3) + _collect_mcp_intel (call×2) - 行數目標 -25% 未達(4 報告函數結構差異大,A10 採保守抽出避險) - 主戰果:Meta 降頻月呼叫 300 → 30(-90%) Phase 5 — 5 處 LOCKED-GEMINI 註解(涵蓋鎖定 7 場景) - services/mcp_collector_service.py:32 (場景 #1: Google Search Grounding) - services/openclaw_strategist_service.py:40 (場景 #2/3/4: 週/月/年報) - services/code_review_pipeline_service.py:46 (場景 #5: 100K+ token diff) - services/elephant_alpha_orchestrator.py:88 (場景 #6: EA HITL) - routes/openclaw_bot_routes.py:98 (場景 #7: PPT 簡報) Phase 6 A12 — 憲法級 ADR 三份 - ADR-028「LLM 路由統一準則」(269 行) - 5 大支柱:三主機級聯 / Ollama 優先 / 雙塔分工 / Gemini 鎖 7 場景 / 可觀測性 - 8 個 provider 白名單(DB CHECK 對齊) - 30+ caller 名單分「已實作 / 規劃中」 - ADR-029「Hermes-First 雙塔分工」(222 行) - 12 項職責重劃表 + A7/A8/A10 落地對照 - Gemini 月支出 -23.5%(critic 第 3 輪 B5 算術修正) - ADR-027 附錄(+69 行) - 三主機架構(Primary/Secondary/Fallback) - 4 條獨立 fallback 鏈 - 廢止「188 Ollama」概念 - README 索引更新 A11 critic 第 3 輪修補:5 BLOCKER 全清 - B1: 行數 1831 → 2677 (含 baseline 對照) - B2: 場景 #4 行號 759/1267 → 1102/1628 + annual 不存在註明 - B3: 虛構 caller 改實存(ea_hitl_prefetch → ea_engine 等) - B4: 白名單三層對齊(DB 8 = ADR 8 = token_report 補 ollama_secondary) - B5: KPI 算術 50→38 = -23.5% 重核 services/telegram_templates.py: A5 daily_token_report() 函數 services/mcp_collector_service.py: 加 LOCKED-GEMINI 註解 services/elephant_alpha_orchestrator.py: 加 LOCKED-GEMINI 註解 103/103 unit test 全綠(zero regression) Operation Ollama-First v5.0 / Phase 4 A10 + Phase 5 + Phase 6 A12 Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
5.2 KiB
ADR-027:Primary Ollama 遷移至 GCP 高效能主機
- Status: Accepted
- Date: 2026-05-03
- Decision Maker: 統帥
- Author: Antigravity
Context
為了提升 AI 處理速度與穩定性,並減輕本地 188 主機的負載,現已啟用一台位於 GCP 的高效能主機作為 Primary Ollama 伺服器。 原本地 188 或 111 的 Ollama 轉為 Fallback 節點。
Decision
1. 高效能主機配置
- Public IP:
34.21.145.224 - 服務端口:
11434 - 主要模型:
qwen2.5-coder:7b(程式碼修復與開發)hermes3:latest(Llama 3 級別,用於 Hermes 邏輯)bge-m3:latest(Embedding 專用)
2. 環境變數對應
OLLAMA_HOST_PRIMARY:http://34.21.145.224:11434OLLAMA_HOST_FALLBACK:http://192.168.0.111:11434(或 188 本地節點)
3. 資源分工
- Primary (GCP): 承載 90% 以上的 LLM 推理與 Embedding 請求。
- Fallback (Local): 當 GCP 連線超時或故障時,自動切換至本地節點( Hermes Rule-based 或本地 Ollama)。
Alternatives Considered
- 維持全本地: 188 主機 Load 較高,且 GPU 資源競爭激烈。
- 全雲端 API (OpenAI/Gemini): 成本較高,且無法控制模型版本與延遲。
Consequences
- 優點: 推理速度提升,系統負載均衡,具備異地備援能力。
- 缺點: 依賴外部網路連線,需注意 GCP 出口流量成本與安全性(目前採 IP Allowlist 保護)。
Verification
curl http://34.21.145.224:11434/api/tags驗證模型列表正常返回。- 測試
qwen2.5-coder:7b與bge-m3:latest回應正常。
附錄(2026-05-03 戰役 v5.0 補述)
補述背景:Operation Ollama-First v5.0 戰役 Phase 0/1/2/3 完成後,本附錄校正本 ADR 的主機架構與 fallback 鏈描述,並廢止「188 Ollama」概念。完整治理規則改由 ADR-028 / ADR-029 承接。
附錄 A:三主機架構(取代原 GCP / 111 二段描述)
戰役 v5.0 啟用第二台 GCP 高效能主機後,主機級聯升級為三層:
| 角色 | 公網 IP / 主機 | 儲存 | 規格 / 用途 |
|---|---|---|---|
| Primary | 34.143.170.20:11434 |
SSD | 9× 加載 / 2× 推理(v5.0 戰役新主機) |
| Secondary | 34.21.145.224:11434 |
SSD | 同等效能備援;本 ADR 原 Primary 降為次主 |
| Fallback | 192.168.0.111:11434(HDD) |
HDD | 統帥 Mac 上的 Ollama.app,最後一道本地防線 |
程式契約:所有 LLM 呼叫必須走 services/ollama_service.resolve_ollama_host()(Phase 2 A6 落地),按 Primary → Secondary → Fallback 順序探測:
- HTTP probe
GET /api/version,2s timeout(取代原純 TCP 探測,B3 修補) - 失敗主機
mark_unhealthy()30s(B4),TTL 內直接跳下一台 - 寫死 IP 已全面消除(
services/aider_heal_executor.py:48-49與services/code_review_pipeline_service.py:218-225兩處 N2/N3 修補)
詳見 docs/phase2_deploy_verify_20260503.md。
附錄 B:4 條獨立 fallback 鏈(不存在「線性 LLM 鏈」)
戰役 v5.0 audit 證實系統實際有 4 條(嚴格說 5 條)獨立 fallback 鏈,語意各異不可合併:
-
Ollama host 級(基礎設施層)
gcp_ollama(Primary) →ollama_secondary→ollama_111實作:services/ollama_service.resolve_ollama_host() -
Hermes 競價 / 意圖分類(戰術層) Ollama → 規則引擎兜底 實作:
services/hermes_analyst_service.py(ADR-004) -
NemoTron 派遣(行動層) NIM
meta/llama-3.1-8b→ Hermes 規則引擎 實作:services/nemoton_dispatcher_service.py(ADR-004) -
OpenClaw Q&A(戰略層 / Telegram) Gemini 2.5 Flash → NIM
deepseek-v3.2→ 字面 fallback Phase 3 A7 已切:Hermes qwen3:14b → 信心低升 Gemini → NIM 實作:services/openclaw_strategist_service.py/routes/openclaw_bot_routes.py:6784-6843 -
MCP 即時情報(外部資訊層) Gemini Grounding L1 → Gemini Grounding L2 → Ollama L3 → 靜態字串 實作:
services/mcp_collector_service.py:163-214
附錄 C:廢止項
- 「188 Ollama」概念全面廢止
188 主機(
192.168.0.188)僅作為以下用途:- SSH AutoHeal target(
docker restart/ log scan,ADR-013) - momo-pro Docker Compose 運行環境(ADR-008)
- momo-postgres / momo-db / momo-scheduler / momo-telegram-bot 容器宿主
- 不安裝、不運行 Ollama(Ollama 全部走 GCP Primary / Secondary 或統帥 Mac 111)
- 任何「188 Ollama」字樣的舊文件視為過時,以本附錄為準
- SSH AutoHeal target(
- 原
OLLAMA_HOST_FALLBACK = http://192.168.0.111:11434env var 仍保留,但解析路徑改由resolve_ollama_host()統一管控,不再被任何呼叫點寫死引用
附錄 D:治理規則升級指引
戰役 v5.0 後,所有 LLM 治理決策改以以下文件為準:
- 路由白名單 / caller 清單 / Gemini 鎖定場景 → ADR-028
- Hermes 主塔 vs OpenClaw 副塔分工 → ADR-029
- 部署驗證劇本 →
docs/phase2_deploy_verify_20260503.md - DB 觀測層 schema →
migrations/024_create_ai_calls_table.sql~026_add_embedding_signature.sql - Logger 程式契約 →
services/ai_call_logger.py
本 ADR-027 保留作為戰役起點的歷史紀錄,不再作為主要參照入口。