更新: - ADR-027: 新增緊急事故修復章節 - LOGBOOK: 記錄 2026-03-26 事故時間線 - Skill 02 v1.6: 新增 Telegram 去重機制章節 根因: Phase 6.5 修改 + INC- 前綴重複 修復: Redis 去重 (10 分鐘) + 前綴檢查 Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
1361 lines
59 KiB
Markdown
1361 lines
59 KiB
Markdown
# LOGBOOK - AWOOOI 進度軌跡
|
||
|
||
> **用途**: AI 代理進度追蹤,防止 Session 斷層
|
||
> **規則**: 完成重要節點後追加一行
|
||
|
||
---
|
||
|
||
## 📍 當前狀態 (2026-03-26 20:05 台北)
|
||
|
||
| 項目 | 狀態 |
|
||
|------|------|
|
||
| **當前 Phase** | **Phase 17.1 Incident-Approval 同步** |
|
||
| **Day** | Day 10 |
|
||
| **AI Fallback** | ✅ **Ollama 優先 (已切回,Gemini 404 問題)** |
|
||
| **ADR-027** | ✅ **批准** (Incident-Approval 同步架構) |
|
||
| **ADR-026** | ✅ **批准** (CoreDNS GitOps) |
|
||
| **Telegram 告警** | ✅ **修復完成** (INC-INC- bug + 去重機制) |
|
||
| **架構審查** | ✅ **完成** (5 個關鍵問題識別) |
|
||
| **K8s 部署** | ✅ **CD 自動處理 selector 不可變問題** |
|
||
|
||
### 🔴🔴 2026-03-26 Telegram 告警轟炸緊急修復 (Day 10 晚間 19:30-20:00)
|
||
|
||
**事故**: Telegram 同樣告警重複發送 (INC-INC-INC- 格式)
|
||
|
||
**根因分析**:
|
||
1. Phase 6.5 (765ee39) 修改: COMPLETED decision + INVESTIGATING incident → 建立新 decision
|
||
2. 每次前端 poll `/api/v1/incidents` 都觸發新 decision → Telegram 訊息
|
||
3. `telegram_gateway.py:161` 又加 INC- 前綴 → INC-INC- 格式
|
||
4. Gemini API 返回 404 但計費 (91/500 quota 浪費)
|
||
|
||
**修復內容**:
|
||
| 修復 | 檔案 | Commit |
|
||
|------|------|--------|
|
||
| INC- 前綴重複 (decision) | decision_manager.py:83 | 35aa690 |
|
||
| INC- 前綴重複 (telegram) | telegram_gateway.py:161 | 139ddc3 |
|
||
| Telegram 去重 (10 分鐘 Redis) | decision_manager.py | 35aa690 |
|
||
| Ollama 優先順序 | kubectl set env | - |
|
||
| K8s selector 不可變 | cd.yaml | 6421af0 |
|
||
| TypeScript 錯誤 | live-approval-panel.tsx | 0e6c381 |
|
||
| Lint 錯誤 | services/__init__.py | df04254 |
|
||
|
||
**教訓**:
|
||
- 🔴 修改 Phase 6.5 decision 邏輯時沒考慮 polling 影響
|
||
- 🔴 沒有 Telegram 發送頻率限制機制
|
||
- 🔴 Gemini API 404 問題未及時發現
|
||
|
||
---
|
||
|
||
### 🔴 2026-03-26 首席架構師完整審查 + ADR-027 批准 (Day 9 晚間 19:30)
|
||
|
||
**審查觸發**: 活躍事件顯示 0 + Telegram 告警異常 (統帥要求)
|
||
|
||
**首席架構師審查結果**:
|
||
|
||
| 問題 ID | 描述 | 嚴重度 |
|
||
|---------|------|--------|
|
||
| CRITICAL-001 | Incident-Approval 建立不是原子事務 | 🔴🔴 |
|
||
| CRITICAL-002 | 雙層寫入非原子 (Redis + PostgreSQL) | 🔴🔴 |
|
||
| HIGH-001 | Approval 狀態變更未同步 Incident | 🔴 |
|
||
| HIGH-002 | Redis TTL 過期導致資料遺失 | 🟡 |
|
||
| HIGH-003 | 前端狀態一致性問題 | 🟡 ✅已修 |
|
||
|
||
**解決方案** (ADR-027):
|
||
- UnitOfWork 模式: PostgreSQL 事務管理
|
||
- Saga Pattern: Redis 寫入失敗回滾
|
||
- IncidentApprovalService: 封裝原子操作
|
||
- 狀態同步 Hook: Approval 變更時同步 Incident
|
||
|
||
**新增 ADR**:
|
||
- `docs/adr/ADR-027-incident-approval-sync.md` - Incident-Approval 同步架構
|
||
|
||
**估時**: 9-12h (四階段實作)
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Telegram 告警鏈修復 + CoreDNS GitOps (Day 9 傍晚 18:45)
|
||
|
||
**問題**: Telegram 兩天無告警 + 簽核後內容消失
|
||
|
||
**根因分析**:
|
||
1. NetworkPolicy DNS 規則標籤錯誤 (CoreDNS 只有 k8s-app=kube-dns)
|
||
2. CoreDNS forward 使用 /etc/resolv.conf → 127.0.0.53 (容器無法使用)
|
||
3. Alertmanager 指向舊系統 (momo-pro-system)
|
||
4. 前端簽核後立即移除卡片
|
||
|
||
**修復內容**:
|
||
- NetworkPolicy: 使用 namespaceSelector 指定 kube-system (ADR-011 Appendix B)
|
||
- CoreDNS GitOps: ADR-026 + HelmChartConfig + CD 整合
|
||
- 前端: 簽核後延遲 5 秒顯示結果
|
||
|
||
**新增檔案**:
|
||
- `k8s/k3s-system/coredns-custom.yaml` - HelmChartConfig
|
||
- `docs/adr/ADR-026-coredns-gitops.md` - CoreDNS GitOps 架構
|
||
|
||
**Commits**: 34bfa99, 7847e00
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-27 Phase 13.2 #84 RAGProvider 完成 (Day 10 凌晨 00:40)
|
||
|
||
**實作內容**:
|
||
- `rag_provider.py`: RAG MCP Tool Provider (ADR-015 模組化)
|
||
- `search_runbook`: 語義搜尋維運手冊
|
||
- `index_documents`: 索引文檔
|
||
- `get_index_stats`: 索引統計
|
||
- `providers/__init__.py`: 註冊 RAGProvider
|
||
|
||
**首席架構師審查**:
|
||
- ✅ 符合 ADR-015 模組化架構 (Interface + Lazy Loading + DI)
|
||
- ✅ 健康檢查實作
|
||
- ⚠️ base_path 計算改進建議 (使用 settings)
|
||
|
||
**Gemini 驗證**:
|
||
- `/health/ai-usage` 確認: `fallback_order: ["gemini","ollama","claude"]`
|
||
- 用量: Gemini 7/500 daily requests
|
||
|
||
**Commit**: 539f14b
|
||
|
||
### ✅ 2026-03-26 Gemini API 切換 + Rate Limiter (Day 9 晚間 23:45)
|
||
|
||
**統帥決策**: 臨時切換 Gemini API 排除 Ollama CPU 推論問題
|
||
|
||
**實作內容**:
|
||
- `ai_rate_limiter.py`: RPM/Daily/Token 三層閥值
|
||
- `openclaw.py`: 整合 rate limit,超限自動降級 Ollama
|
||
- `health.py`: `/health/ai-usage` 監控端點
|
||
- Lint 錯誤全面修復 (32 errors → 0)
|
||
|
||
**閥值設定**:
|
||
| 類型 | Gemini | Claude |
|
||
|------|--------|--------|
|
||
| RPM | 10/min | 5/min |
|
||
| Daily | 500 | 200 |
|
||
| Tokens | 100K | 50K |
|
||
|
||
**Commits**: bf32c4b, e26ea52, 3015349
|
||
|
||
**預計切回 Ollama**: 2026-03-27
|
||
|
||
### 📋 2026-03-26 Phase 18 失敗自動修復閉環 (Day 9 晚間 18:30)
|
||
|
||
**問題識別**: 行動日誌只記錄失敗,沒有後續處理 (死路)
|
||
|
||
**首席架構師提案** (ADR-023):
|
||
|
||
```
|
||
執行失敗
|
||
↓
|
||
FailureWatcher (Worker 自動偵測)
|
||
↓
|
||
OpenClaw 分析失敗原因 + 生成修復方案
|
||
↓
|
||
Trust Engine 風險評估
|
||
├─ LOW → 自動執行修復 → 揭露通知
|
||
└─ MEDIUM/CRITICAL → Telegram + 前端同步推送 → 等待授權
|
||
↓
|
||
記錄 authorization_channel (web/telegram/auto)
|
||
↓
|
||
執行修復 → 驗證 → 學習
|
||
```
|
||
|
||
**核心元件**:
|
||
- `FailureWatcher` - 監聽失敗事件
|
||
- `RepairAnalyzer` - AI 分析失敗原因
|
||
- `AutoRepairExecutor` - 執行低風險自動修復
|
||
- `RepairLog` - 修復日誌模型
|
||
- `authorization_channel` - 記錄授權來源
|
||
|
||
**文件**:
|
||
- Memory: `project_phase18_failure_loop.md`
|
||
- ADR: `docs/adr/ADR-023-failure-auto-repair-loop.md`
|
||
|
||
**預估**: 5 天 (Phase 18.1-18.6)
|
||
**狀態**: ✅ **統帥批准,開始實作**
|
||
|
||
### 📅 2026-03-26 首席架構師審查排程 (Day 9 晚間 20:00)
|
||
|
||
**審查時間表已建立**:
|
||
| 時間點 | 審查項目 |
|
||
|--------|---------|
|
||
| 2026-03-27 09:00 | Phase 16 R1 驗證結果 |
|
||
| 2026-03-27 16:04 | Phase 16 R1→R2 Gate |
|
||
| 每週五 16:00 | 週度架構審查 |
|
||
|
||
**文檔更新**:
|
||
- ✅ `ADR-025-cicd-ai-integration.md` - Phase 13.1 架構決策
|
||
- ✅ `Skill 07 v1.3` - Grafana MCP + SignOz query_logs
|
||
- ✅ `project_arch_review_schedule.md` - 審查排程 Memory
|
||
|
||
### 🚀 2026-03-26 Phase 18.1 AuditLog 擴展 (Day 9 晚間 19:00)
|
||
|
||
**開始實作 P0 任務**
|
||
|
||
### ✅ 2026-03-26 Phase 13.1 #74-78 CI/CD Integration (Day 9 下午 17:15)
|
||
|
||
**Phase 13.1 CI/CD → OpenClaw 全部完成**:
|
||
- ✅ #74-75 GitHub Webhook (既有實作: PR/Push → OpenClaw)
|
||
- ✅ #76 CI 失敗 → AI 診斷 (`workflow_run` handler)
|
||
- ✅ #77 AI 自動讀 Log (SignOz `query_logs` MCP)
|
||
- ✅ #78 AI 自動修復 (`CIAutoRepairService` 風險分級)
|
||
|
||
**新增檔案**:
|
||
- `services/ci_auto_repair.py`: 風險分級修復服務 (380 行)
|
||
|
||
**修改檔案**:
|
||
- `github_webhook.py`: v2.0 + workflow_run handler
|
||
- `signoz_client.py`: +get_logs, +error_logs_summary
|
||
- `signoz_provider.py`: +query_logs, +error_logs_summary MCP
|
||
|
||
### ✅ 2026-03-26 Phase 13.3 #88 Token Dashboard (Day 9 下午 16:00)
|
||
|
||
**Token Counter Service v1.0 已完整實作**:
|
||
- ✅ OTEL Metrics 整合 (SignOz)
|
||
- `llm.tokens.input/output` (Counter)
|
||
- `llm.cost.usd` (Counter)
|
||
- `llm.latency.ms` (Histogram)
|
||
- `llm.requests.total/failed` (Counter)
|
||
- ✅ Provider 統計 (ProviderStats dataclass)
|
||
- ✅ 成本估算 (Ollama=0, Gemini=$0.001/1K, Claude=$0.008/1K)
|
||
- ✅ 預算監控 (daily/monthly token + cost budgets)
|
||
- ✅ 預警機制 (70% 閾值觸發 fallback 建議)
|
||
- ✅ Langfuse 整合 (generation trace)
|
||
- ✅ ITokenCounter Protocol (DI 支援)
|
||
|
||
**檔案**: `services/token_counter.py` (677 行)
|
||
|
||
**Phase 13.3 Smart Routing 全部完成** ✅
|
||
|
||
### ✅ 2026-03-26 Phase 13.3 #87 AI Router (Day 9 下午 15:30)
|
||
|
||
**AI Router 升級 v3.0**:
|
||
- ✅ 整合 Intent Classifier + Complexity Scorer
|
||
- ✅ 路由決策矩陣 (6 條規則優先級)
|
||
- ✅ AIProvider Enum (OLLAMA/GEMINI/CLAUDE)
|
||
- ✅ RoutingDecision 完整結果 (selected_provider, selected_model, fallback_chain, latency_budget_ms)
|
||
- ✅ 延遲預算配置 (Ollama 60s / 雲端 30s)
|
||
- ✅ 向後相容 (舊版 model/reason/fallback_models 欄位)
|
||
- ✅ 便捷方法 (get_routing_matrix, get_provider_for_intent)
|
||
|
||
**路由決策矩陣**:
|
||
```
|
||
| 複雜度 + 風險 | Provider | Fallback |
|
||
|-----------------|----------|----------|
|
||
| 1-2 + LOW | Ollama | Gemini |
|
||
| 3 + MEDIUM | Ollama | Gemini |
|
||
| 4-5 + HIGH | Gemini | Claude |
|
||
| DELETE/CRITICAL | Claude | - |
|
||
```
|
||
|
||
**修改檔案**:
|
||
- `services/ai_router.py`: v3.0 (~545 行)
|
||
|
||
### ✅ 2026-03-26 Phase 13.3 #85 Intent Classifier (Day 9 下午 14:10)
|
||
|
||
**Intent Classifier 升級 v2.0**:
|
||
- ✅ 四大核心意圖: RESTART, SCALE, CONFIG, DIAGNOSE
|
||
- ✅ 輔助意圖: DELETE (CRITICAL), ROLLBACK, UNKNOWN
|
||
- ✅ 雙策略分類: 規則引擎 (< 10ms) + LLM 備援 (< 100ms)
|
||
- ✅ Protocol 介面支援 DI (IIntentClassifier)
|
||
- ✅ 風險等級映射 (LOW/MEDIUM/HIGH/CRITICAL)
|
||
- ✅ IntentResult 完整結果 (confidence, matched_keywords, detected_resources)
|
||
- ✅ AI Router 整合更新 (支援新 IntentResult)
|
||
- ✅ 舊版意圖兼容 (ALERT_TRIAGE → DIAGNOSE 等)
|
||
|
||
**新增/修改檔案**:
|
||
- `services/intent_classifier.py`: 升級到 v2.0 (~320 行)
|
||
- `services/ai_router.py`: 支援 IntentResult + RiskLevel (~250 行)
|
||
|
||
**分類準確度目標**: 規則引擎 > 90% (常見 K8s 操作)
|
||
|
||
### ✅ 2026-03-26 Batch 1-2 完成 (Day 8 晚上 23:30)
|
||
|
||
**Batch 1 (並行):**
|
||
- ✅ ADR-023: 智能路由架構 (652 行)
|
||
- ✅ Skill 09: Strangler Pattern Expert
|
||
- ✅ Phase 12 P1: ModelRegistry 建立 (16 處 hardcode 移除)
|
||
|
||
**Batch 2 (並行):**
|
||
- ✅ Phase 13.2: Filesystem MCP Tool (#82)
|
||
- 安全機制: 目錄白名單、敏感文件黑名單、路徑遍歷防護
|
||
- 功能: read_file, list_directory, search_in_file
|
||
- ✅ Phase 11 F1-F4 驗收:
|
||
- F1 整合測試: ⚠️ 待改善 (缺 E2E 測試)
|
||
- F2 效能審查: ✅ 通過
|
||
- F3 安全審查: ✅ 通過 (CRITICAL 雙重驗證)
|
||
- F4 統帥驗收: 📋 待確認
|
||
|
||
### ✅ 2026-03-26 Phase 11.3 + 14.2 並行完成 (Day 8 晚上 22:30)
|
||
|
||
**Phase 11.3 響應式佈局 (#54-55)**:
|
||
- ✅ #54 Tablet 滑動切換 (768-1024px)
|
||
- ✅ #55 Mobile 全螢幕模式 (<768px)
|
||
- 新增觸控滑動支援 (handleTouchStart/Move/End)
|
||
- 響應式 CSS (lg: 雙欄, md: 切換, sm: overlay)
|
||
- i18n 新增: `approval.swipeHint`
|
||
|
||
**Phase 14.2 依賴防護 (#93-96)**:
|
||
- ✅ #93 dependency-cruiser 已存在
|
||
- ✅ #94 新增規則: stores-no-api-import
|
||
- ✅ #95 CI 整合: API Layer Check 步驟
|
||
- ✅ #96 評估: Python import-linter 暫不需要
|
||
|
||
**架構審查 Phase 11-12**:
|
||
- Phase 11: 85/100 (P1 Zustand 型別已修復)
|
||
- Phase 12: 73/100 (待改善: ModelRegistry)
|
||
|
||
**新增文檔**:
|
||
- Skill 08: Model Router Expert
|
||
- ADR-024: API 分層架構
|
||
- Memory: `project_arch_review_phase11_12.md`
|
||
|
||
### ✅ 2026-03-26 Phase 10 架構審查 + P1/P2 修復 (Day 8 晚上 21:30)
|
||
|
||
**首席架構師審查 #39-44 Sentry 整合**
|
||
|
||
**P1 Issue 修復**:
|
||
1. ✅ **P1-1**: `errors/page.tsx` hardcoded subtitle → i18n `{t('subtitle')}`
|
||
2. ✅ **P1-2**: `recent-issues-list.tsx` hardcoded time format → `t('timeAgo.minutes/hours/days', { count })`
|
||
3. ✅ **P1-3**: `errors.py` hardcoded Sentry config → `core/config.py` Settings
|
||
4. ✅ **P2-4**: `error_analyzer_service.py` unused structlog import 移除
|
||
|
||
**P2 架構改善 (統帥批准)**:
|
||
5. ✅ **SentryService 抽取**: `_call_sentry_api` 移至 `services/sentry_service.py`
|
||
6. ✅ **ADR-022**: Sentry 整合架構文檔
|
||
|
||
**新增檔案**:
|
||
- `services/sentry_service.py`: Sentry API 封裝 Service
|
||
|
||
**config.py 新增設定**:
|
||
```python
|
||
SENTRY_SELF_HOSTED_URL: str # http://192.168.0.110:9000
|
||
SENTRY_ORG: str # sentry
|
||
SENTRY_PROJECT: str # awoooi-api
|
||
SENTRY_AUTH_TOKEN: str # K8s Secret
|
||
```
|
||
|
||
**架構評分**: 95/100 (P2 修復後)
|
||
|
||
**Memory 更新**: `project_phase10_arch_review.md`
|
||
**ADR 新增**: `ADR-022-sentry-integration-architecture.md`
|
||
|
||
### ✅ 2026-03-26 #44 /errors 完整頁面 (Day 8 晚上 20:00)
|
||
|
||
**新增檔案**:
|
||
- `src/app/[locale]/errors/page.tsx`: Errors 頁面
|
||
- `src/hooks/useErrors.ts`: Error 數據 Hook
|
||
|
||
**更新檔案**:
|
||
- `src/components/layout/sidebar.tsx`: 新增 Errors 導航項目
|
||
- `src/hooks/index.ts`: 導出 useErrors
|
||
- `messages/zh-TW.json`: 新增 nav.errors
|
||
- `messages/en.json`: 新增 nav.errors
|
||
|
||
**頁面功能**:
|
||
- 左側: ErrorOverviewCard + ErrorTrendChart
|
||
- 右側: RecentIssuesList (含 AI 分析)
|
||
- 自動刷新: 60 秒
|
||
- Sentry Dashboard 外連
|
||
|
||
**工作計畫更新**: #44 /errors 頁面標記為 ✅ 已完成
|
||
|
||
### ✅ 2026-03-26 #41-43 Error UI 組件 (Day 8 下午 19:45)
|
||
|
||
**新增檔案**:
|
||
- `src/components/errors/error-overview-card.tsx`: 錯誤統計卡片 (#41)
|
||
- `src/components/errors/recent-issues-list.tsx`: 近期問題列表 + AI 分析 (#42)
|
||
- `src/components/errors/error-trend-chart.tsx`: 錯誤趨勢圖表 (#43)
|
||
- `src/components/errors/index.ts`: 組件導出
|
||
|
||
**更新檔案**:
|
||
- `src/lib/api-client.ts`: 新增 Error API 方法與類型
|
||
- `messages/zh-TW.json`: 新增 errors 翻譯
|
||
- `messages/en.json`: 新增 errors 翻譯
|
||
|
||
**組件功能**:
|
||
- ErrorOverviewCard: 統計概覽 (未解決/24h/嚴重/總數)
|
||
- RecentIssuesList: 問題列表 + 即時 AI 分析按鈕
|
||
- ErrorTrendChart: Sparkline 趨勢圖 + 週期選擇器
|
||
|
||
**工作計畫更新**: #41-43 Error UI 標記為 ✅ 已完成
|
||
|
||
### ✅ 2026-03-26 #39 Error Analyzer Agent (Day 8 下午 19:15)
|
||
|
||
**新增檔案**:
|
||
- `src/services/error_analyzer_service.py`: 錯誤分析 Service
|
||
|
||
**功能**:
|
||
- 接收 Sentry Issue + Stacktrace 數據
|
||
- 使用 OpenClaw LLM 進行根因分析
|
||
- 生成修復建議與預防措施
|
||
- 分類錯誤類型 (CODE_BUG, DEPENDENCY, CONFIGURATION, etc.)
|
||
|
||
**更新檔案**:
|
||
- `src/api/v1/errors.py`: 整合 ErrorAnalyzerService
|
||
- `src/services/openclaw.py`: 新增 `call()` 方法 (ILLMProvider Protocol)
|
||
|
||
**工作計畫更新**: #39 Error Analyzer Agent 標記為 ✅ 已完成
|
||
|
||
### ✅ 2026-03-26 #40 Sentry BFF API (Day 8 下午 19:00)
|
||
|
||
**新增檔案**:
|
||
- `src/api/v1/errors.py`: Sentry BFF API 端點
|
||
|
||
**功能**:
|
||
- 列出近期錯誤 (分頁、狀態/嚴重度過濾)
|
||
- 取得錯誤詳情 (含堆疊追蹤)
|
||
- 取得錯誤趨勢 (24h/7d/30d)
|
||
- 觸發 AI 分析 (為 #39 Error Analyzer Agent 準備)
|
||
|
||
**API 端點**:
|
||
- `GET /api/v1/errors/stats` - 錯誤統計概覽
|
||
- `GET /api/v1/errors/issues` - 列出 Issues
|
||
- `GET /api/v1/errors/issues/{issue_id}` - Issue 詳情
|
||
- `GET /api/v1/errors/trends` - 趨勢數據
|
||
- `POST /api/v1/errors/issues/{issue_id}/analyze` - 觸發 AI 分析
|
||
|
||
**工作計畫更新**: #40 BFF API 標記為 ✅ 已完成
|
||
|
||
### ✅ 2026-03-26 #8 自動升級決策 (Day 8 下午 18:00)
|
||
|
||
**新增檔案**:
|
||
- `src/services/auto_repair_service.py`: AutoRepairService 實作
|
||
- `src/api/v1/auto_repair.py`: API 端點 (evaluate, execute, stats)
|
||
|
||
**功能**:
|
||
- 評估 Incident 是否可自動修復
|
||
- 高品質 Playbook (成功率 ≥95%, 執行 ≥10次) 可自動執行
|
||
- 安全邊界: 只有 LOW/MEDIUM 風險可自動執行
|
||
- 整合 ActionExecutor (kubectl 指令)
|
||
|
||
**API 端點**:
|
||
- `GET /api/v1/auto-repair/evaluate/{incident_id}` - 評估
|
||
- `POST /api/v1/auto-repair/execute` - 執行
|
||
- `GET /api/v1/auto-repair/stats` - 統計
|
||
|
||
### ✅ 2026-03-26 #7 Playbook 時區修復 (Day 8 下午 17:00)
|
||
|
||
**修復檔案**:
|
||
- `playbook_service.py`: `datetime.now(UTC)` → `now_taipei()`
|
||
- `playbook_repository.py`: 5 處 `datetime.now(UTC)` → `now_taipei()`
|
||
- `playbook.py` (model): 3 處 `datetime.now(UTC)` → `now_taipei()`
|
||
- `test_playbook_service.py`: 1 處 `datetime.now(UTC)` → `now_taipei()`
|
||
|
||
**工作計畫更新**: #7 Playbook 標記為 ✅ 已完成
|
||
|
||
### 🔍 2026-03-26 首席架構師審查 (Day 8 下午 15:30)
|
||
|
||
**審查範圍**: LLM 測試、Phase 17-18、CI Workflows
|
||
|
||
**P0 緊急修復** ✅:
|
||
- `agent_service.py`: 時區違規 (UTC → 台北) 已修復
|
||
|
||
**P1 完成** ✅:
|
||
- `daily-e2e-health.yaml`: Telegram 通知已啟用
|
||
- `ADR-018`: 狀態更新為 Deferred (方案 A 先行)
|
||
|
||
**P2 全部完成**:
|
||
- ✅ System Prompt 集中管理 → `src/core/prompts.py` + ADR-019
|
||
- ✅ ResourceResolver DI 改造 → `set_resource_resolver()`
|
||
|
||
**P3 完成**:
|
||
- ✅ Skill 05 更新 (v1.5) → 新增「LLM 測試策略」章節
|
||
|
||
**ADR 更新**:
|
||
- ✅ ADR-019: System Prompt 集中管理 (Accepted)
|
||
- ⬜ ADR-020 建議: E2E 腳本規範
|
||
|
||
**Memory**: `project_arch_review_20260326.md`
|
||
|
||
### ✅ 2026-03-26 LLM 測試完整修復 (Day 8 下午 14:00)
|
||
|
||
**方案 A + B 全部實施** (統帥批准):
|
||
|
||
| 修改 | 內容 |
|
||
|------|------|
|
||
| `test_model_regression.py` | `temperature: 0.0`, `seed: 42`, timeout 300s |
|
||
| `test_prompt_validation.py` | `temperature: 0.0`, `seed: 42`, timeout 300s |
|
||
| `openclaw.py` | v7.0 → v7.1,加入繁體中文強制指令 |
|
||
|
||
**CPU 推理評估**:
|
||
|
||
| 參數 | 值 |
|
||
|------|-----|
|
||
| 速度 | 0.45 tok/s |
|
||
| 典型回應 | 100-300 tokens |
|
||
| 所需時間 | 222-666 秒 |
|
||
| 設定超時 | **300 秒** |
|
||
|
||
**評估文件**: `docs/evaluations/2026-03-26_llm_testing_evaluation.md`
|
||
|
||
---
|
||
|
||
### 🔴 2026-03-26 Ollama 伺服器 GPU 診斷 (Day 8 下午 13:00)
|
||
|
||
**SSH 診斷結果 (192.168.0.188)**:
|
||
|
||
| 檢查項目 | 結果 |
|
||
|---------|------|
|
||
| `lspci \| grep nvidia` | **無輸出 - 無 GPU 硬體** |
|
||
| NVIDIA Driver | 未安裝 |
|
||
| NVIDIA Libs | 未找到 |
|
||
| VRAM | 0 GB |
|
||
|
||
**結論**: 此伺服器為**純 CPU 機器**,無法加速 LLM 推理
|
||
|
||
**選項**:
|
||
1. 遷移到有 GPU 的主機 (192.168.0.110?)
|
||
2. 接受 CPU 推理速度 (0.45 tok/s)
|
||
3. 使用雲端 LLM 替代 (Gemini/Claude)
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 18 E2E Hardening 完成 (Day 8 下午 14:30)
|
||
|
||
**Phase 18.1 K8s 資源驗證** ✅ 全部完成:
|
||
|
||
| # | 內容 | 檔案 |
|
||
|---|------|------|
|
||
| 18.1.1 | 正規化函數 | `src/utils/k8s_naming.py` |
|
||
| 18.1.2 | 動態驗證器 | `src/services/resource_resolver.py` |
|
||
| 18.1.3 | ADR 契約 | `docs/adr/ADR-016-k8s-resource-naming.md` |
|
||
| 18.1.4 | Skill 03 更新 | v1.4 |
|
||
| 18.1.5 | Memory | `feedback_k8s_resource_naming.md` |
|
||
| 18.1.6 | OpenClaw 整合 | `openclaw.py:299-300` ✅ |
|
||
| 18.1.7 | Webhook 整合 | `webhooks.py:703-706` ✅ |
|
||
|
||
**Phase 18.2 E2E 腳本** ✅ 全部完成:
|
||
|
||
| # | 功能 | 實作 |
|
||
|---|------|------|
|
||
| 18.2.1 | 目標資源斷言 | `verify_action_target()` |
|
||
| 18.2.2 | 動態簽署數 | `SIGNER_POOL` + Step 4 |
|
||
| 18.2.3 | Safe Label | `safe_mode: true` |
|
||
| 18.2.4 | E2E 腳本 v2.0 | `e2e_tool_call_verification.py` |
|
||
|
||
**Phase 18.3 Daily Health** 🟢 進行中:
|
||
- `daily-e2e-health.yaml`: 每日 08:30 台北執行
|
||
- Telegram 通知: 模板已準備
|
||
|
||
**Memory**: `project_phase18_e2e_hardening.md`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 7.5-7.6 Playbook 整合 (Day 8 深夜 11:45)
|
||
|
||
**Phase 7.5: DecisionManager 三軌決策**:
|
||
- 新增 Playbook 優先匹配 (similarity >= 85%)
|
||
- 三軌決策順序: **Playbook > LLM > Expert System**
|
||
- 整合 PlaybookService 推薦引擎
|
||
|
||
**Phase 7.6: 自動萃取機制**:
|
||
- approval_execution.py 成功執行後觸發萃取
|
||
- 條件: RESOLVED/CLOSED + effectiveness >= 4
|
||
- 滿分 (5) 自動核准 Playbook
|
||
|
||
**測試**: 13 個 Playbook 單元測試全部通過
|
||
|
||
**Commit**: `2e75a20`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 #7 Playbook 萃取功能 (Day 8 深夜 10:50)
|
||
|
||
**實作內容 (Phase 7.1-7.4)**:
|
||
|
||
| Phase | 內容 | 狀態 |
|
||
|-------|------|------|
|
||
| 7.1 | models/playbook.py | ✅ |
|
||
| 7.2 | repositories/playbook_repository.py | ✅ |
|
||
| 7.3 | services/playbook_service.py | ✅ |
|
||
| 7.4 | api/v1/playbooks.py | ✅ |
|
||
|
||
**API 端點**:
|
||
- `POST /playbooks/extract/{incident_id}` - 從成功案例萃取
|
||
- `POST /playbooks/recommend` - 症狀匹配推薦
|
||
- `POST /playbooks/{id}/approve` - 人工核准
|
||
|
||
**Commit**: `698687f`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 ADR 審計更新 (Day 8 深夜 10:30)
|
||
|
||
**更新 ADR**:
|
||
- ADR-015: 標記為「已實作」✅
|
||
- ADR-009: 標記 Phase 9 完成 ✅
|
||
- ADR-006: 新增智能路由章節 ✅
|
||
|
||
**新增 ADR**:
|
||
- ADR-014: 依賴治理 ✅
|
||
- ADR-016: 智能路由 ✅
|
||
- ADR-017: LLMOps 觀測 ✅
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 首席架構師 Phase 13 審查 (Day 8 深夜 10:20)
|
||
|
||
**審查範圍**:
|
||
- Phase 13.1 GitHub Webhook
|
||
- Phase 13.3 智能路由
|
||
- Phase 17 Router 重構
|
||
|
||
**審查結果**: ✅ **通過**
|
||
- 28/28 測試全部通過
|
||
- leWOOOgo 合規 (無 Router 層違規)
|
||
- ADR 文件完整
|
||
|
||
**修復問題**:
|
||
- TelegramGateway.send_message → send_notification
|
||
- conftest.py 環境變數隔離
|
||
- Import 排序修復
|
||
|
||
---
|
||
|
||
### ❌ 2026-03-26 Phase 12.4 Cloud Models 取消 (Day 8 晚間 09:55)
|
||
|
||
**裁定**: 統帥決定取消 Phase 12.4
|
||
**原因**: 現有 Ollama→Gemini→Claude fallback 已足夠,Cloud Models 需額外帳號/付費
|
||
**結論**: 維持現有架構,不增加複雜性
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 14.2 CI/CD 架構審查完成 (Day 8 下午 16:30)
|
||
|
||
**審查範圍**:
|
||
- `.github/workflows/ci.yaml`
|
||
- `.github/workflows/cd.yaml`
|
||
- `.dependency-cruiser.cjs`
|
||
- `package.json` (scripts)
|
||
|
||
**審查結論**:
|
||
|
||
| 項目 | 結果 |
|
||
|------|------|
|
||
| 架構清晰度 | ✅ CI/CD 分離,職責明確 |
|
||
| Fail-Fast | ✅ Pre-flight 1 分鐘驗證 |
|
||
| 智能偵測 | ✅ dorny/paths-filter 路徑偵測 |
|
||
| 依賴治理 | ✅ dependency-cruiser + ADR 檢查 |
|
||
| 監控整合 | ✅ OTEL + Telegram + OpenClaw |
|
||
| 快取策略 | ✅ Turborepo + pnpm + Next.js + Docker |
|
||
| 冗餘/遺漏 | ✅ 無明顯冗餘,架構完整 |
|
||
|
||
**改進建議 (P3 優先)**:
|
||
- SAST 掃描 (Semgrep/CodeQL)
|
||
- Container 掃描 (Trivy/Snyk)
|
||
- E2E 測試整合 (Playwright)
|
||
|
||
**Memory**: `reference_cicd_architecture.md`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Runner 殭屍進程徹底修復 (Day 8 上午 09:15)
|
||
|
||
**問題**: CI/CD Workflow 反覆失敗 (set_output file missing / Session Conflict)
|
||
|
||
**根因**:
|
||
1. 權限反噬 - 手動 sudo 清理後目錄擁有權變 root
|
||
2. 殭屍進程 - 服務重啟未殺死舊 Runner.Listener
|
||
|
||
**修復流程**:
|
||
1. 停止服務 → 權限校正 (chown -R wooo:wooo) → 殺死殭屍進程 → 清理工作區 → 重啟服務
|
||
|
||
**驗證**: Workflow [#23572446312](https://github.com/owenhytsai/awoooi/actions/runs/23572446312) 全部成功
|
||
|
||
**Memory**: `feedback_runner_zombie_process.md`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 首席架構師 Phase 15 完整審查 (Day 8 凌晨 03:30)
|
||
|
||
**審查項目**:
|
||
|
||
| 項目 | 結果 |
|
||
|------|------|
|
||
| 架構分層合規 | ✅ 通過 |
|
||
| leWOOOgo 5 問 | ✅ 通過 |
|
||
| 依賴注入檢查 | ✅ 通過 |
|
||
| 循環依賴檢測 | ✅ 無 |
|
||
| 完整測試套件 | ✅ 46/46 通過 |
|
||
|
||
**現有技術債 (Phase 17)**:
|
||
- `agents.py`: Router 直接存取 Redis
|
||
- `metrics.py`: Router 直接存取 DB
|
||
|
||
**結論**: ✅ **Phase 15 審查通過,可以上線**
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 15.3 Deep Linking (Day 8 凌晨 03:00)
|
||
|
||
**實作內容**:
|
||
|
||
| 檔案 | 說明 |
|
||
|------|------|
|
||
| `src/core/deep_linking.py` | URL 生成器 (SignOz/Langfuse/Sentry) |
|
||
| `src/main.py` | Sentry before_send 注入 otel_trace_id |
|
||
| `src/services/langfuse_client.py` | 自動注入 OTEL trace_id 到 metadata |
|
||
| `src/services/openclaw.py` | OTEL span 記錄 langfuse.trace_id |
|
||
|
||
**架構圖**:
|
||
```
|
||
Sentry ◄─── trace_id ───► SignOz ◄─── trace_id ───► Langfuse
|
||
```
|
||
|
||
**測試**: 46/46 核心測試通過
|
||
|
||
**Commit**: b6cff31
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 15.2 Redis Trace Context (Day 8 凌晨 02:30)
|
||
|
||
**實作內容**:
|
||
|
||
| 檔案 | 變更 | 說明 |
|
||
|------|------|------|
|
||
| `src/core/telemetry.py` | +118 行 | get_trace_context() + restore_trace_context() |
|
||
| `src/api/v1/webhooks.py` | +12 行 | Producer 注入 _trace_id, _span_id |
|
||
| `src/workers/signal_worker.py` | 重構 | Consumer 還原 Trace Context |
|
||
|
||
**架構流程**:
|
||
```
|
||
webhooks.py → XADD {_trace_id, _span_id} → signal_worker.py → restore_trace_context()
|
||
```
|
||
|
||
**技術**: W3C Trace Context (traceparent 格式)
|
||
|
||
**測試**: 46/46 核心測試通過
|
||
|
||
**Commit**: 0d31ccb
|
||
|
||
**首席架構師審查**: ✅ 通過 (只新增功能,不修改現有邏輯)
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 15.1 Langfuse 全部完成 (Day 8 凌晨 00:45)
|
||
|
||
**完成項目**:
|
||
|
||
| 項目 | 狀態 | 說明 |
|
||
|------|------|------|
|
||
| 部署 | ✅ | 192.168.0.110:3100 |
|
||
| 帳號 | ✅ | admin@awoooi.local |
|
||
| API Key | ✅ | pk-lf-xxx / sk-lf-xxx |
|
||
| K8s Secret | ✅ | awoooi-secrets patched |
|
||
| GitHub Secret | ✅ | LANGFUSE_* 已設定 |
|
||
| API 整合 | ✅ | langfuse_client.py + openclaw.py |
|
||
| 模型升級 | ✅ | llama3.2:3b → qwen2.5:7b-instruct |
|
||
| 架構審查 | ✅ | 模組化檢查通過 |
|
||
| 測試驗證 | ✅ | 31/31 核心測試通過 |
|
||
|
||
**新增檔案**:
|
||
- `src/services/langfuse_client.py` (250 行) - Langfuse Client 包裝
|
||
- `feedback_model_selection_strategy.md` - 模型選擇策略
|
||
|
||
**模型配置變更**:
|
||
- 預設模型: `qwen2.5:7b-instruct` (7B 參數,品質優先)
|
||
- 摘要模型: `llama3.2:3b` (速度優先)
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 16 R3 Repository 層整合 (Day 8 深夜 00:30)
|
||
|
||
**完成項目**:
|
||
|
||
| 模組 | 動作 | 說明 |
|
||
|------|------|------|
|
||
| incident_repository.py | 新增方法 | `update_outcome()` 支援 feedback 端點 |
|
||
| incidents.py | 重構 | feedback 端點改用 Repository (消除直接 DB 存取) |
|
||
| incidents.py | 清理 | 移除未使用的 sqlalchemy/db import |
|
||
|
||
**驗證結果**: 24/24 測試通過
|
||
|
||
**Repository 層完整性**:
|
||
- `IncidentDBRepository`: create, get_by_id, get_active, update, upsert, **update_outcome** ✅
|
||
- Router 層不再直接使用 `get_db_context()`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-25 Phase 16 R2 封存死代碼 (Day 8 晚間 23:15)
|
||
|
||
**完成項目**:
|
||
|
||
| 模組 | 動作 | 說明 |
|
||
|------|------|------|
|
||
| routes/approvals.py | 封存 | 477 行 → _archived/ (未註冊死代碼) |
|
||
| services/approval.py | 封存 | 389 行 → _archived/ (僅被死代碼使用) |
|
||
| models/approval.py | 新增 HIGH | RiskLevel 統一來源 |
|
||
| trust_engine.py | 改 import | 從 models/approval.py 導入 RiskLevel |
|
||
| services/__init__.py | 移除舊 import | 已封存模組的 import 註解保留 |
|
||
|
||
**封存總量**: 866 行死代碼
|
||
|
||
**回滾指令**: 見 `apps/api/src/_archived/README.md`
|
||
|
||
**Commit**: e0584bc
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-25 Phase 16 R4.2 ApprovalExecutionService 完成 (Day 8 晚間 22:36)
|
||
|
||
**完成項目**:
|
||
|
||
| 模組 | Commit | 說明 |
|
||
|------|--------|------|
|
||
| approval_execution.py | 新建 | 從 approvals.py 抽取執行編排邏輯 (271 行) |
|
||
| approvals.py | 4b3d98c | 移除內嵌 execute_approved_action (-310 行) |
|
||
| ci.yaml / cd.yaml | 修復 | 移除 Runner 自毀指令 (rm -rf _work) |
|
||
| .gitignore | 強化 | 防止 .claude/worktrees 干擾 CI/CD |
|
||
|
||
**瘦身總成果**: approvals.py 1097 → 787 行 (**-310 行, -28%**)
|
||
|
||
**新增模組**:
|
||
- `src/services/operation_parser.py` (173 行) - 操作解析
|
||
- `src/services/approval_execution.py` (271 行) - 執行編排
|
||
|
||
**CI/CD 穩定性修復**:
|
||
- ❌ 移除 `rm -rf ~/actions-runner-*/_diag/` (防止 Runner 自殺)
|
||
- ❌ 移除 `rm -rf _work` 相關指令
|
||
- ✅ worktree 清理改在 checkout 後執行
|
||
- ✅ .gitignore 防止 worktree 被 commit
|
||
|
||
**部署成功**: 4b3d98c @ 2026-03-25 22:36
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-25 Phase 16 R4.1 OperationParser 抽取 (Day 8 晚間 21:55)
|
||
|
||
**完成項目**:
|
||
|
||
| 模組 | Commit | 說明 |
|
||
|------|--------|------|
|
||
| operation_parser.py | 31cf2dd | 從 approvals.py 抽取 117 行操作解析邏輯 |
|
||
| approvals.py | 31cf2dd | 移除內嵌 parse_operation_from_action |
|
||
|
||
**瘦身成果**: approvals.py 1097 → 988 行 (-109 行)
|
||
|
||
**新增模組**:
|
||
- `src/services/operation_parser.py` (173 行)
|
||
- `ParsedOperation` dataclass
|
||
- 支援中英文指令解析
|
||
|
||
**下一步**:
|
||
- 持續抽取 execute_approved_action 等執行邏輯
|
||
- 修復 Runner diag log 衝突問題
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 16 絞殺者模式啟用 (Day 8 晚間 16:04)
|
||
|
||
**里程碑**: USE_NEW_ENGINE=true 已在 Production 啟用
|
||
|
||
**部署驗證**:
|
||
```
|
||
✅ API: healthy (mock_mode: false)
|
||
✅ PostgreSQL: up (42ms)
|
||
✅ Redis: up (42ms)
|
||
✅ Ollama: up (48ms)
|
||
✅ OpenClaw: up (38ms)
|
||
✅ SignOz: up (25ms)
|
||
```
|
||
|
||
**回滾指令** (如有問題):
|
||
```bash
|
||
kubectl set env deployment/awoooi-api -n awoooi-prod USE_NEW_ENGINE=false
|
||
```
|
||
|
||
**48hr 驗證期**: 2026-03-26 16:04 → 2026-03-27 16:04
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 16 R1.2-R1.3 絞殺者模式完成 (Day 8 晚間 19:30)
|
||
|
||
**完成項目**:
|
||
|
||
| 模組 | Commit | 說明 |
|
||
|------|--------|------|
|
||
| incident_memory.py | a202a26, 20984fd | IIncidentDbAdapter DI + 雙軌切換 |
|
||
| incident_engine.py | 2637263 | IncidentMemoryAdapter + BlastRadiusAdapter + 雙軌切換 |
|
||
|
||
**絞殺者模式架構**:
|
||
|
||
```
|
||
USE_NEW_ENGINE=false (預設)
|
||
┌─────────────────────────────┐
|
||
get_incident_*() ──►│ Legacy (內嵌版) │
|
||
└─────────────────────────────┘
|
||
|
||
USE_NEW_ENGINE=true (新版)
|
||
┌─────────────────────────────┐
|
||
get_incident_*() ──►│ lewooogo-brain + Adapters │
|
||
└─────────────────────────────┘
|
||
```
|
||
|
||
**回滾指令**:
|
||
```bash
|
||
kubectl set env deployment/awoooi-api USE_NEW_ENGINE=false
|
||
```
|
||
|
||
**下一步**: 部署後設定 `USE_NEW_ENGINE=true` 開始 48 小時驗證
|
||
|
||
---
|
||
|
||
### 🔴🔴🔴 2026-03-26 Phase 16 架構大掃除批准 (Day 8 下午 17:50)
|
||
|
||
**統帥裁示**: 立即執行,非等待 Phase 13.2/15
|
||
|
||
**裁示理由**:
|
||
- 累積越多改起來更複雜
|
||
- 後續更新會導致重工
|
||
- 先清債再加功能
|
||
|
||
**Phase 16 定義**:
|
||
- **代號**: The Great Refactoring
|
||
- **工時**: 6-7 週
|
||
- **核心原則**: 絞殺者模式 (Strangler Fig Pattern)
|
||
|
||
**四階段修復**:
|
||
| Phase | 說明 | 工時 |
|
||
|-------|------|------|
|
||
| R1 | 啟用 lewooogo packages | 2-3 週 |
|
||
| R2 | 刪除重複邏輯 | 1 週 |
|
||
| R3 | 抽取 Repository 層 | 1 週 |
|
||
| R4 | 瘦身 Router | 2 週 |
|
||
|
||
**關鍵安全措施**:
|
||
- Dockerfile 使用實體打包 (禁止 -e 模式)
|
||
- 每模組 48 小時驗證期
|
||
- 回滾指令: `kubectl set env USE_NEW_ENGINE=false`
|
||
|
||
**Memory**: `project_phase16_great_refactoring.md`
|
||
|
||
---
|
||
|
||
### 🔴 2026-03-26 leWOOOgo 積木化全面審計 (Day 8 下午 16:30)
|
||
|
||
**首席架構師審計結果**: 發現 32 項違規
|
||
|
||
**問題摘要**:
|
||
| 級別 | 數量 | 說明 |
|
||
|------|------|------|
|
||
| P0 架構崩壞 | 2 | packages/ 完全未使用、Router 直接存取 Redis |
|
||
| P1 跨模組耦合 | 18 | services/ 緊耦合、重複實作 |
|
||
| P2 薄層違規 | 12 | Router 包含業務邏輯 |
|
||
|
||
**嚴重發現**:
|
||
- `packages/lewooogo-brain/` (1,853 行) **零引用**
|
||
- `packages/lewooogo-data/` (1,113 行) **零引用**
|
||
- `apps/api/src/services/` (12,158 行) 重複實作所有邏輯
|
||
- **3 週開發工時浪費**
|
||
|
||
**四階段修復計畫** (6-7 週):
|
||
- Phase R1: 啟用 lewooogo packages (2-3 週)
|
||
- Phase R2: 刪除重複邏輯 (1 週)
|
||
- Phase R3: 抽取 Repository 層 (1 週)
|
||
- Phase R4: 瘦身 Router (2 週)
|
||
|
||
**強制執行機制**:
|
||
- Skill 02 新增「修改前必問 5 題」
|
||
- Memory: `feedback_lewooogo_modular_enforcement.md`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 Phase 15 LLMOps 觀測批准 (Day 8 下午 15:40)
|
||
|
||
**統帥批准**: 零斷鏈觀測整合計畫
|
||
|
||
**架構決策**:
|
||
- **三層觀測**: Sentry (前端) + SignOz (後端) + Langfuse (AI)
|
||
- **Langfuse 部署**: 192.168.0.110 容器層 (與 Sentry 同主機)
|
||
- **啟動時機**: Phase 13.2 完工後 (嚴禁平行)
|
||
- **15.5 UI**: 暫緩 (深層連結已足夠)
|
||
|
||
**關鍵技術決策**:
|
||
- Redis Streams Trace 傳遞使用 OTEL 標準 API (inject/extract)
|
||
- 取樣率: Sentry/SignOz 10%, Langfuse 100% (AI 決策必錄)
|
||
- 深層連結穿透: URL Tags 相互注入,免開三畫面
|
||
|
||
**Memory**: `project_phase15_llmops_observability.md`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 部署層級決策鐵律確立 (Day 8 下午 15:30)
|
||
|
||
**統帥指令**: 所有服務的部署位置必須經過專業評估
|
||
|
||
**三層部署選項**:
|
||
- **主機層**: 核心基礎設施 (Harbor, Runner, PostgreSQL)
|
||
- **容器層**: 獨立工具 (Sentry, Langfuse)
|
||
- **K3s 層**: 生產應用 (AWOOOI API/Web/Worker)
|
||
|
||
**必須評估**:
|
||
1. 服務類型 (無狀態/有狀態)
|
||
2. 持久化需求
|
||
3. 備份/回滾機制
|
||
|
||
**Memory**: `feedback_deployment_layer_decision.md`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-26 紅區治理機制確立 (Day 8 中午 12:50)
|
||
|
||
**統帥批准**: 代碼防區化治理 (Codebase Zoning)
|
||
|
||
**已實作**:
|
||
- `scripts/hooks/pre-commit` - Git Hook 紅區警告 (警告模式)
|
||
- `docs/RED_ZONES.md` - 紅區治理手冊
|
||
- `CLAUDE.md` 紅區章節 - AI 開發憲法更新
|
||
- `feedback_red_zone_governance.md` - Memory 記錄
|
||
|
||
**紅區清單**:
|
||
- Tier 3 (核心大腦): 8 個檔案
|
||
- Tier 2 (基礎設施): 15+ 個檔案
|
||
|
||
**定期審查**: 每月第一個週一
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-25 變更註解標準確立 (Day 7 深夜 23:55)
|
||
|
||
**統帥指令**: 專案所有變更必須包含追蹤資訊
|
||
|
||
**必要欄位**:
|
||
- **WHO** - 執行者 (人/AI)
|
||
- **WHAT** - 變更內容
|
||
- **WHEN** - 台北時區 (+8)
|
||
- **VERSION** - 版本號
|
||
|
||
**Memory**: `feedback_change_annotation_standard.md`
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-25 ClawBot → OpenClaw 全域更名完成 (Day 7 深夜)
|
||
|
||
**更新檔案**:
|
||
- `docker-compose.yml` - CLAWBOT_URL → OPENCLAW_URL (port 8089→8088)
|
||
- `docs/infrastructure/DEPLOYMENT_TOPOLOGY.md` - Docker 服務名稱 + health check
|
||
- `docs/security/SECRETS_REFERENCE.md` - 環境變數
|
||
- `docs/adr/ADR-005-bff-architecture.md` - clawbot_client → openclaw_client
|
||
- `.agents/skills/04-awoooi-devops-commander.md` - clawbot-redis → openclaw-redis
|
||
- 新增 **Skill 07: Tool Integration Expert** (MCP Tool 整合專家)
|
||
|
||
**保留歷史紀錄**: LOGBOOK.md, meetings/*, MONITORING_INVENTORY (來源路徑)
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-25 Phase 13 Enterprise AIOps 規劃 (Day 7 晚間)
|
||
|
||
**統帥架構盤點會議** - 對照業界主流 AI Agent 運用方式
|
||
- CI/CD 結合: 符合度 60% (告警 ✅ / Git 觸發 ❌)
|
||
- Tool 封裝: 符合度 40% (MCP 骨架 ✅ / 實際連接 ❌)
|
||
- 智能路由: 符合度 50% (Fallback ✅ / 意圖判別 ❌)
|
||
|
||
**新增 Phase 13 工作項目** (#74-88):
|
||
- 13.1 CI/CD 整合: GitHub Webhook + AI 診斷 + 自動修復 (風險分級)
|
||
- 13.2 Tool 實作 (P0): SignOz + K8s + PostgreSQL + RAG MCP
|
||
- 13.3 智能路由: Intent Classifier + Complexity Scorer + AI Router
|
||
|
||
**新增 Memory**:
|
||
- feedback_tool_vs_modular.md - Tool 封裝 vs 模組化關係
|
||
- project_phase13_enterprise_aiops.md - Phase 13 完整規劃
|
||
|
||
### ✅ 2026-03-25 Phase 12.1-12.2 完成 (Day 7 下午)
|
||
|
||
**Phase 12.1 Tool Calling 優化** ✅ (commit afda312, c437b0c)
|
||
- 建立 24 個測試案例 (英/中/混合/邊界)
|
||
- 準確率 80% → 100%
|
||
- 新增 3 個解析模式: 中文刪除、混合重啟、明確 restart deployment
|
||
|
||
**Phase 12.2 本地模型優化** ✅
|
||
- 硬體盤點: 192.168.0.188 (62GB RAM, 無 GPU)
|
||
- 部署 qwen2.5:7b-instruct (4.7GB)
|
||
- Benchmark: qwen2.5 29s vs llama3.2 69s
|
||
- ModelRouter 動態路由設計完成
|
||
|
||
**Memory 新增**:
|
||
- `project_ollama_model_inventory.md` - 模型盤點
|
||
- `project_model_router_design.md` - 動態路由架構
|
||
|
||
**Skills 更新**:
|
||
- `03-openclaw-cognitive-expert.md` - 模型選擇規則
|
||
|
||
---
|
||
|
||
### ✅ 2026-03-25 Phase 11 進度 (Day 7)
|
||
|
||
**Phase 11.1 對話式容器** ✅
|
||
- ConversationalView 主容器 (左/右雙欄)
|
||
- ApprovalThreadItem 列表項目 (風險等級 + 相對時間)
|
||
- SSE 即時更新整合 (useApprovalSSE)
|
||
|
||
**Phase 11.2 批次處理** ✅
|
||
- BatchModeSelector 組件 (全部接受/逐一審核/CRITICAL Only)
|
||
- POST /api/v1/approvals/bulk-approve API
|
||
- CRITICAL + DESTRUCTIVE 安全過濾
|
||
|
||
**Phase 11.4 鍵盤快捷鍵** ✅
|
||
- useKeyboardShortcuts hook (Y/N/方向鍵/Esc)
|
||
- Y 鍵長按 2 秒核准 + 頂部進度條
|
||
- 快捷鍵說明 Modal (Y/N 高亮)
|
||
|
||
**Phase 11.3 響應式** ⏳ (P2 待辦)
|
||
- Desktop 雙欄已完成
|
||
- Tablet/Mobile 待實作
|
||
|
||
### 🔴 2026-03-25 01:20 簽核內容保留修復
|
||
|
||
**問題**: Telegram 簽核後只顯示「✅ 動作 xxx 已批准」,原始告警內容被覆蓋
|
||
|
||
**根因**: OpenClaw `_handle_approval_callback()` 使用 `edit_message_text()` 完全覆蓋原始訊息
|
||
|
||
**修復** (commit 1859893):
|
||
- 取得 `query.message.text` 原始內容
|
||
- 組合: 原始內容 + 分隔線 + 簽核鋼印
|
||
- 更新 `feedback_approval_preserve_content.md`
|
||
|
||
### 🔴 2026-03-25 Alertmanager 災難修復
|
||
|
||
**問題**: Claude 錯誤將 Alertmanager 指向 OpenClaw (8088),導致 Telegram 發送舊 AIOPS 格式
|
||
|
||
**修復**:
|
||
- Alertmanager 改指向 `http://192.168.0.120:32334/api/v1/webhooks/alertmanager`
|
||
- 刪除錯誤 Memory `feedback_alertmanager_openclaw_flow.md`
|
||
- 新增正確 Memory `feedback_alertmanager_awoooi_flow.md`
|
||
- 更新 DevOps Skill 04
|
||
- 停用 runner-healthcheck.yml 中 ubuntu-latest jobs (GitHub Billing)
|
||
|
||
### 🧠 認知覺醒計畫 Phase 6 施工順序 (C-Suite 2026-03-23 統帥方案)
|
||
|
||
| 步驟 | 項目 | 部署位置 | 工時 | 狀態 |
|
||
|------|------|---------|------|------|
|
||
| 6.0 | Incident Schema v0.3 | 程式碼 | 0.5d | ✅ 完成 |
|
||
| 6.1 | Event Bus (Redis Streams) | .188 Redis | 2d | ✅ 完成 |
|
||
| 6.2.1 | Working Memory (Redis Hash) | .188 Redis | 1d | ✅ 完成 |
|
||
| 6.2.2 | Episodic Memory (PostgreSQL) | .188 PostgreSQL | 1d | ✅ 完成 |
|
||
| 6.3 | Incident Engine v1 | .188 API | 3d | ✅ 完成 |
|
||
| **6.4a** | **lewooogo-brain 骨架** | `packages/` | 1h | ✅ 完成 |
|
||
| **6.4b** | **lewooogo-data 骨架** | `packages/` | 1h | ✅ 完成 |
|
||
| **6.4c** | **Interface 定義 (ABC)** | `packages/` | 2h | ✅ 完成 |
|
||
| **6.4d** | **MemoryProvider 實作** | `packages/` | 4h | 🔲 待辦 |
|
||
| **6.4e** | **Engine 搬遷** | `packages/` | 4h | ✅ 完成 |
|
||
| **6.4f** | **SkillLoader** | `packages/` | 2h | ✅ 完成 |
|
||
| **6.4g** | **API 突觸對接 `/propose`** | `apps/api` | 2h | ✅ 完成 |
|
||
| **6.4h** | **真實 ProposalEngine DI** | .188 API | 4h | 🔲 **下一步** |
|
||
| 6.5 | Runner 整合 + 5+1 狀態機 | .188 API | 4h | 🔲 待辦 |
|
||
| 6.6 | Sensor Agent (各主機) | .110/.112/.120 | 2d | 🔲 待辦 |
|
||
|
||
---
|
||
|
||
## 📋 最近里程碑
|
||
|
||
| 時間 | 事件 | 負責人 |
|
||
|------|------|--------|
|
||
| 2026-03-25 15:30 | **🤖 Phase 12 Ollama 整合計畫批准**: Tool Calling + Kimi-K2.5 + CI/CD + Cloud Models (#60-73) | 統帥 |
|
||
| 2026-03-25 15:20 | **✅ OpenClaw Sentry 整合提交 (4edb862)**: sentry_integration.py 已推送 gitea + GitHub | Claude Code |
|
||
| 2026-03-25 15:00 | **🚀 Phase 11 b13b063 推送**: 對話式 AI UI/UX 全部完成,CI/CD 排隊中 | Claude Code |
|
||
| 2026-03-25 14:00 | **🎨 Phase 11.1-11.4 完成**: ConversationalView + BatchModeSelector + useKeyboardShortcuts (Y/N 長按支援) | Claude Code |
|
||
| 2026-03-25 11:00 | **✅ #15 SSE 改造完成 (170102a)**: Approval Polling → SSE 即時更新,新增 /api/v1/approvals/stream + useApprovalSSE hook | Claude Code |
|
||
| 2026-03-25 10:00 | **🎨 Phase 11 對話式 AI 批准**: ChatGPT 風格 + 批次處理 + 鍵盤快捷鍵 (Y/N/方向鍵) + 響應式佈局 (#47-59) | 統帥 |
|
||
| 2026-03-25 09:45 | **🕐 台北時區統一 (749b8bc)**: 11 個後端檔案改用 +8 時區 + 新增 timezone.py 工具 | Claude Code |
|
||
| 2026-03-25 01:10 | **✅ CD 23501633819 部署完成**: API/Web/Worker 全部更新,Alertmanager webhook 路徑修復生效 | Claude Code |
|
||
| 2026-03-25 01:05 | **🔧 NetworkPolicy DNS 修復**: CoreDNS podSelector 修正,Telegram 發送恢復 | Claude Code |
|
||
| 2026-03-25 01:00 | **📝 feedback_approval_preserve_content.md**: 簽核後保留原始內容鐵律 | Claude Code |
|
||
| 2026-03-25 00:55 | **🔧 CI ubuntu-latest Jobs 停用 (ad00eda)**: external-sentinel + telegram-connectivity | Claude Code |
|
||
| 2026-03-25 00:50 | **🔴🔴 Alertmanager 路由修復**: Alertmanager 改指向 AWOOOI API (K3s 32334),修復舊 AIOPS 格式災難 + Memory/Skill 更新 | Claude Code |
|
||
| 2026-03-25 00:20 | **🔧 sync-from-approvals 端點 (5d03a82)**: 為舊 Approvals 補建 Incidents,修復活躍事件顯示 0 問題 | Claude Code |
|
||
| 2026-03-25 00:10 | **🔧 Sentry Tunnel Nginx 修復 (41bd213)**: 將 /api/sentry-tunnel 路由到前端 (不是後端 FastAPI) | Claude Code |
|
||
| 2026-03-25 00:05 | **✅ CD 23498719881 部署成功**: Incident-Approval 同步 + ApprovalCard UX 修復生效 | Claude Code |
|
||
| 2026-03-24 23:50 | **🎨 ApprovalCard UX 優化 (3837827)**: 標題與 kubectl 命令分離 + AI 標籤清理 | Claude Code |
|
||
| 2026-03-24 23:45 | **🔧 Incident-Approval 同步 (b645981)**: Alertmanager webhook 同時創建 Incident + Approval (活躍事件修復) | Claude Code |
|
||
| 2026-03-24 23:40 | **📱 CD 通知格式改善 (2bb7643)**: 友善部署通知 (版本/時間/作者/SHA) | Claude Code |
|
||
| 2026-03-24 23:35 | **⚡ CI 優化 (77c6bf3)**: Docker Verify 只在 PR 執行 (20-30min → ~3min) | Claude Code |
|
||
| 2026-03-24 23:30 | **🔧 NetworkPolicy DNS/HTTPS 修復**: K8s Pod Telegram 連線修復 (kubectl patch) | Claude Code |
|
||
| 2026-03-24 23:25 | **🔑 Telegram K8s Secret 配置**: OPENCLAW_TG_BOT_TOKEN + CHAT_ID + WHITELIST 注入 | Claude Code |
|
||
| 2026-03-24 17:55 | **🔧 NetworkPolicy Sentry Egress (d08290b)**: 新增 192.168.0.110:9000 (Sentry) + :5000 (Harbor) 出口白名單 (#38) | Claude Code |
|
||
| 2026-03-24 17:50 | **📦 Workflow 整合 (490cd54)**: 停用 deploy-prod.yml.disabled,僅保留 cd.yaml v2.0 (避免重複部署/selector 衝突) | Claude Code |
|
||
| 2026-03-24 17:30 | **🌐 i18n 語言策略**: UI 繁中 + 技術英文,建立 feedback_i18n_language_strategy.md + 更新 Skill 01 | Claude Code |
|
||
| 2026-03-24 17:20 | **🔧 i18n 翻譯修復**: 補齊 agent/metrics/incident 命名空間 (zh-TW.json + en.json) | Claude Code |
|
||
| 2026-03-24 16:45 | **🔧 Health Check 修復 (ab240c6)**: kubectl exec 加入 -c api 容器名稱 + 增加 sleep 15s | Claude Code |
|
||
| 2026-03-24 16:25 | **✅ Sentry Tunnel 完成 (b20987e)**: /api/sentry-tunnel API Route + sentry.client.config.ts 使用 tunnel + 重新啟用 NEXT_PUBLIC_SENTRY_DSN | Claude Code |
|
||
| 2026-03-24 16:10 | **📊 OTEL CI/CD 監控 (cd7d63e)**: CI/CD workflows 加入 OTEL exporter → SignOz (192.168.0.121:4318) | Claude Code |
|
||
| 2026-03-24 16:05 | **🔧 API import 修復 (75c991d)**: 修正 ruff I001 lint 錯誤 (import 排序) | Claude Code |
|
||
| 2026-03-24 16:00 | **🔴 Sentry 區域網路權限修復 (bf702ff)**: 暫時停用 NEXT_PUBLIC_SENTRY_DSN (內網 IP 觸發瀏覽器授權) | Claude Code |
|
||
| 2026-03-24 15:50 | **📋 Sentry 完整整合計畫**: 三層架構 (SDK → Sentry Server → AI 分析 → BFF → 自建 UI) 批准 | 統帥 |
|
||
| 2026-03-24 14:50 | **🧪 QA 測試執行**: 13 通過 / 9 失敗 (59%) - Multi-Sig ✅ 核心安全通過,UI 測試需更新 | 資深顧問 |
|
||
| 2026-03-24 14:45 | **🔴 根因發現**: NEXT_PUBLIC_API_URL 未 build-arg 注入,前端用 localhost:8000 | 資深顧問 |
|
||
| 2026-03-24 14:40 | **🔧 CD 修復 (7a76f3e)**: 新增 `--build-arg NEXT_PUBLIC_API_URL=https://awoooi.wooo.work` | Claude Code |
|
||
| 2026-03-24 14:35 | **🔧 Health Check 修復 (774290d)**: 改用 kubectl exec 內部驗證 (避免 runner DNS 問題) | Claude Code |
|
||
| 2026-03-24 14:30 | **⚡ CD 優化 (515339f)**: 沿用 wooo-aiops 模式 - 變更偵測 + 選擇性構建 (skip_api/skip_web) + 原生 BuildKit + 本地 Next.js 快取 | Claude Code |
|
||
| 2026-03-24 14:25 | **✅ #6 回饋 API Commit (ad05bbf)**: PUT /api/v1/incidents/{id}/feedback + async_utils (fire_and_forget) | Claude Code |
|
||
| 2026-03-24 14:20 | **🐳 CD 構建成功**: API (580c38d-23475622328) + Web (580c38d-23475622328) → Deploy 進行中 | Claude Code |
|
||
| 2026-03-24 14:10 | **📋 QA Report 整合**: `AWOOOI_Full_QA_Report.md` 分析 + Phase 8.0 項目 (#13-#20) 納入 workplan + P0/P1 狀態對照 | Claude Code |
|
||
| 2026-03-24 14:05 | **🔧 Kustomize 修復 (580c38d)**: 映像替換 OLD_IMAGE 必須完全匹配 (含 `:IMAGE_TAG_PLACEHOLDER`) | Claude Code |
|
||
| 2026-03-24 14:00 | **✅ #6 人類回饋 API**: `PUT /api/v1/incidents/{id}/feedback` + effectiveness_score + human_feedback + learning_notes + Redis/PostgreSQL 同步 | Claude Code |
|
||
| 2026-03-24 13:55 | **✅ #5 統計分析 API 確認**: 已完整實現且註冊於 main.py:300-301 | Claude Code |
|
||
| 2026-03-24 13:00 | **🔄 ClawBot → OpenClaw 全域更名**: 刪除 clawbot.py + 更新 12 個 Python 檔案 + 類型定義/Discord username 更名 | 資深顧問 |
|
||
| 2026-03-24 12:40 | **🔧 CD 修復**: turbo.json 快取邊界 + CD workflow (kustomize/namespace/kubectl) + Alertmanager 指向 AWOOOI + 部署驗證鐵律 (HARD_RULES + Skills) | 資深顧問 |
|
||
| 2026-03-24 10:30 | **🔴🔴 禁止 Mock 測試鐵律**: 統帥明確指示「全面禁止!!!」Mock 測試 + 移除 `test_stats_api.py` 與 `test_webhook_telegram_integration.py` + 新增 `feedback_no_mock_testing.md` | Claude Code |
|
||
| 2026-03-24 10:15 | **📊 Statistics API 完成**: 6 端點 (summary/timeline/trends/top-resources/feedback/themes) + PostgreSQL date_trunc 優化 + Redis 快取 (5分鐘 TTL) + 12 領域主題萃取 | Claude Code |
|
||
| 2026-03-24 10:00 | **🔧 Y/n 決策重置修復**: DecisionManager 活躍事件自動建立新 Decision (原本返回舊 COMPLETED 導致按鈕永久禁用) | Claude Code |
|
||
| 2026-03-23 21:20 | **🔧 Y/n 按鈕雙重修復**: (1) mapToDualState 遺漏 decision prop (2) `result.status` → `result.approval.status` API 回應結構錯誤 + 新增 feedback_api_response_verification.md 鐵律 | Claude Code |
|
||
| 2026-03-23 19:55 | **📝 CLAUDE.md 完整重構**: 整合 31 個 feedback 規則 + 六大章節鐵律 + 危險操作分級 + Session 協議 | 資深顧問 |
|
||
| 2026-03-23 19:51 | **🔧 OpenClaw Ollama 修復**: host.docker.internal → 172.17.0.1 + 容器重啟成功 | 資深顧問 |
|
||
| 2026-03-23 19:45 | **🛑 舊 AIOPS 清理**: 停止 192.168.0.188 + 192.168.0.110 Alertmanager | 資深顧問 |
|
||
| 2026-03-23 19:39 | **✅ Telegram Token #3 成功**: OpenClaw 啟動正常,AWOOOI API 完全停用 Telegram | 統帥 |
|
||
| 2026-03-23 19:31 | **🔴 Telegram Token #2 失效**: 舊 Pod 呼叫 logOut,Token 再次失效 | 災難 |
|
||
| 2026-03-23 19:35 | **📜 ADR-012 危險操作治理**: 三層架構 (預防+執行+審計) + Tier 0-3 分級 | 資深顧問 |
|
||
| 2026-03-23 11:09 | **🔴 Telegram Token #1 失效**: AWOOOI API 呼叫 logOut,Token 永久失效 | 災難 |
|
||
| 2026-03-23 14:35 | **🎨 Phase 6.5c UX 改善**: 錯誤訊息明顯顯示 (非 hover) + 30 秒超時警告 + 重試按鈕 + 取消自動恢復 (讓用戶看到錯誤) | Claude Code |
|
||
| 2026-03-23 14:20 | **🔧 Y 按鈕執行修復**: 中文 Action 解析擴充 (擴展/重新啟動) + StatefulSet Pod 自動識別 (`xxx-0` → DELETE_POD) + `-deployment` 後綴自動移除 | Claude Code |
|
||
| 2026-03-23 14:15 | **📝 Memory 同步**: feedback_modular_core_spirit.md (模組化核心精神鐵律) + MEMORY.md 索引更新 | Claude Code |
|
||
| 2026-03-23 13:08 | **⚡ Phase 6.5c+ 交互神經強化完成**: Approval 按鈕物理回饋 (active縮放/防呆) + API 鏈路確認 (`/api/v1/approvals/{id}/sign`) + 樂觀更新 (Optimistic UI) 立即 Loading | 首席架構師 |
|
||
| 2026-03-23 11:50 | **🧠 Phase 6.4g API 突觸對接完成**: `/propose` 路由建立 + Guardrails 8/8 測試通過 + lewooogo-brain 積木綁定 | Claude Code |
|
||
| 2026-03-23 11:55 | **🎨 Phase 6.5a 視覺皮層啟動**: DualStateIncidentCard.tsx 雙態戰情室卡片 + Nothing.tech 視覺憲法 | Claude Code |
|
||
| 2026-03-23 09:30 | **🔧 NetworkPolicy 修復**: `allow-required-egress` podSelector 改為 `system=awoooi` (原本只允許 API pod) | Claude Code |
|
||
| 2026-03-23 09:20 | **🚨 生產修復 #2**: Worker CrashLoopBackOff 92次 + `init_redis` → `init_redis_pool` 函數名修正 + 7h 無告警根因 | Claude Code |
|
||
| 2026-03-23 09:15 | **🚨 生產修復 #1**: 簽核卡片閃爍消失 + Polling Race Condition + approval.store.ts 暫停/恢復機制 | Claude Code |
|
||
| 2026-03-23 09:10 | **📚 Skills 更新**: 05-awoooi-sre-qa.md + 新增 CrashLoopBackOff 診斷 + Race Condition 偵測 + Telegram 健康檢查 | Claude Code |
|
||
| 2026-03-23 10:30 | **🧱 C-Suite 模組化架構評審**: 統帥質疑積木化原則淡化 + 後端缺 lewooogo-brain/data 積木 + 方案 B 漸進式拆分 (Interface→Memory→Brain→Skill) + 2.5d 工時評估 + 施工順序重排 | C-Suite + Claude Code |
|
||
| 2026-03-23 01:10 | **🚀 Signal Worker 啟用**: `replicas: 0→1` + Redis Streams Consumer 正式上線 + Incident Engine 處理鏈完整 | CTO + Claude Code |
|
||
| 2026-03-23 01:05 | **🎯 實彈告警發射成功**: 4 發告警注入 Redis Streams (HarborOOMKilled/HighCPU/DBTimeout/RedisMemory) + message_id 確認 | CTO + Claude Code |
|
||
| 2026-03-23 00:55 | **📊 GlobalPulse 脈搏恢復**: SignOz v3 表修正 + RPS 5.4/Error 25%/P99 3s 真實數據顯示 | CTO + Claude Code |
|
||
| 2026-03-23 00:45 | **📱 Telegram 通知 UX 升級**: HTML 結構化格式 + Inline Keyboard (查看紀錄/開啟正式站) + 拔除冗長 URL | CTO + Claude Code |
|
||
| 2026-03-23 00:25 | **🤖 Claude Skills 兵營建置**: 6 大專屬 Skill 模組 (`01-frontend` ~ `06-monorepo`) + Skill Router 寫入主憲法 + Auto-Pilot 驗收機制 | CTO + Claude Code |
|
||
| 2026-03-23 00:10 | **🔧 OTEL 神經修復**: Port 4317→24317 修正 (SigNoz Host Port) + NetworkPolicy Egress 開通 + ConfigMap 更新 + Traces 正常匯出 | CTO + Claude Code |
|
||
| 2026-03-22 23:55 | **🔧 Phase 8 NodePort 修復**: NetworkPolicy `allow-nginx-ingress` 新增 K3s Node IP (120/121) + Pod CIDR (10.42.0.0/16) + 502 Bad Gateway 根治 | CTO + Claude Code |
|
||
| 2026-03-22 23:52 | **🧠 Phase 6.3 聚合引擎竣工**: `IncidentEngine` 告警聚合核心 + 30 分鐘時間窗口 + GraphRAG 整合 + Severity 自動升級 (P2→P0) + 3 筆告警成功聚合為 1 個 Incident (`INC-20260322-73EDFA`) + Redis + SQLite 雙層同步 | CTO + Claude Code |
|
||
| 2026-03-22 20:45 | **🧠 Phase 6.2 海馬迴竣工**: `IncidentRecord` SQLAlchemy Model + `IncidentService` 雙層寫入 + `INC-20260322-D5C168` 成功固化 Redis (TTL 7d) + SQLite + 動態驗證通過 | CTO + Claude Code |
|
||
| 2026-03-22 19:30 | **✅ Phase 6.1 動態驗證通過**: `message_id=1774164545219-0` 成功穿越 Redis Streams + Producer 200 OK (54ms) + Consumer ACK (pending=0) + 神經網路正式通電 | CTO + Claude Code |
|
||
| 2026-03-22 19:00 | **🚀 Phase 6.1 Event Bus 竣工**: Redis Streams 信號匯流排 + `/api/v1/webhooks/signals` Producer (XADD) + `SignalWorker` Consumer (XREADGROUP) + Lifespan 整合 + 告警風暴防護 (MAXLEN 10000) | CTO + Claude Code |
|
||
| 2026-03-22 18:00 | **🧠 Phase 6.0 Incident Schema v0.3 竣工**: 認知覺醒計畫基石確立 + 三層記憶架構 (Working/Episodic/Semantic) + AIDecisionChain 可稽核性 + IncidentOutcome 回饋循環 + 防腦分裂鐵律寫入契約 | C-Suite + Claude Code |
|
||
| 2026-03-22 16:00 | **🎯 C-Suite 戰略會議 (四輪)**: ChatGPT 架構分析回應 + AWOOOI 定位為 AI Ops OS + .188 為唯一大腦中心 + MCP 採用但不依賴 + 物理-邏輯架構對齊 | CEO + C-Suite |
|
||
| 2026-03-22 14:00 | **🔴 Phase 6.1.1 Redis Multi-Sig**: redis_client.py 連線池 + multi_sig_redis.py 狀態持久化 + RedisLock 分散式鎖 + 7/7 自動化測試通過 | CTO + Claude Code |
|
||
| 2026-03-22 13:30 | **🔴 Telegram Long Polling 重構**: Webhook → getUpdates 長輪詢 + deleteWebhook 清理 + _polling_loop 背景任務 + lifespan 整合 | CTO + Claude Code |
|
||
| 2026-03-22 13:00 | **📊 架構 Code Review → Phase 6 規劃**: Redis Multi-Sig + Neo4j GraphRAG + 水平擴展 Roadmap 已同步至 memory/project_phases.md | CTO + Claude Code |
|
||
| 2026-03-22 01:30 | **🔴 GlobalPulse 假數據切除**: /api/v1/metrics/gold 真實血脈 API + useGlobalPulseMetrics Hook + 誠實渲染原則 (無數據顯示 "--") | CTO + Claude Code |
|
||
| 2026-03-22 01:00 | **📊 ApprovalCard 微交互**: 800ms 處理延遲 + 滑出動畫 + 歷史紀錄標籤 (Pending/History) + 唯讀模式 finalStatus Badge | CTO + Claude Code |
|
||
| 2026-03-22 00:50 | **🔧 K8s Executor Parsing 修復**: deployment[/:\s]+ 正則修正 + 6/6 單元測試通過 | CTO + Claude Code |
|
||
| 2026-03-22 00:30 | **⚡ Smart Polling 實作**: 簽核後每秒輪詢直到 EXEC 事件 + Toast 通知 + Timeline 閃爍動畫 | CTO + Claude Code |
|
||
| 2026-03-22 00:00 | **🔧 SSR Hydration Bug 修復**: apiBaseUrl 空值修正 + 自動化 QA 腳本 verify-sse.js + L1 條款 14-16 禁止人工 QA | CTO + Claude Code |
|
||
| 2026-03-21 23:00 | **📜 真實性條款入憲**: L1 條款 11-13 禁止 Mock + ClawBotStateMachine 改真實 API 輪詢 + 強制雙端驗證 | CTO + Claude Code |
|
||
| 2026-03-21 22:00 | **🔧 容器全修復**: pyproject.toml 補 OTEL 依賴 + healthcheck 改 node + L1 條款 6 授權分級協定 | CTO + Claude Code |
|
||
| 2026-03-21 20:00 | **🚀 Phase 2 啟動**: fire_test_alert.py 導彈腳本 + 5 種告警場景 + 全鏈路測試準備就緒 | CTO + Claude Code |
|
||
| 2026-03-21 19:00 | **🎉 Phase 1 視覺貫通竣工**: ThinkingStream 打字機動畫 + ClawBotStateMachine 三態狀態機 + L1 契約交付前驗證條款 | CTO + Claude Code |
|
||
| 2026-03-21 18:00 | **AICommandPanel 戰情室整合**: ClawBot + ApprovalCard 合併面板 + 右側 30% 區塊掛載 + SSE 404 診斷 (後端正常) | CTO + Claude Code |
|
||
| 2026-03-21 17:30 | **HITL ApprovalCard 審查通過**: LongPressButton + BlastRadius Grid + Multi-Sig Counter + 告警聚合 Badge + Nothing.tech 規範符合 | CTO + Claude Code |
|
||
| 2026-03-21 17:00 | **SSE 即時整合**: useSSE Hook + Zustand Store + LiveDashboard + 自動重連機制 + 記憶體洩漏防禦 | CTO + Claude Code |
|
||
| 2026-03-21 16:30 | **Phase 1 啟動**: 全局戰情室 Nothing.tech 骨架 + DataPincerCard 視覺容器 + 70/30 Grid 佈局 | CTO + Claude Code |
|
||
| 2026-03-21 16:00 | **🎉 Phase 0 基礎設施竣工**: 全部 P0 待辦完成,進入 Phase 1 準備階段 | CTO + Claude Code |
|
||
| 2026-03-21 15:30 | **P0 可觀測性完成**: FastAPI OTEL 整合 + SigNoz 追蹤 (192.168.0.188:4317) + 優雅降級機制 | CTO + Claude Code |
|
||
| 2026-03-21 15:00 | **CPO-003 i18n 雙語完成**: next-intl + zh-TW/en 字典 + middleware 語言攔截 + 防禦性審查寫入 L1 | CTO + Claude Code |
|
||
| 2026-03-21 14:30 | **戰略全局對齊**: 確立純白視覺絕對標準 + 廢除 Cyber Palette + OTEL/i18n 納入 P0 鐵律 | CTO + Claude Code |
|
||
| 2026-03-21 14:00 | **CIO-002 Nginx 路由完成**: awoooi.wooo.work 反向代理 + SSE 長連線支援 (proxy_buffering off) | CIO + Claude Code |
|
||
| 2026-03-21 13:25 | **Phase 0 K3s 基礎設施部署**: Namespace + NetworkPolicy + RBAC 正式上線 (192.168.0.120) | CIO + Claude Code |
|
||
| 2026-03-21 13:10 | **Phase 7 容器化完成**: Docker 多階段建置 + docker-compose 聯合測試 + SSE 404 修復 | CTO + Claude Code |
|
||
| 2026-03-21 01:15 | **Phase 6 輸出閘道加固**: Notification fire-and-forget + HttpUrl Fail-Fast + Timeline OOM 防護 | CTO + Claude Code |
|
||
| 2026-03-20 18:00 | **Phase 0 正式啟動**: 會議總結 + 實施步驟 + 9 筆 Memory 記錄 + K8s YAML 完成 | CEO + C-Level |
|
||
| 2026-03-20 17:00 | **部署拓撲定義**: 明確定義 Host/Docker/K3s 服務位置 + 網路流量走向圖 | CIO |
|
||
| 2026-03-20 16:00 | **Phase VI CEO 施工規範**: 9 大指示 + 顧問 4 大深度討論,產出 7 份關鍵文檔 | CEO + C-Level |
|
||
| 2026-03-20 15:00 | **Phase 0 文檔完成**: API SOP + 原子組件庫規格 + RBAC Schema 三份核心文檔 | CTO + CPO + CISO |
|
||
| 2026-03-20 14:00 | **Phase IV CEO 13大指示**: 痛點盤點 + 彈性設計 + 權限簡化 + 文檔清單 + 進度追蹤 | CEO + 全員 |
|
||
| 2026-03-20 14:00 | **架構地雷排查**: 冪等性/Plugin沙盒/向量切塊策略完整定義 | CTO |
|
||
| 2026-03-20 12:00 | **Phase III 深度定義**: C-Level 功能評估 (63→45頁重組) + WBS 分工 + 文檔系統 | 全員 |
|
||
| 2026-03-20 12:00 | **技術深潛**: BFF 閘道架構 + 原子組件庫規格 + 遷移腳本映射 | CTO + CPO |
|
||
| 2026-03-20 12:00 | **P0 功能共識**: 戰情室 + AI Copilot + HITL + Multi-Sig + Command Palette | C-Level |
|
||
| 2026-03-20 10:00 | **Operation Phoenix Rising**: CEO 宣布 100% 獨立重構,63+ 頁面全面重寫,Nothing.tech 純白風格 | CEO + C-Level |
|
||
| 2026-03-20 10:00 | **六大裁定**: 分階段重構、24週時程、1-3月過渡期、Scalar API文檔、團隊擴編至14人 | CEO |
|
||
| 2026-03-20 10:00 | **四主機隔離架構**: NetworkPolicy + Port 分離 + Nginx 路由分流完整定義 | CIO |
|
||
| 2026-03-20 10:00 | **共用資源衝突矩陣**: Ollama Queue + PgBouncer + Redis DB Index 隔離方案 | CTO + CIO |
|
||
| 2026-03-19 26:00 | **Phase 1.2**: Ollama 真實串接 (192.168.0.188:11434) + Tailwind 顏色修正 (`bg-status-*`) | CTO + Claude Code |
|
||
| 2026-03-19 25:30 | **Phase 1.1**: Zustand 封裝 SSE + DataPincer + ThinkingTerminal | CTO + Claude Code |
|
||
| 2026-03-19 25:00 | **Tracer Bullet**: SSE 串流前後端貫通 (/agent/thinking) | CTO + Claude Code |
|
||
| 2026-03-19 24:45 | **Phase 1 骨架**: Monorepo + lewooogo-core + apps/web + apps/api | CTO + Claude Code |
|
||
| 2026-03-19 24:15 | **CI/CD 強化**: ADR 糾察隊 + Turborepo 快取 + Harbor 整合 | CTO + Claude Code |
|
||
| 2026-03-19 24:00 | **ADR-004/005**: Zustand 狀態管理 + BFF 閘道架構 | CTO + Claude Code |
|
||
| 2026-03-19 23:45 | **CI/CD + Tailwind**: GitHub Actions (ci.yaml/cd.yaml) + Nothing.tech Tailwind 配置 | CTO + Claude Code |
|
||
| 2026-03-19 23:30 | **API Contract**: OpenAPI 規格 v1.0 (Health/Plugins/Pipelines/Agent/Approvals/Notifications) | CTO + Claude Code |
|
||
| 2026-03-19 23:15 | **ADR-002/003**: Nothing.tech 設計系統 + leWOOOgo 模組架構 | CTO + Claude Code |
|
||
| 2026-03-19 23:00 | **ADR-001**: MCP Protocol 採用決策記錄 | CTO + Claude Code |
|
||
| 2026-03-19 22:30 | **文檔萃取**: 戰略會議記錄複製 (加 Genesis 標記) + 四主機架構/六大鐵律萃取合併 | CTO + Claude Code |
|
||
| 2026-03-19 22:00 | **專案初始化**: 獨立 Repo 建立 + .awoooi-agent-rules.md + 專案骨架 | CTO + Claude Code |
|
||
|
||
---
|
||
|
||
## 🎉 Phase 0 完成宣告 (2026-03-21)
|
||
|
||
**Operation Phoenix Rising 基礎設施全數竣工**
|
||
|
||
| 類別 | 項目 | 狀態 |
|
||
|------|------|------|
|
||
| **基礎架構** | K3s Namespace + RBAC | ✅ |
|
||
| **網路隔離** | NetworkPolicy + Nginx | ✅ |
|
||
| **可觀測性** | OTEL → SigNoz | ✅ |
|
||
| **國際化** | next-intl (zh-TW/en) | ✅ |
|
||
| **容器化** | Docker + K8s YAML | ✅ |
|
||
| **文檔系統** | ADR + SOP + LOGBOOK | ✅ |
|
||
|
||
**下一階段**: Phase 1 - 戰情室 UI + AI Copilot 開發
|
||
|
||
---
|
||
|
||
## 🎯 Phase 0 待辦 (Week 1) ✅ 已完成
|
||
|
||
- [x] 建立獨立 Repository
|
||
- [x] `.awoooi-agent-rules.md` AI 開發契約
|
||
- [x] VS Code Multi-root Workspace
|
||
- [x] `api-contract.yaml` OpenAPI 規格
|
||
- [x] `ADR-001` MCP Protocol 採用
|
||
- [x] `ADR-002` Nothing.tech 設計系統
|
||
- [x] `ADR-003` leWOOOgo 模組架構
|
||
- [x] GitHub Actions CI/CD 基礎
|
||
- [x] Tailwind Nothing.tech 配置
|
||
- [x] `API_DEVELOPMENT_SOP.md` API 開發流程規範 (CTO-001)
|
||
- [x] `COMPONENT_LIBRARY.md` 原子組件庫規格 (CPO-002)
|
||
- [x] `RBAC_SCHEMA.md` 權限架構設計 (CISO-001)
|
||
- [x] K8s Namespace 建立 (CIO-001) ✅ 2026-03-21
|
||
- [x] Nginx 路由配置 (CIO-002) ✅ 2026-03-21
|
||
- [x] NetworkPolicy 設定 (CIO-003) ✅ 2026-03-21
|
||
- [x] i18n 框架設定 (CPO-003) ✅ 2026-03-21
|
||
|
||
### 🚨 P0 基礎設施 (2026-03-21 新增)
|
||
|
||
- [x] **後端 FastAPI 整合 SigNoz OpenTelemetry** (Traces/Logs → 192.168.0.188:4317) ✅ 2026-03-21
|
||
- [x] **前端 Next.js 導入 next-intl 雙語架構** (zh-TW + en, Zero Hardcode) ✅ 2026-03-21
|
||
|
||
---
|
||
|
||
### 已完成文檔
|
||
|
||
- [x] `DEPENDENCIES.md` 依賴清單 (CEO #1)
|
||
- [x] `ADR-006` AI 降級備援策略 (CEO #2)
|
||
- [x] `ADR-007` 資料保留策略 (CEO #7)
|
||
- [x] `DEPLOYMENT_CONTRACTS.md` 部署契約 (顧問)
|
||
- [x] `I18N_STRUCTURE.md` i18n 結構規範 (顧問)
|
||
- [x] `WEEKLY_REPORT_SOP.md` 週報自動化 (CEO #6)
|
||
- [x] `TECHNICAL_DOCUMENTATION_CHECKLIST.md` 技術文檔清單 (CEO #9)
|
||
|
||
---
|
||
|
||
## 📚 參考文件
|
||
|
||
- **Operation Phoenix Rising**: `docs/meetings/2026-03-20_PHOENIX_RISING_STRATEGY.md` ⭐ 最新戰略
|
||
- 戰略會議記錄 (創世文檔): `docs/meetings/2026-03-19_FRONTEND_RESTRUCTURE_STRATEGY.md` ✅ 本地複製
|
||
- 舊專案規範 (唯讀參考): `/Users/ogt/wooo-aiops/CLAUDE.md` ⚠️ 不複製,僅萃取精華至 `.awoooi-agent-rules.md`
|
||
|
||
---
|
||
|
||
## 🔴 重大戰略變更 (2026-03-20)
|
||
|
||
**CEO 宣布 Operation Phoenix Rising**:
|
||
|
||
| 項目 | 原計畫 | 新計畫 |
|
||
|------|--------|--------|
|
||
| 產品定位 | Agent 指揮艙附屬品 | **100% 獨立 SaaS,完全取代舊版** |
|
||
| 頁面範圍 | ~10 頁 | **63+ 頁全面重構** |
|
||
| 視覺風格 | 深色駭客風 | **Nothing.tech 純白工業風** |
|
||
| AI 整合 | 部分頁面 | **全站 AI Copilot** |
|
||
| 時程 | 8 週 | **24 週 (Week 8 MVP)** |
|
||
| 過渡期 | 12 個月 | **1-3 個月** |
|
||
| 團隊 | 4 人 | **14 人** |
|