SKILL.md 10.0 KB


name: agent-management-external-workflow

description: "当需要构建或修改接入智能体管理平台(agent-management)外部工作流服务的软件时使用:调用 /api/v1 工作流运行接口、上传变量/文件、启动运行、订阅节点状态/思考/工具 SSE 流、查询结果、下载工作空间,或构建前端执行/运行记录视图且需保留智能体管理平台运行内容、流程与信息层级、但不必照搬 /history 页面样式时使用。用户必须显式提供智能体管理平台的 baseUrl、目标工作流的 ID 或名称(以及 API key、超时等可选项);这些值必须落在目标应用的配置文件中(如 .env / application.yml / config.json 等),严禁在源码中硬编码,以适应环境切换与平台迁移。触发关键词包括:智能体管理平台、接入智能体管理平台、agent-management、接入 agent-management、调用工作流、展示执行过程、展示思考过程、展示工具调用、展示待办清单、运行记录页面、参考运行记录页、断线重连、SSE 续传、AskFor 用户确认、与平台前端完全一致。"

Agent Management 外部工作流

使用此技能以确保 vibe coding 工作与 agent-management 外部工作流契约及预期的运行执行体验保持一致。用户的描述可能比较模糊,需根据其诉求和目标代码库自行推断集成范围。

第一步

由你自行判断任务形态,不要让用户来做分类。

  • API 集成:用户需要调用 agent-management 工作流服务、上传输入、消费 SSE 或拉取结果。阅读 references/external-workflow-api.md。
  • 运行展示 UI:用户需要前端页面/组件来展示执行进度、节点输出、思考过程、日志、错误或工作空间下载。阅读 references/run-history-ui.md。
  • JS/Vue 参考代码:需要可直接复用的 SSE 客户端、状态容器(VisitStore)或 Vue 组件实现。阅读 references/js-implementation.md(代码正确性以另两份契约为准)。
  • 与平台前端完全一致(源码级):用户要求运行展示的表现与平台前端零差异(视觉类名、折叠交互、multi-visit、AskFor、断线重连逐项一致)。阅读 references/platform/README.md(平台源码自包含副本的索引与接入流程),做实时执行视图另读 references/platform/workflow-run-live.md(实时态与回放态的差异)。
  • 端到端集成:用户同时需要服务调用和前端执行视图。三份参考文档都要读。

优先沿用目标仓库已有的框架、请求封装、状态管理、组件库、路由和样式约定。将打包的参考文档视为集成契约,把运行记录的概念翻译为目标系统原生的 UI 风格。

输入约定

集成前必须由用户明确给出以下输入;缺失任一关键项应主动追问,不要自行假设:

  • 智能体管理平台 baseUrl(必填):例如 https://amp.example.com 或 http://10.0.0.5:2438。注意是否包含端口与协议;末尾不要带 /api/v1,因为端点路径已经包含。
  • 目标工作流(必填):优先使用工作流的 name(kebab-case 字符串,例如 military-analyze-agent,全局唯一、可读、用于所有外部 API URL 路径)。同时兼容旧的数字 id:纯数字路径参数会被视为 id 回退查找。同一 baseUrl 下可能存在多个工作流,必须由用户指定具体的一个或一组。
  • API Key(必填,敏感):用于 X-API-Key 鉴权。禁止写入受版本控制的源码或浏览器可见产物;默认放在后端配置或环境变量中。
  • 超时、重试、TTL 等可选项:如不提供,使用契约默认值(如 ttlHours=720)。

配置而非硬编码

目标业务应用必须把上述值落到自身的配置体系里,不允许在源码中写死,以适应环境切换、平台迁移和密钥轮换:

  • 后端应用:放进 application.yml / application.properties / .env,通过 @Value / @ConfigurationProperties 注入。
  • 前端应用:通过构建期环境变量(如 Vite 的 import.meta.env.VITE_AMP_BASE_URL)或运行期由后端代理下发的配置接口注入。
  • 容器/部署:通过环境变量或 ConfigMap 注入,写入部署文档。
  • 提供 .env.example / application.yml.example 等模板文件,列出全部需要填写的键,方便后续部署人员按环境填写。

用户沟通

仅在缺少信息会阻塞安全可运行的实现时才提问。

  • 不要询问那些能从目标仓库代码、配置、文档或现有运行视图中自行发现的信息。
  • 仅当无法推断时,才询问 baseUrl、API key 存储位置、目标工作流 name(或旧数字 id)或页面挂载位置。
  • X-API-Key 默认通过后端代理或服务端环境变量注入;不要将 API key 硬编码到浏览器代码中。
  • 若用户明确要求在前端直接携带 X-API-Key,需在实现前说明泄露风险。
  • 对非阻塞性细节,简要说明假设后继续推进。

