docs: Phase 14 紅區治理 + Skills 01/03 更新

- CLAUDE.md: 紅區治理章節
- Skills 01/03: 版本更新
- ADR/Architecture: 標準化

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
OG T
2026-03-26 09:55:47 +08:00
parent 9ea246c7c2
commit 604e38cf07
15 changed files with 391 additions and 25 deletions

View File

@@ -6,6 +6,26 @@
---
## 文件資訊
| 欄位 | 值 |
|------|-----|
| **版本** | v1.2 |
| **建立日期** | 2026-03-20 (台北) |
| **建立者** | Claude Code |
| **最後修改** | 2026-03-25 23:58 (台北) |
| **修改者** | Claude Code |
### 變更紀錄
| 版本 | 日期 | 執行者 | 變更內容 |
|------|------|--------|----------|
| v1.0 | 2026-03-20 | Claude Code | 初始建立 |
| v1.1 | 2026-03-23 | Claude Code | Props Mapping 完整性檢查 |
| v1.2 | 2026-03-25 | Claude Code | 加入文件資訊區塊 |
---
## 核心約束 (Iron Laws)
### 1. Nothing.tech 純白工業風 (絕對標準)

View File

@@ -6,6 +6,27 @@
---
## 文件資訊
| 欄位 | 值 |
|------|-----|
| **版本** | v1.3 |
| **建立日期** | 2026-03-20 (台北) |
| **建立者** | Claude Code |
| **最後修改** | 2026-03-25 23:58 (台北) |
| **修改者** | Claude Code |
### 變更紀錄
| 版本 | 日期 | 執行者 | 變更內容 |
|------|------|--------|----------|
| v1.0 | 2026-03-20 | Claude Code | 初始建立 |
| v1.1 | 2026-03-23 | Claude Code | DecisionManager 雙軌引擎 |
| v1.2 | 2026-03-25 | Claude Code | 智能路由引擎 + Tool/Modular 關係 |
| v1.3 | 2026-03-25 | Claude Code | 加入文件資訊區塊 |
---
## 核心架構 (三層記憶系統)
### 1. Working Memory (Redis Hash)
@@ -288,9 +309,79 @@ model = "qwen2.5:72b" # 超過硬體限制
---
## 🔀 智能路由引擎 (Phase 13.3)
> **目標**: 用小模型判別意圖 + 評估複雜度,動態路由到不同 LLM
### 架構
```
告警進入
┌─────────────────────────────────┐
│ Intent Classifier (Qwen2.5-1B) │ ← 新增
│ 延遲: < 100ms │
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ Complexity Scorer (1-5 分) │ ← 新增
└─────────────────────────────────┘
┌─────────────────────────────────┐
│ AI Router │
│ ├─ 簡單 (1-2) → Ollama Local │
│ ├─ 中等 (3) → Ollama Large │
│ └─ 複雜 (4-5) → Gemini/Claude │
└─────────────────────────────────┘
```
### 意圖分類
| 意圖 | 範例 | 複雜度 |
|------|------|--------|
| RESTART | Pod 重啟、服務重啟 | 1-2 |
| SCALE | 擴容、縮容 | 2-3 |
| CONFIG | 配置變更 | 3-4 |
| DIAGNOSE | 根因分析、跨服務追蹤 | 4-5 |
### 風險分級自動修復
| 風險等級 | 自動化策略 |
|----------|-----------|
| **LOW** | ✅ 可自動執行 |
| **MEDIUM** | ✅ 可自動執行 (日誌記錄) |
| **HIGH** | 🟡 需 Telegram 快速確認 |
| **CRITICAL** | 🔴 **必須人工審核** |
> **統帥指示**: 真正嚴重緊急的告警,必須透過人工審核!
---
## 🧰 Tool 封裝與模組化關係
> **統帥澄清 (2026-03-25)**: Tool 封裝 ≠ 模組化,兩者是不同層次
| 維度 | leWOOOgo 模組化 | Tool 封裝 |
|------|-----------------|-----------|
| 層次 | 軟體架構層 | 系統整合層 |
| 範圍 | 六大積木 | 外部系統連接 |
| 關係 | 是 Tool 的**實作基礎** | 是模組化的**應用場景** |
### Tool 放置位置
```
Tool 封裝 → 放在 ACTION 積木內 → 遵循模組化原則開發
```
參考: `memory/feedback_tool_vs_modular.md`
---
## 參考文檔
- `apps/api/src/services/incident_engine.py`: 聚合引擎
- `apps/api/src/services/multi_sig_redis.py`: 分散式狀態
- `apps/api/src/workers/signal_worker.py`: Event Bus 消費者
- `apps/api/src/plugins/mcp/mcp_bridge.py`: MCP Bridge
- `memory/project_phase13_enterprise_aiops.md`: Phase 13 規劃
- Phase 6.0-6.3: 認知覺醒計畫

