feat: add AI学习助手 agent (KG+RAG ideal) and renshenguo feishu bot

- Add AI学习助手 agent creation script with all 39 tools, 3-layer KG+RAG memory
- Add renshenguo (人参果) feishu bot integration (app_service + ws_handler)
- Register renshenguo WS client in main.py startup
- Add RENSHENGUO_APP_ID / RENSHENGUO_APP_SECRET / RENSHENGUO_AGENT_ID config
- Reorganize docs from root into docs/ subdirectories
- Move startup scripts to scripts/startup/
- Various backend optimizations and tool improvements

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
renjianbo
2026-05-06 01:37:13 +08:00
parent f33bc461ff
commit eabf90c496
171 changed files with 4906 additions and 445 deletions

View File

@@ -0,0 +1,468 @@
# AIAgent 项目初始文档
> 大模型重启后,读此文档即可快速了解项目全貌。最后更新: 2026-05-02。
---
## 1. 一句话概括
**低代码智能体搭建与工作流编排平台** — 可视化拖拽配置 30+ 种节点类型,集成多种 AI 模型,支持复杂业务流程自动化执行。
---
## 2. 速查卡片
| 项目 | 值 |
|---|---|
| 代码路径 | `D:\aaa\aiagent` |
| Git 分支 | `main` |
| 数据库 | MySQL 腾讯云 `gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936` / `agent_db` |
| Redis | 本地 `localhost:6379` |
| 前端端口 | `3001` (Vite dev) |
| 后端端口 | `8037` (uvicorn) |
| 外部地址 | `http://101.43.95.130:8038` |
| 健康检查 | `GET http://127.0.0.1:8037/health` |
| API 文档 | `http://127.0.0.1:8037/docs` |
| 启动脚本 | `start_aiagent.ps1` (弹窗) / `start_aiagent_background.ps1` (静默) |
| 停止脚本 | `stop_aiagent.ps1` |
| 重启后端 | `restart_backend_celery.ps1` |
| 开机自启 | `install_autostart.ps1` (需管理员) |
---
## 3. 架构总览
```
┌──────────────────────────────────────────────────────────┐
│ 用户浏览器 │
│ http://localhost:3001 │
└─────────────┬────────────────────────────────────────────┘
┌─────────┴──────────┐
│ Frontend (Vite) │ Vue 3 + Pinia + Element Plus + Vue Flow
│ :3001 │
└─────────┬──────────┘
│ /api/v1/* (Vite proxy → :8037)
│ /api/v1/ws (WebSocket)
┌─────────┴──────────┐
│ Backend (FastAPI) │ Python + SQLAlchemy + Celery
│ :8037 │
│ ├─ 26 API 路由 │
│ ├─ 33 服务模块 │
│ └─ 启动时: 注册内置工具 + 飞书 WS 长连接
└──┬───────┬─────────┘
│ │
▼ ▼
┌──────┐ ┌──────┐ ┌──────────────┐
│MySQL │ │Redis │────▶│Celery Worker │ 异步执行工作流/Agent
│(云) │ │:6379 │ │(threads×8) │
└──────┘ └──────┘ └──────┬───────┘
│ Redis Pub/Sub
WebSocket → 前端实时状态推送
```
**关键设计**:
- 用户请求 → FastAPI 创建执行记录 → Celery 任务入 Redis 队列 → Worker 消费执行 → WebSocket 推送进度
- 工作流在 Celery Worker 中异步运行,支持暂停/恢复/取消
- API 和 Worker 共用同一个 venv 和工具注册逻辑
---
## 4. 启动 / 停止
### 4.1 标准启动(弹窗模式)
```powershell
cd D:\aaa\aiagent
powershell -ExecutionPolicy Bypass -File .\start_aiagent.ps1
```
会打开 4 个 PowerShell 窗口Redis、API、Celery、前端。
### 4.2 停止
```powershell
powershell -ExecutionPolicy Bypass -File .\stop_aiagent.ps1
```
### 4.3 仅重启后端+Celery最常用改 .env / 依赖 / 工具后)
```powershell
powershell -ExecutionPolicy Bypass -File .\restart_backend_celery.ps1
```
### 4.4 手动应急启动(脚本不可用时)
4 个终端分别执行:
```powershell
# 1) Redis
cd D:\aaa\aiagent\backend\redis
.\redis-server.exe --port 6379
# 2) API
cd D:\aaa\aiagent\backend
.\venv\Scripts\Activate.ps1
python -m uvicorn app.main:app --host 0.0.0.0 --port 8037
# 3) Celery
cd D:\aaa\aiagent\backend
.\venv\Scripts\Activate.ps1
python -m celery -A app.core.celery_app worker --loglevel=info --pool=threads --concurrency=8
# 4) 前端
cd D:\aaa\aiagent\frontend
$env:AIAGENT_API_PROXY='http://127.0.0.1:8037'
pnpm dev --port 3001
```
### 4.5 验证
```powershell
netstat -ano | findstr :6379
netstat -ano | findstr :8037
netstat -ano | findstr :3001
curl.exe http://127.0.0.1:8037/health
```
---
## 5. 项目目录结构(关键路径)
```
D:\aaa\aiagent\
├── backend/
│ ├── .env # ★ 环境变量 (DB/Redis/API Keys/CORS)
│ ├── requirements.txt # Python 依赖
│ ├── venv/ # Python 虚拟环境
│ ├── redis/ # Windows Redis 可执行文件
│ ├── alembic/ # 数据库迁移
│ ├── alembic.ini
│ ├── app/
│ │ ├── main.py # ★ FastAPI 入口 (startup 事件 + 路由注册)
│ │ ├── core/
│ │ │ ├── config.py # Pydantic Settings (环境变量读取)
│ │ │ ├── database.py # SQLAlchemy 引擎 + 会话
│ │ │ ├── celery_app.py # Celery 应用实例
│ │ │ ├── security.py # JWT 工具
│ │ │ ├── redis_client.py # Redis 客户端
│ │ │ ├── tools_bootstrap.py # 内置工具注册逻辑
│ │ │ ├── exceptions.py # 自定义异常类
│ │ │ └── error_handler.py # 全局异常处理器
│ │ ├── models/ # SQLAlchemy 数据模型 (14个)
│ │ ├── api/ # REST 路由 (26个文件)
│ │ ├── services/ # 业务逻辑 (33个文件)
│ │ │ ├── workflow_engine.py # ★ 工作流执行引擎 (~5700行)
│ │ │ ├── workflow_validator.py # 工作流校验
│ │ │ ├── llm_service.py # LLM 调用 (OpenAI/DeepSeek 兼容)
│ │ │ ├── tool_registry.py # 工具注册表
│ │ │ ├── builtin_tools.py # 内置工具实现
│ │ │ └── ... # 其他服务
│ │ ├── tasks/ # Celery 异步任务
│ │ ├── websocket/ # WebSocket 管理
│ │ └── utils/ # 工具函数
│ ├── scripts/ # 运维脚本
│ │ └── check_ocr_env.py
│ └── tests/
├── frontend/
│ ├── package.json
│ ├── vite.config.ts # Vite 配置 (proxy → :8037)
│ ├── src/
│ │ ├── main.ts # Vue 入口
│ │ ├── api/index.ts # Axios 封装 + 拦截器
│ │ ├── router/index.ts # 路由 (20条)
│ │ ├── stores/ # Pinia 状态管理 (5个)
│ │ ├── views/ # 页面视图 (18个)
│ │ ├── components/ # 组件
│ │ │ └── WorkflowEditor/ # 工作流编辑器核心
│ │ └── types/index.ts # TS 类型定义
│ └── node_modules/
├── scripts/ # 种子数据脚本
│ ├── seed_tools.py
│ ├── seed_agents.py
│ ├── seed_coding_agent.py
│ ├── seed_scenario_agents.py
│ └── seed_extra_agents.py
├── start_aiagent.ps1 # 一键启动 (弹窗)
├── stop_aiagent.ps1 # 一键停止
├── restart_backend_celery.ps1 # 仅重启后端+Celery
├── start_aiagent_background.ps1 # 后台静默启动 (开机自启用)
├── install_autostart.ps1 # 安装/卸载开机自启任务
├── agent_workspaces/ # 文件工具沙箱目录
├── uploads/ # 上传文件存储
├── tessdata/ # Tesseract OCR 语言包
├── (红头)Windows服务器启动与重启唯一指南.md # ★ 运维权威文档
└── aiagent项目架构文档.md # 架构详解
```
---
## 6. 技术栈
| 层 | 技术 |
|---|---|
| 前端框架 | Vue 3 (Composition API) + TypeScript |
| 构建 | Vite 5 |
| UI 库 | Element Plus |
| 流程图 | Vue Flow (基于 React Flow) |
| 状态管理 | Pinia |
| HTTP | Axios |
| 后端框架 | FastAPI (Python) |
| ORM | SQLAlchemy 2.0 + PyMySQL |
| 异步任务 | Celery 5.3 (Redis Broker) |
| 迁移 | Alembic |
| AI SDK | OpenAI Python SDK (兼容 DeepSeek/SiliconFlow 等) |
| 加密 | cryptography (Fernet) |
| 实时推送 | WebSocket + Redis Pub/Sub |
---
## 7. 数据库模型 (14 个表)
| 表 | 模型 | 用途 |
|---|---|---|
| `users` | User | 用户 (含 role 字段) |
| `workflows` | Workflow | 工作流定义 (nodes+edges JSON) |
| `workflow_versions` | WorkflowVersion | 版本历史 + 回滚 |
| `workflow_templates` | WorkflowTemplate | 预制模板 |
| `agents` | Agent | 智能体 (workflow_config JSON) |
| `executions` | Execution | 执行记录 (pending/running/completed/failed/paused) |
| `execution_logs` | ExecutionLog | 节点级执行日志 |
| `model_configs` | ModelConfig | AI 模型配置 (API Key Fernet 加密) |
| `tools` | Tool | 工具定义 |
| `data_sources` | DataSource | 外部数据源连接 |
| `permissions` | Permission | RBAC 权限 |
| `alert_rules` | AlertRule | 监控告警规则 |
| `node_templates` | NodeTemplate | 节点配置模板 |
| `persistent_user_memories` | PersistentUserMemory | 跨会话持久化记忆 |
---
## 8. API 路由清单 (26 个模块, `/api/v1/*`)
| 路由模块 | 文件 | 功能 |
|---|---|---|
| auth | `auth.py` | 注册/登录/JWT |
| workflows | `workflows.py` | 工作流 CRUD + 执行 + 版本 |
| executions | `executions.py` | 执行记录 + 暂停/恢复/取消 |
| execution_logs | `execution_logs.py` | 执行日志查询 |
| agents | `agents.py` | Agent CRUD + 场景模板 |
| agent_chat | `agent_chat.py` | Agent 对话 API (SSE 流式) |
| agent_monitoring | `agent_monitoring.py` | Agent 监控统计 |
| agent_schedules | `agent_schedules.py` | Agent 定时任务 (cron) |
| tools | `tools.py` | 工具市场 CRUD |
| model_configs | `model_configs.py` | 模型配置管理 |
| data_sources | `data_sources.py` | 数据源管理 |
| uploads | `uploads.py` | 文件上传 |
| websocket | `websocket.py` | WebSocket 实时推送 |
| webhooks | `webhooks.py` | 外部 Webhook 接收 |
| template_market | `template_market.py` | 模板市场 |
| platform_templates | `platform_templates.py` | 平台预置模板 |
| node_templates | `node_templates.py` | 节点模板 |
| node_test | `node_test.py` | 单节点测试 |
| batch_operations | `batch_operations.py` | 批量操作 |
| collaboration | `collaboration.py` | 多用户协作 |
| permissions | `permissions.py` | RBAC 权限管理 |
| monitoring | `monitoring.py` | 系统监控 |
| alert_rules | `alert_rules.py` | 告警规则 |
| notifications | `notifications.py` | 通知推送 |
| knowledge_base | `knowledge_base.py` | 知识库 (RAG) |
| feishu_bind | `feishu_bind.py` | 飞书用户绑定 |
---
## 9. 前端路由清单 (20 条)
| 路径 | 视图 | 说明 |
|---|---|---|
| `/login` | Login.vue | 登录 |
| `/` | Home.vue | 首页仪表盘 |
| `/console` | MainConsole.vue | 主控制台 |
| `/workflow/:id?` | WorkflowDesigner.vue | 工作流编辑器 |
| `/agents` | Agents.vue | Agent 管理 |
| `/agents/:id/design` | WorkflowDesigner.vue | Agent 工作流设计 |
| `/agents/:id/config` | AgentConfig.vue | Agent 配置 |
| `/executions` | Executions.vue | 执行记录 |
| `/executions/:id` | ExecutionDetail.vue | 执行详情 |
| `/execution-board` | ExecutionBoard.vue | 执行看板 |
| `/data-sources` | DataSources.vue | 数据源管理 |
| `/model-configs` | ModelConfigs.vue | 模型配置 |
| `/template-market` | TemplateMarket.vue | 模板市场 |
| `/permissions` | PermissionManagement.vue | 权限管理 (admin) |
| `/monitoring` | Monitoring.vue | 监控面板 |
| `/agent-monitoring` | AgentDashboard.vue | Agent 仪表盘 |
| `/alert-rules` | AlertRules.vue | 告警规则 |
| `/node-templates` | NodeTemplates.vue | 节点模板 |
| `/tools` | Tools.vue | 工具市场 |
| `/agent-chat` | AgentChat.vue | Agent 对话 |
| `/agent-chat/:id` | AgentChat.vue | 指定 Agent 对话 |
**路由守卫**: 除 `/login` 外均需 JWT`/permissions` 额外要求 admin 角色。
---
## 10. 节点类型 (30+ 种)
### 控制流
`start` `end/output` `condition` `switch` `merge` `loop/foreach` `wait`
### AI 能力
`llm` `template` `code`
### 数据
`data/transform` `json` `text` `csv` `excel` `cache` `vector_db`
### 存储
`database/db` `file/file_operation` `object_storage` `pdf` `image`
### 网络
`http/request` `webhook` `oauth`
### 消息
`email/mail` `message_queue/mq/rabbitmq/kafka` `sms`
### 办公协同
`slack` `dingtalk/dingding` `wechat_work/wecom`
### 高级
`subworkflow/invoke_agent` `batch` `validator` `approval` `error_handler` `log` `schedule/delay/timer`
核心执行逻辑在 `backend/app/services/workflow_engine.py``execute_node` 方法中。
---
## 11. 核心服务模块 (33 个)
| 服务 | 文件 | 职责 |
|---|---|---|
| 工作流引擎 | `workflow_engine.py` | 拓扑排序 + 节点执行 + 预算熔断 + 断点恢复 |
| 工作流校验 | `workflow_validator.py` | 结构/连接/配置合法性检查 |
| 工作流模板 | `workflow_templates.py` | 预置模板生成 |
| LLM 服务 | `llm_service.py` | OpenAI 兼容 SDK 调用 + 流式 + 工具调用 |
| 工具注册表 | `tool_registry.py` | 内置/HTTP/工作流工具管理 |
| 内置工具 | `builtin_tools.py` | file_read/write/system_info/datetime 等 |
| 条件解析 | `condition_parser.py` | 条件表达式求值 + 分支裁剪 |
| 数据转换 | `data_transformer.py` | 数据格式转换 |
| 执行日志 | `execution_logger.py` | 节点级日志记录 |
| 执行预算 | `execution_budget.py` | 步数/LLM/工具三重熔断 |
| 加密服务 | `encryption_service.py` | Fernet 加密/解密 |
| 持久记忆 | `persistent_memory_service.py` | 跨会话用户记忆 |
| 权限服务 | `permission_service.py` | RBAC 检查 |
| 监控服务 | `monitoring_service.py` | 系统指标采集 |
| 告警服务 | `alert_service.py` | 告警规则评估 + 通知 |
| 数据源连接器 | `data_source_connector.py` | 外部数据源连接 |
| 场景模板 | `scene_templates.py` | 场景化模板 |
| 场景 DSL | `scenario_dsl.py` | DSL 解析/校验 |
| Agent 学习 | `agent_learning_service.py` | 从历史执行中优化工具选择 |
| Agent 监控 | `agent_monitoring_service.py` | Agent 运行指标 |
| Agent 调度 | `agent_schedule_service.py` | 定时任务 cron 调度 |
| 知识库 | `knowledge_service.py` | 向量检索 RAG |
| 嵌入服务 | `embedding_service.py` | Embedding 向量化 |
| 文档解析 | `document_parser.py` | PDF/Word/Excel 解析 |
| 文本分块 | `text_chunker.py` | 长文本分块 |
| 飞书通知 | `feishu_notifier.py` | 飞书消息推送 |
| 飞书 WebSocket | `feishu_ws_handler.py` | 飞书机器人长连接 |
| 飞书应用 | `feishu_app_service.py` | 飞书应用逻辑 |
| 橙子 WebSocket | `orange_ws_handler.py` | 第二个飞书机器人 |
| 橙子应用 | `orange_app_service.py` | 第二个飞书应用 |
| 通知服务 | `notification_service.py` | 统一通知推送 |
| Agent 工作区日志 | `agent_workspace_chat_log.py` | 对话日志落盘 |
---
## 12. 关键配置项 (`.env`)
```
DATABASE_URL=mysql+pymysql://root:***@gz-cynosdbmysql-grp-d26pzce5.sql.tencentcdb.com:24936/agent_db
REDIS_URL=redis://localhost:6379/0
CORS_ORIGINS=http://localhost:3001,... (多地址逗号分隔)
DEEPSEEK_API_KEY=sk-fdf7cc1c73504e628ec0119b7e11b8cc
SILICONFLOW_API_KEY=sk-xpptixobqxshkmikjvjeoltekytqmmresfndhoivezomuobn
FEISHU_APP_ID=cli_a97f3e2ecaf81cba # 飞书机器人
ORANGE_APP_ID=cli_a97f1271ec345cc6 # 橙子飞书机器人
EXTERNAL_URL=http://101.43.95.130:8038
TESSERACT_CMD=C:/Program Files/Tesseract-OCR/tesseract.exe
```
**重要**: 修改 `.env` 后至少需要 `restart_backend_celery.ps1`
---
## 13. 安全机制
- **JWT 认证** — 所有 API Bearer Token`/login` 除外),`app.core.security`
- **模型密钥加密** — API Key Fernet 加密存储,仅创建者可调用
- **RBAC** — 角色级权限 (`admin` / `user`)
- **执行预算** — 步数上限(2000)、LLM 调用上限(200)、工具调用上限(500)
- **代码沙箱** — `code` 节点禁用 `open`/`eval`/`__import__`
- **文件沙箱** — 操作限制在 `LOCAL_FILE_TOOLS_ROOT` 目录内
---
## 14. 外部集成
| 集成 | 说明 |
|---|---|
| 飞书 | 2 个机器人 — 应用通知 + 对话交互 (WebSocket 长连接) |
| DeepSeek | AI 模型 (DSML 协议支持, reasoning_content) |
| SiliconFlow | Embedding 模型 (bce-embedding-base_v1) |
| 腾讯云 MySQL | 生产数据库 |
| Tesseract OCR | 图片文字识别 (Windows 安装路径) |
---
## 15. Git 历史摘要 (最近 20 次提交)
```
7ee80c7 feat: 集成飞书通知和机器人对话系统
0bbf68d feat: 实现 Agent 定时任务系统 — cron 表达式周期执行
e3802ef feat: 实现 Agent 自主学习 — 从历史执行中优化工具选择
c28cf40 feat: 添加更多场景专用 Agent 种子脚本
5a52dac feat: 添加 5 个场景专用 Agent 种子脚本
5423aca feat: 新增 Pipeline 流水线编排模式 (Planner→Executor→Reviewer)
7aba0f9 fix: 修复 Agent 流式对话无响应和工具 schema 兼容性问题
342f3fc chore: 添加工具市场种子脚本
4c1b5b2 fix: 工具市场 categories 路由被 /{tool_id} 拦截
30dad00 fix: 工具市场页面缺少 MainLayout 导入
9400cf9 refactor: 优化工具市场 UI — 卡片视图、统计概览、分步表单
cd83090 feat: 添加工具市场前端页面
7b9e082 feat: 向量记忆 RAG、工具市场、SSE 流式响应、前端集成与测试覆盖
036f533 feat: Agent 监控与编排、仪表盘/配置页及文档更新
0946756 feat: Agent 运行时、对话 API、作业助手与引擎修复
4366312 feat: DeepSeek v4 模型对齐、作业助手脚本与 Agent 对比测试
cadeb2d fix: 修复热点摘要超长上下文并统一 Windows 启动文档
63b5411 图片上传识别功能
df4fab1 feat: Agent 批量测试、作业助手与上传预览
0608161 feat: 完善企业场景多线路由与执行稳定性
```
---
## 16. 常见问题速查
| 症状 | 根因 | 解决 |
|---|---|---|
| `timeout of 30000ms exceeded` | Redis 端口不匹配或 Celery 未运行 | 检查 `.env``REDIS_URL` 端口与 `netstat` 一致 |
| Celery 任务卡住 | Windows prefork 池问题 | 使用 `--pool=threads` (脚本已配置) |
| 前端 401 | Token 过期或未登录 | 重新登录获取 Token |
| OCR 不工作 | Tesseract 未安装或路径不对 | 检查 `TESSERACT_CMD` 路径 |
| 内置工具未注册 | Worker 与 API 使用不同启动逻辑 | 确认 Worker 日志中有"内置工具就绪" |
| 工作流执行超时 | 循环节点未终止或 LLM 调用过多 | 检查执行日志,调整预算上限 |
| `.env` 改完不生效 | 仅重启了 APICelery 未重启 | 执行 `restart_backend_celery.ps1` |
---
## 17. 开发工作流
```
改前端代码 → Vite HMR 自动生效
改后端 API 代码 → uvicorn --reload 自动重启
改 .env / 依赖 → restart_backend_celery.ps1
改工具实现 → restart_backend_celery.ps1
改工作流引擎 → restart_backend_celery.ps1
加新节点类型 → 修改 workflow_engine.py + 前端 NodeTypes.ts + restart
```

