feat: 新增智能体与工作流选项卡(预制/自定义、画布编辑器、执行引擎);约定每次改动提交推送并打新 tag

This commit is contained in:
xianrenge
2026-08-16 23:28:55 +08:00
parent 10ecf526ec
commit 9b9e810ff1
24 changed files with 3550 additions and 118 deletions
+57 -8
View File
@@ -12,11 +12,13 @@
## 1. 页面总览
应用共 7 个选项卡(导航左侧栏):
应用共 9 个选项卡(导航左侧栏):
| 选项卡 | 路由 | 页面 |
| --- | --- | --- |
| 对话 | `/chat` | `ui/src/pages/ChatPage.tsx` |
| 智能体 | `/agents``/agents/:agentId` | `ui/src/pages/AgentsPage.tsx``ui/src/pages/AgentChatPage.tsx` |
| 工作流 | `/workflows``/workflows/:workflowId` | `ui/src/pages/WorkflowsPage.tsx``ui/src/pages/WorkflowCanvasPage.tsx` |
| 模型管理 | `/` | `ui/src/pages/ModelsPage.tsx` |
| 模型广场 | `/plaza` | `ui/src/pages/ModelPlazaPage.tsx` |
| 任务 | `/tasks` | `ui/src/pages/TasksPage.tsx` |
@@ -77,7 +79,52 @@
---
## 3. 模型管理页(`/`
## 3. 智能体页(`/agents`
### 3.1 智能体列表
- 左侧导航新增「智能体」选项卡,页面分为「预制智能体」与「自定义智能体」两组。
- **预制智能体**:随应用内置 6 个(通用助手、代码专家、写作助手、翻译官、数据分析师、提示词优化师),首次启动自动写入数据库(`settings``preset_agents_seeded` 标记,之后尊重用户删除);可通过「恢复预制智能体」一键找回已删除的预制体。
- **自定义智能体**:支持新增 / 编辑 / 删除 / 启用停用。字段:名称、图标(emoji)、描述、系统提示词、默认大模型(可选)、启用开关。
- 删除智能体会同时删除其名下所有会话(消息随外键级联删除)。
### 3.2 智能体会话
- 点击智能体卡片「开始对话」进入 `/agents/:agentId`,该页面复用聊天页完整能力(流式输出、重新生成、版本历史、工具、预测建议等)。
- **会话隔离**`conversations` 表新增 `agent_id` 字段。普通对话页只显示 `agent_id` 为空的会话,每个智能体只显示属于自己的会话,互不干扰。
- 新建智能体会话时自动写入该智能体的**系统提示词**(人设)与默认大模型;对话时仍可在右侧参数面板切换任意可用大模型(本地 / 在线 API 均可)。
- 系统提示词在 `chat_send` / `regenerate_message` / `edit_message` 三条链路统一注入到消息历史最前(工具说明紧随其后),重新生成与编辑重提同样生效。
---
## 4. 工作流页(`/workflows`
### 4.1 工作流列表
- 左侧导航新增「工作流」选项卡,页面分为「预制工作流」与「自定义工作流」两组,支持新建 / 删除 / 启用停用 / 恢复预制。
- **预制工作流**:随应用内置 4 个(翻译助手、内容总结、两步润色、写作助手),首次启动自动写入数据库(`settings``preset_workflows_seeded` 标记,之后尊重用户删除);「恢复预制工作流」可一键找回。
- 新建工作流会生成「开始 → 大模型 → 输出」的默认画布,随后进入画布编辑器。
### 4.2 画布编辑器(`/workflows/:workflowId`
- 左侧节点面板可添加 4 类节点:
- **开始**:工作流入口,提供运行输入(提示词中可用 `{{input}}` 引用);
- **大模型**:配置提示词模板、节点级大模型(可选)、temperature、max_tokens,提示词可用 `{{input}}``{{节点id}}` 引用上游节点输出;
- **文本**:静态文本内容(如风格要求),可被其他节点引用;
- **输出**:决定最终输出(模板留空时自动取上游输出)。
- 节点可拖动布局;点击节点右侧圆点拖到另一节点左侧圆点建立连线(数据流),点击连线删除;删除节点时自动清理相关连线。
- 右侧面板:运行工作流(输入内容 + 可选大模型)、节点设置、工作流设置(图标/描述/默认大模型/启用)、各节点输出列表。
- 运行前自动保存画布;后端按拓扑顺序执行,`workflow://node-status` 事件实时推送每个节点 running/done 状态与输出。
### 4.3 执行引擎
- `apps/desktop/src/workflow.rs`:DAG 拓扑排序(Kahn,检测循环/未知节点/自连)、模板变量解析(`{{input}}``{{节点id}}`)、逐节点执行与结果收集;不依赖具体模型,通过注入的 `call_model` 闭包调用模型,便于单元测试。
- LLM 节点模型解析顺序:节点配置 → 工作流默认模型 → 运行参数模型 → 第一个本地模型 / 第一个已启用在线模型。
- 已内置 5 个执行引擎单元测试(单节点、链式传参、文本节点组合、循环检测、缺失变量报错)与 1 个真实模型端到端测试(`real_model_translation_workflow_e2e`,用本机已配置的在线模型跑通「翻译」工作流,默认忽略、显式运行)。
---
## 5. 模型管理页(`/`
- **本地模型**:启动时自动扫描模型目录(可手动重新扫描);支持导入本地 GGUF 文件;可「部署」(后台加载 llama-server 并显示进度)或「停止」;可打开所在目录、移除。
- **在线 API 模型**(OpenAI 兼容):添加时填写显示名称、Base URL、API Key(可选)、上游模型 ID。
@@ -86,7 +133,7 @@
---
## 4. 模型广场页(`/plaza`
## 6. 模型广场页(`/plaza`
- 搜索 Hugging Face / ModelScope 上的 GGUF 模型,支持热门榜(空关键词)。
- 查看仓库的 GGUF 量化版本文件列表,选择版本一键下载(ModelScope 文件自动附带 SHA256 校验)。
@@ -95,14 +142,14 @@
---
## 5. 任务页(`/tasks`
## 7. 任务页(`/tasks`
- 展示下载任务与部署任务的实时进度、状态(进行中 / 完成 / 失败)。
- 空状态提示:暂无任务时引导去模型广场下载或部署本地模型。
---
## 6. 工具页(`/tools`
## 8. 工具页(`/tools`
- **联网搜索**:配置 Tavily API Key,支持手动测试搜索;对话中的「联网搜索」开关依赖该配置。
- **技能(Skill**
@@ -116,14 +163,14 @@
---
## 7. 服务管理页(`/server`
## 9. 服务管理页(`/server`
- OpenAI 兼容的本地 API 服务:`/v1/models``/v1/chat/completions`SSE 流式)、`/v1/embeddings`
- 可设置端口与 API Key,仅本机监听;可启动/停止并查看状态。
---
## 8. 设置页(`/settings`
## 10. 设置页(`/settings`
- **引擎与路径**:模型目录、llama-server 路径、模型下载源(hf-mirror / huggingface.co / modelscope.cn)、默认后端(auto/cpu/cuda/vulkan)、上传大小上限。
- **对话**
@@ -137,12 +184,14 @@
---
## 9. 改动记录
## 11. 改动记录
> 按时间倒序追加;每次改动功能都要在此登记。
### 2026-08-16
- 新增「工作流」选项卡:画布式节点编辑器(开始/大模型/文本/输出,节点连线传参、拖动布局),内置 4 个预制工作流(翻译助手、内容总结、两步润色、写作助手)并支持自定义与恢复;新增 `workflows` 表与 `run_workflow` 命令,后端 `apps/desktop/src/workflow.rs` 执行引擎支持拓扑排序、模板变量(`{{input}}`/`{{节点id}}`)、循环检测,LLM 节点支持本地/在线大模型(节点 → 工作流 → 运行参数 → 自动回退);`workflow://node-status` 事件实时推送节点状态;5 个引擎单元测试 + 1 个真实模型端到端测试全部跑通。
- 新增「智能体」选项卡:内置 6 个预制智能体 + 支持自定义智能体(名称/图标/描述/系统提示词/默认模型/启用开关);每个智能体拥有独立会话区(`conversations.agent_id` 隔离),新建会话自动继承智能体系统提示词与默认模型;系统提示词统一注入 `chat_send` / `regenerate_message` / `edit_message` 链路;删除智能体时级联删除其会话;支持「恢复预制智能体」。
- 工具页新增「技能(Skill)」与「MCP 服务」管理;对话工具协议上线:模型用 `[[skill:…]]` / `[[mcp:…]]` 标记调用技能与 MCP 工具,系统执行后回填结果(最多 3 轮)。新增本地 MCP 测试服务器 `scripts/test_mcp_server.py` 与 3 个示例技能。
- 会话列表「更多操作」菜单:鼠标移出按钮/菜单所在区域时自动关闭,避免遮挡其他对话标题的查看与操作。
- 新建对话时复用已有空会话(无消息的会话),避免堆积多个空的「新会话」。