
Agent 工作流编排DAG 要能暂停、重试和回放一、编排不是把步骤串起来AI Agent 工作流通常包含检索、规划、工具调用、审核、写入和通知。早期实现很容易用一段代码顺序执行失败就从头再来。生产环境里这种方式会很快失控某一步超时、工具返回不确定、人工审核卡住、服务重启后状态丢失。Agent 工作流编排应该像 DAG 系统一样管理依赖、状态和恢复而不是只把步骤串起来。二、先定义节点和边flowchart TD A[接收任务] -- B[检索上下文] B -- C[生成计划] C -- D[调用工具] D -- E[结果审核] E -- F[输出结果]每个节点要有输入、输出、超时、重试策略和副作用说明。边表示依赖关系不满足依赖就不能执行。agent_dag_node: name: call_tool timeout_seconds: 30 retry: 2 side_effect: true require_idempotency_key: true只要节点有副作用就必须设计幂等键。否则重试会变成重复执行。三、状态要持久化type WorkflowState { workflowId: string currentNode: string nodeStatus: Recordstring, pending | running | success | failed inputs: Recordstring, unknown }工作流状态不能只放内存里。服务重启、Pod 驱逐、节点故障都会发生状态持久化后才能恢复。每个节点完成后写入状态和输出引用。不要把大结果直接塞进状态表可以存对象存储或数据库状态里只放引用。四、暂停和回放是生产能力某些节点需要人工确认比如发送外部消息、修改配置、删除资源。编排系统要能暂停等待确认后继续而不是让 Agent 自己决定一切。workflow_control: support_pause: true support_resume: true support_replay_from_node: true record_decision_log: true回放也很重要。线上出错时可以从某个节点重新执行或者用历史输入回放整条链路。没有回放能力排障只能看日志猜。还要区分重试和补偿。工具调用失败可以重试工具调用成功但后续步骤失败可能需要补偿动作。编排系统要知道哪个节点可重试、哪个节点需要回滚。最后DAG 不要设计得过度复杂。小流程可以简单状态机大流程再用 DAG。关键是让状态可见、失败可控、执行可恢复。工作流还要有版本。Agent 的节点、工具参数、审核规则都会变历史任务不能被新 DAG 强行解释。每次发布新编排版本时应该保留旧版本执行能力或者提供明确迁移。workflow_versioning: persist_dag_version: true allow_running_old_version: true migrate_only_when_paused: true同时编排系统要限制并发。一个用户提交大量长任务不能把所有 worker 占满。可以按租户、任务类型和风险等级做队列隔离。Agent 看起来智能本质上仍然是消耗资源的后台任务。最后DAG 的观测要到节点级。只知道工作流失败不够要知道失败在哪个节点、耗时多少、重试几次、输入输出引用是什么。这样才能从“模型不稳定”这种大词回到具体工程问题。五、总结Agent 工作流编排要把节点、依赖、状态、重试、暂停、回放和补偿都纳入设计。DAG 不是画图好看而是让智能流程在生产环境里出错后还能被控制。