View File

@@ -0,0 +1,600 @@
# 低代码智能体平台 - 核心文档汇总
## 项目概述
### 项目背景
低代码智能体平台旨在让非技术用户通过可视化拖拽的方式快速构建和部署AI智能体降低AI应用开发门槛提高开发效率。
### 核心价值
- **零代码/低代码**:通过可视化界面配置智能体,无需编写代码
- **快速部署**:一键部署到多种环境(云服务、本地、边缘设备)
- **灵活扩展**:支持自定义组件和插件机制
- **多模型支持**集成主流AI模型OpenAI、Claude、DeepSeek等
- **工作流编排**:支持复杂的工作流设计和执行
- **Agent协作**支持多Agent协作和工具链管理
- **自主 AI Agent 运行时**:支持 ReAct 自主循环的 Agent Runtime可独立对话或嵌入工作流
### 目标用户
- 产品经理和业务人员
- 初级开发者
- 企业数字化转型团队
- AI应用开发者
## 系统架构设计
### 整体架构
采用前后端分离的微服务架构:
```
┌─────────────────────────────────────────────────────────┐
│ 前端层 (Frontend) │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 可视化编辑器 │ │ 智能体管理 │ │ 监控面板 │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────┘
│ HTTP/WebSocket
┌─────────────────────────────────────────────────────────┐
│ API网关层 (Gateway) │
│ 认证、限流、路由、负载均衡 │
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 业务服务层 (Services) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
│ │智能体引擎 │ │工作流引擎 │ │模型管理 │ │数据管理 ││
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
│ │任务调度 │ │日志监控 │ │用户管理 │ │权限管理 ││
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 数据存储层 (Storage) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
│ │ MySQL │ │ │ │ Redis │ │ ││
│ │(元数据) │ │ │ │(缓存) │ │ ││
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
└─────────────────────────────────────────────────────────┘
┌─────────────────────────────────────────────────────────┐
│ 外部服务层 (External) │
│ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐│
│ │ OpenAI │ │ DeepSeek │ │ 本地模型 │ │ 其他API ││
│ └──────────┘ └──────────┘ └──────────┘ └──────────┘│
└─────────────────────────────────────────────────────────┘
```
### 技术栈选型
#### 前端技术栈
- **框架**: Vue 3 + TypeScript + Vite
- **状态管理**: Pinia
- **UI组件库**: Element Plus
- **工作流可视化**: Vue Flow
- **HTTP客户端**: Axios
- **WebSocket**: 原生WebSocket API
#### 后端技术栈
- **框架**: Python FastAPI
- **数据库**: MySQL腾讯云数据库
- **缓存/消息队列**: Redis
- **异步任务**: Celery
- **AI框架**: LangChain
- **Agent Runtime**: 自研 ReAct 循环(零重构,寄生式复用现有服务)
- **Agent Orchestrator**: 多 Agent 编排引擎(路由/顺序/辩论三种模式)
- **Agent 监控**: LLM 调用埋点 + 专属 DashboardToken/工具/Agent 用量统计)
- **数据库ORM**: SQLAlchemy
- **迁移工具**: Alembic
- **认证**: JWT
## 核心功能模块
### 1. 用户认证系统
- 用户注册、登录
- JWT Token认证
- 密码加密bcrypt
- 获取当前用户信息
### 2. 工作流管理
- 工作流CRUD创建、读取、更新、删除
- 可视化编辑器(拖拽节点、连线)
- 节点配置面板
- 工作流版本管理
- 工作流导入导出
- 工作流模板市场
### 3. 工作流执行引擎
- DAG构建和拓扑排序
- 节点执行器(支持多种节点类型)
- 数据流管理(节点间数据传递)
- Celery异步任务集成
- 执行状态管理
- 错误处理和重试机制
### 4. 节点类型支持
- **基础节点**: 开始、输入、输出、结束
- **AI节点**: LLM支持OpenAI、DeepSeek等
- **逻辑节点**: 条件、循环
- **数据节点**: 转换、数据库查询、文件操作
- **集成节点**: HTTP请求、Webhook、邮件、消息队列
- **工具节点**: 定时任务、Agent节点
### 5. 内置工具调用
平台提供10个内置工具可在LLM节点中启用
1. 🌐 **http_request** - HTTP请求工具
2. 📖 **file_read** - 文件读取工具
3. ✍️ **file_write** - 文件写入工具
4. 📊 **text_analyze** - 文本分析工具
5. 🕐 **datetime** - 日期时间工具
6. 🔢 **math_calculate** - 数学计算工具
7. 💻 **system_info** - 系统信息工具
8. 📦 **json_process** - JSON处理工具
9. 🗄️ **database_query** - 数据库查询工具(只读查询场景)
10. 📱 **adb_log** - Android/设备日志工具
### 6. 执行管理
- 创建执行任务
- 获取执行记录列表
- 获取执行详情
- 执行状态实时推送WebSocket
- 执行结果可视化
- 执行日志和监控
### 7. 数据源管理
- 数据源模型和CRUD API
- 数据源连接测试
- 数据查询功能
### 8. 模型配置管理
- 模型配置CRUD APIAPI Key 等在服务端加密存储;工作流 LLM 节点可绑定 `model_config_id` 由可信所有者运行时解密注入)
- 多模型支持OpenAI、Anthropic 兼容路径、DeepSeek 等)
- 模型切换和配置
**DeepSeek APIOpenAI 兼容格式)**
与 [DeepSeek API 文档](https://api-docs.deepseek.com/) 对齐的常用参数如下(密钥需在控制台申请,勿写入文档或仓库):
| 参数 | 说明 |
|------|------|
| **base_url** | `https://api.deepseek.com`OpenAI 兼容Anthropic 兼容格式为 `https://api.deepseek.com/anthropic` |
| **主推模型** | `deepseek-v4-flash``deepseek-v4-pro` |
| **兼容旧名(计划弃用)** | `deepseek-chat``deepseek-reasoner` 计划于 **2026/07/24** 弃用;二者分别对应 `deepseek-v4-flash` 的非思考与思考模式 |
本平台侧:**新建 LLM 节点、节点模板及后端未显式指定模型时的 DeepSeek 默认值**为 **`deepseek-v4-flash`**;工作流编辑器与「模型配置」页下拉仍可选择兼容旧模型名并标注弃用时间。
### Agent管理
- Agent CRUD API
- Agent管理页面
- Agent协作功能
- 批量场景Agent脚本教育/企业/政务/媒体)
### 10. Agent Runtime自主 AI Agent
- **ReAct 自主循环**LLM 思考→工具调用→观察结果→再思考,支持最多 N 步迭代
- **分层记忆**:短期(会话上下文)+ 长期MySQL 持久化LLM 自动压缩总结
- **执行追踪**:每步迭代记录 think/tool_call/tool_result/final返回 steps 供前端展开
- **工具管理**:白名单/黑名单过滤,包装已有 ToolRegistry
- **工作流桥接**Agent 节点可嵌入工作流 DAG复用工作流引擎
- **独立对话**:通过专用 API 直接与 Agent 对话,不依赖工作流
- **LLM 调用埋点**:每次 LLM 调用自动记录模型、tokens、耗时到 AgentLLMLog 表
- **Agent 监控**:专属 Dashboard 展示 Agent 用量排行、LLM 调用记录、Token 统计、工具调用频次
- **多 Agent 编排**:三种协作模式:
- **route** — Router Agent 分析问题,分发到最匹配的 Specialist Agent
- **sequential** — Agent 流水线执行,前者输出作为后者输入
- **debate** — 多个 Agent 独立回答Aggregator 汇总为最终答案
- **自主学习**Agent 从历史执行中自动优化工具选择策略,基于 AgentLearningPattern 模型记录和累计工具使用模式,执行前注入历史模式到 system prompt
### 11. Agent 定时任务系统
- **cron 调度**:支持标准 cron 表达式,按周期自动触发 Agent 执行
- **Celery Beat 集成**:每分钟检查到期任务,到期自动触发
- **执行管理**:支持手动触发、暂停/恢复、执行状态跟踪
- **飞书推送**定时任务执行结果自动推送到飞书Webhook + 应用消息)
### 12. 飞书集成和通知系统
- **通知系统**统一的通知管理notifications 表、通知服务、API
- **飞书定时任务推送**:定时任务执行结果自动推送飞书
- **飞书应用消息**:通过飞书应用 API 发送消息通知
- **飞书账号绑定**:用户可绑定飞书账号,接收个性化通知
- **橙子飞书机器人**:独立 WebSocket 连接的飞书机器人,固定路由到橙子助手 Agent
- **飞书事件监听**WebSocket 长连接监听飞书 IM 事件
## 项目结构
```
aiagent/
├── frontend/ # 前端项目Vue 3 + TypeScript
│ ├── src/
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 组件
│ │ ├── router/ # 路由
│ │ ├── stores/ # 状态管理Pinia
│ │ ├── views/ # 页面
│ │ └── App.vue # 根组件
│ ├── package.json # 依赖配置
│ ├── vite.config.ts # Vite配置
│ └── Dockerfile.dev # 开发环境Dockerfile
├── backend/ # 后端项目Python FastAPI
│ ├── app/
│ │ ├── agent_runtime/ # Agent Runtime新增自主 ReAct 循环)
│ │ │ ├── __init__.py # 包导出
│ │ │ ├── schemas.py # Agent 配置 Schema + AgentStep 执行追踪
│ │ │ ├── context.py # 会话上下文(消息历史、迭代追踪)
│ │ │ ├── memory.py # 分层记忆管理器 + LLM 自动压缩总结
│ │ │ ├── tool_manager.py# 工具管理器(包装 ToolRegistry
│ │ │ ├── core.py # AgentRuntime 主循环ReAct 核心)+ 自主学习集成
│ │ │ ├── orchestrator.py# 多 Agent 编排引擎route/sequential/debate/pipeline
│ │ │ └── workflow_integration.py # 工作流桥接
│ │ ├── api/ # API路由
│ │ │ ├── agent_chat.py # Agent 聊天 + 多 Agent 编排 + LLM 调用日志 + SSE 流式
│ │ │ ├── agent_monitoring.py # Agent 监控 API 5 个端点
│ │ │ ├── agent_schedules.py # Agent 定时任务 CRUD API + 手动触发
│ │ │ ├── feishu_bind.py # 飞书账号绑定/解绑 API
│ │ │ └── notifications.py # 通知系统 API
│ │ ├── core/ # 核心模块
│ │ ├── models/ # 数据库模型
│ │ │ ├── agent_llm_log.py # Agent LLM 调用日志模型
│ │ │ ├── agent_learning_pattern.py # Agent 学习模式模型(自主学习)
│ │ │ ├── agent_schedule.py # Agent 定时任务调度模型
│ │ │ ├── notification.py # 通知模型
│ │ │ └── agent_vector_memory.py # Agent 向量记忆表模型
│ │ ├── schemas/ # Pydantic模式
│ │ ├── services/ # 业务逻辑
│ │ │ ├── agent_monitoring_service.py # Agent 监控服务
│ │ │ ├── agent_learning_service.py # 自主学习服务(工具选择优化)
│ │ │ ├── agent_schedule_service.py # 定时任务调度服务
│ │ │ ├── notification_service.py # 通知服务
│ │ │ ├── feishu_app_service.py # 飞书应用消息发送
│ │ │ ├── feishu_notifier.py # 飞书通知器
│ │ │ ├── feishu_ws_handler.py # 飞书 WebSocket 事件处理
│ │ │ ├── orange_app_service.py # 橙子飞书机器人服务
│ │ │ ├── orange_ws_handler.py # 橙子机器人 WS 处理
│ │ │ ├── knowledge_service.py # 知识库 RAG 服务
│ │ │ ├── embedding_service.py # Embedding 生成服务
│ │ │ ├── document_parser.py # 文档解析器
│ │ │ └── text_chunker.py # 文本分块器
│ │ └── main.py # 应用入口
│ ├── alembic/ # 数据库迁移
│ ├── tests/ # 测试
│ ├── requirements.txt # Python依赖
│ ├── Dockerfile.dev # 开发环境Dockerfile
│ └── alembic.ini # Alembic配置
├── docker-compose.dev.yml # 开发环境Docker Compose配置
├── README.md # 项目说明
├── QUICKSTART.md # 快速启动指南
├── 使用指南.md # 用户使用指南
├── 方案-优化版.md # 完整技术方案
├── 开发进度.md # 开发进度跟踪
├── 内置工具列表.md # 内置工具文档
└── 项目核心文档汇总.md # 本文档
```
## 部署指南
### 前置要求
- Node.js 18+ 和 pnpm
- Python 3.11+
- Docker 和 Docker Compose
- MySQL使用腾讯云数据库
- Redis 7+或使用Docker
### 使用 Docker Compose 启动(推荐)
```bash
# 启动所有服务
docker-compose -f docker-compose.dev.yml up -d
# 查看服务状态
docker-compose ps
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
```
### 本地开发部署
#### 后端服务
```bash
cd backend
# 创建虚拟环境
python -m venv venv
source venv/bin/activate # Windows: venv\Scripts\activate
# 安装依赖
pip install -r requirements.txt
# 配置环境变量
cp env.example .env
# 编辑 .env 文件数据库已配置为腾讯云MySQL
# 运行数据库迁移
alembic upgrade head
# 启动开发服务器
uvicorn app.main:app --reload
# 启动 Celery Worker新终端
celery -A app.core.celery_app worker --loglevel=info
```
#### 前端服务
```bash
cd frontend
# 安装依赖
pnpm install
# 启动开发服务器
pnpm dev
```
### 服务访问地址
- **前端(本地开发推荐)**: http://localhost:3001
- **前端Docker方案**: http://localhost:8038
- **后端API**: http://localhost:8037
- **API文档**: http://localhost:8037/docs
- **Redis**: localhost:6379
## API 文档摘要
### 认证API
- `POST /api/v1/auth/register` - 用户注册
- `POST /api/v1/auth/login` - 用户登录获取JWT Token
- `GET /api/v1/auth/me` - 获取当前用户信息
### 工作流API
- `GET /api/v1/workflows` - 获取工作流列表
- `POST /api/v1/workflows` - 创建工作流
- `GET /api/v1/workflows/{id}` - 获取工作流详情
- `PUT /api/v1/workflows/{id}` - 更新工作流
- `DELETE /api/v1/workflows/{id}` - 删除工作流
- `POST /api/v1/workflows/{id}/execute` - 执行工作流
### 执行管理API
- `GET /api/v1/executions` - 获取执行记录列表
- `GET /api/v1/executions/{id}` - 获取执行详情
- `GET /api/v1/executions/{id}/status` - 获取执行状态
### 数据源API
- `GET /api/v1/data-sources` - 获取数据源列表
- `POST /api/v1/data-sources` - 创建数据源
- `POST /api/v1/data-sources/{id}/test` - 测试数据源连接
- `POST /api/v1/data-sources/{id}/query` - 执行数据查询
### Agent 与编排 API新增
- `POST /api/v1/agent-chat/bare` - 默认 Agent 直接对话(无需预配置)
- `POST /api/v1/agent-chat/{agent_id}` - 与指定 Agent 对话(复用工作流配置)
- `POST /api/v1/agent-chat/orchestrate` - 多 Agent 编排route/sequential/debate 三种模式)
- 请求体: `{ message, mode, agents[] }` 每个 Agent 可独立配置 system_prompt/model/temperature/tools
- 返回: `{ final_answer, steps[], agent_results[] }`
### Agent 监控 API新增
- `GET /api/v1/agent-monitoring/overview` - Agent 概览统计Agent 数、对话/LLM/工具调用次数、Token 用量)
- `GET /api/v1/agent-monitoring/llm-calls?days=7&limit=50` - LLM 调用记录列表模型、tokens、耗时、状态
- `GET /api/v1/agent-monitoring/agents-stats?days=7` - 各 Agent 用量排行调用次数、Token、延迟
- `GET /api/v1/agent-monitoring/tool-usage?days=7` - 工具调用频次统计
- `GET /api/v1/agent-monitoring/daily-trend?days=7` - 每日 LLM 调用趋势
### WebSocket API
- `ws://localhost:8037/ws/execution/{execution_id}` - 执行状态实时推送
完整API文档请访问http://localhost:8037/docs
## 用户指南摘要
### 快速开始使用
1. **登录系统**:访问 http://localhost:8038注册并登录
2. **创建工作流**:点击"创建工作流"按钮进入可视化编辑器
3. **拖拽节点**:从左侧工具箱拖拽节点到画布
4. **连接节点**:点击节点的连接点并拖拽到目标节点
5. **配置节点**:点击节点,在右侧配置面板设置参数
6. **保存工作流**:点击工具栏的"保存"按钮
7. **执行工作流**:点击工具栏的"运行"按钮
### 节点类型说明
- **开始节点**:工作流起始节点
- **输入节点**:数据输入节点,可配置输入参数
- **LLM节点**AI 模型处理节点,支持 OpenAI、DeepSeek 等DeepSeek 推荐选用 **`deepseek-v4-flash`** 或 **`deepseek-v4-pro`**(旧名 `deepseek-chat` / `deepseek-reasoner` 仍可兼容使用,计划 **2026/07/24** 弃用)
- **条件节点**:条件判断节点,支持表达式配置
- **转换节点**数据转换节点支持JSONPath、模板等
- **输出节点**:数据输出节点,可配置输出格式
- **结束节点**:工作流结束节点
### 工具调用功能
在LLM节点中启用工具调用AI可以调用内置工具处理任务
1. 选择LLM节点打开"工具"标签页
2. 启用"启用工具调用"开关
3. 选择需要的工具(可多选)
4. 保存配置
## 开发指南
### 开发规范
- **前端代码规范**ESLint + Prettier
- **后端代码规范**PEP 8 + Black
- **Git提交规范**Conventional Commits
- **代码审查**必须通过Code Review
### 测试指南
```bash
# 前端测试
cd frontend
pnpm test
# 后端测试
cd backend
pytest
```
### 数据库迁移
```bash
cd backend
# 创建新的迁移
alembic revision --autogenerate -m "描述"
# 应用迁移
alembic upgrade head
# 回退迁移
alembic downgrade -1
```
### 添加新节点类型
1. 后端:在 `backend/app/services/workflow_engine.py``execute_node` 中增加节点类型分支;如需校验,可扩展 `workflow_validator.py`
2. 前端:在 `frontend/src/components/nodes/`(或工作流编辑器关联组件)中增加节点展示与配置
3. 前端:在 `frontend/src/stores/workflowStore.ts` 等处注册节点类型与默认数据
## 测试指南
### 单元测试
- 使用 pytest 框架
- 测试核心功能和工作流引擎
- 测试API端点
### 集成测试
- 测试数据库操作
- 测试外部API集成
- 测试工作流执行
### 端到端测试
- 测试用户界面交互
- 测试完整工作流执行
- 测试跨浏览器兼容性
## 内置工具列表
平台提供10个内置工具详细功能如下
| 工具名称 | 功能描述 | 主要参数 |
|---------|---------|---------|
| http_request | 发送HTTP请求 | url, method, headers, body |
| file_read | 读取文件内容 | file_path |
| file_write | 写入文件内容 | file_path, content, mode |
| text_analyze | 分析文本内容 | text, operation |
| datetime | 处理日期时间 | operation, format |
| math_calculate | 执行数学计算 | expression |
| system_info | 获取系统信息 | 无 |
| json_process | 处理JSON数据 | json_string, operation |
| database_query | 只读数据库查询 | datasource/query(按工具schema) |
| adb_log | 设备日志读取 | command/serial/lines(按工具schema) |
> 说明:`http_request` 已加入响应体截断与头部精简机制(支持 `max_body_chars`),用于避免大页面导致 LLM 上下文超限。
详细使用示例请参考:[内置工具列表.md](./内置工具列表.md)
## 开发进度和路线图
### 当前完成度
- **第一阶段MVP**: 100% ✅
- **第二阶段核心功能**: 100% ✅
- **第三阶段核心功能**: 100% ✅
- **第四-七阶段功能**: 100% ✅
- **自主 Agent Runtime**: 100% ✅2026-04 新增)
- **多 Agent 编排**: 100% ✅2026-05 新增)
- **Agent 监控 Dashboard**: 100% ✅2026-05 新增)
- **SSE 流式输出**: 100% ✅2026-05 新增)
- **向量记忆 + 知识库 RAG**: 100% ✅2026-05 新增)
- **工具市场**: 100% ✅2026-05 新增)
- **工作流预算接入**: 100% ✅2026-05 新增)
- **Agent 自主学习**: 100% ✅2026-05 新增)
- **Agent 定时任务系统**: 100% ✅2026-05 新增)
- **飞书通知与机器人对话**: 100% ✅2026-05 新增)
- **整体项目**: 约 99.9%
### 已完成核心功能
1. **完整的用户认证系统** - 注册、登录、JWT认证
2. **工作流CRUD** - 创建、读取、更新、删除工作流
3. **工作流执行引擎** - DAG构建、拓扑排序、节点执行
4. **可视化编辑器** - 拖拽节点、连线、配置面板
5. **异步任务处理** - Celery集成支持长时间运行的任务
6. **多模型支持** - OpenAI、DeepSeek 等DeepSeek 主推 `deepseek-v4-flash` / `deepseek-v4-pro`
7. **内置工具调用** - 10 个内置工具支持
8. **实时状态推送** - WebSocket实时推送执行状态
9. **批量Agent场景生成** - 教育与政务/媒体场景批量创建脚本
10. **Windows运维文档统一** - 启停/重启流程合并为单一权威文档
11. **自主 AI Agent 运行时** - 新增 `agent_runtime` 模块(~1020 行),实现 ReAct 自主循环、工具调用、分层记忆管理
12. **Agent 独立对话** - `POST /api/v1/agent-chat/bare``/{agent_id}` API前端 AgentChat.vue 页面
13. **工作流 Agent 节点** - 工作流引擎新增 `agent` 节点类型Agent 可嵌入 DAG 执行
14. **执行追踪与思考链** - 后端 steps 记录每步迭代,前端可展开显示思考链
15. **记忆压缩总结** - LLM 自动提取用户画像/关键事实/话题,去重后存入长期记忆
16. **Agent 配置页面** - AgentConfig.vue 可视化编辑 System Prompt / 模型 / Temperature / 工具
17. **多 Agent 编排** - AgentOrchestrator 三种模式route/sequential/debate前端编排 UI 支持模式切换和动态 Agent 编辑
18. **Agent 监控 Dashboard** - 实时 LLM 调用埋点AgentLLMLog 表、Agent 用量排行、Token 统计、工具调用频次、日趋势图
19. **SSE 流式输出** - Agent 思考过程实时推送到前端
20. **向量记忆** - Embedding API + 余弦相似度 Top-K 语义检索
21. **知识库 RAG** - 文件上传 → 5 种格式解析 → 分块 → 向量化 → 检索增强
22. **工具市场** - HTTP/Code 工具 CRUD + 沙箱测试 + 分类浏览
23. **工作流预算接入** - Agent LLM/工具调用计入 WorkflowEngine 全局预算
24. **Agent 自主学习** - 从历史执行中自动优化工具选择策略AgentLearningPattern
25. **Agent 定时任务系统** - cron 表达式定时触发 Agent 执行,集成 Celery Beat
26. **飞书通知与机器人对话** - 通知系统、飞书定时任务推送、橙子飞书机器人
### 近期规划
1. **多租户支持** - 租户模型、数据隔离、资源配额管理
2. **插件系统** - 插件注册机制、自定义节点插件开发框架
3. **性能优化** - 工作流执行性能优化、前端性能优化
4. **用户体验优化** - 工作流编辑器优化、Agent使用体验优化
详细开发进度请参考:[开发进度.md](./开发进度.md)
## 常见问题
### 1. 数据库连接失败
- 检查MySQL数据库是否可访问腾讯云数据库
- 检查数据库连接信息是否正确(.env 文件)
- 检查网络连接是否正常
### 2. Redis 连接失败
- 检查Redis是否正在运行
- 检查Redis URL是否正确
### 3. 前端无法连接后端
- 检查后端服务是否正在运行
- 检查前端配置的API URL是否正确vite.config.ts
- 检查CORS配置是否正确
### 4. Celery 任务不执行
- 检查Celery Worker是否正在运行
- 检查Redis连接是否正常
- 检查任务是否正确注册
### 5. 工作流执行失败
- 检查节点配置是否正确
- 检查LLM API密钥是否有效
- 查看执行日志获取详细错误信息
## 联系和支持
- **API文档**http://localhost:8037/docs
- **前端服务(本地开发)**http://localhost:3001
- **前端服务Docker**http://localhost:8038
- **问题反馈**:查看项目文档或联系开发团队
## 关键文档索引(建议)
- Windows 启停唯一文档:[`(红头)Windows服务器启动与重启唯一指南.md`](./(红头)Windows服务器启动与重启唯一指南.md)
- 上传图片与OCR实现[`(红头)上传图片和识别的实现文档.md`](./(红头)上传图片和识别的实现文档.md)
- 教育行业批量Agent脚本`backend/scripts/create_education_agents_batch.py`
- 政务/媒体批量Agent脚本`backend/scripts/create_gov_media_agents_batch.py`
- 企业场景批量Agent脚本`backend/scripts/create_enterprise_scenario_agents.py`
- 自主 AI Agent 改造完成情况:[`自主AI Agent改造完成情况.md`](./自主AI%20Agent改造完成情况.md)
- Agent Runtime 源码入口:`backend/app/agent_runtime/core.py`
- Agent 聊天 API 路由:`backend/app/api/agent_chat.py`
- Agent 聊天前端页面:`frontend/src/views/AgentChat.vue`
- Agent 配置页面:`frontend/src/views/AgentConfig.vue`
- 多 Agent 编排引擎:`backend/app/agent_runtime/orchestrator.py`
- Agent 监控 Dashboard`frontend/src/views/AgentDashboard.vue`
- Agent LLM 调用日志模型:`backend/app/models/agent_llm_log.py`
---
**最后更新**: 2026-05-02
**文档版本**: 1.7
*本文档基于项目现有文档整理生成,涵盖项目核心信息。详细技术方案请参考[方案-优化版.md](./方案-优化版.md)。DeepSeek 模型名与 Base URL 以官方文档为准,变更时请同步修订本节。*

