Skip to content

P6 · 如何管理和调度 Agent 工作流? - Workflow Management ​

所属知识库:Agent 全栈技术地图
所属领域:04 · Agent Platform
所属章节:02 · Agent Platform 是如何构建和运行的? - Technical Architecture
文档类型:专题研究 / 技术架构 / 参考设计
版本:v1.3
更新日期:2026 年 11 月 1 日
核心问题:Agent Platform 如何将 Workflow 作为可定义、校验、版本化、触发、执行、暂停、恢复、审计与治理的平台资产,并协调 Agent、工具、人工审批与外部系统完成跨步骤任务?

专题导读 ​

本篇属 Technical Architecture。P6 研究的是平台级 Workflow Management,而非再次介绍 Agent 内部如何推理,也不等于把多 Agent 的消息通信简单绘制成流程图。这里的 Workflow 是具有明确身份、定义、版本、执行记录和管理权限的可管理资产;Workflow Engine 是执行或协调该资产的技术组件。两者既可以由同一软件实现,也可以分离。

本篇围绕五个问题展开:定义什么、何时触发、由谁调度、如何恢复、如何治理。贯穿案例为“技术研究报告 Studio”:选题 → 审核 → 深度调研 → 分析 → 人工确认 → 写作与交付。示例中的状态机、数据表、API、事件与代码是可讨论的参考设计,未声称已经部署或通过测试。

研究结论 ​

  1. Workflow Definition、Workflow Version 与 Workflow Run 必须分离。 定义承载稳定身份,版本固定图与配置,运行记录一次实际执行;长任务不应在运行中无意切换定义版本。
  2. 平台工作流管理不等于 Agent System 内部编排。 平台负责资产、触发、授权、版本、运行生命周期、配额与审计;Agent System 负责具体节点内部的推理、工具调用和协作策略。两者可以通过适配器和运行契约连接。
  3. 调度的基本单位应是具备持久身份的工作项。 Workflow Run 下可存在 Step Run、Task、Attempt;要显式记录依赖、重试、超时、取消、结果引用和人工等待状态。
  4. 工作流可靠性依赖持久化状态与明确的副作用语义。 “至少一次投递”下,节点可能重复运行;无法用简单重试保证外部写操作恰好一次完成。
  5. 人工审批应是可持久化的等待点。 审批记录、授权主体、输入快照、超时和恢复动作必须独立管理,不能依赖浏览器连接或内存回调。
  6. 工作流版本与依赖必须可追溯。 Agent Version、工具版本、提示词、模型策略、资源授权与策略快照都可能影响结果;应区分强固定与运行时解析的依赖。
  7. MVP 宜先实现有限的工作流语义。 顺序、条件、并行汇聚、重试、人工等待与结果交付通常比一开始构建通用可视化编排语言更重要。

一、概念、对象与研究边界 ​

1.1 什么是平台级 Workflow Management? ​

平台级 Workflow Management 是 Agent Platform 对工作流资产及其执行过程提供的一组管理能力,包括定义、编辑、校验、版本、发布、触发、调度、状态追踪、暂停恢复、权限、配额、审计和结果交付。它既面向开发者,也面向平台管理员和业务使用者。

Workflow 描述一组有依赖关系的工作步骤及其数据流、控制流和异常处理规则;Workflow Engine 解释并推进这些规则;Orchestrator 可泛指协调执行的控制逻辑,不必与独立引擎一一对应。Agent Workflow 的节点可包含 Agent 调用、普通代码、工具调用、人工审批、等待事件、外部服务和子工作流。

一个“聊天界面中先问 A 再问 B”的固定交互未必是平台级工作流。若其没有独立的定义身份、版本、运行记录或管理接口,可能只是应用内部的流程逻辑。

1.2 与相邻专题的边界 ​

专题主要研究对象与 P6 的交界
02 · Agent / A9 Planning & Reasoning单个 Agent 的规划与推理P6 将 Agent 视为可调度的节点,不替代其内部规划
03 · Agent System / L5 Orchestration & Collaboration系统内任务编排与 Agent 协作机制P6 管理可复用工作流资产、版本、触发与平台级运行
P1 Control Plane执行准入、控制命令、全局策略P6 接收准入结果,推进工作流状态与步骤调度
P2 Execution PlaneWorker、Sandbox 与实际执行P6 派发节点工作项,P2 执行并返回结果
P3 Agent RegistryAgent 定义与不可变版本P6 通过固定引用使用 Agent Version;工作流可有独立 Registry
P4 Agent Development Services编辑、校验、调试、测试构建P6 定义工作流运行语义与管理契约
P5 Deployment & Runtime Management部署、运行实例与容量P6 使用可用执行能力,不重复 Worker 生命周期
P10 Platform Data & Assets平台数据与资产存储治理P6 定义执行状态与产物引用,依赖 P10 保存资产
P11 / P12多租户隔离、权限与治理P6 在定义、触发、执行和审批各环节落实策略
F5 / F7工作空间、项目与 Agent 协作产品体验P6 研究后端工作流能力,不预设特定 UI

边界检验: 若研究问题是“怎样在图上连接两个节点”,偏向 Builder 与产品设计;若是“两个节点之间的数据、失败、重试和状态如何保证一致”,属于 P6;若是“节点内部多个 Agent 怎样协商”,属于 L5。

1.3 核心对象及其层次 ​

