ADR-064: 補 I1 整合記錄(get_incident_type 三層降級、rule.id ≠ incident_type 設計決策) ADR-067: 補 D1 集中化完成記錄(9 purpose keys 對應表) Skill 02: 補 get_incident_type 使用規範 + Ollama D1 模型中央化禁令 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
3.0 KiB
3.0 KiB
ADR-067: Ollama 本地 AI 應用五大擴展
狀態: Approved
日期: 2026-04-10 (台北時間)
決策者: ogt (統帥)
執行者: Claude Code
背景
AWOOOI 基礎設施已有兩台 Ollama 主機(111/188)與多個已就緒模型,但 95% 的 AI 能力集中在 NemoClaw 對話與 OpenClaw RCA,其餘模型閒置。pgvector 0.8.2 已在 prod DB 就緒。
決策
批准實施五大 Ollama 本地 AI 應用,依優先順序:
| # | 應用 | 模型 | 主機 | Migration |
|---|---|---|---|---|
| 1 | RAG 知識庫 | nomic-embed-text (768d) | Ollama 188 | phase28_rag_pgvector.sql |
| 2 | PR 自動審查 | qwen2.5-coder:7b | Ollama 111 | phase29_pr_reviews.sql |
| 3 | Log 異常摘要 | deepseek-r1:14b | Ollama 111 | 無(Redis 快取) |
| 4 | Drift 報告摘要 | qwen2.5:7b-instruct | Ollama 111 | phase30_drift_narrative.sql |
| 5 | 圖片分析 | llava:latest | Ollama 111 | 無 |
架構原則(延續 leWOOOgo)
- Router 禁止直接存 DB/Redis
- 每個應用建立獨立 Service + Repository
- 模型配置集中在 models.json(purpose key)
- 雙軌儲存:Redis 熱快取 + PostgreSQL 永久
- 所有 LLM 呼叫需有 timeout + graceful fallback
實施時程
- Week 0: 前置確認(pgvector ✅,models.json 新增 purpose keys)
- Week 1 前: 應用 4(Drift 摘要)— 最小改動
- Week 1 後: 應用 3(Log 摘要)
- Week 2 前: 應用 2(PR 審查)
- Week 2-3: 應用 1(RAG pgvector)
- Week 3: 應用 5(圖片分析)
衝突評估
- 無衝突:Sprint 5R 前端重構(ADR-065)獨立進行,不影響後端
- 注意:應用 4 修改
drift.py背景任務,需確認不影響現有 B4 drift_reports 持久化(已完成) - 注意:應用 3 修改
telegram_gateway.py(橙區),每次修改前需重讀檔案 - 注意:Ollama 111 並發管控,deepseek-r1:14b 優先,drift_narrative 最低優先
D1 集中化完成記錄 (2026-04-11, commit f2c18c4)
models.json v1.3.0:9 個 purpose keys 新增,所有服務 hardcode 消除。
| purpose key | 模型 | 使用服務 |
|---|---|---|
| drift_summary | qwen2.5:7b-instruct | drift_narrator_service |
| drift_intent | qwen2.5:7b-instruct | drift_interpreter |
| log_anomaly | deepseek-r1:14b | log_summary_service |
| code_review | qwen2.5-coder:7b | local_code_review_service |
| image_analysis | llava:latest | image_analysis_service |
| nemoclaw | deepseek-r1:14b | decision_manager |
| playbook_draft | qwen2.5:7b-instruct | decision_manager |
| embedding | nomic-embed-text | embedding_service, knowledge_service |
| rag_generate | qwen2.5:7b-instruct | (RAG 生成備用) |
模型切換方式:修改 apps/api/models.json 對應 purpose key,重啟 Pod 生效,不需改代碼。
已確認基礎設施
- pgvector: 0.8.2 ✅
- nomic-embed-text: Ollama 111 + 188 ✅
- llava:latest: Ollama 111 ✅
- qwen2.5-coder:7b: Ollama 111 ✅
- qwen2.5:7b-instruct: Ollama 111 ✅
- deepseek-r1:14b: Ollama 111 ✅