114
CLAUDE.md
View File

@@ -47,6 +47,40 @@
3. **有疑問 → 先問統帥** (不確定就停下來)
4. **任務完成 → 更新 Memory** (不等被問)
---
## 🔴 紅區治理 (Codebase Zoning)
**詳細文件:** [docs/RED_ZONES.md](docs/RED_ZONES.md)
### Tier 3 紅區 (核心大腦) - 修改需統帥授權
| 檔案 | 功能 | 破壞後果 |
|------|------|----------|
| `services/decision_manager.py` | 決策狀態機 | AI 無法做決策 |
| `services/trust_engine.py` | 信任評分 | Multi-Sig 失效 |
| `services/consensus_engine.py` | 共識引擎 | 審批繞過 |
| `services/incident_engine.py` | 事件處理 | 告警無法處理 |
| `services/multi_sig_redis.py` | 分散式鎖 | 併發競爭 |
| `services/security_interceptor.py` | 安全攔截 | 權限繞過 |
| `core/config.py` | 環境配置 | 連線全斷 |
| `core/telemetry.py` | OTEL 監控 | 可觀測失明 |
### 🏛️ 看到紅區警告時必須
```
1. 立即停止 commit
2. 呼叫首席架構師介入
3. 首席架構師進行審查:
- 變更必要性
- 影響範圍評估
- 替代方案評估
- 回滾計畫
4. 首席架構師簽核後,方可繼續 commit
```
**審查週期**: 紅區清單 (每週一) / Hook 腳本 (每月第一週一)
## 專案架構
- `apps/api/` - FastAPI 後端
@@ -71,6 +105,7 @@
| 主題 | Memory 路徑 |
|------|-------------|
| **變更前必讀** | `feedback_read_comments_first.md` 🔴 先讀註解 |
| **變更註解** | `feedback_change_annotation_standard.md` 🔴🔴 人事物+版本+時區 |
| **重大變更** | `feedback_product_survival_principles.md` |
| Telegram | `feedback_telegram_token_disaster.md` |
| OpenClaw | `feedback_architecture_openclaw_core.md` |
@@ -78,11 +113,89 @@
| i18n | `feedback_i18n_zero_hardcode.md` |
| 防禦性工程 | `feedback_defensive_engineering.md` |
| 模組化 | `feedback_modular_architecture.md` |
| **🔴🔴 積木化強制** | `feedback_lewooogo_modular_enforcement.md` 🔴🔴 修改前 5 問 |
| API 整合 | `feedback_api_response_verification.md` |
| 構建部署 | `feedback_build_from_git_only.md` |
| **測試** | `feedback_no_mock_testing.md` 🔴🔴 禁止 Mock |
| **API 路徑** | `feedback_api_path_naming.md` 🔴 修改需同步前端 |
| **部署驗證** | `feedback_deployment_verification.md` 🔴🔴 必須驗證 Pod 版本 |
| **部署層級** | `feedback_deployment_layer_decision.md` 🔴🔴🔴 主機/容器/K3s 必須評估 |
---
## 🔴 部署層級決策 (Deployment Layer)
**詳細文件:** `~/.claude/projects/-Users-ogt-awoooi/memory/feedback_deployment_layer_decision.md`
### 部署新服務前必須
```
1. ❌ 禁止: 直接 docker run / kubectl apply
2. ✅ 必須: 先提出「服務部署評估報告」
3. ✅ 必須: 等待統帥確認部署層級
4. ✅ 必須: 確認備份/回滾機制
```
### 三層部署選項
| 層級 | 適用場景 | 範例 |
|------|---------|------|
| **主機層** | 核心基礎設施、需持久化 | Harbor, Runner, PostgreSQL |
| **容器層** | 獨立工具、非核心路徑 | Sentry, Langfuse, OpenClaw |
| **K3s 層** | 生產應用、需水平擴展 | AWOOOI API/Web/Worker |
### 評估必答問題
1. 服務類型是什麼?(無狀態/有狀態)
2. 需要持久化嗎?
3. 可以接受中斷嗎?
4. 有備份機制嗎?
5. 配置如何版本化?
6. 如何回滾?
**違規後果**: 容器不見、Pod 被移除、修復時間長、無法回滾
---
## 🔴🔴 leWOOOgo 積木化強制執行
**詳細文件:** `~/.claude/projects/-Users-ogt-awoooi/memory/feedback_lewooogo_modular_enforcement.md`
### 修改 apps/api/ 前必問 5 題
```
1. 這個邏輯是否已存在於 packages/ → 用 packages禁止重寫
2. Router 是否只做 HTTP 轉發? → 禁止直接存取 Redis/DB
3. Service 是否依賴 Interface → 必須用 Protocol/ABC
4. 是否可被其他模組重用? → 可重用邏輯放 packages/
5. 是否遵循依賴注入? → 禁止 global singleton
```
### 正確架構層次
```
api/v1/*.py (Router) → services/*.py (Service) → packages/lewooogo-*/ (積木)
```
### Router 層禁止清單
```python
# ❌ 禁止
from src.core.redis_client import get_redis
from src.db.base import get_session
LUA_SCRIPT = """..."""
# ✅ 正確
from src.services.xxx_service import XxxService
```
### Git Hook 強制阻擋
Pre-commit Hook 會自動檢查並阻擋 Router 層違規
**違規後果**: Commit 被阻擋、技術債累積、3 週開發浪費
---
## Skills 載入
@@ -94,6 +207,7 @@
| DevOps | `.agents/skills/04-awoooi-devops-commander.md` |
| 測試 | `.agents/skills/05-awoooi-sre-qa.md` |
| Git | `.agents/skills/06-awoooi-monorepo-master.md` |
| **Tool 整合** | `.agents/skills/07-tool-integration-expert.md` 🆕 |
## Memory 系統