对象身份与职责生命周期要点
Workflow Definition工作流稳定身份、所有者与元数据创建、编辑、归档
Workflow Draft可编辑的工作流草稿草稿修订、并发控制、校验
Workflow Version不可变的图结构与执行配置快照校验、发布、撤销、弃用
Workflow Deployment / Binding版本与环境、入口或渠道的绑定激活、切换、停用
Trigger定时、事件、Webhook 或手动入口注册、启用、禁用
Workflow Run一次工作流执行实例待运行、运行、等待、完成等
Step Run某节点在某次工作流中的执行记录待依赖、可调度、运行、终态
Attempt一次实际执行尝试领取、执行、成功、失败、超时
Approval Request持久化的人类决策请求待审、批准、拒绝、过期
Artifact Reference节点输入输出与最终产物的引用创建、授权访问、保留、归档

Workflow Run 与 P1/P2 的通用 Run 可能是同一基础对象的特化,也可能通过 parent_run_id 关联。不应在一个平台内无意设计两套含义冲突的 Run ID。


二、工作流的定义模型与执行语义 ​

2.1 控制流、数据流、事件流应分开建模 ​

控制流描述节点执行顺序、分支与汇聚;数据流描述节点读取与输出什么;事件流描述系统如何观察执行及处理外部信号。三者不能完全由一条“连线”表达。尤其是条件分支:未被选择的节点是 SKIPPED,不是 FAILED;汇聚节点必须说明等待哪些前驱。

mermaid
flowchart LR
    T[Trigger] --> S[选题 Agent]
    S --> R{审核}
    R -->|退回| S2[修订选题]
    S2 --> R
    R -->|通过| D[深度调研]
    D --> A[深度分析]
    A --> H{人工确认}
    H -->|批准| W[报告写作]
    H -->|拒绝| X[终止或返工]
    W --> O[产物交付]

这张图是业务逻辑示意,不是可直接运行的工作流定义。实际引擎还需声明循环上限、超时、输出 Schema、审批权限、失败处理、重试策略和版本引用。

2.2 参考节点类型 ​

节点输入输出关键语义
Agent Task输入参数 → 结构化结果/产物固定 Agent 版本、模型与工具权限
Tool / Service参数 → 外部响应幂等键、超时、速率限制与副作用
Transform数据 → 数据确定性变换、Schema 校验
Condition布尔/枚举 → 分支决策依据与未选中分支处理
Parallel / Join多输入 → 汇聚all / any / quorum、部分失败
Human Approval审批请求 → 决策权限、等待、超时、恢复
Timer / Wait Event时间/事件 → 继续持久订阅、去重、过期策略
Subworkflow参数 → 子流程结果版本固定、深度限制、父子追踪
Emit / Deliver产物 → 交付状态对账、重复投递、访问控制

quorum、动态循环、补偿事务等属于可选高级能力。MVP 不必同时支持全部节点类型。

2.3 工作流图的合法性 ​

平台应在发布前校验:节点 ID 唯一、入口可达、边引用有效、端口类型兼容、条件分支完备、循环受限、无未声明副作用、依赖版本可解析、工具权限满足策略、敏感数据流向符合约束。

对于 DAG,拓扑排序能检测非法环;但并非所有 Agent 工作流都必须是 DAG。带审核返工的流程天然可能循环。支持循环时,应使用显式 Loop/Retry 节点、迭代计数、退出条件和最大执行预算,避免任意图环导致不可控运行。

2.4 数据契约与引用传递 ​

节点输入建议使用 Schema 声明,避免完全依赖自然语言约定。大文件、报告、图像或长文本不宜在所有事件中重复嵌入,应保存为带权限控制的 Artifact Reference,并在步骤间传递引用。

例如,调研节点输出 research_artifact_id 和 citations_manifest_id,分析节点通过授权读取,避免重复复制全文并失去来源关联。敏感内容不应直接进入可广泛访问的事件总线。

2.5 示例:参考 Workflow Manifest ​

yaml
apiVersion: platform.example/v1
kind: Workflow
metadata:
  workflowId: research-studio
  tenantId: tenant-demo
spec:
  inputSchema: research-topic-v1
  maxDurationSeconds: 86400
  maxTotalAttempts: 20
  nodes:
    - id: topic
      type: agent
      agentVersion: topic-agent@1.2.0
      outputSchema: topic-proposals-v1
      retry:
        maxAttempts: 2
        backoff: exponential
    - id: review
      type: agent
      agentVersion: review-agent@1.0.0
      dependsOn: [topic]
      outputSchema: review-decision-v1
    - id: approval
      type: human_approval
      dependsOn: [review]
      timeoutSeconds: 172800
      requiredRole: project_owner
    - id: research
      type: agent
      agentVersion: research-agent@2.1.0
      dependsOn: [approval]
      when: "approval.decision == 'approved'"
    - id: deliver
      type: deliver
      dependsOn: [research]

该 YAML 是自定义教学契约,不是 Temporal、LangGraph、Argo、Dify 等产品的真实配置格式。它省略了输出映射、审批拒绝路径与复杂循环,仅用于说明字段职责。


三、Workflow Registry、版本与发布 ​

3.1 Workflow 与 Agent 的版本关系 ​