View File

@@ -0,0 +1,213 @@
---
从工作流引擎到自主 AI Agent改造方案
核心思路:不要重构,要"寄生式"生长
现有引擎 5788 行WorkflowEditor.vue 9140 行——不要重构它们。而是寄生在已有的 ToolRegistry、LLM Service、Memory Service
之上,新建一个独立的 Agent Runtime。
---
第一步:构建 Agent Runtime 内核1 周)
新建 backend/app/agent_runtime/ 包:
backend/app/agent_runtime/
├── __init__.py
├── core.py # Agent 主循环
├── context.py # Agent 上下文(会话状态)
├── memory.py # 记忆管理(连接已有记忆服务)
├── tool_manager.py # 工具选择与执行(连接已有 ToolRegistry
└── schemas.py # Agent 配置 Schema
核心循环 (core.py)
class AgentRuntime:
"""
自主 Agent 循环ReAct
loop:
1. LLM 思考 → 返回文本或工具调用
2. 如果返回文本 → 结束,返回最终回答
3. 如果调用工具 → 执行工具 → 结果追加到 messages → 回到 1
4. 超过 max_iterations → 强制结束
"""
async def run(self, user_input: str) -> AgentResult:
while self.iteration < self.max_iterations:
response = await self.llm.chat(messages, tools)
if response.has_tool_calls:
for tool_call in response.tool_calls:
result = tool_registry.execute(tool_call)
messages.append(tool_result_message)
else:
return AgentResult(text=response.content)
return AgentResult(text="已达最大迭代次数", truncated=True)
关键设计点:
┌────────────┬─────────────────────────────────────────────────┬───────────────────────┐
│ 组件 │ 复用什么 │ 新写什么 │
├────────────┼─────────────────────────────────────────────────┼───────────────────────┤
│ LLM 调用 │ llm_service.call_openai_with_tools() 已有 ReAct │ 不用写 │
├────────────┼─────────────────────────────────────────────────┼───────────────────────┤
│ 工具执行 │ ToolRegistry.get_tool_function() │ 不用写 │
├────────────┼─────────────────────────────────────────────────┼───────────────────────┤
│ 记忆存储 │ persistent_memory_service.py │ 记忆检索 + 自动压缩 │
├────────────┼─────────────────────────────────────────────────┼───────────────────────┤
│ 系统提示词 │ — │ Agent 人格/指令系统 │
├────────────┼─────────────────────────────────────────────────┼───────────────────────┤
│ 会话管理 │ — │ 状态保持 + 多轮上下文 │
└────────────┴─────────────────────────────────────────────────┴───────────────────────┘
工作量:约 300 行代码。已有轮子都在,只要串起来。
---
第二步:让 Agent Runtime 能用上已有工具3 天)
现有 ToolRegistry 有 20+ 内置工具,但只通过 llm_service.py 的 _execute_tool 私有方法调用。需要:
# 新增 agent_runtime/tool_manager.py
class AgentToolManager:
def __init__(self, tool_registry):
self.registry = tool_registry
def get_tools_for_llm(self) -> list:
# 把 ToolRegistry 的 schema 转为 OpenAI tool format
return self.registry.get_all_tool_schemas()
async def execute(self, name: str, args: dict) -> str:
func = self.registry.get_tool_function(name)
if func is None:
return f"错误:工具 {name} 不存在"
result = await func(**args) # 已有,直接复用
return str(result)
注意:现有 _execute_tool 在 llm_service.py 中,需要提取成公共方法或让 ToolManager 直接调用已有实现。
---
第三步接入记忆系统3 天)
现有记忆系统已经可以读写用户画像和对话历史persistent_memory_service.py但只在 Cache 节点中被动使用。
需要:
# agent_runtime/memory.py
class AgentMemory:
"""
分层记忆:
- 工作记忆:当前会话的 messages
- 长期记忆:从 DB/Redis 加载的历史画像 + 重要事实
- 工具记忆:哪些工具调用成功/失败(辅助 LLM 决策)
"""
async def load_context(self, user_id: str) -> str:
# 从 persistent_memory_service 加载用户画像
profile = get_user_profile(user_id)
# 从数据库加载最近对话摘要
history = get_conversation_summary(user_id)
return f"用户画像:{profile}\n历史记录{history}"
async def save(self, messages: list):
# 自动总结关键信息写入长期记忆
summary = await self.llm.summarize(messages)
save_user_profile(user_id, summary)
---
第四步:在现有工作流中启用 Agent 节点3 天)
在 workflow_engine.py 的 execute_node 中新增 agent 类型:
# 现有 5788 行引擎只需加一个分支
elif node_type == 'agent':
# 初始化 Agent Runtime
runtime = AgentRuntime(
system_prompt=node_data.get('system_prompt'),
tools=node_data.get('tools', []), # 可选,默认全部
memory_enabled=node_data.get('memory', True),
)
result = await runtime.run(input_data.get('query', ''))
这样不用动现有任何节点,用户可以在工作流中拖一个 Agent 节点,它就能:
1. 自动 ReAct 循环
2. 调用任意内置工具
3. 使用长期记忆
4. 自我纠错
---
第五步:独立 Agent 运行模式1 周)
不依赖工作流 DAG可以直接启动 Agent
POST /api/v1/agents/{id}/chat
{"message": "帮我写一个Python脚本读取日志"}
后端:
runtime = AgentRuntime(agent_config)
result = await runtime.run(message)
return result
前端可以加一个聊天界面(类似 ChatGPT
- 已有 AgentChatPreview.vue 可以改造
- 复用现有 Agents.vue 的列表和配置
---
第六步多智能体编排2 周)
# agent_runtime/orchestrator.py
class AgentOrchestrator:
"""
多 Agent 协作模式:
1. 路由模式:用户问题 → Router Agent → 分发到子 Agent
2. 顺序模式Agent A 输出 → Agent B 输入
3. 辩论模式:多个 Agent 独立回答 → 汇总
"""
async def route(self, question: str) -> str:
# Router Agent 判断应该用哪个 Specialist Agent
specialist = await self.router_agent.choose(question)
return await specialist.run(question)
---
整体路线图
┌──────┬────────────────────────┬──────┬────────────┐
│ 阶段 │ 内容 │ 时间 │ 前提 │
├──────┼────────────────────────┼──────┼────────────┤
│ P0 │ Agent Runtime 内核 │ 1 周 │ 无,纯新增 │
├──────┼────────────────────────┼──────┼────────────┤
│ P0 │ 工具接入 │ 3 天 │ P0 完成 │
├──────┼────────────────────────┼──────┼────────────┤
│ P1 │ 记忆接入 │ 3 天 │ P0 完成 │
├──────┼────────────────────────┼──────┼────────────┤
│ P1 │ Agent 节点(工作流内) │ 3 天 │ P0+P1 完成 │
├──────┼────────────────────────┼──────┼────────────┤
│ P2 │ 独立 Agent 聊天模式 │ 1 周 │ P0+P1 完成 │
├──────┼────────────────────────┼──────┼────────────┤
│ P3 │ 多 Agent 编排 │ 2 周 │ P0-P2 完成 │
├──────┼────────────────────────┼──────┼────────────┤
│ P3 │ Agent 工作台/监控 │ 1 周 │ P0-P2 完成 │
└──────┴────────────────────────┴──────┴────────────┘
---
为什么这个方案可行
你代码库中 关键能力已经就绪:
┌─────────────────────────┬─────────────────────────────────────┬──────────────────┬────────────────┐
│ 已有能力 │ 位置 │ 当前用途 │ 新计划用途 │
├─────────────────────────┼─────────────────────────────────────┼──────────────────┼────────────────┤
│ ReAct 循环 │ llm_service.py:646 │ LLM 节点单次调用 │ Agent 核心循环 │
├─────────────────────────┼─────────────────────────────────────┼──────────────────┼────────────────┤
│ ToolRegistry + 20+ 工具 │ tool_registry.py + builtin_tools.py │ 工作流内使用 │ Agent 自主调用 │
├─────────────────────────┼─────────────────────────────────────┼──────────────────┼────────────────┤
│ 持久化记忆 │ persistent_memory_service.py │ Cache 节点 │ 长期记忆层 │
├─────────────────────────┼─────────────────────────────────────┼──────────────────┼────────────────┤
│ 对话历史注入 │ workflow_engine.py:986 │ LLM 节点 │ Agent 上下文 │
├─────────────────────────┼─────────────────────────────────────┼──────────────────┼────────────────┤
│ Agent 配置 │ models/agent.py │ 工作流包装 │ Agent 本体配置 │
└─────────────────────────┴─────────────────────────────────────┴──────────────────┴────────────────┘
新增代码控制在 1500 行以内,不动现有 5788 行的引擎和 9140 行的编辑器。
需要我从第一步的 Agent Runtime 核心代码开始写吗?

View File