实现流程

  1. 编辑前先勘察目标应用。

    • 识别前后端边界、请求辅助封装、环境配置、路由模式以及已有的 SSE 工具。
    • 如果应用已存在 API 客户端或运行视图,应在其基础上扩展,而不是另起平行抽象。
  2. 按外部工作流契约实现 API 接入。

    • 使用 /api/v1 端点,而不是内部 /api/workflows 端点,除非任务明确限定在 agent-management 内部。
    • 工作流通过 name(kebab-case)标识,所有 URL 路径使用 {workflowName} 段;纯数字 id 作为兼容兜底也合法,但不应在新集成中作为首选。
    • 支持默认异步流程:创建运行、启动运行、订阅流、查询结果、下载工作空间。
    • 正确处理统一 JSON 响应包、二进制 zip 响应、SSE 事件、断连/重连以及终态成功/失败。
    • SSE 鉴权与续传:X-API-Key 只支持请求头,浏览器直连必须用 fetch + ReadableStream 手动解析(原生 EventSource 无法携带该头);重连通过 Last-Event-ID 请求头续传,指数退避 5 次后降级轮询 GET /runs/{runId}(30 秒/次),SSE 恢复后立即停止轮询。
    • 事件路由:SSE 事件按 visitUuid 聚合(AGENTIC 智能体模式下同一节点可被多次访问,绝不能按 nodeId 合并卡片);node_status 的 status 是大写枚举,node_stream 的增量在扁平 content 字段上。
    • AskFor(用户确认):外部 API 已开放 POST /api/v1/runs/{runId}/resume 与 GET /api/v1/runs/{runId}/state(v1.2,路径不带 workflowName 段,runId 全局唯一)。断线重连恢复流程:先查 /state 恢复 AskFor 面板(currentPause.choices 已是数组),再以 Last-Event-ID 续传 SSE;同一 clarifyId 重复提交返回 409,前端按幂等约定视为成功。
    • baseUrl、workflow name/id、API Key、超时、TTL 等参数全部从配置文件读取,禁止硬编码到源码;凭证不得写入受版本控制的源码或浏览器可见产物中,除非用户明确接受此风险。
  3. 实现运行展示 UI,保留运行记录的内容与流程层级。

    • Vue 3 项目且要求与平台一致时,优先整体拷贝 references/platform/ 目录:它是平台前端源码的自包含副本(含外部 /api/v1 适配层 api/workflow.js,useWorkflowRunner 零改动可用),拷入后按其 README 配置环境变量即可获得零差异表现;非 Vue 技术栈或允许交互近似时,才走手写翻译路线(按下述硬性要求实现)。
    • 硬性要求:完整呈现「实时状态、思考过程、待办清单、工具调用、执行日志、最终结果」六类内容(无数据的面板不渲染空占位框),折叠策略、multi-visit 渲染、AskFor 处理与本系统一致(详见 references/run-history-ui.md)。
    • 折叠与输出:节点完成后卡片自动折叠(用户手动操作优先),最终输出始终可见;节点输出是 envelope 结构(status 为数字 200/400,业务字段在 data 内),解包后渲染,工作流最终输出同样带壳。
    • markdown 渲染:思考过程与最终输出按 GFM 渲染并带代码高亮,渲染 HTML 前必须过 DOMPurify 消毒。
    • 展示工作流/运行选择、运行状态、时间/耗时、节点卡片、输出变量、思考过程、非思考日志、错误和工作空间下载。
    • 保留运行记录体验的核心概念:历史列表按工作流分组、选中运行详情、节点执行顺序、节点状态、可折叠的日志/上下文、思考过程独立成区。
    • 不要求目标 UI 完全复刻原运行记录页的颜色、间距、图标、暗色主题、左右两栏布局或组件库,除非用户明确要求近似视觉。
    • 把交互模型与信息层级翻译到目标框架中,而不是照搬框架特定的代码或样式。
  4. 验证集成。

    • 用真实的变量走通「创建/启动/订阅/查询/下载」链路。
    • 确认 SSE 事件能增量更新 UI,终态事件能正确关闭或标记运行。
    • 确认 multi-visit:同节点多次访问独立成卡(带「第 N 次访问」标识);断线重连、刷新页面后卡片不重复、可完整回放。
    • 确认失败运行能浮现错误,并仍允许查看结果/日志(如果可用)。
    • 运行目标项目相关的测试、lint、类型检查或构建命令。

可移植性

本技能以自包含目录形式分发。references/platform/ 是平台前端源码的自包含副本:目录内相对 import 与平台 frontend/src/ 层级一致,无 @/ 别名、无仓库本地路径依赖,业务方可整体拷贝使用(是否照搬其视觉主题由用户的需求决定——要求完全一致时照搬,仅要交互一致时按目标系统风格改写样式)。除此之外,不要依赖仓库本地路径、已部署的参考页面或特定公网 IP。如果目标仓库已经自带 agent-management 适配器或运行记录视图,应在目标仓库内勘察并扩展该本地实现。