Workflow Version 固化的是流程图及其执行策略,而 Agent Version 固化的是节点使用的 Agent 定义。二者独立演进:修改流程拓扑需要新 Workflow Version;只修改某 Agent 的指令也应发布新 Agent Version,并由新的 Workflow Version 或显式绑定策略决定是否采用。

推荐记录:workflow_version_id、definition_digest、node_agent_version_ids、tool_bindings、input_output_schema_versions、policy_snapshot_id、published_by、published_at。运行时解析到的模型、工具与凭据引用应另存 resolved_execution_manifest,以便追踪动态路由和轮换。

3.2 发布管线 ​

text
Draft 编辑 → 结构/语义校验 → 权限与依赖检查 → 模拟/测试
           → 审批(按策略) → 冻结 Workflow Version
           → 绑定环境或发布渠道 → 启用 Trigger

发布工作流版本与启用触发器应是两个不同动作。发布成功不代表立即允许外部 Webhook 触发生产任务。对于生产入口,建议由 Deployment/Binding 指向一个确定的 Workflow Version,避免执行时读取可变草稿。

3.3 已运行实例与版本升级 ​

长时间运行的 Workflow Run 原则上继续使用启动时固定的 Workflow Version。若确需迁移,必须明确旧节点到新节点的映射、状态兼容性、待审批请求、输出 Schema 和副作用;迁移应作为显式受控操作,不能因更新 production 指针而自动发生。

3.4 复用、子工作流与模板 ​

模板是可复制或参数化的设计资产;子工作流是执行时被调用的工作流版本。两者不同:复制模板后通常形成新的定义身份;调用子工作流则产生父子 Run 关联。共享工作流应执行跨租户访问控制,禁止通过模板间接泄露密钥或私有数据。


四、触发机制与执行准入 ​

4.1 触发类型 ​

类型典型场景必须解决的问题
手动/API用户点击“开始研究”身份、授权、幂等、输入校验
定时每日定时报告时区、夏令时、错过调度、并发重叠
Webhook外部系统通知签名、重放防护、速率限制
事件驱动新资料上传后分析事件去重、顺序、订阅生命周期
上游工作流前一项目完成后继续父子关联、级联失败、循环触发

触发器接收到事件后,先进行身份校验、租户归属确认、Schema 校验、配额与预算检查,再创建 Workflow Run。不能把“Webhook 收到 HTTP 200”当成工作流成功执行。

4.2 触发幂等与去重 ​

推荐幂等键作用域为 (tenant_id, trigger_id, external_event_id),并在数据库上建立唯一约束。手动/API 调用可接受客户端提供的 Idempotency-Key;重复请求应返回已有 Run 的引用,而非创建新任务。

对于定时任务,需要明确定义 scheduled_for 与 actually_started_at。调度器故障恢复后,是否补跑错过的时间窗属于产品策略,不能默认全部补跑,否则可能引发成本峰值。

4.3 准入决策 ​

准入可综合用户角色、Workflow Version 状态、Agent/Tool 权限、租户配额、并发限制、成本预算、敏感数据策略与运行环境健康度。准入通过仅授权启动;节点执行时仍需对实际工具操作做权限检查。


五、调度器与工作流执行引擎 ​

5.1 典型运行链路 ​

mermaid
sequenceDiagram
    participant U as User / Trigger
    participant CP as Control Plane
    participant WE as Workflow Engine
    participant DB as State Store
    participant Q as Task Queue
    participant EX as Execution Plane
    participant A as Agent System
    U->>CP: Start Workflow(version, input, idempotencyKey)
    CP->>CP: Auth / Policy / Quota
    CP->>DB: Create Workflow Run (pinned version)
    CP->>WE: Start(runId)
    WE->>DB: Persist ready Step Runs
    WE->>Q: Dispatch step task
    Q->>EX: Deliver task
    EX->>A: Execute pinned Agent Version
    A-->>EX: Result / Artifact refs
    EX->>DB: Commit Attempt outcome
    EX-->>WE: Step completion event
    WE->>DB: Advance graph state
    WE-->>CP: Run status / completion
    CP-->>U: Status / artifact references

在真实分布式系统中,事件和状态更新可能重复、延迟或乱序。图示仅表达逻辑职责,不保证每条箭头都是独立网络调用。

5.2 调度器的基本职责 ​

引擎读取已固定的工作流定义与当前状态,判断哪些节点依赖已满足,生成待执行 Step Run,派发给执行面,并处理完成、失败、等待和取消事件。调度器应能够在重启后从持久化状态重新计算可执行节点,而不依赖内存中的“当前步骤”。

节点可执行性不应只根据“所有前驱成功”判断。条件分支中的 SKIPPED、并行汇聚中的部分成功、审批拒绝等都需要明确语义。可采用三值依赖结果:satisfied、blocked、impossible,由不同节点类型解释。

5.3 并发、队列与公平性 ​

至少考虑四级限制:平台总并发、租户并发、Workflow Version 并发、特定 Agent/工具并发。高优先级任务可使用独立队列或权重调度,但应避免低优先级租户长期饥饿。外部模型 API 的速率限制与平台 Worker 数量是不同约束,必须同时计量。

5.4 工作流与任务执行的关系 ​

一个 Workflow Run 包含多个 Step Run;一个 Step Run 可能因失败产生多个 Attempt;一次 Attempt 由某个 Worker 执行。平台可把 Step Run 映射到 P2 的通用 Task,也可把子 Agent 调用映射到独立 Run,但需要统一 workflow_run_id、step_run_id、attempt_id 的追踪关系。

