版本: v1.0 | 狀態: 提議(Proposed) | 最後更新: 2026-04-23
關聯文件:TECH_STACK.md(技術選型鎖定)、AI_Ops_Agent_Architecture.md(Agentic Framework 層深入設計)、Arova_Nexus_PRD_v1.3.md
Arova Nexus 是 AI-Native 的 IT 維運平台。目標使用者是「凌晨 3 點被吵醒的工程師」——他們要答案,不是更多介面。產品的核心差異化來自五層協同運作:使用者從 UI 發出意圖、治理層確認授權、Agent 編排層驅動多 Agent 協作、智能層用語意搜尋和 RAG 查資料、最底層的資料與整合層串接 Graylog / LibreNMS / CMDB 等既有系統。
本文件是整個系統的架構地圖,描述「層之間如何分工、元件怎麼放、事件如何流動」。細節由各層的獨立文件承擔:
AI_Ops_Agent_Architecture.mdTECH_STACK.mdNexus_MVP_UX_Blueprint.mdadr/| 約束 | 說明 | 對應 PRD |
|---|---|---|
| On-Prem First | 所有元件必須能在客戶地端(Docker Compose / K8s)運行 | Ch19 |
| 資料不離開客戶環境 | AI 模型、向量庫、日誌全部在內網 | Ch20 |
| 模組化 | 可選模組可獨立啟停,未授權模組不能影響 Core | Ch6 |
| Event-Centric | 跨模組通訊以 Event 為核心,不直接互相呼叫 | Ch16 |
| Hybrid AI | 預設 on-prem LLM,external LLM 可選(客戶決定) | Ch20 |
各層職責、元件、跨層互動詳見下文。
定位:使用者和外部系統進入 Arova Nexus 的所有入口。
| 元件 | 技術 | 職責 |
|---|---|---|
| Web App | Next.js 15 + shadcn/ui + Tailwind 4 | 主要 UI,Dashboard、工單、事件、知識庫、設定等所有模組介面 |
| AI Copilot | @ai-sdk/react + @mastra/ai-sdk |
聊天式主操作介面(右下懸浮)+ 輔助面板雙模式 |
| Email Channel | SMTP Ingress + 解析器 | Email → 工單(J09 Email-First AI 服務台) |
| Webhook Ingress | Hono API endpoint | Graylog / LibreNMS / 第三方告警來源 |
| REST API | Hono(Mastra 內建) | 對外 API(SE-019 API Key + JWT 雙認證) |
| MCP Client | Model Context Protocol | 讓 IDE 類客戶端能用 Arova 資料(未來拓展) |
定位:系統的「守門員」。所有請求進來要先通過這一層才能到 L3 Agent 或 L5 資料層。
| 元件 | 技術 / 儲存 | 職責 |
|---|---|---|
| API Gateway | Hono middleware 串接 | 路由、統一入口 |
| Auth Service | JWT + Refresh Token + Redis session | 登入、SSO、MFA(Phase 2) |
| RBAC Engine | PostgreSQL(users / roles / permissions) | 6 預定義角色(RBAC1)+ 自訂角色繼承 |
| License Service | RSA-SHA256 驗證 + heartbeat | 離線 .lic / 線上授權碼雙模式;模組啟停 |
| Audit Log | PostgreSQL(append-only 表)+ Syslog 轉發 | SE-010~017,不可修改或刪除,SHA-256 hash chain(Phase 2) |
| Rate Limiter | Redis(token bucket) | 預設 100 req/min(IG-008),API Key 可提升 |
| Observability | Logs / Metrics / Health checks | Prometheus 相容 metrics endpoint |
| AI Governance | Agent 自主權等級 + Kill Switch | Level 0~3 設定 + 全域/單一 Agent 停止(AIN-010) |
HTTP 403 + module_not_licensed(LI-012)licenses(授權資訊 + 模組列表)users / roles / role_permissions / user_rolesaudit_logs(不可修改,SE-010)ai_feedback(AIN-021 隱式回饋)定位:整個產品的大腦。AI Agent 在這一層工作,Workflow Engine 編排多步驟自動化。
| 元件 | 技術 | 職責 |
|---|---|---|
| Mastra AI | @mastra/core |
Agent 框架;提供 Agent 生命週期、Tool、Memory |
| Supervisor Agent | Mastra Agent | 意圖辨識 + 路由到專職 Agent |
| Triage Agent | Mastra Agent | 工單自動分類、優先級、路由(即時觸發,SD+) |
| Correlation Agent | Mastra Agent | 警報合併、根因判斷(即時觸發,Incident+) |
| Preventive Agent | Mastra Agent | 反覆事件模式偵測(定時,KB+) |
| Compliance Agent | Mastra Agent | 合規檢查、法規比對(Compliance+) |
| Anomaly Detection | 輕量規則+LLM | 每 60 秒掃系統指標,找異常 |
| Workflow Engine | Mastra Workflow | 節點式流程執行、Dry-Run、版本控制、排程 |
| Agent Memory | PostgreSQL + Redis | 對話歷史、上下文、工作記憶 |
| MCP Tools | Mastra MCP integration | 讓 Agent 能呼叫 L5 的資料 / 外部工具 |
| Agent-to-Agent (A2A) | Event Bus 上的 Agent 消息 | Agent 協作 |
| Logic Apps / Triggers | Mastra Workflow triggers | 由 Event 或排程觸發多 Agent workflow |
| Level | 行為 | MVP |
|---|---|---|
| L0 觀察 | 只產生報告,不採取動作 | ✅ |
| L1 通知 | 產生建議 + 通知工程師,不執行 | ✅ 預設 |
| L2 輔助 | 信心度 ≥ 門檻時自動執行(限預核准操作) | ✅ 可升級 |
| L3 自主 | 全自動執行(限 admin 預核准 Runbook) | Phase 2 |
定位:把 L5 的結構化/非結構化資料,轉成 Agent 能用的語意搜尋結果。
| 元件 | 技術 | 職責 |
|---|---|---|
| LLM Service | On-prem(Ollama / vLLM)+ External(OpenAI/Anthropic/Azure,optional) | 推論;Agent 推理、摘要、分類、RAG 問答 |
| Embedding Service | BGE-M3 / E5-large on CPU | 為所有核心實體產生 embedding 向量 |
| Vector Database | pgvector(PostgreSQL 擴充) | 儲存和查詢向量 |
| RAG Pipeline | Mastra RAG | Retrieval + Re-rank + LLM 生成 |
| Semantic Graph | pgvector 關聯 + Apache AGE(Phase 2) | 跨實體語意圖譜(事件 ↔ 工單 ↔ KB ↔ 資產) |
| Prompt Template Service | Mastra Prompt + PostgreSQL | Prompt 範本管理 + 版本控制 + A/B 測試 |
| Briefing Engine | 排程背景任務 + Cache | 預先計算每日簡報(DB-001) |
| Feedback Collector | Event pipeline | 顯式(👍/👎)+ 隱式(Agent 建議被覆寫)+ 結果(事件被關閉) |
預設路徑: 可選路徑(客戶選擇):
┌──────────┐ ┌──────────┐ ┌──────────┐ ┌────────────┐
│ Client │→ │ Local │ │ Client │→ │ External │
│ Request │ │ Ollama │ │ Request │ │ LLM API │
└──────────┘ └──────────┘ └──────────┘ └────────────┘
↓ ↓
地端推論(預設) 外網 HTTPS(客戶允許時)
不離開客戶環境 客戶自簽 API Key
定位:資料儲存 + 外部系統整合。Arova 是「接收 + 分析 + 建議 + 編排」的大腦,不是監控 agent 本身——所以 Graylog / LibreNMS 是外部依賴,不是我們的組件。
| 儲存 | 技術 | 用途 |
|---|---|---|
| PostgreSQL 16+ | 單一實例 / primary+replica | 主要業務資料(工單、事件、KB、CMDB、使用者、稽核等) |
| pgvector | PostgreSQL 擴充 | 向量儲存(由 L4 使用) |
| Redis 7+ | 單點 / Sentinel | Session、快取、Rate limit、Agent Memory、排程佇列 |
| Object Storage | MinIO(on-prem)/ S3(optional) | 附件、KB 文件、報表 PDF |
| Eventhouse / Event Bus | Redis Streams / NATS(未定) | 跨模組 Event 通訊 |
| 系統 | 方向 | 用途 |
|---|---|---|
| Graylog | Pull(REST API)+ Push(Webhook) | Log 搜尋、告警接收 |
| LibreNMS | Pull(REST API)+ Push(Webhook) | 設備健康、拓撲、告警接收 |
| AD / LDAP | Pull(LDAP bind) | SSO、使用者同步 |
| SSO | SAML 2.0 / OIDC | 單一登入 |
| Slack / Teams / Line | Webhook + Bot API | 通知推送 + 對話整合 |
| SMTP / Email | SMTP Client + IMAP(Ingress) | 通知 + Email 入口 |
| ServiceNow | REST API(optional) | 歷史工單參考(僅 Phase 2 考慮) |
User: "幫我查 DB-PROD-01 最近的 slow query"
│
L1: AI Copilot 送出 intent → REST /api/v1/ai/chat
│
L2: JWT 驗證 → RBAC 檢查(has incident:read)→ Audit log start
│
L3: Supervisor Agent 解析 intent → 路由到 Triage/Correlation 或 Research Agent
│
├→ L4: RAG 查 KB(VPN 問題 SOP)
│
├→ L5: Graylog API 查 slow query log(via MCP Tool)
│
└→ L5: CMDB 查 DB-PROD-01 資產資訊
│
L3: Agent 整合結果 → LLM 產生回答
│
L2: Audit log end(含 Agent 推理、信心度)
│
L1: AI Copilot 渲染回答
Graylog → Webhook (POST /api/v1/webhook/graylog)
│
L1: Webhook Ingress 驗證 signature
│
L2: Rate limit + audit log
│
L5: 寫入 Event Bus(alert.received)
│
L3: Correlation Agent 訂閱 alert.received
→ 查 L4 KB + L5 CMDB 拓撲
→ 判斷是否和現有事件合併
→ 寫入 Event Bus(incident.created 或 incident.merged)
│
L3: Triage Agent 訂閱 incident.created
→ 分類嚴重度、指派工程師
→ 寫入 Event Bus(incident.assigned)
│
L2: Notification Service 訂閱 incident.assigned → 發 Email/Slack
核心邏輯:
Request → License Middleware →
├─ 檢查 module 是否在 licenses.active_modules
├─ 檢查是否過期(licenses.expires_at)
├─ 檢查使用量配額(users / ai_calls / storage)
└─ pass → 續前進;fail → 403 + module_not_licensed
┌─────────────────────────────────────────────────────────┐
│ 客戶地端伺服器(單節點,建議 16 vCPU / 64GB RAM / SSD)│
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ ┌──────────┐ │
│ │ Next.js │ │ Mastra │ │Postgres │ │ Redis │ │
│ │ Web │ │ Backend │ │+pgvector│ │ │ │
│ └─────────┘ └─────────┘ └─────────┘ └──────────┘ │
│ │
│ ┌─────────┐ ┌─────────┐ ┌─────────┐ │
│ │ MinIO │ │ Ollama │ │ Workers │ │
│ │ │ │ (LLM) │ │(排程/MQ)│ │
│ └─────────┘ └─────────┘ └─────────┘ │
│ │
│ docker-compose.yml 一鍵啟動 │
└─────────────────────────────────────────────────────────┘
↓ HTTPS only
┌────────────────────────────────────────┐
│ 客戶既有基礎設施(Arova 不部署) │
│ Graylog │ LibreNMS │ AD/LDAP │
└────────────────────────────────────────┘
Ollama LLM 部署:獨立 GX10 / A100 主機,透過 REST API 與 Backend 溝通(見 AI_Ops_Agent_Architecture.md 第八章)。
同樣元件,拆分為獨立的 Deployment + Service + HPA,PostgreSQL / Redis 改 Operator 管理。Vector DB 可考慮拆到獨立的 Qdrant / Milvus。
| NFR | 目標 | 實現層 |
|---|---|---|
| 回應時間 | UI p95 < 500ms;AI Copilot 首 token < 2s | L1 streaming + L3 stream 回應 |
| 吞吐量 | 單節點 100 req/s;1000 告警/分鐘 | L2 rate limit + L5 Event Bus 緩衝 |
| 可用性 | Phase 1:99% | Phase 2:99.9% | Phase 2 叢集 + Redis Sentinel |
| 資料保護 | Audit log 不可修改;授權檔不可竄改 | L2 append-only + RSA 簽章 |
| 合規 | 稽核軌跡保留 180 天可調整 | L2 SE-014 |
| 災備 | 每日 pg_dump + MinIO 對外儲存 | Ops 文件另述 |
| 模組 | L1 | L2 | L3 | L4 | L5 |
|---|---|---|---|---|---|
| Nexus Core | 全部 UI + Copilot | 全部 | Supervisor + Anomaly | Embedding + Briefing | PG + Redis |
| Service Desk | 工單頁面 | RBAC | Triage Agent | RAG 對工單 | tickets 表 |
| Incident | 事件詳情頁 | RBAC | Correlation Agent | RAG 對事件 | incidents 表 + Event Bus |
| Automation | Workflow 編輯器 | Runbook 審核 | Workflow Engine | Prompt Template | workflows 表 |
| Knowledge | KB 瀏覽器 | RBAC | Preventive Agent | RAG Pipeline | documents 表 + pgvector |
| CMDB | 資產 + 拓撲頁 | RBAC | - | Semantic Graph | assets 表 |
| Analytics Pro | 報表頁 | RBAC | - | 彙整計算 | analytics 表 |
| Integration | 連接器設定頁 | API Key | MCP Tools 註冊 | - | 外部系統 |
| ID | 決策 | 狀態 |
|---|---|---|
| ADR-001 | 選 Mastra AI 作為 Agent 框架 | 已採納 |
| ADR-002 | 用 pgvector 不另起 Qdrant / Milvus | 已採納 |
| ADR-003 | Hybrid LLM(on-prem 預設 + external 可選) | 已採納 |
| NOA 層 | Arova Nexus 對應 | 差異 |
|---|---|---|
| UI for AI | L1 Interaction Layer | NOA 綁 Microsoft 生態(Copilot/Outlook/Teams);Arova 是獨立 Web + 開放 API |
| Agentic Governance | L2 Governance Layer | NOA 用 Azure Foundry Control Plane;Arova 自研(on-prem 限制) |
| Agentic Framework | L3 Agent 編排層 | NOA 用 Microsoft Agent Framework;Arova 用 Mastra AI(TypeScript 一致化) |
| Telco IQ | L4 Intelligence Layer | NOA 分 Fabric IQ / Foundry IQ 兩層;Arova 合併為單層簡化 |
| Universal Data Access | L5 Data & Integration Layer | 概念完全相同 |
本質差異:NOA 是 Azure 生態綁定的 cloud-first 架構;Arova 是 on-prem first 架構,所有層都必須能在客戶內網運行,這約束了每一層的技術選擇(例如為何選 pgvector 不用 Azure AI Search)。