返回知识库知识库

11 Agent / Workflow 状态机与任务编排

理解 Agent 和 Workflow 的工程边界,学会把复杂任务拆成状态、节点、工具、人审和异常恢复。

11 Agent / Workflow 状态机与任务编排

章节目标

理解 Agent 和 Workflow 的工程边界,学会把复杂任务拆成状态、节点、工具、人审和异常恢复。

开篇案例:自由 Agent 为什么不适合直接进生产

一个团队做了供应链风险 Agent:用户输入订单号,Agent 自己决定查库存、查供应商、查物流,再生成处理建议。Demo 很顺,但试点时出现两个问题:工具偶发超时后 Agent 重复查询,成本飙升;某次物流状态不完整,Agent 仍然生成了“建议改交期”的结论。

这不是 Agent 不好,而是缺少状态机和控制面。生产系统不能让 Agent 在关键流程里自由漂移,必须用 Workflow 控制主路径,用状态记录过程,用人审阻断高风险动作,用异常恢复处理工具失败。

一句话:Agent 负责局部判断,Workflow 负责业务责任链。

Workflow 与 Agent

Workflow 适合固定流程,Agent 适合动态决策。生产系统里常见做法不是二选一,而是“Workflow 管主路径,Agent 处理局部动态任务”。

最小状态机

flowchart TD
  startNode[接收任务] --> intentNode[意图识别]
  intentNode --> retrieveNode[检索资料]
  retrieveNode --> toolNode[调用工具]
  toolNode --> validateNode[结果校验]
  validateNode --> reviewNode{需要人审吗}
  reviewNode -->|"是"| humanNode[人工确认]
  reviewNode -->|"否"| outputNode[输出结果]
  humanNode --> outputNode

节点设计

  • 意图识别:判断是问知识、查数据、生成报告、创建任务还是发起审批。
  • 检索节点:获取相关文档、表格或历史记录。
  • 工具节点:调用数据库、表格、业务系统、消息系统或审批系统。
  • 校验节点:检查字段、引用、权限和格式。
  • 人审节点:高风险动作前暂停确认。
  • 输出节点:生成报告、清单、工单、消息或可下载文件。

状态管理

生产 Agent 必须记录:

  • 当前任务阶段。
  • 已调用工具。
  • 工具输入和输出摘要。
  • 用户确认状态。
  • 异常状态。
  • 最终结果。

节点说明表示例

节点输入输出失败处理是否人审
intent用户任务任务类型、风险等级低置信度转人工
retrieve任务类型、关键词文档片段、引用无命中则请求补充
tool_call订单号、用户角色工具结果摘要超时重试 1 次后降级
validate工具结果、模型草稿校验结果字段缺失则阻断
approval高风险建议审批结论拒绝则记录原因

FDE 要把每个节点写成输入输出明确的工程单元,而不是把所有逻辑都塞进一个 Prompt。

异常恢复设计

生产 Agent 至少要处理四类异常:

异常策略
工具超时重试、降级、转人工
权限不足返回权限说明,不尝试绕过
数据冲突标注冲突来源,要求人工确认
成本/循环失控熔断,停止调用并记录 Trace

如果一个 Agent 无法解释自己为什么停下,也就无法安全上线。

实操任务

为一个场景设计 Agent / Workflow:

  • 入口。
  • 状态字段。
  • 节点列表。
  • 工具列表。
  • 人审节点。
  • 异常处理。

交付物

  • 状态机图。
  • 节点说明表。
  • 任务状态字段表。
  • 异常恢复策略。

常见误区

  • 让 Agent 自由决定所有步骤。
  • 只看最终输出,不记录中间工具调用。
  • 没有任务恢复机制。
  • 高风险动作没有人审。

检查清单

  • 是否知道每个节点输入输出?
  • 是否能回放一次 Agent 执行过程?
  • 是否能处理中断和工具失败?
  • 是否明确哪些步骤由 Workflow 控制?