Files
awoooi/docs/ARCHITECTURE_MEMORY.md
2026-03-30 01:21:23 +08:00

154 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# AWOOOI 架構記憶地圖 (Architecture Memory)
> AI 模組地圖索引 - 每次新增積木後必須登記
**最後更新**: 2026-03-23 (Phase 9 Agent Teams)
**維護者**: Claude Code + C-Suite
---
## 📦 Python 積木 (packages/)
| 積木名稱 | 職責 | 對外介面 | 狀態 | ADR |
|----------|------|----------|------|-----|
| **lewooogo-brain** | Brain 積木 - AI 決策與提案引擎 | `IProposalEngine`, `IIncidentProcessor`, `Guardrails` | ✅ 已完成 | ADR-008 |
| **lewooogo-data** | Data 積木 - 雙層記憶體 (Working + Episodic) | `IMemoryProvider`, `IDualMemoryProvider` | ✅ 已完成 | ADR-008 |
### lewooogo-brain 模組結構
```
packages/lewooogo-brain/
├── src/lewooogo_brain/
│ ├── interfaces/ # ABC 定義
│ │ ├── proposal_engine.py → IProposalEngine
│ │ └── incident_processor.py → IIncidentProcessor
│ ├── engines/ # 推論引擎實作
│ │ ├── proposal_engine.py # ✅ ProposalEngine 已完成
│ │ └── incident_engine.py # ✅ IncidentEngine 已完成
│ ├── guardrails/ # 安全護欄
│ │ └── guardrails.py # ✅ Guardrails 已完成
│ └── skills/ # Skill 動態載入
│ └── loader.py # ✅ SkillLoader 已完成
```
### lewooogo-data 模組結構
```
packages/lewooogo-data/
├── src/lewooogo_data/
│ ├── interfaces/ # ABC 定義
│ │ └── memory_provider.py → IMemoryProvider, IDualMemoryProvider
│ └── providers/ # 具體實作
│ ├── redis_memory.py # ✅ RedisMemoryProvider 已完成
│ ├── pg_memory.py # ✅ PgMemoryProvider 已完成
│ └── dual_memory.py # ✅ DualMemoryProvider 已完成
```
---
## 📦 TypeScript 積木 (packages/)
| 積木名稱 | 職責 | 對外介面 | ADR |
|----------|------|----------|-----|
| **lewooogo-core** | 前端 Plugin 系統 | `LeWOOOgoPlugin`, `AgentProvider`, `DataAdapter` | ADR-003 |
---
## 🤖 Agent Teams (apps/api/src/agents/)
> Phase 9 新增 - 專家 Agent 群組
| Agent 名稱 | 職責 | 狀態 | ADR |
|------------|------|------|-----|
| **SecurityAgent** | 資安風險評估與威脅分析 | ✅ 已完成 | ADR-009 |
| **BlastRadiusAgent** | 爆炸半徑影響範圍分析 | ✅ 已完成 | ADR-009 |
| **ActionPlannerAgent** | 行動計畫制定與步驟規劃 | ✅ 已完成 | ADR-009 |
| **ConsensusEngine** | 多 Agent 共識引擎 | ✅ 已完成 | ADR-009 |
### Agent Teams 模組結構
```
apps/api/src/agents/
├── __init__.py
├── base_agent.py # Agent 基底類別
├── security_agent.py # ✅ SecurityAgent 資安專家
├── blast_radius_agent.py # ✅ BlastRadiusAgent 影響分析
├── action_planner_agent.py # ✅ ActionPlannerAgent 行動規劃
└── consensus_engine.py # ✅ ConsensusEngine 共識引擎
```
---
## 🔗 模組依賴關係
```
apps/api (FastAPI BFF)
├── agents/ (Agent Teams) ✅ Phase 9 專家群組
│ └── lewooogo-brain (AI 積木)
├── lewooogo-brain (AI 積木) ✅ Phase 6.4 已完成
│ └── lewooogo-data (資料積木)
└── lewooogo-data (直接引用) ✅ Phase 6.4 已完成
apps/web (Next.js)
└── lewooogo-core (TS 積木)
```
### Docker Build 指令 (Phase 6.4i)
```bash
# 必須從 monorepo 根目錄執行
cd /path/to/awoooi
docker build -f apps/api/Dockerfile -t awoooi-api:latest .
```
---
## 📋 介面契約索引
### Python 介面
| 介面 | 位置 | 職責 |
|------|------|------|
| `IProposalEngine` | `lewooogo_brain.interfaces` | 決策提案生成 |
| `IIncidentProcessor` | `lewooogo_brain.interfaces` | 事件聚合處理 |
| `Guardrails` | `lewooogo_brain.guardrails` | 安全護欄與風險檢查 |
| `IMemoryProvider` | `lewooogo_data.interfaces` | 單層記憶體存取 |
| `IDualMemoryProvider` | `lewooogo_data.interfaces` | 雙層記憶體 (Working + Episodic) |
| `BaseAgent` | `apps.api.src.agents` | Agent 基底類別 |
| `ConsensusEngine` | `apps.api.src.agents` | 多 Agent 共識協調 |
### HTTP API 契約
| 端點 | 位置 | 職責 |
|------|------|------|
| `POST /api/v1/incidents/{id}/propose` | `apps/api/src/api/v1/incidents.py` | 生成決策提案 |
| `GET /api/v1/incidents/{id}` | `apps/api/src/api/v1/incidents.py` | 取得事件詳情 |
---
## 🛡️ Wave 1 安全網 (Safety Net)
> Phase 22 新增 - 系統底層防禦機制
| 元件名稱 | 職責 | 對外介面 | 狀態 | ADR |
|----------|------|----------|------|-----|
| **CircuitBreaker** | 斷路器 - 防止推理引擎雪崩 | `is_circuit_open()`, `record_failure()` | ✅ 已完成 | ADR-038 |
| **GlobalRepairCooldown** | 全域修復冷卻 - 防止修復迴圈 | `check_global_repair_cooldown()` | ✅ 已完成 | ADR-039 |
| **OpenClawGuard** | 併發守衛 - Semaphore 限流 | `async with guard.semaphore` | ✅ 已完成 | ADR-038 |
| **XCLAIM Sweeper** | 孤兒訊息回收器 - 防止訊息遺失 | 流式背景掃描 (`_reclaim_loop`) | ✅ 已完成 | ADR-037 |
| **IncidentDebounce** | 告警去抖動 - 防止告警風暴 | `_check_global_incident_storm()` | ✅ 已完成 | ADR-037 |
### 安全網橫切關注點 (Cross-cutting)
- **Graceful Degradation**: `AnomalyCounter` 在 Redis 故障時自動降級為 In-memory count 或預設值。
- **StatefulSet Blacklist**: 禁止對 `postgres`, `redis`, `clickhouse` 等有狀態服務進行自動重啟。
- **Termination Buffer**: Worker 節點具備 90sec `terminationGracePeriod``preStop: sleep 5` 保險。
---
## 🚨 AI 開發者注意事項
1. **新增積木前**: 先讀取此檔案確認命名不衝突
2. **新增積木後**: 必須在此檔案登記職責與對外介面
3. **修改介面前**: 先讀取 `docs/adr/` 確認架構決策
4. **跨模組引用**: 禁止直接 import必須透過介面抽象