@@ -0,0 +1,500 @@
# AIAgent 低代码智能体平台 — 项目架构文档
## 1. 概述
**AIAgent** 是一个低代码智能体 (Agent) 搭建与工作流编排平台,支持通过可视化拖拽方式配置工作流节点,集成多种 AI 模型、数据源、消息中间件、办公协同工具,实现复杂业务流程的自动化执行。
- **前端**: Vue 3 + TypeScript + Vite + Pinia + Element Plus + Vue Flow
- **后端**: Python FastAPI + SQLAlchemy + Celery + MySQL + Redis
- **异步任务**: Celery (Redis 作为 Broker)
- **AI 模型**: 支持 OpenAI、DeepSeek、Anthropic 等多种大模型
---
## 2. 目录结构
```
aiagent/
├── frontend/ # Vue 3 前端项目
│ ├── src/
│ │ ├── api/index.ts # Axios 封装 + 请求/响应拦截器
│ │ ├── router/index.ts # Vue Router 路由配置
│ │ ├── stores/ # Pinia 状态管理
│ │ │ ├── index.ts # Store 入口
│ │ │ ├── user.ts # 用户认证 Store
│ │ │ ├── workflow.ts # 工作流 CRUD Store
│ │ │ ├── agent.ts # Agent CRUD Store
│ │ │ ├── execution.ts # 执行记录 Store
│ │ │ └── modelConfig.ts # 模型配置 Store
│ │ ├── views/ # 页面视图组件
│ │ │ ├── Login.vue # 登录页
│ │ │ ├── Home.vue # 首页
│ │ │ ├── MainConsole.vue # 主控制台
│ │ │ ├── WorkflowDesigner.vue # 工作流设计器
│ │ │ ├── Agents.vue # Agent 管理
│ │ │ ├── Executions.vue # 执行记录列表
│ │ │ ├── ExecutionDetail.vue # 执行详情
│ │ │ ├── ExecutionBoard.vue # 执行看板
│ │ │ ├── DataSources.vue # 数据源管理
│ │ │ ├── ModelConfigs.vue # 模型配置管理
│ │ │ ├── TemplateMarket.vue # 模板市场
│ │ │ ├── NodeTemplates.vue # 节点模板
│ │ │ ├── Monitoring.vue # 监控面板
│ │ │ ├── AlertRules.vue # 告警规则
│ │ │ └── PermissionManagement.vue # 权限管理
│ │ ├── components/
│ │ │ ├── MainLayout.vue # 主布局组件
│ │ │ ├── AgentChatPreview.vue # Agent 聊天预览
│ │ │ └── WorkflowEditor/ # 工作流编辑器核心组件
│ │ │ ├── WorkflowEditor.vue # 编辑器主组件
│ │ │ ├── NodeTypes.ts # 自定义节点类型定义
│ │ │ └── NodeExecutionDetail.vue # 节点执行详情弹窗
│ │ ├── types/index.ts # TypeScript 类型定义
│ │ └── main.ts # 应用入口
│ ├── vite.config.ts # Vite 构建配置
│ └── package.json
├── backend/ # Python FastAPI 后端
│ ├── app/
│ │ ├── main.py # FastAPI 应用入口
│ │ ├── core/
│ │ │ ├── config.py # 配置管理 (Pydantic Settings)
│ │ │ ├── database.py # 数据库引擎 + 会话管理
│ │ │ ├── celery_app.py # Celery 异步任务应用
│ │ │ ├── security.py # 安全/JWT 工具
│ │ │ ├── exceptions.py # 自定义异常
│ │ │ ├── error_handler.py # 全局异常处理器
│ │ │ ├── redis_client.py # Redis 客户端
│ │ │ └── tools_bootstrap.py # 内置工具启动注册
│ │ ├── models/ # SQLAlchemy 数据模型
│ │ │ ├── agent.py # Agent (智能体)
│ │ │ ├── workflow.py # Workflow (工作流)
│ │ │ ├── workflow_version.py # 工作流版本
│ │ │ ├── workflow_template.py # 工作流模板
│ │ │ ├── execution.py # 执行记录
│ │ │ ├── execution_log.py # 执行日志
│ │ │ ├── model_config.py # 模型配置 (加密存储)
│ │ │ ├── tool.py # 工具定义
│ │ │ ├── user.py # 用户
│ │ │ ├── permission.py # 权限
│ │ │ ├── alert_rule.py # 告警规则
│ │ │ ├── data_source.py # 数据源
│ │ │ ├── node_template.py # 节点模板
│ │ │ └── persistent_user_memory.py # 持久化用户记忆
│ │ ├── api/ # RESTful API 路由
│ │ │ ├── auth.py # 用户认证 (JWT)
│ │ │ ├── workflows.py # 工作流 CRUD
│ │ │ ├── agents.py # Agent CRUD
│ │ │ ├── executions.py # 执行管理
│ │ │ ├── execution_logs.py # 执行日志
│ │ │ ├── tools.py # 工具管理
│ │ │ ├── model_configs.py # 模型配置
│ │ │ ├── data_sources.py # 数据源
│ │ │ ├── uploads.py # 文件上传
│ │ │ ├── websocket.py # WebSocket 实时推送
│ │ │ ├── webhooks.py # Webhook 接收
│ │ │ ├── template_market.py # 模板市场
│ │ │ ├── platform_templates.py # 平台模板
│ │ │ ├── node_templates.py # 节点模板
│ │ │ ├── node_test.py # 节点测试
│ │ │ ├── batch_operations.py # 批量操作
│ │ │ ├── collaboration.py # 协作
│ │ │ ├── permissions.py # 权限管理
│ │ │ ├── monitoring.py # 监控
│ │ │ ├── alert_rules.py # 告警规则
│ │ │ └── batch_operations.py # 批量操作
│ │ ├── services/ # 业务逻辑层
│ │ │ ├── workflow_engine.py # 工作流执行引擎 (核心)
│ │ │ ├── workflow_validator.py # 工作流校验器
│ │ │ ├── workflow_templates.py # 工作流模板
│ │ │ ├── llm_service.py # LLM 调用服务
│ │ │ ├── tool_registry.py # 工具注册表
│ │ │ ├── builtin_tools.py # 内置工具实现
│ │ │ ├── condition_parser.py # 条件表达式解析
│ │ │ ├── data_transformer.py # 数据转换
│ │ │ ├── execution_logger.py # 执行日志记录
│ │ │ ├── execution_budget.py # 执行预算控制
│ │ │ ├── encryption_service.py # 加密服务
│ │ │ ├── persistent_memory_service.py # 持久化记忆
│ │ │ ├── permission_service.py # 权限检查
│ │ │ ├── monitoring_service.py # 监控服务
│ │ │ ├── alert_service.py # 告警服务
│ │ │ ├── data_source_connector.py # 数据源连接器
│ │ │ ├── scene_templates.py # 场景模板
│ │ │ └── scenario_dsl.py # 场景 DSL 解析
│ │ ├── tasks/ # Celery 异步任务
│ │ │ ├── workflow_tasks.py # 工作流执行任务
│ │ │ └── agent_tasks.py # Agent 执行任务
│ │ ├── websocket/ # WebSocket 管理
│ │ │ ├── manager.py # WS 连接管理
│ │ │ └── collaboration_manager.py # 协作 WS 管理
│ │ └── utils/ # 工具函数
│ ├── alembic/ # 数据库迁移
│ ├── scripts/ # 脚本工具
│ └── requirements.txt
├── docker-compose.dev.yml # Docker 开发环境配置
├── start_windows.cmd / .ps1 # Windows 启动脚本
├── start.sh / stop.sh # Linux 启动/停止脚本
└── *.md # 项目文档/方案/报告
```
---
## 3. 前端架构
### 3.1 技术栈
| 组件 | 技术选型 | 用途 |
|------|---------|------|
| 框架 | Vue 3 (Composition API) | UI 框架 |
| 语言 | TypeScript | 类型安全 |
| 构建 | Vite | 开发/构建 |
| 状态管理 | Pinia | 全局状态 |
| 路由 | Vue Router 4 | 前端路由 |
| UI 库 | Element Plus | 组件库 |
| 工作流 | Vue Flow | 可视化流程图编辑 |
| HTTP | Axios | API 请求 |
| WebSocket | 原生 WebSocket | 实时推送 |
### 3.2 路由设计
| 路径 | 视图 | 说明 |
|------|------|------|
| `/login` | Login.vue | 登录页 |
| `/` | Home.vue | 首页仪表盘 |
| `/console` | MainConsole.vue | 主控制台 |
| `/workflow/:id?` | WorkflowDesigner.vue | 工作流编辑器 (创建/编辑) |
| `/agents` | Agents.vue | Agent 管理列表 |
| `/agents/:id/design` | WorkflowDesigner.vue | Agent 工作流设计 |
| `/executions` | Executions.vue | 执行记录列表 |
| `/executions/:id` | ExecutionDetail.vue | 执行详情 |
| `/execution-board` | ExecutionBoard.vue | 执行看板 |
| `/data-sources` | DataSources.vue | 数据源管理 |
| `/model-configs` | ModelConfigs.vue | 模型配置 |
| `/template-market` | TemplateMarket.vue | 模板市场 |
| `/monitoring` | Monitoring.vue | 监控面板 |
| `/alert-rules` | AlertRules.vue | 告警规则 |
| `/node-templates` | NodeTemplates.vue | 节点模板 |
| `/permissions` | PermissionManagement.vue | 权限管理 (需 admin) |
路由守卫逻辑:除登录页外均需 JWT 认证,权限页面额外检查 `admin` 角色。
### 3.3 状态管理 (Pinia Stores)
- **`user`** — 用户认证、Token 管理、用户信息
- **`workflow`** — 工作流列表/详情 CRUD、执行操作
- **`agent`** — Agent 列表/详情 CRUD、场景模板创建
- **`execution`** — 执行记录跟踪
- **`modelConfig`** — 模型配置 (API Key 管理)
### 3.4 工作流编辑器 (WorkflowEditor)
可视化拖拽编辑器,基于 **Vue Flow** (Vue 版的 React Flow):
- 自定义节点类型(通过 `NodeTypes.ts` 中的 `defineComponent` 定义)
- 每个节点有执行状态动画executing/executed/failed 三态指示器)
- 支持:开始/LLM/条件/结束/默认 五种预制节点样式
- 工具栏:保存、运行、清空、对齐、自动布局、泳道、缩放
- 节点属性面板:支持配置 Prompt、模型选择、API Key、变量引用等
### 3.5 API 通信层
- Axios 封装 `api/index.ts`
- 自动 Token 注入 (请求拦截器)
- 统一错误处理 (响应拦截器): 401→重定向登录, 403→权限提示, 404/422/500→友好错误消息
- 开发模式通过 Vite 代理将 `/api` 转发到后端 8037 端口
- 生产环境自动探测后端地址
---
## 4. 后端架构
### 4.1 技术栈
| 组件 | 技术选型 | 用途 |
|------|---------|------|
| 框架 | FastAPI | Web 框架 |
| 数据库 ORM | SQLAlchemy + PyMySQL | MySQL 操作 |
| 数据库 | MySQL (腾讯云) | 持久化存储 |
| 缓存/队列 | Redis | Celery Broker + 缓存 |
| 异步任务 | Celery | 工作流/Agent 异步执行 |
| AI SDK | OpenAI Python SDK | 大模型调用 |
| 迁移 | Alembic | 数据库版本管理 |
| 加密 | cryptography (Fernet) | API Key 加密存储 |
### 4.2 启动流程
1. FastAPI 应用初始化
2. 配置 CORS 中间件
3. 注册全局异常处理器
4. 注册请求日志中间件
5. **`startup` 事件**: 初始化数据库表 + 注册内置工具
6. 注册 20 个 API 路由模块
### 4.3 API 设计
所有业务 API 以 `/api/v1/` 为前缀,通过 JWT Bearer Token 认证(`get_current_user` 依赖注入)。
主要路由模块:
| 模块 | 前缀 | 主要功能 |
|------|------|---------|
| `auth` | `/api/v1/auth` | 注册、登录、用户信息 |
| `workflows` | `/api/v1/workflows` | 工作流 CRUD + 验证 + 模板 + 版本管理 |
| `agents` | `/api/v1/agents` | Agent CRUD + 场景模板创建 + 执行 |
| `executions` | `/api/v1/executions` | 执行记录 CRUD、启停、恢复 |
| `execution_logs` | `/api/v1/execution-logs` | 执行日志查询/统计 |
| `tools` | `/api/v1/tools` | 工具注册和查询 |
| `model_configs` | `/api/v1/model-configs` | 模型配置管理 (加密存储) |
| `data_sources` | `/api/v1/data-sources` | 数据源 CRUD + 连接测试 |
| `websocket` | `/api/v1/ws` | WebSocket 实时推送 |
| `webhooks` | `/api/v1/webhooks` | 外部 Webhook 接收 |
| `template_market` | `/api/v1/template-market` | 模板市场 |
| `node_test` | `/api/v1/node-test` | 节点独立测试 |
| `monitoring` | `/api/v1/monitoring` | 系统监控 |
| `alert_rules` | `/api/v1/alert-rules` | 告警规则 CRUD |
| `permissions` | `/api/v1/permissions` | RBAC 权限管理 |
| `collaboration` | `/api/v1/collaboration` | 多用户协作 |
| `batch_operations` | `/api/v1/batch-operations` | 批量操作 |
| `uploads` | `/api/v1/uploads` | 文件上传 |
### 4.4 数据库模型
| 表 | 模型 | 说明 |
|----|------|------|
| `users` | User | 用户账户,含角色字段 |
| `workflows` | Workflow | 工作流定义 (nodes+edges JSON) |
| `workflow_versions` | WorkflowVersion | 版本历史,支持回滚 |
| `workflow_templates` | WorkflowTemplate | 预制工作流模板 |
| `agents` | Agent | 智能体定义 (workflow_config JSON) |
| `executions` | Execution | 执行记录,支持暂停/恢复 |
| `execution_logs` | ExecutionLog | 节点级执行日志 |
| `model_configs` | ModelConfig | 模型配置 (API Key 加密) |
| `tools` | Tool | 工具定义 |
| `data_sources` | DataSource | 外部数据源连接配置 |
| `permissions` | Permission | RBAC 权限条目 |
| `alert_rules` | AlertRule | 监控告警规则 |
| `node_templates` | NodeTemplate | 节点配置模板 |
| `persistent_user_memories` | PersistentUserMemory | 跨会话用户记忆 |
### 4.5 核心服务详解
#### 4.5.1 工作流执行引擎 (`workflow_engine.py`)
这是项目最核心的模块,约 5700+ 行代码。核心逻辑:
**初始化**:
- 解析 nodes/edges按 ID 建立索引
- 设置执行预算步数上限、LLM 调用上限、工具调用上限)
**执行流程 (`execute` 方法)**:
1. 若包含 `scenario_dsl`,先进行 DSL 校验和标准化
2. 按**拓扑排序**动态构建执行图
3. 每轮循环选择"所有前驱已执行"的下一个节点
4. 调用 `execute_node` 执行单个节点
5. 根据节点类型处理结果(条件分支裁剪、循环控制等)
6. 遇到审批节点时挂起(`WorkflowPaused` 异常),保存快照
7. 支持断点恢复(`resume_snapshot`
**执行预算熔断**:
- 单执行最大步数 (默认 2000) → 防止死循环
- 最大 LLM 调用次数 (默认 200) → 防止失控扣费
- 最大工具调用次数 (默认 500) → 防止工具滥用
**节点输入数据解析**:
- 支持 `{{variable}}``{{variable.path}}` 模板变量
- 支持嵌套路径解析(如 `memory.conversation_history`
- 支持 `user_input` 等别名智能映射
#### 4.5.2 节点类型 (30+ 种)
| 分类 | 节点类型 | 功能 |
|------|---------|------|
| 控制流 | `start`, `end/output`, `condition`, `switch`, `merge`, `loop/foreach`, `wait` | 流程编排 |
| AI 能力 | `llm`, `template`, `code` | 智能处理 |
| 数据 | `data/transform`, `json`, `text`, `csv`, `excel`, `cache`, `vector_db` | 数据操作 |
| 存储 | `database/db`, `file/file_operation`, `object_storage`, `pdf`, `image` | 文件/DB 操作 |
| 网络 | `http/request`, `webhook`, `oauth` | HTTP 请求 |
| 消息 | `email/mail`, `message_queue/mq/rabbitmq/kafka`, `sms` | 消息通知 |
| 协同 | `slack`, `dingtalk/dingding`, `wechat_work/wecom` | 办公集成 |
| 高级 | `subworkflow/invoke_agent`, `batch`, `validator`, `approval`, `error_handler`, `log`, `schedule/delay/timer` | 高级编排 |
其中 **LLM 节点**为核心 AI 节点:
- 通过 OpenAI 兼容 SDK 调用模型
- 支持从 `model_config_id` 加载加密凭据
- 支持系统提示词 + 用户提示词模板变量注入
- 支持工具调用 (Function Calling)
- 支持 DeepSeek DSML 协议解析
- 支持多轮对话历史注入
- 支持用户画像提取与持久化记忆
#### 4.5.3 LLM 服务 (`llm_service.py`)
- 支持 OpenAI / DeepSeek / 自定义 OpenAI 兼容接口
- 处理流式响应和工具调用
- DeepSeek 特有的 `reasoning_content` 思考链处理
- 支持 DSML 协议参数提取和工具调用
- 超时重试:可重试的网络错误自动重试
#### 4.5.4 工具注册表 (`tool_registry.py`)
- 内置工具file_read, file_write, system_info, datetime 等)
- HTTP 工具(调用外部 API
- 工作流工具(嵌套调用其他工作流)
- 支持通过数据库动态加载自定义工具
#### 4.5.5 模型配置 (`model_config.py`)
- API Key 使用 Fernet 对称加密存储于数据库
- 执行时按需解密注入 LLM 节点
- 校验归属:仅创建者可调用(白名单控制)
### 4.6 Celery 异步架构
```
用户请求 → FastAPI (创建工作流执行记录, status=pending)
Redis Queue (Celery Broker)
Celery Worker
├── workflow_tasks.py → WorkflowEngine.execute()
└── agent_tasks.py → Agent 工作流执行
实时状态推送 → Redis Pub/Sub → WebSocket → 前端
```
- 每个执行任务在 Celery Worker 中异步运行
- 执行进度通过 Redis Pub/Sub 实时推送到前端 WebSocket
- 支持任务取消、暂停/恢复
### 4.7 后端配置 (Settings)
核心配置项通过环境变量 + `.env` 文件管理(`Pydantic Settings`
| 配置项 | 默认值 | 说明 |
|--------|--------|------|
| `DATABASE_URL` | 腾讯云 MySQL | 数据库连接 |
| `REDIS_URL` | `redis://localhost:6379/0` | Redis 连接 |
| `MEMORY_PERSIST_DB_ENABLED` | `True` | 跨会话记忆持久化 |
| `LOCAL_FILE_TOOLS_ROOT` | 项目根目录 | 文件工具沙箱 |
| `WORKFLOW_MAX_STEPS_PER_RUN` | 2000 | 执行步数上限 |
| `WORKFLOW_MAX_LLM_INVOCATIONS_PER_RUN` | 200 | LLM 调用上限 |
| `WORKFLOW_MAX_TOOL_CALLS_PER_RUN` | 500 | 工具调用上限 |
| `CORS_ORIGINS` | localhost:3000/8038 | CORS 白名单 |
| `JWT_SECRET_KEY` | dev-only | JWT 签名密钥 |
| `TESSERACT_CMD` | (空) | OCR 引擎路径 (Windows) |
---
## 5. 数据流
### 5.1 工作流执行完整链路
```
前端拖拽设计 → 保存 Workflow (nodes + edges JSON)
用户点击"运行" → POST /api/v1/workflows/{id}/execute
后端创建 Execution 记录 (status=pending)
Celery 任务入队 → Worker 消费
WorkflowEngine.execute(input_data)
拓扑排序构建执行顺序
循环: 选下一个可执行节点
execute_node(node, input_data)
├── start → 透传输入
├── llm/template → 调用 LLM (含工具调用)
├── condition → 条件表达式求值 → 分支裁剪
├── switch → 多分支路由
├── database → SQL 查询/写入
├── http → HTTP 请求外部 API
├── email → 发送邮件
├── code → 沙箱执行 Python 代码
└── ... 其他 20+ 类型
保存节点输出 → 继续下一节点或结束
更新 Execution 状态 (completed/failed)
Redis Pub/Sub → WebSocket → 前端实时更新
```
### 5.2 条件节点数据流
```
条件节点收到输入
condition_parser 解析表达式 (如 {{score}} > 60)
布尔结果 → true/false 分支
配置化裁剪: 移除不符合的边
后续执行不再经过被裁剪的分支
```
### 5.3 审批节点 (HITL)
```
执行到 approval 节点
检查输入中是否有 __hil_decision
有 → approved/rejected → 继续执行对应分支
无 → 序列化快照 → 抛出 WorkflowPaused
状态持久化为 awaiting_approval
用户通过 API 审批 → 恢复执行
```
---
## 6. 部署架构
```
┌─────────────┐
│ Nginx │ (可选, 反向代理)
└──────┬──────┘
┌────────────────┼────────────────┐
▼ ▼ ▼
┌──────────────┐ ┌──────────────┐ ┌──────────────┐
│ Frontend │ │ Backend │ │ Celery │
│ Vue 3 App │ │ FastAPI │ │ Worker(s) │
│ :8038 │ │ :8037 │ │ │
└──────────────┘ └──────┬───────┘ └──────┬───────┘
│ │
▼ ▼
┌──────────────┐ ┌──────────────┐
│ MySQL │ │ Redis │
│ (腾讯云) │ │ (本地/Docker)│
└──────────────┘ └──────────────┘
```
---
## 7. 安全机制
- **JWT 认证** — 所有 API 需 Bearer Token登录页除外
- **模型配置加密** — API Key 使用 Fernet 加密存储,仅创建者可调用
- **RBAC 权限** — 支持角色级别的权限控制
- **执行预算** — 步数/LLM 调用/工具调用三重熔断
- **代码沙箱** — `code` 节点在受限 `builtins` 环境执行(禁止 `open`/`eval`/`__import__`
- **文件沙箱** — 文件操作限制在 `LOCAL_FILE_TOOLS_ROOT` 目录内
- **环境变量安全** — 敏感环境变量保护 (provider-managed)
---
## 8. 可扩展性
- **节点类型可扩展** — `execute_node` 方法通过 `elif` 链支持 30+ 类型,新增类型只需添加分支
- **工具可注册** — `ToolRegistry` 支持内置/HTTP/工作流三类工具,可从数据库动态加载
- **模型可配置** — 通过 `ModelConfig` 可管理任意多组 API Key + 模型,节点运行时按需选择
- **提供商标配** — 使用 OpenAI 兼容 SDK可接入 OpenAI、DeepSeek、Anthropic 等
- **模板市场** — 预置工作流模板,支持社区分享

View File

@@ -0,0 +1,245 @@
# 可执行的 90 天演进路线图
目标:在不推翻现有平台的前提下,演进为“可编排 + 可编程 + 可治理”的企业 Agent 平台。
原则:保留现有优势(可视化流程、权限体系、执行日志/审计),做渐进增强。
---
## 一、90 天总目标(验收口径)
- 支持 **Main Agent -> 子 Agent** 的真实委派执行(非占位)。
- 支持 **模板化创建场景 Agent**(复制模板 + 参数注入)。
- 支持 **治理能力**(预算、审计、告警、人工确认)。
- 前端提供可用的 **主控台入口**(路由、执行、追踪)。
---
## 二、阶段拆解
## 阶段 1Day 1-30稳态自动化夯实
### 1) 子工作流真实执行(最小闭环)
**目标**
-`subworkflow` 从占位实现升级为真实执行能力。
**代码改动**
- `backend/app/services/workflow_engine.py`
- 实现 `subworkflow` 节点真实执行:
- 读取目标 workflow/agent 配置。
- 构造并执行子 `WorkflowEngine`
- 返回结构化 `output/status/error`
- 增加防护参数:`max_subworkflow_depth`(默认 2
- `backend/app/tasks/workflow_tasks.py`
- 透传嵌套执行上下文(`parent_execution_id``depth`)。
- `backend/app/api/executions.py`
- 扩展执行输出,保留父子执行关联字段。
**验收**
- 一个 Agent 可在流程内调用另一个 Agent/Workflow 并拿到结果。
- 执行日志可追踪父子链路。
---
### 2) 16 号稳定性与模板规范化
**目标**
- 让 Loop 多段执行在生产可稳定运行并可复制。
**代码/文档改动**
- `backend/scripts/create_zhini_kefu_16.py`
- 固化 loop 数据路径与 merge 行为。
- 支持 2 段/3 段模式开关。
- `知你客服16号能力文档.md`
- 增加“已知边界、推荐场景、故障排查”章节。
- `知你客服15号_循环工作流设计.md`
- 增补“跨轮状态传递策略”(文件接力/Cache接力
**验收**
- 连续 20 次回归无 `loop_rounds` 空值类错误。
- 常见问法稳定返回,不再出现异常回显。
---
### 3) 观测与失败重试
**目标**
- 提高运行可观测性与容错能力。
**代码改动**
- `backend/app/services/execution_logger.py`
- 增加统一错误码(例如 `SUBFLOW_DEPTH_EXCEEDED`)。
- `backend/app/tasks/workflow_tasks.py`
- 增加可配置的退避重试1-2 次)。
- `backend/app/api/execution_logs.py`
- 增加 parent/child 聚合查询接口。
**验收**
- 失败能定位到“哪一层、哪个节点、哪次子调用”。
- 重试行为可追踪可审计。
---
## 阶段 2Day 31-60多 Agent 协作
### 4) Main Agent 路由协议(结构化输出)
**目标**
- 主入口 Agent 负责任务分解与路由决策。
**代码改动**
- 新增:`backend/scripts/create_main_agent.py`
- 创建主入口 Agent仅输出结构化路由结果
- `backend/app/services/workflow_engine.py`
- 增加 `invoke_agent` 节点(推荐)或等价工具调用。
- `backend/app/services/tool_registry.py` / `backend/app/services/builtin_tools.py`
- 若走工具路线,注册 `invoke_agent` 工具与 schema。
**验收**
- 用户一次输入,主 Agent 完成路由并触发子 Agent 执行。
- 子执行结果可被主流程汇总输出。
---
### 5) 场景模板库(客服/研发/运维/数据)
**目标**
- 形成可复用模板,降低搭建门槛。
**代码改动**
- 新增目录:`backend/scripts/templates/`
- `template_customer_service.py`
- `template_dev_codegen.py`
- `template_ops_log_analysis.py`
- `backend/app/api/agents.py`
- 增加“从模板创建 Agent”接口可选
- 前端模板入口(视项目结构放到 Agent 创建页对应组件)
- 增加模板选择 + 参数表单。
**验收**
- 至少 3 个模板可一键创建并执行。
- 模板参数(工具白名单、段数、预算)可配置。
---
### 6) Human-in-the-loop关键动作确认
**目标**
- 将危险操作纳入审批闭环。
**代码改动**
- `backend/app/services/workflow_engine.py`
- 增加 `approval` 节点,或在节点 data 中支持 `requires_approval`
- `backend/app/api/executions.py`
- 增加“挂起等待审批 / 审批通过继续执行”接口。
- 前端执行页面
- 增加审批状态展示与操作入口。
**验收**
- 高风险节点默认挂起,审批通过后继续。
- 审批日志可追溯。
---
## 阶段 3Day 61-90治理与平台化
### 7) 成本、预算与并发治理
**目标**
- 防止执行失控,支持组织级运营。
**代码改动**
- `backend/app/services/workflow_engine.py`
- 增加预算控制:`max_steps`、工具调用上限、token 估算上限。
- `backend/app/models/`(新增预算配置模型)
- 按租户/项目/Agent 维度配置预算。
- `backend/app/api/monitoring.py` / `backend/app/api/alert_rules.py`
- 增加预算超限告警与熔断策略。
**验收**
- 可按 Agent 设置预算阈值并生效。
- 超限自动终止并记录可读原因。
---
### 8) 统一 DSL场景可编程输入
**目标**
- 让不同模板复用统一输入契约。
**代码改动**
- 新增:`backend/app/services/scenario_dsl.py`
- 定义标准输入:目标、约束、产物、验收标准。
- `backend/app/services/workflow_engine.py`
- 在入口处做 DSL 校验与标准化映射。
- 模板脚本
- 全部迁移到 DSL 输入。
**验收**
- 同一输入可驱动多模板运行。
- 场景迁移与复用成本显著下降。
---
### 9) 主控台(应用商店 + 运行看板)
**目标**
- 降低业务用户使用门槛,强化平台可运营性。
**前端改动(按现有结构落地)**
- 新增页面:
- `MainConsole`(主入口)
- `TemplateMarket`(模板市场)
- `ExecutionBoard`(父子执行链看板)
- 新增 API 封装:
- 模板创建、子执行追踪、审批操作。
**验收**
- 业务用户流程:选模板 -> 填参数 -> 执行 -> 看结果。
- 管理员可查看预算、告警、审计。
---
## 三、每周里程碑12 周)
- W1-W2`subworkflow` 真执行 + 深度防护。
- W3-W4日志链路 + 16 号稳定性回归。
- W5-W6Main Agent 路由 + `invoke_agent`
- W7-W8模板库 + 审批节点。
- W9-W10预算治理 + DSL。
- W11-W12主控台 + UAT + 发布。
---
## 四、90 天成功指标(建议)
- 模板复用率 > 60%。
- 核心场景自动化成功率 > 85%。
- 平均处理时长下降 >= 30%。
- 可审计执行覆盖率 = 100%。
- 高风险动作审批覆盖率 = 100%。
---
## 五、本周可立刻开工的 3 件事
1. 完成 `subworkflow` 真执行(`workflow_engine.py`)。
2. 定义 Main Agent 的路由 JSON 协议(先后端可消费)。
3. 上线 3 个模板脚本(客服/研发/运维)并打通端到端回归。
---
## 六、风险与规避
- 风险:多 Agent 递归调用导致资源爆炸。
规避:`max_subworkflow_depth` + `max_steps` + 预算熔断。
- 风险:模型动态创建 workflow JSON 质量不稳定。
规避:优先“模板复制 + 参数注入”,减少从零生成。
- 风险:工具权限与合规风险。
规避:工具白名单、审批节点、审计留痕。
---
> 说明本路线图基于当前仓库已有能力工作流引擎、Agent API、执行任务、日志与权限制定采用“可交付优先”的渐进式演进策略。

View File

@@ -0,0 +1,364 @@
# Agent平台待完善功能清单
## 📊 总体状态
- **核心功能完成度**: 95% ✅
- **高级功能完成度**: 30% ⚠️
- **生产就绪度**: 40% ⚠️
---
## 🔴 高优先级(核心功能完善)
### 1. 数据库查询工具实现 ⭐⭐⭐ ✅
**当前状态**: ✅ 已完成
**已完成功能**:
- [x] 实现真实的数据库查询逻辑(支持默认数据库和指定数据源)
- [x] SQL注入防护只允许SELECT查询检查危险关键字
- [x] 查询结果格式化JSON格式包含行数和数据
- [x] 查询超时控制默认30秒最大300秒
- [x] 支持通过数据源ID查询外部数据库
**文件位置**: `backend/app/services/builtin_tools.py` (database_query_tool)
**实际工作量**: 约4小时
**测试状态**: ✅ 测试通过
---
### 2. 工具调用可视化 ⭐⭐⭐ ✅
**当前状态**: ✅ 已完成
**已完成功能**:
- [x] 在工作流执行时显示工具调用过程 ✅
- [x] 显示工具名称、参数、执行结果 ✅
- [x] 显示工具调用状态(成功/失败/请求中)✅
- [x] 工具调用日志查看 ✅
- [x] 工具调用耗时统计 ✅
**实际工作量**: 约6小时
**详细文档**: 参见 `工具调用可视化实现总结.md`
---
### 3. 监控和告警前端界面 ⭐⭐⭐
**当前状态**: 后端API已完成前端界面缺失
**需要完成**:
- [ ] 系统监控面板
- [ ] 系统资源监控CPU、内存、磁盘
- [ ] 执行统计图表(成功率、执行时间、错误率)
- [ ] 实时执行状态看板
- [ ] 告警规则管理页面
- [ ] 告警规则列表
- [ ] 告警规则创建/编辑表单
- [ ] 告警规则启用/禁用
- [ ] 告警日志页面
- [ ] 告警列表和筛选
- [ ] 告警详情查看
- [ ] 告警通知配置邮件、Webhook等
**后端API状态**: ✅ 已完成
- `GET /api/v1/monitoring/overview` - 系统概览
- `GET /api/v1/monitoring/statistics` - 执行统计
- `GET /api/v1/alert-rules` - 告警规则CRUD
- `GET /api/v1/alert-rules/{id}/logs` - 告警日志
**预计工作量**: 12-16小时
---
## 🟡 中优先级(功能增强)
### 4. 工具动态注册机制 ⭐⭐
**当前状态**: 部分占位实现
**需要完成**:
- [ ] HTTP工具的动态注册从数据库加载
- [ ] 工作流工具的动态注册
- [ ] 代码执行工具的动态注册
- [ ] 工具版本管理
- [ ] 工具热更新
**文件位置**: `backend/app/services/tool_registry.py`
**预计工作量**: 8-10小时
---
### 5. 节点配置页面增强 ⭐⭐ ✅
**当前状态**: ✅ 已完成100%
**已完成功能**:
- [x] 变量自动补全功能(输入 `{{` 时自动提示)✅
- [x] 上游节点的实时数据预览 ✅
- [x] 缓存命中情况显示 ✅
- [x] 场景化配置向导 ✅
- [x] 完整的配置模板库(分类、搜索、收藏)✅
**实际工作量**: 已完成(之前已实现)
**详细文档**: 参见 `节点配置页面增强功能完成情况.md`
---
### 6. Agent快速测试功能 ⭐⭐
**当前状态**: 需要手动执行工作流测试
**需要完成**:
- [ ] Agent快速测试界面
- [ ] 测试结果实时显示
- [ ] 测试历史记录
- [ ] 测试用例管理
- [ ] 批量测试功能
**预计工作量**: 6-8小时
---
### 7. 工作流编辑器优化 ⭐⭐
**当前状态**: 基础功能完成
**需要完成**:
- [ ] 节点对齐和自动布局
- [ ] 工作流模板快速应用
- [ ] 节点搜索和筛选
- [ ] 工作流版本对比
- [ ] 工作流导入/导出优化
**预计工作量**: 8-10小时
---
## 🟢 低优先级(高级功能)
### 8. 多租户支持 ⭐
**当前状态**: 未实现
**需要完成**:
- [ ] 租户模型和API
- [ ] 租户隔离(数据隔离、资源隔离)
- [ ] 租户管理界面
- [ ] 资源配额管理
- [ ] 租户计费系统
**预计工作量**: 20-30小时
---
### 9. 插件系统 ⭐
**当前状态**: 未实现
**需要完成**:
- [ ] 插件注册机制
- [ ] 自定义节点插件开发框架
- [ ] 插件市场(插件上传、下载、评分)
- [ ] 插件版本管理
- [ ] 插件安全沙箱
**预计工作量**: 30-40小时
---
### 10. 移动端适配 ⭐
**当前状态**: 未实现
**需要完成**:
- [ ] 响应式布局优化
- [ ] 移动端工作流查看(只读)
- [ ] 移动端执行状态查看
- [ ] 移动端Agent测试
**预计工作量**: 15-20小时
---
## 🔧 技术债务和优化
### 11. 性能优化
**需要完成**:
- [ ] 工作流执行性能优化(并发执行、缓存)
- [ ] 前端性能优化(懒加载、虚拟滚动)
- [ ] 数据库查询优化(索引、查询优化)
- [ ] API响应时间优化
- [ ] WebSocket连接优化
**预计工作量**: 10-15小时
---
### 12. 安全加固
**需要完成**:
- [ ] HTTP工具域名白名单
- [ ] 文件操作路径验证增强
- [ ] SQL注入防护数据库查询工具
- [ ] XSS防护
- [ ] CSRF防护
- [ ] API限流
- [ ] 敏感信息加密存储
**预计工作量**: 8-12小时
---
### 13. 测试覆盖
**需要完成**:
- [ ] 单元测试覆盖率提升目标80%+
- [ ] 集成测试完善
- [ ] E2E测试Playwright/Cypress
- [ ] 性能测试
- [ ] 安全测试
**预计工作量**: 20-30小时
---
## 🚀 生产环境准备
### 14. 生产环境配置
**需要完成**:
- [ ] 生产环境Docker配置优化
- [ ] Kubernetes部署配置
- [ ] 多环境配置管理dev/staging/prod
- [ ] 配置文件加密
- [ ] 环境变量管理
- [ ] 密钥管理Vault等
**预计工作量**: 15-20小时
---
### 15. 监控和日志
**需要完成**:
- [ ] Prometheus指标收集
- [ ] 业务指标(执行数、成功率、耗时)
- [ ] 系统指标CPU、内存、网络
- [ ] Grafana仪表板
- [ ] 系统监控仪表板
- [ ] 业务监控仪表板
- [ ] 日志聚合
- [ ] ELK Stack集成
- [ ] 日志查询和分析
- [ ] 错误追踪
- [ ] Sentry集成
- [ ] 错误告警和通知
**预计工作量**: 20-25小时
---
### 16. CI/CD
**需要完成**:
- [ ] GitHub Actions配置
- [ ] 自动化测试流程
- [ ] 自动化构建流程
- [ ] 自动化部署流程
- [ ] 代码质量检查Linter、覆盖率
- [ ] 安全扫描
**预计工作量**: 10-15小时
---
## 📚 文档完善
### 17. 用户文档
**需要完成**:
- [ ] 用户使用手册
- [ ] 视频教程
- [ ] 常见问题FAQ
- [ ] 最佳实践指南
**预计工作量**: 10-15小时
---
### 18. 开发者文档
**需要完成**:
- [ ] API文档完善
- [ ] 架构设计文档
- [ ] 插件开发指南
- [ ] 部署指南
- [ ] 贡献指南
**预计工作量**: 8-12小时
---
## 📋 优先级建议
### 第一阶段1-2周核心功能完善
1. ✅ 数据库查询工具实现
2. ✅ 工具调用可视化
3. ✅ 监控和告警前端界面
### 第二阶段2-3周功能增强
4. ✅ 工具动态注册机制
5. ✅ 节点配置页面增强
6. ✅ Agent快速测试功能
7. ✅ 工作流编辑器优化
### 第三阶段3-4周技术债务
8. ✅ 性能优化
9. ✅ 安全加固
10. ✅ 测试覆盖
### 第四阶段(按需):高级功能
11. 多租户支持
12. 插件系统
13. 移动端适配
### 第五阶段(生产准备):部署运维
14. 生产环境配置
15. 监控和日志
16. CI/CD
---
## 🎯 当前最紧急的任务
根据平台当前状态,建议优先完成以下任务:
1. **数据库查询工具实现** - 工具调用功能的核心缺失
2. **监控和告警前端界面** - 后端已完成,前端缺失影响用户体验
3. **工具调用可视化** - 提升工具调用的可观测性
---
## 📊 工作量估算
| 优先级 | 任务数 | 预计总工作量 |
|--------|--------|--------------|
| 高优先级 | 3 | 22-30小时 |
| 中优先级 | 4 | 30-38小时 |
| 低优先级 | 3 | 65-90小时 |
| 技术债务 | 3 | 38-57小时 |
| 生产准备 | 3 | 45-60小时 |
| 文档 | 2 | 18-27小时 |
| **总计** | **18** | **218-302小时** |
---
**最后更新**: 2026-01-23
**文档版本**: v1.0

View File

@@ -0,0 +1,332 @@
# 开发进度跟踪
## ✅ 已完成功能
### 1. 项目基础架构 ✅
- [x] 前后端项目结构搭建
- [x] Docker Compose 开发环境配置
- [x] 数据库连接配置MySQL
- [x] 端口配置前端8038后端8037
### 2. 数据库模型 ✅
- [x] 用户表User
- [x] 工作流表Workflow
- [x] 智能体表Agent
- [x] 执行记录表Execution
- [x] 模型配置表ModelConfig
### 3. 用户认证系统 ✅
- [x] 用户注册API
- [x] 用户登录APIJWT
- [x] 获取当前用户信息API
- [x] 密码加密bcrypt
- [x] JWT Token生成和验证
### 4. 工作流API ✅
- [x] 获取工作流列表
- [x] 创建工作流
- [x] 获取工作流详情
- [x] 更新工作流
- [x] 删除工作流
- [x] 执行工作流
### 5. 工作流执行引擎 ✅
- [x] DAG构建和拓扑排序
- [x] 节点执行器支持start、input、llm、condition、transform、output、end
- [x] 数据流管理(节点间数据传递)
- [x] Celery异步任务集成
- [x] 执行状态管理
### 6. 执行管理API ✅
- [x] 创建执行任务
- [x] 获取执行记录列表
- [x] 获取执行详情
- [x] 获取执行状态Celery任务状态
### 7. 前端基础功能 ✅
- [x] 登录/注册页面
- [x] 用户状态管理Pinia
- [x] 工作流状态管理Pinia
- [x] 路由配置和守卫
- [x] API请求封装和拦截器
- [x] 工作流列表页面
### 8. 可视化编辑器 ✅
- [x] Vue Flow集成
- [x] 节点工具箱(拖拽添加节点)
- [x] 节点配置面板
- [x] 工作流设计器页面
- [x] 节点类型开始、输入、LLM、条件、转换、输出、结束
## 🚧 进行中
### 9. 核心节点实现
- [x] LLM节点真实调用OpenAI集成
- [x] 条件节点表达式解析 ✅
- [x] 数据转换节点完整实现 ✅
## 📋 待开发功能
### 第一阶段 MVP剩余任务
- [x] OpenAI模型真实集成 ✅
- [x] DeepSeek模型集成 ✅
- [x] 执行状态实时推送WebSocket后端
- [x] 执行结果展示页面 ✅
- [x] 执行状态实时推送WebSocket前端集成
### 第二阶段
- [x] 工作流验证功能 ✅
- [x] 工作流模板功能 ✅
- [x] 工作流导入导出功能 ✅
- [x] 执行历史优化(分页、筛选、搜索)✅
- [x] 工作流列表优化(搜索、筛选、排序)✅
- [x] 工作流运行功能(运行对话框、执行参数输入、跳转执行详情)✅
- [x] 工作流版本管理(版本保存、版本列表、版本回滚)✅
- [x] 执行日志和监控(日志记录、日志查询、监控指标)✅
- [x] 数据源管理数据源模型、CRUD API、连接测试、数据查询
- [x] 循环节点功能(循环节点实现、工作流引擎集成、前端配置)✅
- [x] Agent节点功能Agent节点实现、工作流引擎集成、前端配置
- [x] 错误处理和重试机制 ✅
### 第三阶段(第一阶段开发)
- [x] Agent管理功能Agent CRUD API、Agent管理页面
- [x] 数据源管理前端界面(数据源管理页面)✅
- [x] 模型配置管理ModelConfig CRUD API、模型配置管理页面
### 第四阶段(更多节点类型)
- [x] HTTP请求节点GET/POST/PUT/DELETE、请求头配置、响应处理
- [x] 数据库操作节点SQL查询、数据插入/更新/删除)✅
- [x] 文件操作节点(文件读取、写入、上传/下载)✅
### 第五阶段(前端功能完善)
- [x] 节点删除功能优化(防止删除开始/结束节点)✅
- [x] 节点复制/粘贴功能Ctrl+C/Ctrl+V、Delete删除
- [x] 执行结果可视化JSON树形展示、树形/JSON视图切换
- [x] 执行日志实时查看界面(日志列表、筛选、自动刷新、统计信息)✅
- [x] 画布缩放和平移优化(鼠标滚轮缩放、拖拽平移、键盘快捷键、缩放控制)✅
- [x] 工作流保存提示优化(保存状态提示、自动保存、未保存提示、离开页面提示)✅
- [x] 执行性能分析图表(总执行时间、节点性能对比、节点类型统计、执行时间线)✅
### 第六阶段(更多节点类型)
- [x] 定时任务节点(固定延迟、秒/分钟/小时单位、延迟执行)✅
- [x] Webhook节点发送Webhook请求、接收Webhook触发工作流
### 第七阶段(功能增强)
- [x] 邮件节点SMTP配置、发送邮件、支持HTML、附件
- [x] 消息队列节点RabbitMQ/Kafka集成、发送消息
- [x] 工作流模板市场(模板分享、搜索、评分、收藏、前端界面)✅
- [x] 批量操作(批量执行、批量导出、批量删除)✅
- [x] 工作流协作实时协作、冲突解决、多人编辑、WebSocket实时同步
- [x] 权限管理RBAC、角色管理、权限分配、工作流/Agent权限控制、API权限检查集成
## 🔧 技术债务
- [x] 数据库迁移脚本Alembic
- [x] 单元测试pytest框架、测试配置、核心功能测试
- [x] API文档完善OpenAPI配置、API描述、完整文档
- [x] 错误处理优化 ✅
- [x] 前端组件优化和样式完善 ✅
## 📝 下一步计划(待开发功能)
### 第八阶段:监控和告警前端界面(中优先级)
#### 后端状态 ✅
- [x] 告警规则APICRUD、启用/禁用)✅
- [x] 告警服务(检查告警、触发告警)✅
- [x] 告警日志API ✅
#### 前端待开发
- [ ] 系统监控面板
- [ ] 系统资源监控CPU、内存、磁盘
- [ ] 执行统计图表(成功率、执行时间、错误率)
- [ ] 实时执行状态看板
- [ ] 告警规则管理页面
- [ ] 告警规则列表
- [ ] 告警规则创建/编辑表单
- [ ] 告警规则启用/禁用
- [ ] 告警日志页面
- [ ] 告警历史列表
- [ ] 告警详情查看
- [ ] 告警通知配置邮件、Webhook等
### 第九阶段:用户体验优化(中优先级)
- [ ] 工作流编辑器优化
- [ ] 节点连接线样式优化(已完成左右连接支持)
- [ ] 节点对齐和自动布局
- [ ] 工作流模板快速应用
- [ ] 节点搜索和筛选
- [ ] Agent使用体验优化
- [ ] Agent快速测试功能
- [ ] Agent使用统计和分析
- [ ] Agent性能监控
- [ ] 移动端适配
- [ ] 响应式布局优化
- [ ] 移动端工作流查看(只读)
- [ ] 移动端执行状态查看
### 第十阶段:高级功能(低优先级,按需开发)
#### 多租户支持
- [ ] 租户模型和API
- [ ] 租户隔离(数据隔离、资源隔离)
- [ ] 租户管理界面
- [ ] 资源配额管理
#### 插件系统
- [ ] 插件注册机制
- [ ] 自定义节点插件开发框架
- [ ] 插件市场(插件上传、下载、评分)
- [ ] 插件版本管理
#### 性能优化
- [ ] 工作流执行性能优化(并发执行、缓存)
- [ ] 前端性能优化(懒加载、虚拟滚动)
- [ ] 数据库查询优化(索引、查询优化)
- [ ] API响应时间优化
### 第十一阶段:部署和运维(生产环境准备)
#### 生产环境配置
- [ ] 生产环境Docker配置优化
- [ ] Docker Compose生产配置
- [ ] 多环境配置管理dev/staging/prod
- [ ] 配置文件加密
- [ ] Kubernetes部署配置
- [ ] K8s部署清单Deployment、Service、Ingress
- [ ] 水平扩展配置
- [ ] 健康检查和就绪探针
- [ ] 环境变量管理
- [ ] 敏感信息管理(密钥管理)
- [ ] 配置中心集成
#### 监控和日志
- [ ] Prometheus指标收集
- [ ] 业务指标(执行数、成功率、耗时)
- [ ] 系统指标CPU、内存、网络
- [ ] Grafana仪表板
- [ ] 系统监控仪表板
- [ ] 业务监控仪表板
- [ ] 日志聚合
- [ ] ELK Stack集成
- [ ] 日志查询和分析
- [ ] 错误追踪
- [ ] Sentry集成
- [ ] 错误告警和通知
#### CI/CD
- [ ] GitHub Actions配置
- [ ] 自动化测试流程
- [ ] 自动化构建流程
- [ ] 自动化部署流程
- [ ] 代码质量检查
- [ ] Linter配置ESLint、Pylint
- [ ] 代码覆盖率检查
- [ ] 安全扫描
### 第十二阶段:文档和测试完善
- [ ] 用户文档
- [ ] 用户使用手册
- [ ] 视频教程
- [ ] 常见问题FAQ
- [ ] 开发者文档
- [ ] API文档完善
- [ ] 架构设计文档
- [ ] 插件开发指南
- [ ] 测试覆盖
- [ ] 单元测试覆盖率提升目标80%+
- [ ] 集成测试完善
- [ ] E2E测试Playwright/Cypress
## 🎯 当前状态
- **后端服务**: ✅ 运行正常http://localhost:8037
- **前端服务**: ✅ 运行正常http://localhost:8038
- **数据库**: ✅ 已配置腾讯云MySQL
- **Redis**: ✅ 运行正常
- **Celery**: ✅ 运行正常
## 📊 完成度
- **第一阶段MVP**: 100% ✅
- **第二阶段核心功能**: 100% ✅
- **第三阶段核心功能**: 100% ✅
- **第四-七阶段功能**: 100% ✅
- **整体项目**: 约 85-90%
- 核心功能100% ✅
- 监控告警前端0% ⚠️
- 用户体验优化60% 🚧
- 高级功能多租户、插件0% ⚠️
- 部署运维30% 🚧
## ✅ 最新测试结果
- **DeepSeek集成测试**: ✅ 全部通过 (5/5)
- 直接API调用 ✅
- LLM服务接口 ✅
- DeepSeek Coder模型 ✅
- 工作流引擎集成 ✅
- Prompt模板变量替换 ✅
## 🎉 已实现的核心功能
1. **完整的用户认证系统** - 注册、登录、JWT认证
2. **工作流CRUD** - 创建、读取、更新、删除工作流
3. **工作流执行引擎** - DAG构建、拓扑排序、节点执行
4. **可视化编辑器** - 拖拽节点、连线、配置面板
5. **异步任务处理** - Celery集成支持长时间运行的任务
## 🎯 当前优先级建议
### 高优先级(建议优先开发)
1. **监控和告警前端界面** ⭐⭐⭐
- 系统监控面板
- 告警规则管理页面
- 告警日志查看
- **预计工作量**: 1-2周
2. **用户体验优化** ⭐⭐
- 工作流编辑器优化(节点对齐、自动布局)
- Agent使用体验优化
- **预计工作量**: 1-2周
### 中优先级(按需开发)
3. **性能优化** ⭐⭐
- 工作流执行性能优化
- 前端性能优化
- **预计工作量**: 1-2周
4. **生产环境部署配置** ⭐⭐
- Docker/K8s配置
- 监控和日志集成
- **预计工作量**: 2-3周
### 低优先级(长期规划)
5. **多租户支持**
- 适用于SaaS场景
- **预计工作量**: 3-4周
6. **插件系统**
- 扩展性增强
- **预计工作量**: 4-6周
## 📈 近期开发建议
**接下来1-2个月的重点**
1. 完成监控和告警前端界面(让系统可观测)
2. 优化用户体验(提升使用体验)
3. 完善生产环境部署配置(准备上线)
**长期规划**3-6个月
1. 多租户支持如需要SaaS模式
2. 插件系统(增强扩展性)
3. 性能优化(支持更大规模)
---
**最后更新**: 2026-01-20

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,202 @@
# 缺失能力分析
## 概述
当前项目已有 34 个内置工具、自主进化系统agent_create / tool_register / code_tool_create / capability_check / extension_log、工作流引擎DAG + HITL 审批节点、Agent 记忆系统RAG + 向量 + 持久化、异步执行Celery + Redis等能力。但在生产级复杂任务执行方面仍存在以下 10 项关键缺失。
---
## 第一梯队复杂任务的硬伤3 项)
### 1. 完全没有并行执行
**现象:**
- 工作流 DAG 一次只执行一个节点,即使多个分支之间没有依赖关系
- Orchestrator 的 debate 模式 3 个 Agent 逐个串行执行,而非并发
- `orchestrator.py` 中 debate 用的是 `for agent in agents` 循环,而非 `asyncio.gather`
**影响:**
- 复杂任务耗时 = 所有步骤耗时之和,而非最长路径耗时
- 多 Agent 协作(并行分析、投票)形同虚设
- 吞吐量瓶颈
**涉及文件:**
- `backend/app/services/workflow_engine.py` — DAG 执行循环(`execute()` 方法)
- `backend/app/agent_runtime/orchestrator.py``_debate()` 方法
---
### 2. AgentOrchestrator 不进入工作流
**现象:**
- Orchestrator 的 4 种模式router / sequential / debate / pipeline仅通过 API 端点 `/orchestrate` 暴露
- 工作流引擎的节点类型只有 `start / llm / agent / approval / condition / end` 等,没有 `orchestrator`
- 编排能力与工作流系统完全割裂
**影响:**
- 无法在工作流中组合多 Agent 协作模式
- 复杂场景需要外部脚本调用 API无法在工作流中可视化编排
**涉及文件:**
- `backend/app/api/agent_chat.py` — Orchestrator API 入口
- `backend/app/services/workflow_engine.py` — 缺少 orchestrator 节点类型
- `backend/app/agent_runtime/workflow_integration.py` — 只有 `run_agent_node()`,无 `run_orchestrator_node()`
---
### 3. 输出质量验证完全缺失
**现象:**
- 没有评判/评估节点检查 Agent 输出质量
- 搜索 `evaluate_output``verify_result``quality_check``validate_node` — 零结果
- Agent 执行完直接返回结果,不对质量做任何检查
- `AgentLearningPattern` 只在后台统计成功率,不做实时检查
**影响:**
- Agent 不知道自己做得好不好
- 错误结果直接交付用户
- 自我修正闭环缺失最关键的一环
**涉及文件:**
- 无现有实现,需从零构建
---
## 第二梯队生产可靠性3 项)
### 4. 节点级自动重试是空壳
**现象:**
- `error_handler` 节点类型存在,但只记录意图不实际重试(代码注释:"实际重试需要重新执行前一个节点,这里只记录"
- 一个节点失败 → `WorkflowExecutionError` → 整个工作流停止
- Celery 层面有任务级重试(指数退避),但节点级没有
**影响:**
- LLM 调用偶发超时 = 整个工作流失败
- 无法配置"这个节点失败后重试 3 次"
**涉及文件:**
- `backend/app/services/workflow_engine.py` — error_handler 节点(约 4068-4128 行)
- `backend/app/tasks/workflow_tasks.py` — Celery 重试逻辑
---
### 5. 工具级人工审批缺失
**现象:**
- 人工审批HITL只存在于工作流节点层面`approval` 节点类型)
- AgentRuntime 对所有工具自动执行,不暂停确认
- `deploy_push``send_email``database_query`(写操作)、`schedule_create` 等风险工具无二次确认
**影响:**
- Agent 可能执行危险操作而用户不知情
- 缺少安全围栏
**涉及文件:**
- `backend/app/agent_runtime/core.py` — ReAct 循环中工具自动执行
- `backend/app/agent_runtime/schemas.py``AgentToolConfig` 缺少审批配置
- `backend/app/services/workflow_engine.py` — approval 节点(约 1374-1422 行,可复用逻辑)
---
### 6. 没有降级/回退链
**现象:**
- 模型不可用 → Agent 直接报错
- Agent 执行失败 → 无备选方案
- 搜索 `fallback``degradation``backup` — 零结果
**影响:**
- 单点故障无容错
- 无法配置"主模型挂了自动切备用模型"
**涉及文件:**
- `backend/app/agent_runtime/schemas.py``AgentLLMConfig` 无 fallback 字段
- `backend/app/agent_runtime/core.py` — ReAct 循环无模型切换逻辑
---
## 第三梯队体验与效率4 项)
### 7. 进度上报太粗糙
**现象:**
- WebSocket 只推送 `status: "running"``status: "completed"`
- 进度值固定0 → 50 → 100没有实际进度百分比
- WebSocket 每 2 秒轮询 DB而非主动推送
**影响:**
- 用户看不到任务执行到哪一步
- 复杂任务7 步和简单任务2 步)进度条一样
**涉及文件:**
- `backend/app/websocket/manager.py` — WebSocket 管理器(轮询 DB
- `backend/app/services/workflow_engine.py` — 无进度回调钩子
- `backend/app/tasks/workflow_tasks.py` — Celery 进度更新只调一次
---
### 8. Agent 间知识不共享
**现象:**
- 每个 Agent 的 RAG 记忆按 `(scope_kind, scope_id)` 隔离
- 学习模式也按 Scope 隔离
- "SQL优化专家"学到的知识,"数据分析师"用不了
**影响:**
- 知识孤岛,重复学习
- 自主进化创建的 Agent 从零开始,无法继承父 Agent 经验
**涉及文件:**
- `backend/app/agent_runtime/memory.py` — 记忆隔离
- `backend/app/services/agent_learning_service.py` — 学习模式隔离
---
### 9. 没有结果缓存
**现象:**
- 相同查询发给同一 Agent每次都完整执行 LLM + 工具
- 工具结果、LLM 响应均不缓存
- 搜索 `cache``redis_cache``ttl` — 仅在 Celery 配置中有 `result_backend`
**影响:**
- 重复工作浪费 token 和时间
- 同一用户反复问相似问题,每次都重新跑
**涉及文件:**
- 无现有实现,需从零构建
---
### 10. Agent 独立异步执行是空壳
**现象:**
- `execute_agent_task`Celery 任务)返回 `{"status": "pending"}` 占位符
- 代码注释:`# TODO: 实现Agent执行逻辑`
- 非工作流的 Agent 执行没有真正的异步支持(只能同步调用 API
**影响:**
- Agent 聊天无法异步后台执行
- 调度触发的 Agent 执行不会真正运行
**涉及文件:**
- `backend/app/tasks/agent_tasks.py` — execute_agent_task 是空壳
- `backend/app/tasks/scheduler_tasks.py` — 定时调度无法真正执行 Agent
---
## 总结
| # | 缺失能力 | 梯队 | 复杂度 | 影响面 |
|---|---------|------|--------|--------|
| 1 | 并行执行 | 第一梯队 | 高 | 性能、吞吐量 |
| 2 | Orchestrator 入工作流 | 第一梯队 | 中 | 编排能力整合 |
| 3 | 输出质量验证 | 第一梯队 | 中 | 结果可靠性 |
| 4 | 节点级自动重试 | 第二梯队 | 低 | 稳定性 |
| 5 | 工具级人工审批 | 第二梯队 | 中 | 安全性 |
| 6 | 降级/回退链 | 第二梯队 | 低 | 容错性 |
| 7 | 粒度进度上报 | 第三梯队 | 低 | 用户体验 |
| 8 | Agent 知识共享 | 第三梯队 | 高 | 知识利用率 |
| 9 | 结果缓存 | 第三梯队 | 中 | 效率、成本 |
| 10 | Agent 异步执行 | 第三梯队 | 低 | 调度可用性 |

View File

@@ -0,0 +1,458 @@
# 自主 AI Agent 改造完成情况
## 改造目标
在现有低代码智能体平台基础上,构建真正自主的 AI Agent 运行时Agent Runtime使平台从"DAG 工作流引擎"跨越到"支持 ReAct 自主循环的 Agent 平台"。
**核心原则**:零重构,寄生式复用——不动现有的 5788 行工作流引擎和 9140 行编辑器,全部新增代码独立部署。
---
## 已完成改造
### 新增文件 — 第一轮22 个)
| 文件 | 行数 | 用途 |
|------|------|------|
| `backend/app/agent_runtime/__init__.py` | 45 | 包导出 |
| `backend/app/agent_runtime/schemas.py` | 115 | Agent 配置 Schema + AgentStep 执行追踪 + 向量记忆配置 |
| `backend/app/agent_runtime/context.py` | 85 | 会话上下文 |
| `backend/app/agent_runtime/memory.py` | 200 | 分层记忆管理器 + LLM 自动压缩总结 + 向量记忆检索/保存 |
| `backend/app/agent_runtime/tool_manager.py` | 77 | 工具管理器(精简,委托给 ToolRegistry |
| `backend/app/agent_runtime/core.py` | 290 | **AgentRuntime 主循环 + 执行追踪 + LLM 埋点 + 预算控制** |
| `backend/app/agent_runtime/orchestrator.py` | 480 | **多 Agent 编排引擎4 种模式route / sequential / debate / pipeline** |
| `backend/app/agent_runtime/workflow_integration.py` | 100 | 工作流桥接 |
| `backend/app/api/agent_chat.py` | 280 | Agent 聊天 + 多 Agent 编排 + LLM 调用日志 + SSE 流式输出 |
| `backend/app/api/agent_monitoring.py` | 55 | **Agent 监控 API5 个端点)** |
| `backend/app/services/agent_monitoring_service.py` | 140 | **Agent 监控服务5 个统计方法)** |
| `backend/app/services/embedding_service.py` | 65 | **Embedding 生成服务SiliconFlow / OpenAI 适配)** |
| `backend/app/services/knowledge_service.py` | 180 | **知识库 RAG 服务(上传 → 解析 → 切片 → 向量化 → 检索)** |
| `backend/app/services/document_parser.py` | 135 | **文档解析器txt/pdf/docx/csv** |
| `backend/app/services/text_chunker.py` | 132 | **文本分块器(段落/句子的语义分块 + overlap** |
| `backend/app/services/tool_registry.py` | 361 | **工具注册表(内置 + HTTP 执行 + 代码沙箱执行)** |
| `backend/app/api/tools.py` | 325 | **工具市场 APICRUD + 测试沙箱 + 分类浏览 + 使用计数)** |
| `backend/app/models/agent_llm_log.py` | 30 | **Agent LLM 调用日志模型** |
| `backend/app/models/agent_vector_memory.py` | 30 | **Agent 向量记忆表模型** |
| `backend/app/models/knowledge_base.py` | 80 | **知识库/文档/文档块三表模型** |
| `frontend/src/views/AgentChat.vue` | 370 | Agent 聊天界面 + 多 Agent 编排 UI + SSE 流式渲染 |
| `frontend/src/views/AgentDashboard.vue` | 260 | **Agent 监控 Dashboard** |
| `scripts/seed_coding_agent.py` | 362 | 编程助手种子脚本(创建 4 个开发者工具 + 代码编程助手 Agent |
| `scripts/seed_agents.py` | 270 | 批量 Agent 种子脚本(创建 4 个常用自主 Agent |
| `scripts/test_coding_agent.py` | 150 | 编程助手自动化测试脚本4 场景 × 2 端点 = 8 用例) |
### 新增文件 — 第二轮2026-05-02 自主学习 + 定时任务 + 飞书集成)
| 文件 | 行数 | 用途 |
|------|------|------|
| `backend/app/services/agent_learning_service.py` | 340 | **自主学习服务** — 任务分类、工具序列提取/合并、有效性评分、学习模式注入 |
| `backend/app/models/agent_learning_pattern.py` | 25 | Agent 学习模式模型11 类任务 × 工具序列 × 频率/评分) |
| `backend/app/services/agent_schedule_service.py` | 140 | **Agent 定时任务调度服务** — cron 解析、到期触发、执行跟踪 |
| `backend/app/models/agent_schedule.py` | 28 | Agent 定时任务调度模型cron 表达式、启用/禁用、执行记录) |
| `backend/app/api/agent_schedules.py` | 200 | Agent 定时任务 CRUD API + 手动触发端点 |
| `backend/app/tasks/scheduler_tasks.py` | 27 | Celery Beat 定时检查任务(每分钟扫描到期调度) |
| `backend/app/services/notification_service.py` | 128 | 通知系统服务(通知创建、查询、已读标记) |
| `backend/app/models/notification.py` | 24 | 通知模型 |
| `backend/app/api/notifications.py` | 115 | 通知系统 API |
| `backend/app/api/feishu_bind.py` | 243 | 飞书账号绑定/解绑 API二维码 + 验证码) |
| `backend/app/services/feishu_app_service.py` | 199 | 飞书应用消息发送服务 |
| `backend/app/services/feishu_notifier.py` | 96 | 飞书通知器Webhook + 应用消息推送) |
| `backend/app/services/feishu_ws_handler.py` | 351 | 飞书 WebSocket 长连接事件监听 |
| `backend/app/services/orange_app_service.py` | 137 | 橙子飞书机器人服务 |
| `backend/app/services/orange_ws_handler.py` | 298 | 橙子机器人 WebSocket 处理
### 修改文件 — 第二轮14 个原文件 + 新增 8 个修改)
| 文件 | 改动 |
|------|------|
| `backend/app/services/workflow_engine.py` | `execute_node()` 新增 `agent` 节点类型分支(约 50 行Agent 节点注入 `budget_limits` + `_on_agent_llm` 预算回调 |
| `backend/app/main.py` | 注册 `agent_chat` + `agent_monitoring` + `tools` + `knowledge_base` 路由模块 |
| `backend/app/core/database.py` | `init_db` 导入 `agent_llm_log` + `agent_vector_memory` + `knowledge_base` 模型 |
| `backend/app/models/__init__.py` | 导出 `AgentLLMLog``AgentVectorMemory``KnowledgeBase``Document``DocumentChunk` |
| `backend/app/agent_runtime/core.py` | `_LLMClient.chat()` 埋点: timing + token 采集 + `on_completion` 回调;`AgentRuntime` 新增 `on_llm_call` 参数;预算检查移至 LLM 调用前;`on_tool_executed` 重抛 `WorkflowExecutionError` |
| `backend/app/agent_runtime/orchestrator.py` | 四种编排模式透传 `on_llm_call` 到子 Agent新增 Pipeline 模式Planner → Executor 逐步骤执行 → Reviewer 审查)含 3 个内置系统提示词 + `_pipeline()` 方法 + `_parse_plan()` JSON 解析器 |
| `backend/app/api/agent_chat.py` | 三个端点注入 `on_llm_call` 回调,写入 `AgentLLMLog` 表;添加 SSE 流式输出端点 |
| `backend/app/agent_runtime/memory.py` | `initialize()` 注入向量记忆到 system prompt`save_context()` 保存对话后生成 embedding 存入 `AgentVectorMemory` |
| `backend/app/agent_runtime/schemas.py` | `AgentMemoryConfig` 新增 `vector_memory_enabled` / `vector_memory_top_k` |
| `backend/app/agent_runtime/tool_manager.py` | 精简 `execute()` 直接委托 `tool_registry.execute_tool()` |
| `frontend/src/router/index.ts` | 添加 `/agent-chat``/agent-chat/:id``/agents/:id/config``/agent-monitoring` 四条路由 |
| `frontend/src/components/MainLayout.vue` | 导航栏添加"Agent对话"+"Agent监控"入口 |
| `frontend/src/views/Agents.vue` | Agent 列表添加"配置"按钮跳转 AgentConfig |
| `backend/app/services/llm_service.py` | `call_openai_with_tools()` 工具 schema 三路归一化(修复自定义工具缺失 `type` 字段导致 DeepSeek 拒请求) |
| `frontend/src/views/AgentChat.vue` | SSE 流式修复:`receivedFirstEvent` 触发条件放宽到任意事件类型;空 think 内容显示"思考中...";添加 60s AbortController 超时;流式失败自动回退到非流式 POST |
---
## 架构设计
### Agent Runtime 核心循环
```
用户输入
┌──────────────────────────────────────────┐
│ AgentRuntime.run() │
│ │
│ 1. 加载长期记忆 → 注入 system prompt │
│ 2. 追加用户消息 │
│ 3. ReAct 循环 (最多 max_iterations 步) │
│ ┌──────────────────────────────┐ │
│ │ LLM 思考 → 返回文本或工具 │ │
│ │ ├── 返回文本 → 跳出循环 │ │
│ │ └── 调用工具 → 执行工具 │ │
│ │ → 结果追加到消息 │ │
│ │ → 回到 LLM 思考 │ │
│ └──────────────────────────────┘ │
│ 4. 保存长期记忆 │
│ 5. 返回 AgentResult │
└──────────────────────────────────────────┘
```
### 复用关系图
```
AgentRuntime (新增)
├── ToolManager ──────→ ToolRegistry + builtin_tools (已有)
│ ├── HTTP 工具执行 ─→ httpx.AsyncClient
│ └── 代码工具执行 ─→ 沙箱 exec (__builtins__ 禁用)
├── Memory ───────────→ persistent_memory_service (已有)
│ ├── MySQL (已有) — 键值记忆
│ └── AgentVectorMemory (新增) — 向量记忆语义检索
│ └── EmbeddingService ─→ SiliconFlow / OpenAI API
├── _LLMClient ───────→ OpenAI SDK (已有)
│ ├── on_completion → AgentLLMLog (新增) → MySQL
│ └── AgentBudgetConfig → WorkflowEngine._llm_invocations (预算联动)
├── SSE Stream ───────→ POST .../bare/stream → text/event-stream
│ └── AgentStep → 实时推送到前端
├── Context ──────────→ 纯内存,无外部依赖
├── AgentOrchestrator (新增)
│ ├── route: Router Agent → Specialist Agent
│ ├── sequential: Agent A → Agent B → Agent C
│ ├── debate: Agent 独立回答 → Aggregator 汇总
│ └── pipeline: Planner 制定计划 → Executor 逐步骤执行 → Reviewer 审查交付
├── KnowledgeBase RAG (新增)
│ ├── DocumentParser → txt/pdf/docx/csv/md 解析
│ ├── TextChunker → 段落/句子的语义分块 + overlap
│ ├── EmbeddingService → 向量化
│ └── 余弦相似度检索 → Top-K 上下文注入 system prompt
├── Tool Marketplace API (新增)
│ ├── GET /tools + /categories — 市场浏览
│ ├── POST /tools — 创建 HTTP/Code 工具
│ ├── POST /tools/test/{http,code} — 沙箱测试
│ └── POST /tools/{id}/use — 使用计数
└── AgentMonitoring API (新增)
├── /overview → 概览统计
├── /llm-calls → LLM 调用记录
├── /agents-stats → Agent 用量排行
├── /tool-usage → 工具调用频次
└── /daily-trend → 日趋势图
```
### 新增代码行数统计
```
第一轮Agent Runtime 核心):
agent_runtime/ → 约 1250 行 Python
api/ → 约 660 行 Python
services → 约 880 行 Python
models → 约 140 行 Python
frontend → 约 640 行 Vue/TypeScript
修改(非新增) → 约 250 行
─────────────────────────────────
小计 → 约 3820 行
第二轮(自主学习 + 定时任务 + 飞书集成):
services → 约 1550 行 Python学习/调度/通知/飞书/橙子)
api → 约 560 行 Python
models → 约 80 行 Python
tasks → 约 30 行 Python
修改(非新增) → 约 40 行
─────────────────────────────────
小计 → 约 2260 行
总计新增 → 约 6080 行
```
---
## 整体完成度
从最初 DAG 工作流引擎 → Agent Runtime → 多 Agent 编排 → Agent 监控 → 自主学习 → 定时任务 → 飞书集成,平台自主 AI Agent 能力已从 **0 → 完整闭环**
- 单 Agent ReAct 循环:✅ 完成
- 工具调用与记忆管理:✅ 完成
- 执行追踪与记忆压缩:✅ 完成
- 配置页面与聊天界面:✅ 完成
- SSE 流式输出:✅ 完成Agent 思考过程实时推送到前端)
- 多 Agent 编排(路由/顺序/辩论/流水线):✅ 完成
- 编排前端可视化界面:✅ 完成
- LLM 调用埋点与日志:✅ 完成
- Agent 监控 Dashboard✅ 完成
- 向量记忆(语义检索):✅ 完成Embedding + 余弦相似度 Top-K
- 知识库 RAG✅ 完成(上传 → 解析 5 种格式 → 切片 → 向量化 → 检索)
- 工作流预算接入:✅ 完成Agent LLM/工具调用计入 WorkflowEngine 全局预算)
- 工具市场:✅ 完成HTTP/Code 工具 CRUD + 沙箱测试 + 市场浏览)
- **Agent 自主学习**:✅ 完成(任务分类 → 工具序列提取 → 学习模式注入)
- **Agent 定时任务系统**:✅ 完成cron 表达式 → Celery Beat 到期触发)
- **飞书通知与机器人对话**:✅ 完成(通知系统 + 飞书推送 + 橙子机器人)
**新增工具**
- 种子脚本批量创建 Agent + 开发者工具(代码编程助手 + 4 个自主 Agent + 5 个开发者工具)
- 自动化测试脚本8 用例全部通过,涵盖流式/非流式)
- Frontend SSE 流式稳定化(超时保护 + 自动回退)
**新增编排模式**
- **Pipeline流水线模式**Planner → Executor逐步骤 → Reviewer
- Planner 自动将问题拆解为 2-5 步可执行计划JSON 格式)
- Executor 使用用户提供的 Agent 配置逐步执行
- Reviewer 审查所有步骤输出,生产最终答案
- 测试通过Python/JS 对比分析Planner 生成 5 步计划 → Executor 执行 5 步 → Reviewer 输出 7541 字审查报告)
**第二轮新增功能**
- **Agent 自主学习**11 类任务分类 × 工具序列提取/合并 × 有效性评分 × 学习模式注入 system prompt
- **Agent 定时任务系统**cron 表达式 + Celery Beat 每分钟扫描 + 到期自动触发执行
- **飞书通知与机器人对话**:通知系统 + 飞书定时推送 + 橙子飞书机器人(独立 WS 连接)
整体完成度:**100%**(自主 AI Agent 全部能力完整闭环,无未完成核心项目)
---
## 关键设计决策
### 1. 外层 ReAct 控制
不使用 `llm_service.call_openai_with_tools()` 的内部 ReAct 循环(会导致循环嵌套冲突),而是由 AgentRuntime 自身控制循环,每次仅调一次 LLM工具执行后自行追加结果到消息列表再发起下一次 LLM 调用。这样粒度更细,可观察性更强。
### 2. 寄生式复用
| 已有能力 | 位置 | 复用方式 |
|---------|------|---------|
| ToolRegistry + 20+ 内置工具 | `tool_registry.py` + `builtin_tools.py` | 直接调用 `get_tool_function()`/`get_all_tool_schemas()` |
| 持久化记忆 | `persistent_memory_service.py` | 直接调用 `load_persistent_memory()`/`save_persistent_memory()` |
| OpenAI SDK 调用 | `llm_service.py` | 使用 `AsyncOpenAI` 直接调用(复用 API Key 配置) |
| Agent 配置存储 | `models/agent.py` | Agent 聊天 API 通过 DB 查询读取 |
### 3. 零重构
工作流引擎 5788 行、编辑器 9140 行——**一行未改结构**,仅在 `execute_node()` 的 if-elif 链末尾新增了一个 `agent` 类型分支(约 50 行)。
---
## 使用方式
### 方式一:工作流内 Agent 节点
在工作流编辑器中添加 `agent` 类型节点,支持配置:
```
节点配置:
system_prompt: "你是一个代码助手,可以帮助用户编写和调试代码。"
model: gpt-4o-mini
provider: openai
max_iterations: 10
tools: [file_read, file_write, http_request] # 白名单,默认全部
memory: true # 是否启用长期记忆
```
执行时输入数据中的 `query``input` 字段作为用户问题。
### 方式二:独立 Agent 对话
访问 `/agent-chat` 页面,选择一个已有 Agent 开始对话:
```
POST /api/v1/agent-chat/{agent_id}
{"message": "帮我写一个Python脚本读取日志文件"}
→ {
"content": "...",
"iterations_used": 3,
"tool_calls_made": 5,
"truncated": false,
"session_id": "..."
}
```
也可无 Agent 配置直接对话(`POST /api/v1/agent-chat/bare`),使用默认设置。
### 方式三Pipeline 流水线编排
访问 `/agent-chat` 页面切换至"编排"模式,选择"流水线模式",配置一个执行 Agent 后发送问题。系统自动完成:
1. **Planner** 分析问题并生成执行计划JSON 格式2-5 步)
2. **Executor** 按计划逐步执行,上一步输出作为下一步上下文
3. **Reviewer** 审查全部结果,输出最终答案
API 调用示例:
```
POST /api/v1/agent-chat/orchestrate
{
"message": "比较复杂的技术问题",
"mode": "pipeline",
"agents": [{
"id": "executor",
"name": "分析助手",
"system_prompt": "你是一个专业分析助手...",
"model": "deepseek-v4-flash",
"max_iterations": 10
}]
}
→ {
"mode": "pipeline",
"final_answer": "审查后的最终答案",
"steps": [
{"agent_name": "Planner", "output": "计划方案"},
{"agent_name": "分析助手 (步骤1)", "output": "步骤1结果"},
...
{"agent_name": "Reviewer", "output": "审查报告"}
]
}
```
适合需要复杂分解 + 质量把关的场景,如技术调研、方案设计、数据分析报告等。
---
## 后续计划 — 全部已完成
### 第一阶段(短期 1-2 周)— 全部完成
| 项目 | 状态 | 说明 |
|------|------|------|
| 记忆压缩总结 | ✅ 完成 | LLM 自动总结对话提取用户画像/关键事实/话题,存入长期记忆 |
| Agent 配置页面 | ✅ 完成 | 新增 AgentConfig.vue 页面,可视化编辑 System Prompt / 模型 / Temperature / 工具 |
| 执行追踪 | ✅ 完成 | 后端返回 steps前端 AgentChat.vue 可展开显示思考链 |
| 多 Agent 编排 | ✅ 完成 | 四种模式route路由分发、sequential流水线、debate独立回答+汇总、pipeline规划→执行→审查 |
| 编排前端 UI | ✅ 完成 | AgentChat.vue 新增模式切换、Agent 编辑弹窗、步骤展开 |
| 预算接入 | ✅ 完成 | Agent 内部 LLM 调用也计入工作流执行预算 |
| SSE 流式输出 | ✅ 完成 | 新增 `POST /api/v1/agent-chat/bare/stream` 端点 |
### 第二阶段(中期 1-2 月)— 全部完成
| 项目 | 状态 | 说明 |
|------|------|------|
| 向量记忆 | ✅ 完成 | SiliconFlow Embedding API + 余弦相似度 Top-K 检索 |
| Agent Dashboard | ✅ 完成 | LLM 调用追踪、Token 统计、Agent 用量排行、工具调用频次、日趋势图 |
| 工具市场 | ✅ 完成 | HTTP/Code 工具 CRUD + 沙箱测试 + 分类浏览 |
| 知识库 RAG | ✅ 完成 | 5 种格式解析 → 分块 → 嵌入 → 语义检索 → 上下文注入 |
### 第三阶段(长期 3-6 月)— 全部完成
| 项目 | 状态 | 说明 |
|------|------|------|
| 自主学习 | ✅ 完成 | 11 类任务分类 × 工具序列提取/合并 × 有效性评分 × 学习模式注入 |
| 定时任务系统 | ✅ 完成 | cron 表达式 + Celery Beat 每分钟扫描 + 到期自动触发执行 |
| 飞书通知与机器人 | ✅ 完成 | 通知系统 + 飞书推送 + 橙子飞书机器人 |
| 监控与告警 | ✅ 完成 | Agent 异常检测、通知推送 |
---
## 验证清单
- [x] 全部 Python 文件通过语法检查(`py_compile.compile`
- [x] 工作流引擎 `agent` 节点分支已添加
- [x] Agent 聊天 API 路由已注册
- [x] 前端路由和导航已配置
- [x] Agent Runtime 核心循环实现ReAct + 工具调用 + 记忆)
- [x] `bun run dev` 启动前后端验证
- [x] 测试 `POST /api/v1/agent-chat/bare` 返回正常
- 使用 DeepSeek 模型,返回了正确的中文问候
- 成功调用 `datetime` 工具获取当前时间2026-05-01 11:23:56
- 成功调用 `system_info` 工具识别 Windows 10.0.26200
- ReAct 循环正常2 次迭代:思考→工具→结果→回答)
- [x] 工具 schema 三路归一化修复(`core.py` + `llm_service.py`
- 自定义工具DB 加载,缺 `type` 字段)→ 添加 `type: "function"`
- 标准格式 → 原样通过
- 扁平格式name/parameters/description→ 正确包装
- [x] `load_tools_from_db()` 启动时自动调用(`main.py` startup 事件中)
- 20 个自定义工具在重启后仍然可用
- [x] 前端 SSE 流式修复(`AgentChat.vue`
- `receivedFirstEvent` 从"仅 think/tool_call/tool_result" 改为"任意事件"触发
- 空 think 内容显示"思考中..."占位文本
- 60s AbortController 超时保护
- 流式失败后自动回退到非流式 POST
- [x] 编程助手种子脚本(`seed_coding_agent.py`
- 创建 4 个开发者工具execute_code、grep_search、list_files、git_log
- 创建"代码编程助手"Agentworkflow_config + budget_config
- [x] 批量 Agent 种子脚本(`seed_agents.py`
- 创建 4 个常用自主 Agent数据分析助手、运维监控助手、网络调试助手、全能助手
- 全部已发布published可通过前端访问
- [x] 编程助手自动化测试全部通过(`test_coding_agent.py`
- 问候场景:非流式 12.6s / 流式 10.3s ✅
- 代码场景(素数判断):非流式 48.3s / 流式 43.6s ✅
- 搜索场景grep_search非流式 23.2s / 流式 15.4s ✅
- 文件读取场景:✅
- [x] 数据分析助手测试通过(计算 1-10 平均值 = 5.5,含表格输出)
- [x] Vite 前端开发服务器运行正常(`http://localhost:3002`
- [x] **测试工作流中放置 Agent 节点并执行**
- 工作流 `Agent节点测试` (start → agent → end)
- Agent 节点使用 `math_calculate` 工具计算 1+2+...+100 = 5050
- ReAct 循环正常2 次迭代:思考→工具→结果→回答)
- 执行完成,状态 completed耗时 7.45 秒
- Agent 节点返回 agent_meta: iterations=2, tool_calls=1, truncated=false
- [x] 测试 Agent 多轮工具调用
- [x] Agent 配置页面AgentConfig.vue + 路由 + 导航)
- [x] 执行追踪API steps 字段 + 前端思考链展开 UI
- [x] 记忆压缩总结LLM 自动提取用户画像/关键事实/话题)
- [x] 多 Agent 编排 API`POST /api/v1/agent-chat/orchestrate`
- [x] 三种编排模式端到端测试通过route / sequential / debate
- [x] **Pipeline 流水线模式端到端测试通过**
- 问题:"Python 和 JavaScript 的三大区别"
- Planner 自动生成 5 步 JSON 执行计划
- Executor 逐步骤执行 5 步(类型系统 → 类型系统 → 并发模型 → 生态工具链 → 整合报告)
- Reviewer 审查全部执行结果,输出 7541 字质量审查报告
- 总计 7 个步骤,全部成功
- [x] 编排结果包含 steps 追踪和 agent_results
- [x] 前端编排 UI模式切换 + Agent 编辑弹窗 + 结果展开)
- [x] Agent LLM 调用日志模型(`AgentLLMLog` 表创建成功,含 16 个字段)
- [x] `_LLMClient.chat()` 埋点timing + token 采集 + on_completion 回调)
- [x] Agent 监控 API 5 个端点注册overview / llm-calls / agents-stats / tool-usage / daily-trend
- [x] Agent 监控 Dashboard 前端路由和导航配置
- [x] `on_llm_call` 回调在 /bare /{agent_id} /orchestrate 三个端点均注入
- [x] 编排三种模式透传 `on_llm_call` 到子 AgentRuntime
- [x] **SSE 流式输出**`POST /api/v1/agent-chat/bare/stream` 返回 `text/event-stream`
- [x] **向量记忆**`AgentVectorMemory` 表自动创建Embedding 生成 + 余弦相似度检索可用
- [x] **工作流预算接入**`AgentRuntime``AgentBudgetConfig` 限制 LLM/工具调用次数;外部 `on_llm_invocation` 回调同步到 `WorkflowEngine._llm_invocations`
- [x] **知识库 RAG**:知识库/文档/文档块三表自动创建;支持 txt/pdf/docx/csv 解析;分块 + Embedding + 语义检索可用
- [x] **工具市场**
- [x] `GET /api/v1/tools/categories` — 返回分类列表
- [x] `GET /api/v1/tools` — scope/mine/public/all 筛选
- [x] `POST /api/v1/tools` — 创建 HTTP 工具ip_info_test和代码工具text_stats_test
- [x] `POST /api/v1/tools/test/http` — HTTP 沙箱测试httpbin 请求 200/4239ms
- [x] `POST /api/v1/tools/test/code` — 代码沙箱测试(文本统计 0ms
- [x] `POST /api/v1/tools/{id}/use` — 使用计数自增
- [x] `DELETE /api/v1/tools/{id}` — 删除自定义工具
- [x] **Agent 自主学习**2026-05-02 新增)
- [x] `AgentLearningPattern` 模型task_type / tool_sequence / frequency / score / keywords
- [x] `agent_learning_service.py``extract_pattern()` 从执行中提取工具序列
- [x] `agent_learning_service.py``merge_pattern()` 合并相似模式(频率自增、评分加权)
- [x] `agent_learning_service.py``get_relevant_patterns()` 按任务分类检索 Top-K 模式
- [x] `agent_learning_service.py``inject_learning_hints()` 注入历史模式到 system prompt
- [x] 集成到 `AgentRuntime.run()``run_stream()` —— 执行前注入、执行后保存
- [x] 支持 bare chat 和 Agent 模式(通过 `enable_learning` / `learning_mode` 参数控制)
- [x] **Agent 定时任务系统**2026-05-02 新增)
- [x] `AgentSchedule` 模型agent_id / cron_expression / enabled / last_run_at / next_run_at
- [x] `agent_schedule_service.py``check_due_schedules()` 扫描到期任务
- [x] `agent_schedules.py` API — CRUD + 手动触发 + 启用/禁用
- [x] `scheduler_tasks.py` — Celery Beat 每分钟调度任务
- [x] 集成到 `celery_app.py``app.conf.beat_schedule` 注册 `check-agent-schedules`
- [x] 依赖:`croniter`cron 表达式解析)
- [x] **飞书通知与机器人对话**2026-05-02 新增)
- [x] `Notification` 模型 + `notification_service.py` 通知服务
- [x] `notifications.py` API — 通知查询、已读标记
- [x] `feishu_bind.py` API — 飞书账号绑定/解绑
- [x] `feishu_app_service.py` — 飞书应用消息发送(文本/富文本)
- [x] `feishu_notifier.py` — 定时任务结果自动推送飞书
- [x] `feishu_ws_handler.py` — 飞书 WebSocket 长连接事件监听(消息/进群/退群)
- [x] `orange_app_service.py` — 橙子飞书机器人消息处理
- [x] `orange_ws_handler.py` — 橙子机器人独立 WS 连接 + 固定路由到橙子助手 Agent
- [x] 执行记录添加 `schedule_id` 字段,用户添加飞书绑定字段

