1. 页面概览

「Agent 运行」是 AIP 的 Agent 任务执行与回放页面(action/web/src/views/AgentRunPage.vue,普通登录用户可访问)。用户输入一个自然语言「目标」(goal),选择执行模式(当前仅 plan_execute:规划 + 执行),前端 POST /agents/tasks 同步执行——执行期间按钮旋转等待,后端一次返回完整结果后,页面展示每一步骤的时间线(工具名 + 状态徽标 + 描述 + 结果摘要)与最终结果;同时提供历史任务列表与详情弹窗,可回放任意历史任务的执行步骤。一句话总结:本页是 AIP Agent 的「运行台」,用于发起目标型任务并回看每一步干了什么。

2. 访问入口

2.1 路由与菜单

路由 path: /agentname: AgentRun、meta 标题「Agent 运行」、requiresAuth;顶部导航栏菜单「Agent」(title 提示「AIP Agent 运行(自然语言目标规划并执行)」)。源码 action/web/src/views/AgentRunPage.vue

2.2 认证与权限

需要登录(aip_token);普通登录用户即可访问,无管理员门槛。

2.3 端口与 API 前缀

AIP 后端 18080;客户端 action/web/src/api/aipClient.js,baseURL /aip-api/v1

3. 界面布局

单栏纵向布局,从上到下依次为页头、提示条、新建任务卡片、历史任务卡片;另有全局覆盖层的详情弹窗。

┌───────────────────────────────────────────┐
│ Agent 运行                       [刷新]     │
│ [操作提示 alert]                           │
│ ┌ 新建 Agent 任务 ───────────────────────┐ │
│ │ 模式 [plan_execute(规划 + 执行)]        │ │
│ │ 目标 * [textarea]                    │ │
│ │ [运行] [清空结果]                      │ │
│ │ ── 运行结果 ──                          │ │
│ │ 运行结果:已完成  task_id: xxx          │ │
│ │ #1 工具名 [状态] 描述/结果摘要           │ │
│ │ 最终结果 <pre>                        │ │
│ └──────────────────────────────────────┘ │
│ ┌ 历史任务 ────────────────────────────┐ │
│ │ 目标 | 模式 | 状态 | 结果摘要 | 创建时间  │ │
│ │ (行点击打开详情)                       │ │
│ └──────────────────────────────────────┘ │
└───────────────────────────────────────────┘
   └─ 任务详情弹窗:模式/状态/task_id + 目标 + 步骤时间线 + 最终结果

4. 交互元素

控件位置含义与作用
下拉「模式」新建任务当前仅 plan_execute(规划 + 执行) 一个选项
文本域「目标 *」新建任务必填自然语言目标,如「统计2024年各产品销量并按季度汇总」
按钮「运行」新建任务同步执行;执行中显示 spinner + 文案「执行中(同步执行,请稍候)...」并禁用
按钮「清空结果」新建任务清空当前运行结果(currentDetail),仅影响本表单下方展示
按钮「刷新」页头重新拉取历史任务列表
历史任务表格行历史任务点击打开详情弹窗(openDetail

状态徽标映射:已完成(completed/succeeded/success/done)、失败(failed/error)、已取消(cancelled)、执行中(running/in_progress)、等待中(pending)、排队中(queued)、已跳过(skipped)。

5. 后端关联

5.1 API 客户端

action/web/src/api/aipClient.js(baseURL /aip-api/v1);任务创建请求单独放宽 timeout: 120000(同步执行可能较久)。

5.2 端点表

方法路径请求体/参数页面触发点成功响应 data
POST/agents/tasks{mode, goal}「运行」{task_id, mode, goal, status, result_summary, error, steps:[{order, description, tool_name, status, result_summary, error}], result, created_at, created_by}
GET/agents/taskslimit=50加载历史、刷新{items, total, page, page_size}
GET/agents/tasks/:id详情弹窗同 POST 响应结构

5.3 关键机制

后端 agent.Handler 挂 protected 登录组,路由前缀 /agentsCreateTask同步执行RunSync),一次请求跑完整个「规划 + 执行」过程;前端 unwrap 兼容 {code:0, data:...} 与直接 {key:...} 两种外层结构,normalizeTasks 兼容 tasks/items/list/records 数组,详情取值 id ?? task_id。错误处理:请求体不合法返回 INVALID_REQUEST(400);后端未就绪时列表提示「暂无任务记录(后端可能未就绪)」,页面不白屏。

6. 权限与安全

7. 常见问题与排错

  1. 点「运行」后一直转圈:原因是同步执行耗时长(多步 LLM),timeout 为 120s,超过或后端无响应则失败。处理:等待执行完成;失败后看 alert 错误详情;确认 AIP 后端 18080 已启动。
  2. 历史任务列表为空/提示「暂无任务记录」:原因是 GET /agents/tasks 失败(后端未就绪)或确实无任务。处理:确认后端启动后点「刷新」;Network 查看返回是否含 {items:[...]}
  3. 点击历史行详情加载失败:原因是该任务无 id/task_id,或 GET /agents/tasks/:id 报错。处理:看 alert「该任务无 ID,无法加载详情」;若后端 404 确认任务 ID 有效。
  4. 步骤时间线状态显示原始英文:原因是 status 值不在前端 STATUS_TEXT 映射内。处理:属正常兜底(返回原值),比对后端 status 取值。

8. 已知缺陷与边界