1. 页面概览

多智能体编排页是 LightAIP 的多 Agent 协同任务入口,路由为 /orchestrate。它把"一个复杂业务问题"交给后端编排引擎(TAD-07)拆解为多个子任务,由不同角色的 LLM Agent 分别分析,最后融合为一份报告。页面提供四种编排策略:串行、并行、领导者-跟随者、辩论,并就地展示子任务列表与融合结果。

页面同时提供编排历史列表(分页表格)、任务详情弹窗、融合报告弹窗与运行中任务取消能力。所有能力对接 AIP 后端 18080 端口的 /api/v1/orchestrations 路由组。一句话总结:多智能体编排页是"策略选择 + 任务发起 + 过程与结果查看"的一体化操作台。

2. 访问入口

2.1 路由与菜单

项目
路由 path/orchestrate
路由 nameOrchestrate
路由 title多智能体编排
requiresAuthtrue
菜单位置Action 栏目(ActionLayout.vue)「多智能体编排」
前端源码action/web/src/views/OrchestratePage.vue
路由注册action/web/src/router/index.js

2.2 认证与权限

meta 配置 requiresAuth: true,未登录访问被前端路由守卫拦到登录页。页面所有请求通过 action/web/src/api/aipClient.js 的 axios 实例发出:请求拦截器从 localStorage 读取 aip_token,以 Authorization: Bearer <token> 附带 JWT;响应拦截器收到 401 时清除 aip_tokenaip_username 并跳转 /login。普通登录用户即可访问。

2.3 端口与 API 前缀

AIP 后端默认端口 18080,API 前缀 /aip-api(实际请求路径均带 /v1,即 /aip-api/v1/orchestrations),开发环境下由 Vite(默认 5173)代理并重写为 /api/v1

3. 界面布局

+--------------------------------------------------+
| 多智能体编排  [刷新]                               |
+--------------------------------------------------+
| [操作结果提示 alert(有消息时显示,可关闭)]          |
+--------------------------------------------------+
| 新建编排任务(card)                               |
|  编排策略* [串行▾]   任务描述* [textarea]           |
|  上下文(context,可选 JSON)[textarea]             |
|  [运行编排] [清空结果]  说明:最长约 120 秒          |
+--------------------------------------------------+
| 编排结果(有结果时):状态徽标 + orchestration_id     |
|  子任务列表(#/描述/角色/状态/查看结果)             |
|  融合结果(result) code-block                     |
+--------------------------------------------------+
| 编排历史(card)                                   |
|  表格:ID|描述|策略|状态|Agent数|结果摘要|创建时间|操作 |
|  [上一页] 第 N 页 / 共 M 页 [下一页]                |
+--------------------------------------------------+

各板块职责:

4. 交互元素

控件位置含义与作用
编排策略下拉框新建任务必选:串行(顺序逐个执行)/ 并行(子任务同时执行)/ 领导者-跟随者(Leader 拆解分工,Follower 执行)/ 辩论(多 Agent 论证后融合),默认 sequential
任务描述输入框新建任务必填,自然语言描述要分析的问题(如"分析近一年各区域销售趋势,评估促销活动效果并给出下季度建议")
上下文输入框新建任务可选 JSON,注入数据源、时间范围、区域等业务上下文;非合法 JSON 会被拦截并提示
运行编排按钮新建任务同步执行,最长约 120s;执行中禁用并显示「编排执行中(同步执行,请稍候)...」
清空结果按钮新建任务清空当前编排结果区
刷新按钮页头重新加载第一页编排历史
详情按钮历史行打开编排详情弹窗(子任务列表),对应 GET /orchestrations/:id
结果按钮历史行打开融合报告弹窗,对应 GET /orchestrations/:id/result
取消按钮历史行仅运行中(running/in_progress/queued/pending)显示;二次确认后 POST /orchestrations/:id/cancel
上一页/下一页历史底部按 page_size=20 翻页,第 N 页 / 共 M 页

5. 后端关联

5.1 端点表

方法路径用途
POST/orchestrations创建并同步执行编排,body {description, strategy, context?},超时放宽至 120s
GET/orchestrations?page=&page_size=分页历史列表(page_size 上限 100),响应 {items, total, page, page_size}
GET/orchestrations/:id任务状态 + 子任务列表(TaskView)
GET/orchestrations/:id/result融合报告文本,响应 {orchestration_id, strategy, status, result}
POST/orchestrations/:id/cancel取消任务,响应 {orchestration_id, status:"cancelled"}

5.2 关键机制

6. 权限与安全

7. 常见问题与排错

问题 1:点「运行编排」提示"编排执行失败"

现象:顶部红色 alert 报失败。

原因:多为后端未启动、Token 失效(401)、context 非合法 JSON、或 LLM 调用超时。

处理:先看 DevTools Network 确认请求落在 /aip-api/v1/orchestrations 且非 401;再确认后端 18080 进程与 LLM 配置正常;context 字段需严格 JSON 格式。

问题 2:创建成功但「编排结果」区显示"未返回子任务数据"

现象:提示"编排任务执行完成",但无子任务列表。

原因:后端返回结构与前端 normalizeCreate 期望不一致(字段缺失),或同步返回空 sub_tasks

处理:用「结果」弹窗查看 GET /orchestrations/:id/result 原始文本;若仍为空说明任务尚未产出融合报告,稍后刷新历史再点「结果」。

问题 3:运行中的任务没有「取消」按钮

现象:任务行操作区没有「取消」。

原因isRunnable 仅识别 running/in_progress/queued/pending 四种未终态;已完成/失败/已取消任务不显示取消按钮。

处理:确认任务确实未进入终态;若状态异常(如 partial_complete)不支持取消,需人工处置。

8. 已知缺陷与边界

说明
同步执行阻塞创建编排同步等待,最长 120s,期间按钮锁定,无后台异步任务轮询
子任务手动指定未暴露后端 CreateRequest 支持 sub_tasks 手动指定,前端表单未提供入口
Agent 管理入口缺失本页仅展示子任务的角色 Tag,Agent 注册/启停需到后台「Agent 管理」页
状态映射依赖后端前端将 completed/succeeded/success/done 都归为"已完成",依赖后端规范化状态字段