View File

@@ -0,0 +1,429 @@
# 解决缺失能力计划
## 总体策略
按梯队分阶段实施。每个阶段聚焦 2-3 个能力,完成即可独立提升系统质量。
每阶段包含:涉及文件、核心改动、验证方式。
---
## 第一阶段闭环质量1-2 周)
优先解决"输出质量验证",这是连接自主进化系统的最后一环。
### 1.1 输出质量验证 → 新增 `evaluator` 节点 + `self_review` 工具
**目标:** Agent 执行完后自动检查输出质量,不达标则自我修正。
**方案:**
#### A. 新增 `self_review` 工具(第 35 个内置工具)
```
self_review(content="...", criteria="回答必须包含SQL优化建议和执行计划")
→ {
"score": 0.75,
"passed": true,
"issues": ["缺少具体执行计划"],
"suggestions": ["补充EXPLAIN输出分析"]
}
```
**实现:** 用 LLM 作为评判器deepseek-v4-flash轻量调用根据 criteria 打分 0-1。
#### B. 新增 `evaluator` 工作流节点类型
在工作流引擎中添加 evaluator 节点:
- 接收上游节点输出 + 评判标准criteria
- 调用 LLM 评判输出质量
- 输出 `{score, passed, issues, suggestions}`
- 配合 condition 节点:`passed=false` → 走修正分支 → 重试
#### C. AgentRuntime 内建 self-review
在 AgentRuntime ReAct 循环末尾添加可选的 self-review 步骤:
- `AgentConfig` 添加 `self_review: bool = False`
- 启用后Agent 在返回最终答案前自动调用 `self_review`
- 评分 < 0.6 则追加一轮修正迭代
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/services/builtin_tools.py` | 新增 `self_review_tool` + `SELF_REVIEW_SCHEMA` |
| `backend/app/core/tools_bootstrap.py` | 34→35import + register |
| `backend/app/services/workflow_engine.py` | 新增 `evaluator` 节点类型 |
| `backend/app/agent_runtime/core.py` | 末尾添加 self-review 步骤 |
| `backend/app/agent_runtime/schemas.py` | AgentConfig 添加 `self_review` 字段 |
| `frontend/src/utils/agentSkills.ts` | 新增条目 |
**验证:**
1. `self_review("SELECT * FROM t", "需要包含索引建议")` → score < 0.5
2. 工作流agent → evaluator(criteria="...") → condition(passed?) → 正常结束 / 修正重试
3. 全能助手对话测试:问一个复杂问题,开启 self_review确认输出质量提升
---
### 1.2 节点级自动重试
**目标:** error_handler 从空壳变为真正的重试机制。
**方案:**
修改 `error_handler` 节点执行逻辑:
```
当上游节点 status == "failed" 时:
1. 检查 retry_count剩余重试次数
2. 等待 retry_delay 秒
3. 重新执行上游节点(复用 get_node_input + execute_node
4. 成功 → 继续流程
5. 失败且 retry_count > 0 → 循环
6. 失败且 retry_count == 0 → 触发 on_error 动作
```
`on_error` 动作:
- `stop`:抛出错误停止工作流
- `notify`:发送告警继续
- `skip`:跳过该节点继续
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/services/workflow_engine.py` | 重写 error_handler 节点逻辑 |
| `backend/app/core/exceptions.py` | 添加 `NodeRetryExhausted` 异常 |
**验证:**
1. 模拟 LLM 超时 → error_handler 重试 3 次 → 第 3 次成功 → 继续
2. 模拟连续失败 → error_handler 耗尽重试 → 触发 on_error=notify → 告警记录
---
## 第二阶段编排整合2-3 周)
### 2.1 Orchestrator 进入工作流
**目标:** 4 种编排模式变为工作流节点类型。
**方案:**
新增 `orchestrator` 工作流节点类型,数据配置:
```json
{
"mode": "route | sequential | debate | pipeline",
"agents": ["agent_id_1", "agent_id_2", ...],
"routing_prompt": "用于 route 模式的路由指令",
"aggregation_prompt": "用于 debate 模式的汇总指令"
}
```
`workflow_integration.py` 添加 `run_orchestrator_node()`
- 解析 node_data 中的 agent 列表
- 从 DB 加载 Agent 配置
- 创建 AgentOrchestrator 实例
- 执行对应模式,返回结构化结果
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/agent_runtime/workflow_integration.py` | 新增 `run_orchestrator_node()` |
| `backend/app/services/workflow_engine.py` | 新增 orchestrator 节点类型 |
| `frontend/src/utils/agentSkills.ts` | 无需改动(后端节点类型) |
**验证:**
1. 创建工作流start → orchestrator(debate, [AgentA, AgentB, AgentC]) → end
2. 执行:确认 3 个 Agent 均被调用,结果被汇总
3. 创建工作流start → orchestrator(route, [代码助手, 数据分析师]) → end确认按路由分发
---
### 2.2 工具级人工审批
**目标:** 危险工具执行前暂停等待用户确认。
**方案:**
#### A. AgentToolConfig 扩展
```python
class AgentToolConfig(BaseModel):
include_tools: List[str] = []
exclude_tools: List[str] = []
require_approval: List[str] = [] # 新增:需要审批的工具名列表
```
#### B. AgentRuntime 审批拦截
在 ReAct 循环的工具执行环节(`core.py` 约 287 行):
```
if tool_name in config.tools.require_approval:
yield ApprovalRequest(tool_name, tool_args) # 暂停,等待外部确认
decision = await wait_for_approval() # 阻塞等待
if decision != "approved":
continue # 跳过该工具调用
```
#### C. WebSocket 审批通道
- AgentRuntime 暂停时通过 WebSocket 推送审批请求
- 用户通过 WebSocket 回复 approve/deny
- 超时默认策略可配置approve/deny/skip
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/agent_runtime/schemas.py` | AgentToolConfig 添加 require_approval |
| `backend/app/agent_runtime/core.py` | 工具执行前审批拦截 |
| `backend/app/websocket/manager.py` | 添加审批消息类型 |
**验证:**
1. 配置 Agent: `require_approval: ["deploy_push"]`
2. Agent 调用 deploy_push → WebSocket 收到审批请求
3. 用户 approve → Agent 继续执行
4. 用户 deny → Agent 跳过该工具
---
## 第三阶段性能与效率2-3 周)
### 3.1 并行执行
**目标:** 无依赖节点并行执行Orchestrator debate 并行。
**方案:**
#### A. 工作流 DAG 并行
修改 `execute()` 主循环:
```
当前:每轮取 1 个节点执行
改为:每轮取所有"前置节点全部完成"的节点asyncio.gather 并行执行
```
注意事项:
- 并行节点不能有共享状态依赖
- 需要分别捕获每个并行节点的异常
- WebSocket 需支持多节点同时推送进度
#### B. Orchestrator debate 并行
```python
# 改前
for agent in agents:
result = await agent.run(query)
# 改后
results = await asyncio.gather(*[agent.run(query) for agent in agents])
```
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/services/workflow_engine.py` | execute() 并行执行 |
| `backend/app/agent_runtime/orchestrator.py` | debate/sequential 并行 |
| `backend/app/websocket/manager.py` | 支持多节点并发推送 |
**验证:**
1. 3 个独立分支的 DAG → 总耗时 ≈ 最长分支耗时(而非三者之和)
2. debate 模式 3 Agent → 总耗时 ≈ 最慢 Agent 耗时
---
### 3.2 粒度进度上报
**目标:** 实时推送"第 3/7 步完成"到前端。
**方案:**
#### A. WorkflowEngine 进度回调
`execute()` 循环中添加钩子:
```python
async def on_progress(self, current_step, total_steps, node_name, status):
# 推送到 WebSocket
await ws_manager.broadcast(execution_id, {
"type": "progress",
"current": current_step,
"total": total_steps,
"node": node_name,
"status": status,
"percent": int(current_step / total_steps * 100),
})
```
#### B. 统计 DAG 总步数
执行前遍历拓扑排序结果,计算可达节点总数作为 total_steps。
#### C. WebSocket 改为推送模式
当前是轮询 DB改为 WorkflowEngine 主动调用 WebSocket manager 推送。
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/services/workflow_engine.py` | 添加 on_progress 回调 + 步数统计 |
| `backend/app/websocket/manager.py` | 添加 execution 进度推送方法 |
| `backend/app/api/websocket.py` | 适配新的推送模式 |
**验证:**
1. 执行 7 节点的 DAG → WebSocket 收到 7 条进度消息
2. 前端进度条从 0% 逐步递增到 100%
---
### 3.3 结果缓存
**目标:** 相同输入不重复计算。
**方案:**
添加缓存层,使用 Redis
```python
# 工具结果缓存
cache_key = f"tool:{tool_name}:{hash(json.dumps(args))}"
cached = await redis.get(cache_key)
if cached:
return cached.decode()
# LLM 响应缓存(相同 prompt + 相同 messages
cache_key = f"llm:{hash(messages_json)}"
```
配置:
- TTL 默认 1 小时
- 工具维度可选开启/关闭
- 确定性工具file_read、math_calculate默认开启
- 非确定性工具web_search、http_request默认关闭
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/agent_runtime/tool_manager.py` | 工具执行前后加缓存层 |
| `backend/app/agent_runtime/core.py` | LLM 调用前后加缓存层 |
| `backend/app/core/config.py` | 添加缓存配置项 |
**验证:**
1. 连续两次相同 file_read → 第二次命中缓存(耗时 < 1ms
2. 连续两次相同 math_calculate → 第二次命中缓存
---
## 第四阶段容错与共享2-3 周)
### 4.1 降级/回退链
**目标:** 模型/Agent 失败自动切换备用方案。
**方案:**
AgentLLMConfig 扩展:
```python
class AgentLLMConfig(BaseModel):
provider: str = "openai"
model: str = "gpt-4o-mini"
fallback_llm: Optional['AgentLLMConfig'] = None # 降级模型
```
Agent 节点 data 扩展:
```json
{
"fallback_agent": "备选Agent的ID" // 可选
}
```
执行逻辑:
1. 主模型调用失败 → 切换 fallback_llm 重试
2. Agent 执行失败 → 查找 fallback_agent 重试
3. 所有备用方案都失败 → 抛出错误
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/agent_runtime/schemas.py` | AgentLLMConfig 添加 fallback_llm |
| `backend/app/agent_runtime/core.py` | LLM 调用失败后切换 fallback |
| `backend/app/services/workflow_engine.py` | Agent 节点失败后切换 fallback_agent |
---
### 4.2 Agent 间知识共享
**目标:** 打破记忆隔离Agent 间共享知识。
**方案:**
添加全局知识索引层:
```
每个 Agent 执行完成后 → 提取关键知识 → 写入 global_knowledge 表
Agent 初始化时 → 从 global_knowledge 加载相关条目
```
实现:
- 新增 `GlobalKnowledge` 模型content, embedding, source_agent_id, tags, created_at
- `AgentMemory.initialize()` 添加全局知识检索步骤
- 自主进化创建的 Agent 自动继承创建者的知识
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/models/agent.py` | 新增 GlobalKnowledge 模型 |
| `backend/app/agent_runtime/memory.py` | initialize() 添加全局知识加载 |
| `backend/app/agent_runtime/core.py` | 执行完毕提取知识写入全局 |
---
### 4.3 Agent 异步执行实现
**目标:** 填空 `execute_agent_task`,支持真正异步 Agent 执行。
**方案:**
`execute_agent_task` 当前是空壳,需要实现:
```python
@celery_app.task
def execute_agent_task(agent_id, query, user_id):
db = SessionLocal()
agent = db.query(Agent).filter(Agent.id == agent_id).first()
config = build_agent_config_from_db(agent)
runtime = AgentRuntime(config)
result = asyncio.run(runtime.run(query))
# 更新 execution 记录
return {"status": "completed", "output": result.content}
```
**涉及文件:**
| 文件 | 改动 |
|------|------|
| `backend/app/tasks/agent_tasks.py` | 实现 execute_agent_task |
| `backend/app/tasks/scheduler_tasks.py` | 调度触发真正的异步执行 |
---
## 实施路线图总览
```
第一阶段1-2周
├── 1.1 输出质量验证self_review工具 + evaluator节点 + AgentRuntime自检
└── 1.2 节点级自动重试error_handler从空壳到真正重试
第二阶段2-3周
├── 2.1 Orchestrator进入工作流新增orchestrator节点类型
└── 2.2 工具级人工审批AgentToolConfig审批标记 + WebSocket审批通道
第三阶段2-3周
├── 3.1 并行执行DAG并行 + Orchestrator debate并行
├── 3.2 粒度进度上报on_progress回调 + WebSocket推送
└── 3.3 结果缓存Redis缓存层
第四阶段2-3周
├── 4.1 降级/回退链fallback_llm + fallback_agent
├── 4.2 Agent知识共享GlobalKnowledge + 跨Agent检索
└── 4.3 Agent异步执行填空execute_agent_task
```
## 优先级逻辑
- **第一阶段优先**:质量验证是自主进化的最后一环,没有它进化无方向;重试是稳定性基础
- **第二阶段其次**:编排整合让复杂任务可视化、安全化
- **第三阶段提速**:并行 + 缓存大幅提升性能(生产部署前必备)
- **第四阶段收尾**:容错和共享让系统长期运行可持续

View File

@@ -0,0 +1,289 @@
# 项目完成情况分析
## 📊 整体完成度
- **第一阶段MVP**: 100% ✅
- **第二阶段核心功能**: 100% ✅
- **第三阶段核心功能**: 100% ✅
- **整体项目**: 约 95-98%
## ✅ 已完成的核心功能
### 后端功能
1. ✅ 用户认证系统注册、登录、JWT
2. ✅ 工作流CRUD API创建、读取、更新、删除、执行
3. ✅ 工作流版本管理(版本保存、列表、回滚)
4. ✅ 工作流模板功能
5. ✅ 工作流导入导出
6. ✅ 工作流验证功能
7. ✅ 执行管理API创建、查询、状态获取
8. ✅ 执行日志API日志查询、统计
9. ✅ 数据源管理APICRUD、连接测试、数据查询
10. ✅ Agent管理APICRUD、部署/停止)
11. ✅ 模型配置管理APICRUD、测试连接
12. ✅ WebSocket实时推送
13. ✅ 工作流执行引擎(支持多种节点类型)
14. ✅ 数据库迁移脚本Alembic
15. ✅ 单元测试框架
16. ✅ API文档完善
### 前端功能
1. ✅ 登录/注册页面
2. ✅ 工作流列表页面
3. ✅ 工作流设计器(可视化编辑器)
4. ✅ 执行历史页面
5. ✅ 执行详情页面
6. ✅ WebSocket实时状态更新
7. ✅ Agent管理页面
8. ✅ 数据源管理页面
9. ✅ 模型配置管理页面
10. ✅ 执行日志实时查看界面
11. ✅ 执行结果可视化JSON树形展示
### 节点类型
1. ✅ 开始节点start
2. ✅ 输入节点input
3. ✅ LLM节点llm- 支持OpenAI和DeepSeek
4. ✅ 条件节点condition
5. ✅ 转换节点transform
6. ✅ 循环节点loop
7. ✅ Agent节点agent
8. ✅ HTTP请求节点http_request
9. ✅ 数据库操作节点database_operation
10. ✅ 文件操作节点file_operation
11. ✅ 输出节点output
12. ✅ 结束节点end
## ❌ 未完成的功能
### 1. Agent管理功能 ✅ 已完成
#### 后端 ✅
- [x] Agent CRUD API
- [x] 获取Agent列表
- [x] 创建Agent
- [x] 获取Agent详情
- [x] 更新Agent
- [x] 删除Agent
- [x] Agent部署/停止
#### 前端 ✅
- [x] Agent管理页面
- [x] Agent列表展示
- [x] Agent创建/编辑表单
- [x] Agent配置界面
- [x] Agent工作流配置器复用WorkflowDesigner
**状态**: ✅ 已完成,功能正常使用
### 2. 模型配置管理功能 ✅ 已完成
#### 后端 ✅
- [x] ModelConfig CRUD API
- [x] 获取模型配置列表
- [x] 创建模型配置
- [x] 更新模型配置
- [x] 删除模型配置
- [x] 测试模型连接
#### 前端 ✅
- [x] 模型配置管理页面
- [x] 模型配置列表
- [x] 模型配置表单
- [x] API密钥管理界面
**状态**: ✅ 已完成,功能正常使用
### 3. 数据源管理前端界面 ✅ 已完成
#### 后端状态
- ✅ 数据源CRUD API已完成
- ✅ 连接测试API已完成
- ✅ 数据查询API已完成
#### 前端 ✅
- [x] 数据源管理页面
- [x] 数据源列表
- [x] 数据源创建/编辑表单
- [x] 连接测试界面
- [x] 数据预览界面
**状态**: ✅ 已完成,功能正常使用
### 4. 更多节点类型
#### 已实现 ✅
- ✅ 基础节点start、input、output、end
- ✅ LLM节点
- ✅ 条件节点
- ✅ 转换节点
- ✅ 循环节点
- ✅ Agent节点
- ✅ HTTP请求节点 ✅
- ✅ GET/POST/PUT/DELETE请求
- ✅ 请求头配置
- ✅ 响应处理
- ✅ 数据库操作节点 ✅
- ✅ SQL查询
- ✅ 数据插入/更新/删除
- ✅ 文件操作节点 ✅
- ✅ 文件读取
- ✅ 文件写入
- ✅ 文件上传/下载
#### 未实现
- [ ] 定时任务节点
- [ ] Webhook节点
**状态**: HTTP请求、数据库操作、文件操作节点已完成定时任务和Webhook节点待开发
### 5. 前端功能完善
#### 工作流设计器
- [x] 基础拖拽功能
- [x] 节点配置面板
- [x] 节点删除功能(已优化,防止删除开始/结束节点)✅
- [x] 节点复制/粘贴Ctrl+C/Ctrl+V
- [x] 画布缩放和平移优化 ✅
- [x] 工作流保存提示优化 ✅
#### 执行管理
- [x] 执行历史列表
- [x] 执行详情页面
- [x] 执行结果可视化JSON树形展示、树形/JSON视图切换
- [x] 执行日志实时查看界面(日志列表、筛选、自动刷新)✅
- [x] 执行性能分析图表 ✅
### 6. 高级功能
#### 多租户支持
- [ ] 租户隔离
- [ ] 租户管理
- [ ] 资源配额管理
#### 权限管理
- [ ] RBAC基于角色的访问控制
- [ ] 工作流权限管理
- [ ] Agent权限管理
#### 监控和告警
- [ ] 系统监控面板
- [ ] 执行性能监控
- [ ] 告警规则配置
- [ ] 告警通知
#### 插件系统
- [ ] 插件注册机制
- [ ] 自定义节点插件
- [ ] 插件市场
### 7. 部署和运维
#### 生产环境配置
- [ ] 生产环境Docker配置
- [ ] Kubernetes部署配置
- [ ] 环境变量管理
- [ ] 配置文件加密
#### 监控和日志
- [ ] Prometheus指标收集
- [ ] Grafana仪表板
- [ ] 日志聚合ELK Stack
- [ ] 错误追踪Sentry等
#### CI/CD
- [ ] GitHub Actions配置
- [ ] 自动化测试流程
- [ ] 自动化部署流程
## 📋 优先级建议
### 高优先级(核心功能缺失)✅ 已完成
1. **Agent管理功能** ⭐⭐⭐ ✅
- 后端Agent CRUD API ✅
- 前端Agent管理页面 ✅
- **状态**: 已完成
2. **数据源管理前端界面** ⭐⭐⭐ ✅
- 前端:数据源管理页面 ✅
- **状态**: 已完成
3. **模型配置管理** ⭐⭐ ✅
- 后端ModelConfig CRUD API ✅
- 前端:模型配置管理页面 ✅
- **状态**: 已完成
### 中优先级(功能增强)✅ 已完成
4. **HTTP请求节点** ⭐⭐ ✅
- 后端HTTP请求节点实现 ✅
- 前端HTTP节点配置面板 ✅
- **状态**: 已完成
5. **数据库操作节点** ⭐⭐ ✅
- 后端:数据库操作节点实现 ✅
- 前端:数据库节点配置面板 ✅
- **状态**: 已完成
6. **前端功能完善** ⭐ ✅
- 节点删除/复制功能 ✅
- 执行结果可视化 ✅
- 执行日志实时查看 ✅
- **状态**: 已完成
### 低优先级(高级功能)
7. **多租户支持**
8. **权限管理RBAC**
9. **监控和告警**
10. **插件系统**
## 🎯 建议的开发顺序
### 第一阶段补齐核心功能1-2周✅ 已完成
1. ✅ Agent管理功能后端API + 前端界面)
2. ✅ 数据源管理前端界面
3. ✅ 模型配置管理后端API + 前端界面)
### 第二阶段增强工作流能力2-3周✅ 已完成
4. ✅ HTTP请求节点
5. ✅ 数据库操作节点
6. ✅ 文件操作节点
### 第三阶段完善用户体验1-2周✅ 已完成
7. ✅ 前端功能完善
8. ✅ 执行结果可视化
9. ✅ 执行日志实时查看
### 第四阶段:继续完善 ✅ 已完成
10. ✅ 画布缩放和平移优化
11. ✅ 工作流保存提示优化
12. ✅ 执行性能分析图表
13. ✅ 定时任务节点
14. ✅ Webhook节点
### 第五阶段:高级功能(按需)
15. 多租户支持
16. 权限管理
17. 监控和告警
18. 插件系统
## 📝 总结
**当前状态**: 项目核心功能已基本完成,可以正常使用。已完成的功能包括:
1. ✅ Agent管理功能后端API + 前端界面)
2. ✅ 数据源管理前端界面
3. ✅ 模型配置管理后端API + 前端界面)
4. ✅ HTTP请求节点、数据库操作节点、文件操作节点
5. ✅ 前端功能完善(节点删除/复制、执行结果可视化、执行日志实时查看)
**剩余待开发功能**:
1. ✅ 画布缩放和平移优化 - 已完成
2. ✅ 工作流保存提示优化 - 已完成
3. ✅ 执行性能分析图表 - 已完成
4. ✅ 定时任务节点 - 已完成
5. ✅ Webhook节点 - 已完成
6. 高级功能(多租户、权限管理、监控告警、插件系统)- 按需开发
**建议**: 继续完善用户体验和高级功能,使项目更加完善和易用。