# 🏛 架构讟计文档 > **Architecture Design Document** --- ## 䞀、系统抂述 倩工智胜䜓平台是䞀䞪䌁䞚级 AI 智胜䜓Agent平台提䟛智胜对话、知识库管理、智胜䜓猖排等栞心胜力采甚**前后端分犻** + **匂步任务队列** 的架构讟计。 --- ## 二、技术选型 | 层级 | 技术 | 版本 | 选型理由 | |:----|:-----|:-----|:---------| | **前端框架** | Vue 3 (Composition API) | 3.4+ | 蜻量、响应匏、TypeScript 友奜 | | **前端构建** | Vite | 5+ | 极速 HMR匀发䜓验䌘匂 | | **状态管理** | Pinia | 2+ | Vue 3 官方掚荐TypeScript 支持完善 | | **路由** | Vue Router | 4+ | SPA 路由支持富航守卫 | | **HTTP 客户端** | Axios | 1+ | 请求/响应拊截统䞀错误倄理 | | **后端框架** | FastAPI | 0.110+ | 高性胜匂步框架自劚生成 OpenAPI 文档 | | **ORM** | SQLAlchemy | 2.0+ | 成熟的 Python ORM匂步支持 | | **数据验证** | Pydantic | 2+ | 类型安党䞎 FastAPI 深床集成 | | **数据库迁移** | Alembic | 1.13+ | 版本化管理数据库变曎 | | **数据库** | MySQL (腟讯云) | 8.0+ | 皳定可靠的关系型数据库 | | **猓存** | Redis | 7+ | 高性胜猓存 + 消息队列 | | **任务队列** | Celery | 5.3+ | 分垃匏匂步任务倄理 | | **讀证** | JWT | — | 无状态讀证支持 Token 刷新 | | **容噚化** | Docker + Docker Compose | 最新 | 简化郚眲环境䞀臎 | --- ## 䞉、架构分层 ``` ┌─────────────────────────────────────────────────────────────┐ │ 客户端层 (Client Layer) │ │ 浏览噚 (Chrome/Edge) │ 移劚端 │ 第䞉方 API 调甚 │ └───────────────────────┬─────────────────────────────────────┘ │ HTTPS ┌───────────────────────▌─────────────────────────────────────┐ │ 接入层 (Gateway Layer) │ │ Nginx 反向代理 │ SSL 终止 │ 静态资源服务 │ 端口 8038/8037 │ └───────────────────────┬─────────────────────────────────────┘ │ ┌───────────────────────▌─────────────────────────────────────┐ │ 前端应甚层 (Frontend Layer) │ │ Vue 3 SPA │ Pinia Store │ Vue Router │ Axios Client │ │ ┌─────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────┐ │ │ │ Views │ │Components│ │ Stores │ │ Utils │ │ │ │ 页面组件 │ │ 公共组件 │ │ 状态管理 │ │ 工具/请求封装│ │ │ └─────────┘ └──────────┘ └──────────┘ └──────────────┘ │ └───────────────────────┬─────────────────────────────────────┘ │ HTTP/JSON ┌───────────────────────▌─────────────────────────────────────┐ │ 后端服务层 (Backend Layer) │ │ FastAPI │ äž­é—Žä»¶ │ 路由 │ 䟝赖泚入 │ │ ┌──────────────┐ ┌──────────────────┐ │ │ │ API 路由层 │ │ 讀证/授权䞭闎件 │ │ │ │ (api/v1/*) │ │ (JWT、CORS) │ │ │ ├─────────────── ├─────────────────── │ │ │ Service 层 │ │ 任务调床 │ │ │ │ (䞚务逻蟑) │ │ (Celery 任务) │ │ │ ├─────────────── ├─────────────────── │ │ │ Models 层 │ │ Schemas 层 │ │ │ │ (ORM 定义) │ │ (数据验证) │ │ │ └──────────────┘ └──────────────────┘ │ └──────┬────────────────────────────┬─────────────────────────┘ │ │ â–Œ â–Œ ┌──────────────┐ ┌──────────────────┐ │ MySQL 8.0 │ │ Redis 7 │ │ (腟讯云) │ │ 猓存 / 任务队列 │ │ 持久化存傚 │ │ 䌚话 / 锁 │ └──────────────┘ └──────────────────┘ │ â–Œ ┌──────────────────┐ │ Celery Worker │ │ 匂步任务倄理 │ │ 文件倄理 / 通知 │ └──────────────────┘ ``` --- ## 四、栞心䞚务暡块 ### 1. 甚户䞎权限暡块 - **泚册/登圕**甚户名 + 密码JWT Token 发攟 - **Token 刷新**Access Token (30min) + Refresh Token (7d) - **䞪人䞭心**信息查看䞎修改 - **角色权限**admin / workspace_admin / member支持 14 䞪权限端点 - **倚租户**Workspace 级数据隔犻飞乊应甚按 workspace 隔犻 ### 2. 智胜䜓暡块 (Agent) - 智胜䜓的创建、配眮、发垃、䞋架 - **Agent 类型**specialist䞓家/ main䞻路由 - 工䜜流配眮 `workflow_config`nodes + edges - 执行预算 `budget_config`max_steps / max_llm_invocations / max_tool_calls - 蟓入/蟓出 Schema 纊束JSON Schema - **Agent 垂场**发垃/安装/评分(Fork)/收藏/升级 - **Agent 猖排**5 种暡匏route / sequential / debate / pipeline / graph - **Agent 蜂矀**Swarm Leader 分解任务 → Teammate 并行执行 → 聚合结果 ### 3. 知识库暡块 - 文档䞊䌠䞎解析PDF、TXT、Markdown、HTML、CSV、JSON - 文档分块 → 向量嵌入支持 OpenAI / DeepSeek Embedding - 语义检玢䜙匊盞䌌床 + 混合检玢 - **RAG 增区生成**检玢 → 增区 Prompt → 生成 - **知识囟谱**KnowledgeEntity节点+ KnowledgeRelation关系蟹 - **知识进化**Celery Beat 定时提取 → LLM 提炌 → 入库 - **知识仪衚盘**增长曲线、倍甚排行、类别分垃 ### 4. 对话暡块 - 甚户䞎智胜䜓的实时对话SSE 流匏蟓出 - **事件类型**plan / think / tool_call / tool_result / final / done - 䞊䞋文管理䞎䌚话恢倍session_id - 对话分支Branch分支创建 / 查看 / 恢倍 - **记忆系统**短期记忆向量 RAG+ 长期记忆PersistentUserMemory+ 党局知识池 ### 5. 工䜜流暡块 - 可视化 DAG 工䜜流匀始 → LLM/工具/条件/埪环 → 结束 - **节点类型**start / llm / tool / condition / code / switch / parallel / subworkflow / orchestrator / evaluator - **节点配眮**提瀺词暡板支持 `{{variable}}` 变量、工具列衚、暡型参数 - **节点级功胜**自劚重试retry_config、错误倄理error_handler、人工审批HITL - 版本管理WorkflowVersion保存 / 列衚 / 回滚 - 版本对比节点变曎可视化 - 节点搜玢/筛选、自劚垃局Dagre 算法 - 工䜜流验证死埪环检测、孀立节点检测、类型兌容性检查 - **Subworkflow**嵌套子工䜜流含深床防技 ### 6. 工具系统 - **内眮工具**56 䞪匀箱即甚工具文件 / 文本 / HTTP / 代码 / 搜玢 / 计算 / 日期 / JSON / 知识囟谱 等 - **工具分类**file_ops / text_processing / web / code / data / knowledge / search / math - **工具参数过滀**防止泚入、类型校验 - **工具劚态泚册**HTTP 工具 / 代码工具 / 工䜜流工具支持热曎新 - **工具垂场**发垃 / 安装 / 版本管理 ### 7. 监控䞎告譊 - **系统监控**抂览 / 执行统计 / 节点类型甚量 / 最近劚态 - **Agent 监控**LLM 调甚统计 / Agent 统计 / 工具甚量 / 每日趋势 - **告譊系统**规则 CRUD + 告譊日志 + 通知邮件/Webhook/站内 - **Prometheus 指标**`/metrics` 端点䞚务指标 + 系统指标 - **Grafana 仪衚板**系统/䞚务双面板 - **ELK 日志聚合**Filebeat → Logstash → Elasticsearch → Kibana ### 8. 商䞚化暡块 - **暡板垂场**11 䞪行䞚暡板客服/研发/PR Review/面试调床/竞品监控/测试报告/入职匕富/风险预譊/孊习助手/日报/日志分析 - **场景契纊 DSL**统䞀蟓入契纊目标/纊束/产物/验收暡板倍甚 - **定时任务**Cron 衚蟟匏支持手劚觊发 - **Android App**原生 Kotlin + Compose对话/历史/语音/TTS/掚送 - **飞乊 Bot**6 䞪 BotWebSocket 长连接亀互卡片对话䞊䞋文连续性 - **PWA 移劚端**manifest + Service Worker + 犻线猓存 + 浏览噚掚送 ### 9. 集成䞎通知 - **第䞉方集成**飞乊 / 埮信 / SlackWebhook - **掚送通知**PushSubscription 暡型 + push_service + 浏览噚 Push API - **FCM 掚送**Firebase Cloud Messaging for Android - **WebSocket 实时掚送**执行状态实时曎新 - **审批系统**approval_manager + 危险工具自劚审批流皋 --- ## 五、Agent 运行时架构 ### ReAct 埪环 ``` 甚户蟓入 → [Think → Act → Observe] × N → Final Answer 每䞪迭代 1. Think: LLM 分析圓前状态决定䞋䞀步 2. Act: 调甚工具或执行操䜜 3. Observe: 获取工具结果曎新䞊䞋文 ``` ### 栞心执行流皋 ``` AgentRuntime.execute() ├── 加蜜 Agent 配眮workflow_config, system_prompt, tools ├── 初始化䞊䞋文memory, conversation_history, session_state ├── ReAct 埪环最倚 max_iterations 蜮 │ ├── _think(): LLM 掚理决定调甚哪䞪工具 │ ├── _act(): 执行工具调甚 │ │ ├── 参数过滀防止泚入 │ │ ├── 审批检查HITL — 危险工具需人工审批 │ │ └── 执行工具内眮 / HTTP / 代码 / 工䜜流 │ ├── _observe(): 记圕结果曎新记忆 │ └── _should_continue(): 刀断是吊继续任务完成蟟到䞊限 ├── 聚合结果 → Final Answer └── 记圕执行日志AgentLLMLog + AgentExecutionLog + ExecutionLog ``` ### 记忆系统䞉层架构 ``` ┌──────────────────────────────────────────┐ │ 第䞀层短期记忆对话䞊䞋文 │ │ • 圓前䌚话的历史消息 │ │ • memory_max_history 条消息 │ │ • 滑劚窗口自劚截断 │ ├─────────────────────────────────────────── │ 第二层向量记忆语义检玢 │ │ • AgentVectorMemory 衚 │ │ • Embedding → 向量盞䌌床检玢 │ │ • 跚䌚话语义盞关性查扟 │ │ • 配眮memory_vector_top_k 条 │ ├─────────────────────────────────────────── │ 第䞉层长期记忆持久化 │ │ • PersistentUserMemory 衚 │ │ • 关键信息跚䌚话保存 │ │ • 甚户画像、偏奜、孊习进床 │ │ • memory_persist + memory_learning │ └──────────────────────────────────────────┘ ``` ### 倚 Agent 猖排暡匏 | 暡匏 | 描述 | API | |------|------|------| | **route** | äž» Agent 分析蟓入 → 路由到最合适的子 Agent | `/agent-chat/orchestrate` | | **sequential** | 倚䞪 Agent 按顺序执行前者蟓出䞺后者蟓入 | `/agent-chat/orchestrate` | | **debate** | 倚䞪 Agent 同时回答汇总比蟃 | `/agent-chat/orchestrate` | | **pipeline** | 流氎线暡匏每䞪 Agent 倄理䞀䞪阶段 | `/agent-chat/orchestrate` | | **graph** | DAG 囟暡匏任意拓扑结构并行分支 | `/agent-chat/orchestrate/graph` | | **swarm** | Leader 分解 → Teammate 并行 → 聚合 | `/swarm/run` | --- ## 六、实时通信架构 ### SSEServer-Sent Events ``` Client Server │ │ │ POST /agent-chat/{id}/stream │ │ Accept: text/event-stream │ │───────────────────────────────>│ │ │ │ event: plan │ │ data: {"title":"...", │ │ "steps":[...]} │ │<───────────────────────────────│ │ │ │ event: think │ │ data: {"content":"...", │ │ "iteration":0} │ │<───────────────────────────────│ │ │ │ event: tool_call │ │ data: {"tool_name":"...", │ │ "tool_input":"..."} │ │<───────────────────────────────│ │ │ │ event: tool_result │ │ data: {"tool_name":"...", │ │ "tool_result":"..."} │ │<───────────────────────────────│ │ │ │ event: final │ │ data: {"content":"...", │ │ "iterations_used":3} │ │<───────────────────────────────│ │ │ │ event: done │ │ data: {"session_id":"..."} │ │<───────────────────────────────│ ``` ### WebSocket ``` Client Server │ │ │ WS /ws/executions/{execution_id} │ │────────────────────────────────────>│ │ │ │ {"type":"progress","pct":50} │ │<────────────────────────────────────│ │ │ │ {"type":"node_start", │ │ "node_id":"llm-1"} │ │<────────────────────────────────────│ │ │ │ {"type":"node_complete", │ │ "node_id":"llm-1", │ │ "output":"..."} │ │<────────────────────────────────────│ │ │ │ {"type":"execution_complete", │ │ "status":"success"} │ │<────────────────────────────────────│ ``` --- ## 䞃、数据库架构 ### 栞心衚关系 ``` users (甚户) ├── agents (智胜䜓) │ ├── agent_ratings (评分) │ ├── agent_favorites (收藏) │ ├── agent_schedules (定时任务) │ ├── agent_llm_logs (LLM 调甚日志) │ ├── agent_vector_memories (向量记忆) │ └── agent_learning_patterns (孊习暡匏) ├── workflows (工䜜流) │ └── workflow_versions (版本历史) ├── executions (执行记圕) │ └── execution_logs (执行日志) ├── knowledge_bases (知识库) │ ├── documents (文档) │ └── document_chunks (文档分块) ├── notifications (通知) ├── feedback_records (甚户反銈) ├── conversation_branches (对话分支) ├── goals (目标) │ └── tasks (任务) ├── orchestration_templates (猖排暡板) ├── node_templates (节点暡板) ├── plugins (插件) ├── alert_rules (告譊规则) │ └── alert_logs (告譊日志) ├── persistent_user_memories (长期记忆) ├── knowledge_entities (知识囟谱节点) ├── knowledge_relations (知识囟谱关系) ├── push_subscriptions (掚送订阅) ├── fcm_tokens (FCM Token) ├── user_feishu_open_ids (飞乊绑定) ├── scene_contracts (场景契纊 DSL) └── workspaces (工䜜区) └── workspace_memberships (成员关系) ``` ### 数据库玢匕策略 - 所有倖键列均有玢匕 - 垞甚查询列status / category / is_public / created_at玢匕 - 时闎范囎查询列timestamp / triggered_at玢匕 - 倍合玢匕甚于高频组合查询agent_id + created_at --- ## 八、安党架构 | 安党措斜 | 实现方匏 | 䜍眮 | |:---------|:---------|:------| | JWT 讀证 | HS256 筟名30min Access + 7d Refresh | `auth.py` middleware | | 密码安党 | bcrypt 哈垌12 rounds | `auth.py` | | CORS 保技 | FastAPI CORSMiddleware癜名单域名 | `main.py` | | 蟓入验证 | Pydantic v2 䞥栌验证所有 endpoint 蟓入 | 党郚 schemas | | SQL 泚入防技 | SQLAlchemy 2.0+ 参数化查询 | 党郚 models | | XSS 防技 | CSP 倎 + 蟓出蜬义前端 Vue 3 | 前端 `index.html` | | CSRF 防技 | SameSite Cookie + Token Header | 前端 axios 配眮 | | Rate Limiting | Redis 滑劚窗口登圕 5/minWebhook 60/min | `rate_limiter.py` | | 安党倎 | HSTS / X-Content-Type-Options / X-Frame-Options | `security_headers.py` | | 文件䞊䌠安党 | 类型检查 + 倧小限制 + 病毒扫描 | `uploads.py` | | HTTPS | Nginx 䟧 SSL 终止 | nginx.conf | | 密钥管理 | `.env` 文件 + `.env.example` 暡板䞍提亀 Git | root | --- ## 九、可扩展性讟计 - **氎平扩展**FastAPI 无状态 → 倚实䟋 + Nginx 莟蜜均衡 - **数据库读写分犻**MySQL 䞻从倍制生产环境可配眮 - **猓存策略**Redis 猓存热点数据甚户信息、Agent 配眮 - **匂步任务**Celery Worker 独立扩展倄理 LLM 调甚、文件倄理、通知掚送 - **日志聚合**ELK StackFilebeat → Elasticsearch → Kibana - **监控告譊**Prometheus + Grafana䞚务/系统双面板 - **CI/CD**GitHub Actionsci.yml + deploy.yml + security.yml - **容噚化郚眲**Docker Composedev/staging/prod 䞉套环境 - **倚环境管理**ENVIRONMENT 变量驱劚的配眮切换 --- ## 十、前端架构 ``` src/ ├── api/ # API 调甚封装axios 实䟋 + 拊截噚 ├── components/ # 公共组件库 │ ├── chat/ # 聊倩盞关StreamingText, MarkdownRenderer │ ├── workflow/ # 工䜜流猖蟑噚DAG 画垃、节点面板 │ ├── charts/ # 囟衚组件ECharts │ └── common/ # 通甚组件按钮、衚单、匹窗 ├── composables/ # 组合匏 APIuseSpeechRecognition, useTTS, usePWA ├── layouts/ # 垃局组件MainLayout, AdminLayout ├── router/ # 路由配眮32 䞪路由党郚懒加蜜 ├── stores/ # Pinia 状态管理 ├── views/ # 页面组件28 䞪页面 │ ├── MainConsole # 䞻控台仪衚盘 │ ├── AgentDesigner # Agent 讟计噚 │ ├── WorkflowEditor# 工䜜流猖蟑噚 │ ├── TemplateMarket# 暡板垂场 │ ├── AgentMarket # Agent 垂场 │ ├── KnowledgeBase # 知识库管理 │ ├── Monitoring # 系统监控 │ └── ... # 曎倚 └── utils/ # 工具凜数 ``` --- > 盞关文档[项目结构抂览](./project-structure.md) | [匀发指南](./development-guide.md) | [API 参考](./api-reference.md) | [插件匀发指南](./plugin-development-guide.md)