5.5 执行一致性与状态推进 ​

推荐将“步骤结果落库”和“后继任务产生意图”放入同一事务,采用 Transactional Outbox 或等效机制确保事件最终可投递。消费者使用幂等键和唯一约束去重。不要声称跨数据库、队列与外部 API 具备普遍的 exactly-once 语义。


六、状态机、暂停恢复与人工审批 ​

6.1 Workflow Run 状态机(参考) ​

mermaid
stateDiagram-v2
    [*] --> PENDING
    PENDING --> RUNNING
    RUNNING --> WAITING
    WAITING --> RUNNING: approved / event / timer
    RUNNING --> SUCCEEDED
    RUNNING --> FAILED
    RUNNING --> CANCELING
    WAITING --> CANCELING
    CANCELING --> CANCELED
    WAITING --> TIMED_OUT
    RUNNING --> TIMED_OUT

这只是最小状态集合。PAUSED 与 WAITING 可以分开:前者是用户/管理员主动冻结,后者是等待外部条件;两者恢复权限与超时语义不同。若平台采用补偿执行,还需引入 COMPENSATING、COMPENSATED 等状态。

6.2 Step Run 与 Attempt 状态 ​

建议 Step Run 至少区分 BLOCKED、READY、DISPATCHED、RUNNING、WAITING、SUCCEEDED、FAILED、SKIPPED、CANCELED。Attempt 则区分 CREATED、LEASED、RUNNING、SUCCEEDED、FAILED、TIMED_OUT。一次 Step Run 的最终失败不必意味着整个 Workflow Run 立即失败,取决于 on_failure 策略。

6.3 人工审批是持久化节点 ​

审批请求至少保存:approval_id、workflow_run_id、step_run_id、tenant_id、required_role、requested_by、decision、decided_by、created_at、expires_at、input_snapshot_ref、decision_reason。批准动作需验证操作者当前身份与授权;拒绝、过期、撤回必须有明确后继路径。

避免使用“审批页面打开期间阻塞一个 Worker”的实现。正确方式是将工作流持久化为等待状态,释放执行资源,收到合法审批事件后恢复调度。

6.4 取消与暂停的边界 ​

取消是协作式请求:已发出的外部邮件、付款或数据库写入不一定可撤销。引擎应阻止新的节点派发,并向可取消的执行任务发送取消信号;对已发生的副作用记录实际结果并执行必要补偿。暂停也不能保证正在运行的模型调用瞬间停止,需规定安全暂停点。

6.5 超时、重试与死信 ​

区分工作流总超时、步骤超时、执行尝试超时、人工审批超时和外部事件等待超时。重试策略应定义最大次数、退避、抖动、可重试错误类别和总预算。永久失败进入明确终态或人工处理队列,而不是无限循环。


七、失败语义、补偿与可靠性 ​

7.1 常见故障及处理 ​

故障风险参考策略
事件重复投递同一步骤被重复推进唯一键、版本号、幂等消费
Worker 执行中崩溃不知外部副作用是否发生先对账,后重试;记录 Attempt
引擎重启内存调度状态丢失从数据库重建可执行节点
审批超时工作流永久挂起到期任务、明确拒绝/升级路径
并行分支部分失败汇聚结果不确定明确 all/any/quorum 语义
发布版本更新在途任务行为漂移Run 固定版本;迁移显式审批
依赖服务限流任务积压、成本飙升限流、退避、熔断、预算门禁
用户取消已执行副作用无法撤回停止后续派发、补偿与审计

7.2 幂等不是“重复执行永远无害” ​

对于读取资料、纯数据变换,重试相对安全;对于发送邮件、创建工单、写入 CRM、付款等操作,必须提供外部幂等键或业务对账。平台能保证的通常是“尽可能避免重复”和“可检测、可恢复”,而非对任意外部系统的全局恰好一次副作用。

7.3 Saga 与补偿 ​

跨服务工作流通常无法使用一个数据库事务覆盖全部外部操作。可采用 Saga:每个成功步骤声明可能的补偿操作;后续失败时按策略执行补偿。但补偿不等于精确回滚,可能失败、需要人工介入,也可能产生新的审计事件。对不可逆动作应在执行前设置更严格的人工审批。

7.4 可恢复性的最低要求 ​

恢复时至少能回答:当前 Workflow Version 是什么、哪些节点完成、哪些仍在运行、外部副作用证据在哪里、下一步可安全执行什么、是否需要人类介入。只保存“当前节点名称”无法满足可靠恢复。


八、存储架构与数据模型 ​

8.1 参考关系模型 ​

