Workflow 不会消失
用户对 Agent 说:“把这篇中文文章翻成英文,然后发布。”
Agent 可以读取原文、完成翻译、修改文件,也能运行构建命令。但这句话没有说明中文是否已经定稿,标题、链接和图片能不能改,检查失败后该怎样处理,以及谁有权批准发布。这些都不能靠 Agent 临场猜测。
模型变得更聪明,并不会让这些约束消失。它改变的是人如何向软件提出需求,却不能替组织决定权限、责任和风险边界。Agent 适合站在用户面前吸收意图的不确定性,Workflow 则留在系统内部,让执行过程符合可以检查的规则。
用户因此不必先找到正确的系统,再学习表单和按钮。他只需说清想完成什么,Agent 负责理解意图、补齐信息并选择执行方式。至于后面调用了一条预先编排的流程,还是临时生成了一条新路径,未必需要暴露给用户。
稳定发生的工作,提前写清路径
文章翻译与发布、合同审核等工作会反复发生,具体内容每次不同,执行顺序和责任边界却相对稳定。这类工作适合 Fixed Workflow,也就是提前确定主要路径的工作流。
Dify 中由人编排的 Workflow 就是一个例子。开发者把输入、条件分支、模型调用和输出连成流程,并明确哪些条件满足后才能继续。模型在某个节点里的回答仍可能变化,但节点之间怎样流转,可以测试,也可以追查。
固定路径带来的价值是可预测。团队不必让模型每次重新决定先翻译还是先确认源稿,也不用让它临场判断构建通过后能否直接发布。已经确定的规则进入流程,Agent 只处理其中仍然需要理解和判断的部分。
路径无法预知时,让 Agent 现场编排
大型代码迁移、全库审查和开放式研究很难在开始前列出全部步骤。Agent 读到哪些文件、发现什么依赖、得到怎样的中间结果,都会改变下一步。这里需要的是 Dynamic Workflow:目标和边界由人给出,具体编排随着任务展开而生成。
Anthropic 的 Dynamic Workflows 把这种编排写成 JavaScript 脚本。Claude 根据任务拆分工作,用 agent() 交给 Subagent 执行,再用 pipeline() 批量调度。循环、分支和中间结果留在脚本里,多个 Agent 可以并行调查,也可以交叉复核彼此的结论。
这种 Workflow 仍然是流程,只是流程的产生时间变了。Fixed Workflow 在任务到来前由开发者写好,Dynamic Workflow 在任务进行中由 Agent 生成。前者把已经确定的规则固化下来,后者把尚未确定的路径变成一段可以运行、查看和再次执行的编排。
两种 Workflow 可以接在一起
一次任务里,稳定和开放的部分往往同时存在。
代码迁移可以先由 Dynamic Workflow 调查仓库、拆分任务并复核修改。到了合并、发布或数据变更等操作,再交给 Fixed Workflow 执行既定检查和审批。反过来,一条固定的合同审核流程遇到未覆盖的条款时,也可以只把这个例外交给 Agent 分析,处理完再回到原来的流程。
开发者的工作因此向 Agent 身后移动。他们要把稳定的组织规则写进 Fixed Workflow,也要为 Dynamic Workflow 准备工具、运行环境和权限边界。无论路径由谁产生,失败怎样处理、哪些操作可以重试、哪里必须由人确认,仍然需要明确。
未来的软件界面可能越来越像一个对话框。用户看到的是 Agent,系统依赖的却不会只有 Agent。只要软件还要在真实组织里执行任务,Workflow 就会继续承载那些不能交给模型临场决定的部分。