1. 页面概览
「AI 自动化经营」是 AIP 管理后台的对话式自动化配置中心(源码 action/web/src/views/AutomationConsole.vue),对标 Palantir AIP Agent Studio + Automate。页面左侧为资产/状态面板(自动化工作流卡片 + 立即运行、自动化活动摘要、执行历史 tool_call/tool_result 卡片序列),右侧为 Automation Copilot 对话面板(公共组件 CopilotChat.vue,SSE 流式渲染、会话管理与 AI 可用能力清单)。用户用自然语言描述经营自动化需求(如「每天 8 点检查库存,低于阈值自动补货并通知我」),AI 通过工具调用自动完成自动化工作流的创建、启停、查询并执行。
一句话总结:对话即配置,AI 把自然语言自动化为可运行的自动化工作流并立即执行。
2. 访问入口
- 路由与菜单:
/admin/automation,路由名AutomationConsole;位于 AIP 管理后台左侧边栏「AI 自动化经营」。 - 认证与权限:
/admin父路由requiresAdmin,须管理员登录;SSE 请求显式带aip_tokenBearer,未登录时前端静默提示不发起请求。 - 端口与 API 前缀:AIP 18080,aipClient baseURL
/aip-api/v1;SSE 直连/aip-api/v1/automation/chat(fetch + ReadableStream,因 EventSource 无法携带 Authorization 头)。
3. 界面布局
┌ 左 30% 资产面板 ┌ 右 70%: Automation Copilot ┐
│ 自动化工作流: 卡片列表 [刷新] │ 头部: AI 自动化经营 + [新建会话]│
│ 卡片: 名称/状态/触发器/工作流# │ 历史会话下拉 + [设置] │
│ 描述/ [立即运行] │ AI 可用能力(N 项)折叠面板 │
│ 自动化活动: 最近6条工具调用摘要 │ 消息列表(流式 markdown + 工具 │
│ 执行历史: tool_call/result 卡片 │ 调用卡片) │
│ (右上角「设置」可开关) │ 输入区: textarea + [发送] │
└──────────────────────────────────└──────────────────────────────┘
各板块职责:自动化工作流展示 AI 已创建的自动化并可一键运行;自动化活动是最近 6 条工具调用摘要;执行历史为当前会话完整工具调用/结果序列;右侧 Copilot 承担对话、工具调用与会话管理。
4. 交互元素
| 控件 | 位置 | 含义与作用 |
|---|---|---|
| 「立即运行」 | 自动化卡片 | 对卡片对应工作流同步执行(复用 POST /workflows/:id/run,超时 120 秒) |
| 「刷新」 | 自动化工作流标题 | 重拉自动化列表(对话结束 turn-complete 后也会自动刷新) |
| 「新建会话」 | Copilot 头部 | 清空当前对话,开始新会话 |
| 历史会话下拉 | Copilot 头部 | 切换历史会话(GET /automation/sessions),加载消息与工具卡片 |
| 「设置」 | Copilot 头部 | 「展示工具调用及结果」(localStorage copilot_show_tools,联动左侧执行历史)、发送方式 Enter / Ctrl+Enter(copilot_send_mode) |
| 输入框 + 「发送」 | 对话底部 | 描述自动化需求,按发送方式设置以 Enter 或 Ctrl+Enter 发送 |
| 示例引导 chips | 空对话区 | 一键填入示例需求(库存检查补货 / 订单已付款补货 / 每周一经营周报) |
5. 后端关联
端点(AIP 18080):
| 方法 | 路径 | 用途 |
|---|---|---|
| POST | /automation/chat | AI 对话 SSE 流式(token / tool_call / tool_result / done 事件),body {message, session_id?} |
| GET | /automation/sessions | 会话列表(分页,按更新时间倒序) |
| GET | /automation/sessions/:id | 会话详情(含消息历史,解析 tool_calls_json 为工具卡片) |
| GET | /automation/tools | 工具定义清单(AI 可用能力) |
| GET | /automation/automations | 自动化工作流列表(兼容 {items}/{automations}/直接数组) |
| POST | /workflows/:id/run | 立即运行,body {params:{}} |
关键机制
- SSE 事件流:chat 端点按行解析
event:/data:帧,事件类型 token(追加流式文本)、tool_call(推入调用卡片)、tool_result(关联到同名最近调用并标注成功/失败)、done(结束并刷新会话);非流式返回时走 JSON 兜底解析。 - 工具目录约 16 项:create_automation / list_automations / get_automation / enable_automation / disable_automation / run_automation_now、query_objects / execute_action / list_change_events,以及跨产品 get_api_usage_/call_ 工具(Foundry / Apollo / Gotham / AIP)。
- 一轮对话结束(done 或非流式兜底)后前端刷新会话列表与自动化列表;左侧执行历史由 CopilotChat 以 tool-activities 事件拉平上报。
6. 权限与安全
- 路由级:
/admin父路由requiresAdmin,非管理员被守卫重定向。 - 接口级:automation 端点挂 protected 登录组,均需 JWT;SSE 请求显式带
Authorization: Bearer <aip_token>。 - 展示安全:AI 回复先
marked渲染再经 DOMPurify 清洗后注入;未登录(无 aip_token)时不发起请求,避免 401 重定向到登录页打断其它产品会话。
7. 常见问题与排错
- 现象:对话发送后无响应或提示「[未登录]」。原因:
localStorage无aip_token。处理:先登录 AIP 平台再使用;确认当前登录态有效。 - 现象:左侧「自动化工作流」为空且提示后端可能未就绪。原因:
GET /automation/automations失败或返回空。处理:确认 AIP 18080 服务在运行、已登录管理员;点「刷新」重试。 - 现象:流式文本不出现、只有工具卡片。原因:SSE 帧解析失败或后端返回非流式 JSON。处理:在浏览器 Network 确认
automation/chat返回text/event-stream;若为 JSON 则走非流式兜底,属兼容路径。 - 现象:左侧「执行历史」空白。原因:右上角「设置」中「展示工具调用及结果」被关闭(
copilot_show_tools为 0)。处理:打开设置勾选该选项,左侧与对话内卡片即恢复。
8. 已知缺陷与边界
| 项目 | 说明 |
|---|---|
| 未登录行为 | 仅提示不请求,不自动跳转登录(避免在 Swift 等独立登录产品页被拦截器重定向) |
| 自动化编辑入口 | 列表只读展示 + 立即运行,新建/编辑/启停均由 AI 对话完成,无表单式编辑入口 |
| 静默置空 | 会话/工具接口失败时静默置空,无显式报错;AI 可用能力清单依赖 /automation/tools 返回 |
| 执行历史范围 | 仅覆盖当前会话内消息(切换会话后清空),非全局执行记录 |