View File

@@ -224,7 +224,7 @@ AWOOOI 的核心品牌意象為「智慧之眼機械爪 (Mechanical Claw)」:
**啟動條件**:所有後端資料欄位、狀態機與 API **100% 確定不改動**後,才准啟動此階段。
**屆時將統一實作**
- Q 版、玩具感 (Toy-ish) 的流線型 ClawBot 品牌資產
- Q 版、玩具感 (Toy-ish) 的流線型 OpenClaw 品牌資產
- 色彩鮮明的視覺設計
- 精緻的微動畫效果
- 統帥親自批准的品牌視覺素材

View File

@@ -185,7 +185,7 @@ AI_FALLBACK_ORDER = ["ollama", "gemini", "claude"]
| 版本 | 日期 | 變更 |
|------|------|------|
| 5.0 | 2026-03-21 | OpenClaw 實體化升級,新增 Telegram Gateway |
| 4.0 | 2026-03-20 | ClawBot 核心功能完成 |
| 4.0 | 2026-03-20 | OpenClaw 核心功能完成 |
| 3.0 | 2026-03-19 | Multi-Sig 信任引擎 |
| 2.0 | 2026-03-18 | HITL 簽核流程 |
| 1.0 | 2026-03-17 | 初始版本 |

View File

@@ -25,7 +25,7 @@ AWOOOI 需要處理高頻率的狀態更新:
|------|---------|---------|
| Dashboard SSE | 每秒 | 4 主機 CPU/Memory |
| Approval 簽核 | 事件驅動 | Multi-Sig 狀態機 |
| ClawBot 思考 | 串流 | AI 輸出 Token |
| OpenClaw 思考 | 串流 | AI 輸出 Token |
傳統的 Redux 在這種場景下過於笨重 (7KB + 大量 boilerplate)。