mermaid
erDiagram
    WORKFLOW_DEFINITION ||--o{ WORKFLOW_VERSION : has
    WORKFLOW_VERSION ||--o{ WORKFLOW_RUN : executes
    WORKFLOW_RUN ||--o{ STEP_RUN : contains
    STEP_RUN ||--o{ STEP_ATTEMPT : retries
    STEP_RUN ||--o{ APPROVAL_REQUEST : waits_for
    WORKFLOW_RUN ||--o{ WORKFLOW_EVENT : records
    STEP_RUN ||--o{ ARTIFACT_REFERENCE : produces

8.2 最小表设计(概念级) ​

表核心字段约束建议
workflow_definitionsid, tenant_id, owner_id, name租户范围唯一约束
workflow_versionsid, definition_id, digest, spec_ref, status已发布内容不可变
workflow_runsid, version_id, trigger_id, state, input_ref, idempotency_key租户范围幂等唯一键
step_runsid, run_id, node_id, state, output_ref, revision(run_id,node_id,iteration) 唯一
step_attemptsid, step_run_id, attempt_no, worker_id, lease_until, state尝试编号唯一
approval_requestsid, step_run_id, required_role, expires_at, decision决策仅允许一次终态提交
workflow_eventsid, run_id, sequence, type, payload_ref, created_at顺序与去重约束
outboxid, aggregate_id, event_type, payload, delivered_at事务外发与重试

动态循环或子工作流需要增加 iteration_key、parent_run_id、subworkflow_version_id 等字段。以上仅是概念模型,生产实现需补齐外键、索引、分区、保留期限、加密与访问控制。

8.3 事件溯源与快照 ​

事件溯源(Event Sourcing)可以提升可审计性与重放能力,但不是所有平台必选。较简单的方案是当前状态表 + 追加式事件日志 + 周期性快照。如果选择完整事件溯源,必须管理事件 Schema 演进、重放副作用隔离、历史兼容与存储成本。

8.4 数据保留与删除 ​

工作流定义、执行日志、节点输入输出、审批记录、模型调用轨迹和最终产物的保留周期可能不同。删除 Workflow Definition 不应自动删除仍受保留政策约束的历史 Run;跨租户共享资产也不应绕过原始数据授权。此处由 P10/P12 提供平台级策略。


九、平台接口与事件契约 ​

9.1 参考 API ​

http
POST   /v1/workflows
PATCH  /v1/workflows/{workflow_id}/draft
POST   /v1/workflows/{workflow_id}/validate
POST   /v1/workflows/{workflow_id}/versions
POST   /v1/workflow-runs
GET    /v1/workflow-runs/{run_id}
GET    /v1/workflow-runs/{run_id}/steps
POST   /v1/workflow-runs/{run_id}:cancel
POST   /v1/workflow-runs/{run_id}:pause
POST   /v1/workflow-runs/{run_id}:resume
POST   /v1/approvals/{approval_id}:decide

这些路径为参考设计。真实接口需补充认证、授权、租户作用域、分页、并发版本条件、错误码、速率限制、幂等及审计要求。pause 与 resume 的可用性取决于运行引擎是否支持安全暂停点。

9.2 运行请求示例 ​

json
{
  "workflow_version_id": "wfv_20261031_001",
  "project_id": "project_research_01",
  "input": {"topic": "Agent Platform 架构研究"},
  "idempotency_key": "project_research_01_run_001",
  "budget": {"max_cost_usd": 8.0}
}

平台创建 Run 时,应返回稳定 run_id 和初始状态,长任务结果通过状态查询、事件订阅或 Webhook 获得,不要求请求连接持续存在。

9.3 事件契约示例 ​

json
{
  "event_id": "evt_001",
  "event_type": "workflow.step.completed",
  "schema_version": "1",
  "tenant_id": "tenant_demo",
  "workflow_run_id": "wfr_001",
  "step_run_id": "step_003",
  "attempt_id": "attempt_002",
  "sequence": 19,
  "occurred_at": "2026-10-31T10:00:00Z",
  "result_ref": "artifact://tenant_demo/research/result-003"
}

消费者必须能处理重复与乱序事件;事件中的 artifact:// 是说明性引用格式,不代表可直接公开访问的 URL。


十、安全、权限与资源治理 ​

10.1 权限贯穿整个执行链 ​

至少分别检查:谁可以编辑/发布工作流、谁可以启用触发器、谁可以启动 Run、节点可以调用哪些 Agent/工具、谁可以查看中间数据与产物、谁可以审批/取消/重试。拥有 Workflow 编辑权限不等于拥有全部工具执行权限。

10.2 多租户隔离 ​

Workflow Definition、Version、Run、Step Run、事件、产物、审批记录都应绑定租户或可验证的归属链。调度器、队列、Worker、缓存与日志中的租户上下文必须一致。对于不可信代码或高风险工具调用,需要额外的执行隔离,不能仅依赖数据库查询条件。

10.3 预算与配额 ​

建议同时设置单 Run 总预算、单节点最大尝试、最大迭代、最大并行数、租户总并发、工具调用次数和模型费用上限。预算耗尽应产生可观察的终止或等待决策,不能让工作流无限重试。

10.4 机密与提示词注入 ​

工作流中的外部网页、文档和工具响应可能包含不可信指令。节点间传递内容时应保持数据与控制指令的边界;高风险工具应采用独立权限检查和人工审批。密钥通过运行时安全引用注入,不写入 Workflow Manifest 或事件日志。


十一、可观测性、评估与运营指标 ​

11.1 统一追踪链 ​

建议使用 trace_id → workflow_run_id → step_run_id → attempt_id → agent_run_id/tool_call_id 关联平台与 Agent System 的观测数据。关键事件包括 run.created、step.ready、step.started、step.completed、approval.requested、run.failed、run.completed。

11.2 核心指标 ​

维度指标解释
可用性工作流启动成功率触发后成功创建合法 Run 的比例
完成度工作流完成率需区分成功、失败、取消与等待
时延端到端完成时间包含排队、执行与人工等待
调度Ready→Running 等待时长识别队列拥塞与容量不足
可靠性重试率、重复执行检测数评估执行稳定性与副作用风险
人工协作审批等待时长、超时率识别流程瓶颈
成本每成功 Run 的模型/工具成本结合业务价值评估
质量节点输出 Schema 合格率仅反映结构,不等于内容正确

对 AI 生成内容的真实性、引用准确性和任务质量,仍需借助 03 Agent System 的 H3 Evaluation 和 H10 Testing & Validation;工作流“成功完成”不代表业务结果必然正确。

11.3 运维操作 ​

平台应支持查看阻塞节点、识别失败原因、按权限重试安全节点、手动恢复等待中的 Run、停用异常 Trigger、隔离高风险工作流版本,并记录每次人工干预的操作者与理由。


十二、技术实现路径与选型 ​

12.1 三种实现路径 ​

路径 A:应用后端 + 数据库 + 队列 + 自研有限状态机。 适合语义有限、流程规模较小的 MVP。优点是对象模型可控、依赖少;缺点是持久化等待、重试、定时器和并发一致性需要自行实现。

路径 B:采用持久化工作流引擎。 例如 Temporal 一类的 durable execution 系统可承担工作流历史、计时、重试和恢复等底层能力,但仍需自行构建平台资产、权限、发布、租户与产品接口。应理解引擎对代码确定性、版本演进和活动副作用的约束。

路径 C:采用 Agent 图编排框架并叠加平台管理层。 例如 LangGraph 一类框架适合表达 Agent 状态图与中断恢复,但框架图定义不自动等于多租户平台 Registry、发布治理或产品权限。复杂系统可组合 B 与 C,但要避免重复状态机与双重调度。

12.2 选型对照 ​

决策维度自研有限引擎持久化工作流引擎Agent 图框架
主要优势精简、可控、契合业务长任务与恢复基础设施Agent 状态与分支表达
------------
主要成本重试/计时/恢复自行实现学习、部署、版本兼容平台治理需额外建设
适用重点MVP、固定业务流程长任务、强恢复需求Agent 驱动的动态流程

表格表达能力侧重,不代表某个产品完全不具备其他能力;应以目标版本官方文档及原型验证为准。

12.3 Studio 的推荐渐进路线 ​

阶段 1:固定流程 MVP。 先实现选题、审核、调研、人工确认、报告交付六类节点;支持手动触发、Run 持久化、有限重试、人工审批和产物引用。

阶段 2:可配置工作流。 增加 Workflow Draft/Version、Schema 校验、条件分支、并行汇聚、运行图与节点级观测;不急于引入任意循环与复杂可视化 DSL。

阶段 3:团队与多租户。 增加项目权限、版本审批、配额、租户隔离、触发器治理、共享模板、成本与质量仪表盘。

阶段 4:平台生态。 增加 Webhook/事件触发、子工作流、插件节点、跨工作空间共享、正式 SDK 与高级恢复策略。

12.4 技术选型的关键验证问题 ​

在采用任何框架前,应实际验证:长任务进程中断后能否恢复、人工等待是否占用 Worker、已运行实例如何兼容代码升级、重复事件如何处理、外部副作用如何对账、历史运行能否追踪实际依赖版本,以及租户隔离是否可以端到端实施。


十三、贯穿案例:技术研究报告 Studio ​

13.1 业务目标 ​

用户创建一个研究项目,选择研究范围与 Agent 团队,启动选题流程;审核 Agent 对选题提出修改意见;通过后进入调研与分析;用户在关键节点确认;最终形成可追溯的报告产物。

13.2 对象映射 ​

Studio 对象平台对象关键关系
Studio / ProjectWorkspace / Project项目所有权、成员与权限
研究流程模板Workflow Definition可复用的业务流程
已发布研究流程Workflow Version固定拓扑与节点配置
一次研究任务Workflow Run项目内的一次完整执行
选题、审核、调研节点Step Run独立状态、输出与重试
选题 Agent / 审核 AgentAgent VersionRegistry 中的不可变定义
用户确认Approval Request持久等待与授权决策
研究资料 / 报告Artifact受控存储、引用与交付

13.3 一次执行的具体过程 ​

  1. 用户在项目中选择 research-workflow@v1,平台检查权限、预算与输入 Schema,并创建 Workflow Run。
  2. 引擎创建 topic Step Run,调度选题 Agent;执行面返回候选题目和来源引用。
  3. review Step Run 评估候选,若不通过,进入受限返工分支,记录修订轮次;达到迭代上限后升级人工处理。
  4. 选题通过后,触发深度调研和分析;若两者可并行,应声明汇聚规则,而不是依赖消息先后顺序。
  5. 用户确认节点创建 Approval Request,释放 Worker,等待用户批准或拒绝。
  6. 批准后恢复工作流,写作 Agent 生成报告;平台保存产物引用与版本快照。
  7. Workflow Run 进入终态,Studio 展示节点轨迹、成本、引用和最终交付文件。

13.4 容易忽略的边界场景 ​

  • 用户连续点击两次“启动”:通过幂等键返回同一个 Run。
  • 审核节点在失败前已写入结果:重试前先检查已提交的 Artifact 与 Attempt 记录。
  • 用户审批时工作流已取消:审批接口拒绝过期决策并返回当前状态。
  • Agent v2 在运行中发布:当前 Run 继续使用 v1;新 Run 根据发布渠道使用 v2。
  • 调研工具临时不可用:按错误类别退避重试,预算耗尽时进入等待或失败状态。
  • 用户退出浏览器:后台任务继续执行,状态由持久化存储维护。

13.5 推荐 MVP 架构 ​

mermaid
flowchart TB
    UI[Studio Web UI] --> API[Platform API / Auth]
    API --> CP[Control Modules]
    CP --> REG[Workflow & Agent Registry]
    CP --> DB[(PostgreSQL: Run / Step / Approval)]
    CP --> ENG[Workflow Scheduler]
    ENG --> Q[(Durable Queue)]
    Q --> WK[Agent Worker Pool]
    WK --> AR[Agent System Runtime]
    WK --> OBJ[(Artifact Storage)]
    WK --> DB
    ENG --> DB
    API --> OBJ

逻辑架构不要求所有模块都是独立微服务。初期可采用模块化单体后端、独立 Worker 与可靠队列;当长任务、定时器或恢复复杂度上升时,再评估专用持久化工作流引擎。


十四、工程验证计划与验收标准 ​

下表是待实施的测试计划,并非已通过的测试结果。

编号验证场景预期结果
T01非法节点引用发布前拒绝并定位错误
T02无退出条件的循环校验拒绝或强制预算上限
T03输入 Schema 不匹配不创建可执行 Run
T04重复手动启动幂等键返回同一 Run
T05Webhook 重放去重且记录安全事件
T06工作流版本切换在途 Run 版本不漂移
T07Worker 执行中崩溃恢复后状态可解释且可安全处理
T08节点结果事件重复不重复推进后继节点
T09节点事件乱序状态机拒绝非法倒退
T10条件分支未命中节点标记 SKIPPED,汇聚语义正确
T11并行分支部分失败按声明的 join/failure 策略处理
T12审批等待期间重启审批请求仍存在且可恢复
T13非授权审批拒绝并生成审计记录
T14审批超时进入预定义超时路径
T15取消正在运行的任务停止新派发,记录不可撤销副作用
T16外部写操作重试幂等或对账,避免盲目重复
T17租户 A 读取租户 B Run拒绝访问且不泄露数据
T18超过预算/迭代上限明确终止或进入受控等待
T19调度器重启从持久状态恢复待调度步骤
T20Outbox 发布中断事件最终重投且消费幂等
T21产物引用失效产生可诊断错误并保留上下文
T22历史 Run 审计可追溯版本、审批、节点与结果

验收原则: 不仅验证“流程跑通”,还要验证重复、乱序、失败、重启、权限、预算和版本演进。具体 SLA、恢复时间目标、并发与费用阈值需根据真实业务负载另行制定,本文不虚构数值。


十五、常见设计误区与自检 ​

15.1 常见误区 ​

  1. 把流程图当成运行引擎。 图形表达不等于具备持久化调度、失败语义与权限控制。
  2. 把 Workflow 与 Agent System 的内部规划混为一谈。 平台工作流应能承载非 Agent 节点和人工等待。
  3. 所有节点都使用“成功/失败”两态。 缺少等待、跳过、取消、超时会导致错误推进。
  4. 发布版本后让在途任务自动切换。 容易破坏长任务一致性与可追溯性。
  5. 假设队列保证恰好一次执行。 外部副作用必须独立处理。
  6. 审批等待占用 Worker。 应持久化等待并释放执行资源。
  7. 将节点输入输出全部写进消息队列。 大数据和敏感内容应通过受控产物引用传递。
  8. 无限返工和重试。 必须限制轮次、成本和总执行时间。
  9. 先建复杂通用画布再定义语义。 应先验证有限节点类型、对象模型与状态机。
  10. 忽略租户、角色与工具权限的差别。 工作流启动授权不能替代节点执行授权。

15.2 架构自检问题 ​

  • 是否区分 Definition、Draft、Version、Deployment/Binding、Run、Step Run 和 Attempt?
  • 是否定义每种节点的输入输出、超时、失败与重试语义?
  • 是否明确 DAG、循环、并行汇聚和人工等待的行为边界?
  • 是否固定执行版本与依赖,并能重建历史运行上下文?
  • 是否支持重复事件、Worker 崩溃和调度器重启后的安全恢复?
  • 是否具备取消、暂停、审批和预算耗尽的受控处理路径?
  • 是否将平台级权限与 Agent 内部工具权限分开校验?
  • 是否能够从单个 Workflow Run 追踪到每个 Agent/工具执行及产物?
  • 是否通过真实故障测试验证了关键假设,而不只依赖设计文档?

十六、与后续专题的衔接 ​

P6 建立工作流定义、版本、触发、调度与运行治理的参考模型。后续 P7 Resource & Integration 将研究工作流节点所依赖的模型、工具和外部资源如何统一接入;P8 Platform API & SDK 将研究对外暴露的接口契约;P9 Extensibility & Ecosystem 将研究可插拔节点与扩展点;P10 Platform Data & Assets 将研究定义、事件和产物的统一存储与共享;P11、P12 分别深化租户隔离与平台治理。

产品侧,F3 研究开发调试体验,F5 研究 Workspace/Project,F6 研究执行交互,F7 研究多 Agent 协作,F8 研究运行监控,F10 研究产物交付。P6 解释这些产品能力背后的技术机制,不替代产品设计。

跨章节契约修订说明(v1.3-r1,2026-11-01) ​

本节是第五轮审核后的规范对齐补充,不代表前文所有局部示例已经被自动改写为统一 schema,也不代表完成工程测试。统一契约详见 04-Agent-Platform-Canonical-Contracts-v1.3-r1.md;当本文的参考状态、字段或接口示例与统一契约不一致时,应以统一契约作为后续实现候选基线,并在真正部署前完成迁移与验证。

工作流持久化与平台业务状态边界: [官方资料已核验,范围见第四轮审核] LangGraph 等运行时的 checkpoint 可用于图状态恢复,但跨进程恢复依赖实际持久化 checkpointer;平台应另行持久化 Run、Approval、ArtifactVersion、审计与版本引用。checkpoint 不保证外部工具副作用恰好一次。

异步可靠性契约: [平台设计决策/待测试] Run 状态与 Outbox 在同一数据库事务提交;消息至少一次投递;消费者按事件 ID 和业务状态版本去重;Worker 租约/fencing 防止旧 Worker 提交平台状态,但外部写操作必须独立执行幂等、回执核对或补偿。审批等待应进入统一 waiting + status_reason=approval,恢复时重新调度为 queued。

触发器幂等: 手动/API 触发与外部事件触发分别定义作用域、规范化请求摘要、保留期限和冲突策略;重复键不能跨租户匹配。原文的幂等键组合是参考建议,不是 HTTP 标准强制规定。

附录 A:参考文献与原始资料 ​

以下资料优先选取官方技术文档或标准,用于核对术语、实现模式与技术边界。各平台能力会随版本变化;本文未对当前最新版本执行在线逐项核验。

  1. Temporal Documentation - Workflows、Activities、Retries、Signals、Updates、Versioning、Durable Execution。官方文档:<docs.temporal.io>。
  2. LangGraph Documentation - Graph API、Persistence、Interrupts、Durable Execution、Human-in-the-loop。官方文档:<docs.langchain.com/oss/python/langgraph/overview>。
  3. Argo Workflows Documentation - Kubernetes 原生工作流、DAG、Steps、Retry Strategy、Artifacts。官方文档:<argo-workflows.readthedocs.io>。
  4. Apache Airflow Documentation - DAG、Scheduling、Task Instances、Retries。官方文档:<airflow.apache.org/docs>。
  5. AWS Step Functions Developer Guide - State Machines、Standard/Express、Error Handling、Human Approval patterns。官方文档:<docs.aws.amazon.com/step-functions>。
  6. CloudEvents Specification - 事件格式与互操作约定。规范:<github.com/cloudevents/spec>。
  7. OpenTelemetry Documentation - Traces、Metrics、Logs 与 Context Propagation。官方文档:<opentelemetry.io/docs>。
  8. Kubernetes Documentation - Controllers、Jobs、CronJobs、Workload Management。官方文档:<kubernetes.io/docs>。
  9. PostgreSQL Documentation - Transactions、Constraints、Locking、Isolation。官方文档:<www.postgresql.org/docs>。
  10. OWASP Top 10 for LLM Applications - Agent/LLM 应用中不可信输入与工具使用的安全风险。项目:<genai.owasp.org>。

上述资料支持相关技术模式的存在与基本概念;本文提出的对象分类、字段、API、状态机、Studio 架构和测试清单属于综合性参考设计,并非这些来源共同规定的统一标准。

附录 B:研究证据、验证声明与适用边界 ​

B.1 证据类型 ​

  • 通用工程事实: 分布式任务可能重复投递、网络故障造成状态不确定、长任务需要持久化恢复等,属于成熟分布式系统工程问题。
  • 官方技术能力参考: Temporal、LangGraph、Argo、Airflow、Step Functions 等用于比较不同工作流与 Agent 编排能力的侧重点;具体功能以各自目标版本文档为准。
  • 本文设计建议: Workflow Version 不可变、Run 固定版本、审批持久化、Outbox、参考 API、状态机和 Studio MVP 路线,属于面向 Agent Platform 的推荐方案,非强制行业规范。
  • 案例推演: 研究报告 Studio 的流程、组件映射和故障情境用于架构推理,未代表已上线系统。

B.2 验证状态 ​

  • 已进行:目录与专题边界对照、文档结构检查、示例对象关系和流程逻辑的静态审阅。
  • 未进行:对引用产品最新版本的联网功能核验、真实工作流引擎部署、API 调用、并发压测、故障注入、安全渗透测试和业务质量评估。
  • 因此:本文不能作为某个具体框架的生产兼容性证明,也不能将“测试计划”解释为“测试通过”。

B.3 适用范围 ​

适用于需要管理多个 Agent 或 Agent System、需要可复用工作流资产、长任务、人工审批、版本追踪和统一治理的 Agent Platform。对于单次模型调用、简单同步脚本或不需要独立工作流资产的小型应用,完整引入上述机制可能造成不必要的复杂度。

B.4 后续验证建议 ​

优先在 Studio 的最小真实原型中完成 T04、T06、T07、T08、T12、T13、T16、T17、T19、T22 十项验证;在形成可靠的状态模型和执行契约后,再扩展复杂循环、插件节点与多租户开放能力。