自动化工作流要像真员工一样干活,靠的是两个条件:能分情况走不同路径,能记住上一步产出了什么。条件路由和状态传递就是这两件事的技术实现。前者让流程根据中间结果动态选路,后者让节点之间的数据自动接力。少了任何一个,智能体可能难以应对真实业务里那些弯弯绕绕。

两个条件,决定流程会不会"断片"
条件路由让工作流根据中间结果动态选择路径。最常见的是 if/else 判断:某个节点跑完拿到一个结果,系统按这个结果决定下一步去哪条分支。
状态传递让节点之间的数据自动流转。前一个节点输出的内容作为变量直接流进下一个节点,后续节点随时能引用前序输出,在完成字段映射、权限和流程配置后,节点间数据可自动传递,减少人工搬运。
把这两件事合起来说,道理朴素:流程要"看情况办",还要"接着上一句办"。只有分叉没有记忆,可能无法保留之前算过什么;只有记忆没有分叉,流程可能一直沿同一条路径执行。
If Node 怎么分叉,状态怎么流转
条件路由的载体通常是一个判断节点,业内常叫 If Node 或 Condition Node。它接收一个条件表达式,比如"提取金额是否大于五千""接口返回码是不是 200"。表达式为真走一条分支,为假走另一条,分支后面各自接不同的节点链。
状态传递靠工作流的上下文对象实现。每个节点执行完把结果写回上下文的一个字段,比如 summary、extracted_amount、ticket_id。下一个节点配置输入时直接引用字段名,引擎在运行时把值替换进去。节点之间不需要硬编码互相调用,对于支持配置化的流程调整,通常可通过修改配置完成,复杂场景仍可能需要开发适配。
两者配合的形态是这样的:节点 A 从邮件抽出一笔报销金额写入上下文,If Node 读这个金额,超阈值走"转主管审批"分支,没超走"自动通过"分支,审批分支里的节点再去读金额和邮件原文生成单据。整个链条没人手动搬运数据,分叉点和数据流都写在配置里。
LangGraph 的 Checkpointer 把状态持久化,在状态持久化配置正常、任务支持恢复且异常可控的情况下,通常可从断点继续执行,这是状态传递在工程上的延伸,长任务尤其用得上。
真实业务没有直线
真实业务里较少出现"输入 A 永远得到输出 B"的线性过程。审批要分级,异常要转人工,用户一个问题没说清要追问。没有条件路由,这些分叉可能需要硬编码在代码里,每加一种情况可能就需要修改程序。没有状态传递,多步骤任务到了第二步可能难以承接第一步的结果,可能需要重新开始。
举个具体的:智能客服收到问题,先去向量库检索文档,大模型生成回答,置信度低就转人工并带上前面检索到的资料。这里"置信度低转人工"是条件路由,"带上前面检索到的资料"是状态传递。缺了后者,人工客服看不到机器查了什么,可能需要让客人把话重说一遍。
具体怎么用,可以看以下场景:报销分级审批。Data Extractor 从发票图片抽出金额和部门,If Node 按金额切三档:小额事项可在企业授权、审批规则和风控要求允许的范围内进入自动处理流程,中额部门主管批,大额加财务总监批。每档审批节点都引用抽取结果生成单据。
工单异常转人工。系统自动处理客户工单,连续两次重试都失败,If Node 切到人工队列,把已尝试步骤和错误日志作为状态传给客服,有助于减少重复劳动。
多轮问答追问。问答助手发现用户问题缺必要参数,If Node 判"信息不全"走追问分支;用户补全后,状态里保留原始问题和已填字段,生成答案时一并参考。
代码审查结果分发。code_review 节点跑完输出 bug 数量和严重级别,If Node 读这个级别,高危直接发告警给技术负责人并附 bug 清单,低危只落库记日志,两路都引用同一份审查结果。
报告自动生成。文件下载、文档解析、摘要、数据提取、邮件发送串成一条流,任一步产出异常(比如下载失败),If Node 切到告警分支发通知,而不是让整条流静默失败。
这些场景的共同点是分叉点明确,且后续动作依赖前序产出。
写死更稳?状态传递是锦上添花?
一个常见想法是把流程写死较为稳定。真实业务多变,写死意味着每来一种新情况就改代码发版本。用配置化的条件路由,经授权的运营人员可在变更管理、测试和发布流程内调整部分判断条件或分支。
另一个误区是觉得状态传递只是好看。说句不太好听的...部分团队可能因未充分重视而遇到问题。】没有它,多步骤任务可能难以承接上下文,Agent 每步可能都需要重新收集输入,遇到跨多个系统取数的场景,数据搬运可能显著影响流程效率。状态传递是流程顺畅运行的重要基础。
小艾的智能体可将条件路由和状态传递配置为配置项。动态 Agent 编排系统可提供相应节点与配置能力;在适配的场景下,通常可减少额外编排代码,具体以产品版本和实施方案为准。系统内置多种预置节点,你拿这些节点当积木,在 JSON 或 YAML 里把分支和引用关系写清楚,即可拼出上面那些审批、转人工、追问的流程。
配合 Memory 持久化(基于 LangGraph Checkpointer),长任务中途断了通常可从断点继续执行,状态可保留。这意味着有助于将"分情况办事"和"记上下文"从写代码转为通过配置实现。