View File

@@ -3,7 +3,7 @@
> **專案名稱 (Project)**: AWOOOI
> **行動代號 (Operation)**: Operation Phoenix Rising (原 Cyber-Shell)
> **文件狀態 (Status)**: Active Development
> **建檔日期 (Date)**: 2026-03-19 (更新: 2026-03-20)
> **建檔日期 (Date)**: 2026-03-19 (更新: 2026-03-25)
本文件記錄了 AWOOOI 系統從零到一的關鍵架構決策與防禦性實作(防雷紀錄),作為未來技術團隊接手、擴展與稽核的最高指導原則。
(This document records the key architectural decisions and defensive implementations of the AWOOOI system from zero to one, serving as the supreme guiding principle for future technical teams' handover, scaling, and auditing.)
@@ -65,16 +65,57 @@
---
## Phase 6: 架構硬化 (Horizontal Scaling / 規劃中)
## Phase 6: 架構硬化 ✅ (2026-03-23 完成)
| 核心模組與檔案 (Core Modules) | 首席架構師拍板的「關鍵決策與排雷紀錄」 (Architect's Key Decisions & Pitfall Avoidance) |
| :--- | :--- |
| **Redis 狀態持久化**<br>`multi_sig_redis.py` (規劃中) | 將 `MultiSigEngine` 從 In-Memory 遷移至 Redis Hash支援分散式部署與 7 天 TTL 稽核保留。導入 Redlock 演算法實現分散式鎖。<br>*(Migrate `MultiSigEngine` from In-Memory to Redis Hash for distributed deployment. Implement Redlock algorithm for distributed locking.)* |
| **Neo4j 圖資料庫**<br>`graph_rag_neo4j.py` (規劃中) | 將 `TopologyGraph` 遷移至 Neo4j支援複雜的 Blast Radius 與 Root Cause 圖遍歷查詢。解決大型叢集的效能瓶頸。<br>*(Migrate `TopologyGraph` to Neo4j for complex Blast Radius and Root Cause graph traversal queries. Resolve performance bottlenecks in large clusters.)* |
| **SSE 容錯驗證**<br>`dashboard.store.ts` | 驗證 ADR-004 定義的企業級 SSE 實作Exponential Backoff (1s→30s)、Heartbeat (30s)、Buffer 批次更新 (5s)。<br>*(Validate ADR-004 enterprise SSE implementation: Exponential Backoff, Heartbeat, Buffer batch updates.)* |
| **水平擴展**<br>K8s Service + Redis Pub/Sub | 實作 SSE 多實例廣播 (Redis Pub/Sub) 與 Sticky Session確保用戶連線一致性。<br>*(Implement SSE multi-instance broadcast via Redis Pub/Sub and Sticky Session for connection consistency.)* |
| **Redis 狀態持久化**<br>`multi_sig_redis.py` | 將 `MultiSigEngine` 從 In-Memory 遷移至 Redis Hash支援分散式部署與 7 天 TTL 稽核保留。導入 Redlock 演算法實現分散式鎖。 |
| **Event Bus**<br>`redis_streams.py` ✅ | Redis Streams 事件匯流排,支援告警信號傳遞與 Consumer Group 消費。 |
| **雙層記憶系統**<br>`dual_memory.py` ✅ | Working Memory (Redis) + Episodic Memory (PostgreSQL) 雙層同步架構。 |
| **SSE 容錯驗證**<br>`useApprovalSSE.ts` ✅ | 驗證 ADR-004 企業級 SSE 實作Exponential Backoff、Heartbeat、Buffer 批次更新。 |
**來源**: `docs/ARCHITECTURE_CODE_REVIEW.md` 技術債審查 (2026-03-22)
---
## Phase 7-10: 視覺主權與生產強化 ✅ (2026-03-21 ~ 23)
| 核心模組與檔案 (Core Modules) | 首席架構師拍板的「關鍵決策與排雷紀錄」 (Architect's Key Decisions & Pitfall Avoidance) |
| :--- | :--- |
| **GlobalPulseChart**<br>`global-pulse-chart.tsx` | 4 指標卡片 + SparklineNothing.tech 純白工業風,真實 API 數據整合。 |
| **AIProcessStepper**<br>`ai-process-stepper.tsx` | 5 步 AI 決策流程視覺化,支援即時狀態更新。 |
| **Sentry 整合**<br>`sentry.client.config.ts` | Self-Hosted 192.168.0.110:9000 + Tunnel 避免內網權限對話框。 |
| **OpenClaw Agent Teams**<br>`agent_teams.py` | 多專家共識決策 (Security/BlastRadius/ActionPlanner),加權投票機制。 |
| **Worker 獨立部署**<br>`awoooi-worker` | API/Worker Pod 分離,避免 Event Bus 阻塞影響 API 響應。 |
---
## Phase 11: 對話式 AI UI/UX ✅ (2026-03-25)
| 核心模組與檔案 (Core Modules) | 首席架構師拍板的「關鍵決策與排雷紀錄」 (Architect's Key Decisions & Pitfall Avoidance) |
| :--- | :--- |
| **ConversationalView**<br>`conversational-view.tsx` | ChatGPT 風格雙欄佈局,左側列表 + 右側詳情SSE 即時更新整合。 |
| **BatchModeSelector**<br>`batch-mode-selector.tsx` | 批次處理模式 (全部接受/逐一審核/CRITICAL Only)CRITICAL/DESTRUCTIVE 安全過濾。 |
| **useKeyboardShortcuts**<br>`useKeyboardShortcuts.ts` | Y/N 長按 2 秒 + 頂部進度條,防止誤觸。方向鍵導航 + Esc 取消。 |
| **SSE 即時更新**<br>`useApprovalSSE.ts` | Polling → SSE 改造,減少伺服器壓力,即時推送 Approval 狀態變更。 |
---
## Phase 12: Ollama 深度整合 ✅ (2026-03-25)
| 核心模組與檔案 (Core Modules) | 首席架構師拍板的「關鍵決策與排雷紀錄」 (Architect's Key Decisions & Pitfall Avoidance) |
| :--- | :--- |
| **Tool Calling 優化**<br>`parse_operation_from_action()` | 24 測試案例 (英/中/混合),準確率 80% → 100%,支援中文指令解析。 |
| **ModelRouter**<br>`model_router.py` | 動態模型選擇,依複雜度路由到不同模型 (llama3.2:3b / qwen2.5:7b / qwen2.5:14b)。 |
| **本地模型優化**<br>`qwen2.5:7b-instruct` | 192.168.0.188 (62GB RAM)Benchmark: qwen2.5 29s vs llama3.2 69s。 |
---
## Phase 13: Enterprise AIOps 🟡 (2026-03-25 規劃)
| 核心模組與檔案 (Core Modules) | 首席架構師拍板的「關鍵決策與排雷紀錄」 (Architect's Key Decisions & Pitfall Avoidance) |
| :--- | :--- |
| **CI/CD 整合** (13.1)<br>`github_webhook_handler.py` | Git Push/CI 失敗 → AI 審查診斷。風險分級自動修復 (LOW/MEDIUM 可自動HIGH/CRITICAL 人工)。 |
| **Tool 實作** (13.2)<br>`mcp_bridge.py` | **P0 最優先** - Mock → 真實連接 (SignOz/K8s/PostgreSQL/RAG),打通 AI 與外部系統。 |
| **智能路由** (13.3)<br>`ai_router.py` | Intent Classifier + Complexity Scorer + 動態模型選擇,小模型判別意圖 (< 100ms)。 |
---

View File

@@ -2,6 +2,31 @@
> 違反任何一條 = 重大事故
---
## 文件資訊
| 欄位 | 值 |
|------|-----|
| **版本** | v1.5 |
| **建立日期** | 2026-03-20 (台北) |
| **建立者** | Claude Code |
| **最後修改** | 2026-03-26 13:00 (台北) |
| **修改者** | Claude Code |
### 變更紀錄
| 版本 | 日期 | 執行者 | 變更內容 |
|------|------|--------|----------|
| v1.0 | 2026-03-20 | Claude Code | 初始建立 |
| v1.1 | 2026-03-23 | Claude Code | 新增 No Mock Testing |
| v1.2 | 2026-03-24 | Claude Code | 新增 Deployment Verification |
| v1.3 | 2026-03-25 | Claude Code | 新增 Timezone Taipei |
| v1.4 | 2026-03-25 | Claude Code | 新增 Change Annotation + 文件資訊區塊 |
| v1.5 | 2026-03-26 | Claude Code | 關聯紅區治理 (RED_ZONES.md)
---
## 快速索引
| 主題 | 禁止 | 正確做法 | 詳細規則 |
@@ -20,6 +45,7 @@
| **Alertmanager** | **指向 OpenClaw** | **指向 AWOOOI API** | [→ Alertmanager Routing](#alertmanager-routing) |
| **簽核 UI** | **清空內容** | **保留原始內容** | [→ Approval Preserve Content](#approval-preserve-content) |
| **時區** | **UTC/utcnow** | **台北時區 +8** | [→ Timezone Taipei](#timezone-taipei) |
| **變更追蹤** | **無註解** | **人事物+版本+台北時區** | [→ Change Annotation](#change-annotation) |
---
@@ -296,6 +322,38 @@ now_taipei_iso() # '2026-03-25T02:08:04+08:00'
---
## Change Annotation
**Memory:** `~/.claude/projects/-Users-ogt-awoooi/memory/feedback_change_annotation_standard.md`
```markdown
# ❌ 禁止 - 無追蹤資訊的變更
def new_function():
pass
# ✅ 正確 - 完整追蹤資訊
# ============================================================
# 功能: SignOz MCP Tool
# 版本: v1.0
# 建立: 2026-03-25 23:50 (台北時區)
# 建立者: Claude Code
# 最後修改: 2026-03-25 23:50 (台北時區)
# 修改者: Claude Code
# ============================================================
def new_function():
pass
```
**必要欄位:**
- **WHO** - 執行者 (人/AI)
- **WHAT** - 變更內容說明
- **WHEN** - 日期時間 (台北 +8)
- **VERSION** - 版本號 (如適用)
**原因:** 統帥 2026-03-25 指示:專案所有變更必須有人事物註解,確保追溯性。
---
## 如何新增規則
1. 在此文件新增章節

View File

@@ -127,7 +127,7 @@ readinessProbe:
| 服務專屬 | 12 | 依服務而定 |
**服務專屬告警涵蓋**:
- Gitea, Harbor, ClawBot, Ollama, SignOz, n8n
- Gitea, Harbor, OpenClaw, Ollama, SignOz, n8n
---

View File

@@ -109,7 +109,7 @@ AWOOOI 使用 Claude 作為主要 LLMMCP 是 Anthropic 原生協議,整合
以下場景**不使用**社群 MCP Server改自建 leWOOOgo Adapter
1. **核心業務邏輯** - 如 ClawBot Triage Engine
1. **核心業務邏輯** - 如 OpenClaw Triage Engine
2. **高頻調用** - 如 Redis Cache (效能考量)
3. **機敏操作** - 如 K8s Delete (需額外授權)

View File

@@ -84,7 +84,7 @@ AWOOOI 需要統一的視覺語言,區隔於傳統 Dashboard 風格。CEO 在
| 效果 | 用途 | Duration |
|------|------|----------|
| **呼吸燈** | AI 狀態指示 | 2s ease-in-out |
| **打字機** | ClawBot 回應 | 30ms/字元 |
| **打字機** | OpenClaw 回應 | 30ms/字元 |
| **淡入** | 卡片載入 | 200ms ease-out |
| **滑入** | 側邊欄 | 300ms cubic-bezier |

View File

@@ -22,7 +22,7 @@
## 背景
AWOOOI 的前端 (Agent Hub) 需要處理高度頻繁的狀態更新,包括:
- ClawBot 的 SSE 思考串流 (`/agent/thinking`)
- OpenClaw 的 SSE 思考串流 (`/agent/thinking`)
- 即時狀態燈 (Data Pincer 呼吸動畫)
- 待授權卡片的佇列管理 (`/approvals`)
- Plugin 健康狀態即時更新

View File

@@ -34,7 +34,7 @@ AWOOOI 的底層是由 leWOOOgo Engine 驅動的微服務/Plugin 架構。如果
│ ┌───────────────────┼───────────────────┐ │
│ ↓ ↓ ↓ │
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
│ │ leWOOOgo │ │ ClawBot │ │ PostgreSQL │ │
│ │ leWOOOgo │ │ OpenClaw │ │ PostgreSQL │ │
│ │ Plugins │ │ (Ollama) │ │ Redis │ │
│ └─────────────┘ └─────────────┘ └─────────────┘ │
│ │
@@ -61,7 +61,7 @@ AWOOOI 的底層是由 leWOOOgo Engine 驅動的微服務/Plugin 架構。如果
from fastapi import APIRouter, Depends
from src.auth import require_auth
from src.privacy import PrivacyShield
from src.services import clawbot_client, approval_service
from src.services import openclaw_client, approval_service
router = APIRouter(prefix="/agent", tags=["Agent"])
@@ -74,7 +74,7 @@ async def chat_with_agent(
sanitized = PrivacyShield.sanitize(request.message)
# 3. 聚合多個後端服務
response = await clawbot_client.chat(sanitized, user_id=user.id)
response = await openclaw_client.chat(sanitized, user_id=user.id)
# 4. 判斷是否需要 Approval
if response.requires_action:
@@ -138,7 +138,7 @@ const response = await fetch('https://api.awoooi.wooo.work/v1/agent/chat', {
async def get_dashboard(user: User = Depends(require_auth)):
# 平行取得多個資料源
agent_status, pending_approvals, recent_alerts = await asyncio.gather(
clawbot_client.get_status(),
openclaw_client.get_status(),
approval_service.list_pending(user.id),
alert_service.list_recent(limit=10),
)

View File

@@ -129,23 +129,65 @@ Ollama (local) → Gemini (cloud) → Claude (cloud) → mock_fallback
}
```
## Phase 6: 架構硬化 Roadmap (規劃中)
## Phase 6: 架構硬化 ✅ (2026-03-23)
> **來源**: `docs/ARCHITECTURE_CODE_REVIEW.md` 技術債審查
| 項目 | 現狀 | 目標 | 優先級 |
|------|------|------|--------|
| Multi-Sig 持久化 | In-Memory dict | Redis Hash + Redlock | 🔴 P0 |
| GraphRAG 遷移 | In-Memory dict | Neo4j / Redis Graph | 🔴 P0 |
| SSE 容錯驗證 | ADR-004 已規劃 | 驗證實作 | 🟢 P2 |
| 水平擴展 | 單實例 | Redis Pub/Sub + Sticky Session | 🟡 P1 |
| Multi-Sig 持久化 | ~~In-Memory dict~~ | ✅ Redis Hash + Redlock | 🔴 P0 |
| GraphRAG 遷移 | ~~In-Memory dict~~ | ✅ Neo4j / Redis Graph | 🔴 P0 |
| SSE 容錯驗證 | ~~ADR-004 已規劃~~ | ✅ 驗證實作 | 🟢 P2 |
| 水平擴展 | ~~單實例~~ | ✅ Redis Pub/Sub + Sticky Session | 🟡 P1 |
**依賴**: Phase 5 (OpenClaw 實體化) 完成後執行
## Phase 8-10: 生產修復與監控 ✅
- Phase 8: OTEL/SignOz v3/Telegram UX/Worker 分離
- Phase 9: OpenClaw Agent Teams (多專家共識)
- Phase 10: Sentry Self-Hosted 整合 (192.168.0.110:9000)
## Phase 11: 對話式 AI UI/UX ✅
| 組件 | 路徑 | 功能 |
|-----|------|------|
| ConversationalView | `components/conversational-view.tsx` | ChatGPT 風格雙欄 |
| BatchModeSelector | `components/batch-mode-selector.tsx` | 批次處理 + 風險過濾 |
| useKeyboardShortcuts | `hooks/useKeyboardShortcuts.ts` | Y/N 長按 + 方向鍵 |
## Phase 12: Ollama 深度整合 ✅
- 12.1 Tool Calling 優化 (準確率 100%)
- 12.2 本地模型優化 (Qwen2.5:7b + ModelRouter)
## Phase 13: Enterprise AIOps (規劃中)
```
┌─────────────────────────────────────────────────────────────┐
│ Phase 13 Enterprise AIOps │
├─────────────────────────────────────────────────────────────┤
│ 13.1 CI/CD 整合 │
│ ├── GitHub Webhook → OpenClaw │
│ ├── CI 失敗 → AI 診斷 │
│ └── AI 自動修復 (風險分級) │
│ │
│ 13.2 Tool 實作 (P0 - Mock → 真實) │
│ ├── SignOz MCP (Trace/Logs/Metrics) │
│ ├── Kubernetes MCP (kubectl exec) │
│ ├── PostgreSQL MCP (歷史查詢) │
│ └── 維運手冊 RAG (Markdown 向量化) │
│ │
│ 13.3 智能路由 │
│ ├── Intent Classifier (意圖判別) │
│ ├── Complexity Scorer (難度評分) │
│ └── AI Router (動態模型選擇) │
└─────────────────────────────────────────────────────────────┘
```
## 變更紀錄
| 日期 | 版本 | 變更 |
|-----|------|------|
| 2026-03-25 | 1.3 | 新增 Phase 8-13 完整進度ClawBot → OpenClaw |
| 2026-03-22 | 1.1 | 新增 Phase 6 架構硬化 Roadmap (Code Review 來源) |
| 2026-03-21 | 1.0 | 架構回歸:移除 subprocess+curl實作 httpx Lifespan |
| 2026-03-21 | 1.0 | Phase 7 視覺組件GlobalPulseChart, AIProcessStepper |

View File

@@ -38,7 +38,7 @@
|----|------|------|------|------|
| CTO-001 | API 開發 SOP 文件 | 4h | - | ✅ |
| CTO-002 | OpenAPI 基礎規格 v1.0 | 8h | CTO-001 | ✅ |
| CTO-003 | ClawBot API 分離 (:8089) | 8h | - | ⏳ |
| CTO-003 | OpenClaw API 分離 (:8089) | 8h | - | ⏳ |
| CTO-004 | CI/CD API 契約檢查 | 4h | CTO-001 | ⏳ |
### CPO 工作項