coze工作流中需用条件分支节点实现用户输入类型自动分流,其本质是实时求值上下文变量并按顺序匹配首个true分支,支持多条件组合与嵌套,但需注意作用域隔离、变量路径准确及空值防护。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在Coze工作流中让AI根据用户输入类型自动走不同路径,比如“查天气”调用天气插件、“订外卖”跳转外卖API、“问知识”交给大模型回答,就必须配对条件分支节点——它不是简单开关,而是靠实时变量求值驱动的决策中枢。
理解条件分支的本质运行机制
条件分支节点不是静态配置完就一劳永逸的。它每执行一次,都会从上游节点接收完整上下文(比如 {{input.text}}、{{api_result.data.length}}),然后逐条求值你写的表达式,按顺序匹配第一个为 true 的分支。系统不支持“同时满足多个分支”,只认“最先命中”。这和写 if-else 代码逻辑一致,但没有隐式 fall-through。
分支出口严格绑定单个下游节点:你拖一个「发送消息」到 if 分支出口,再拖一个「调用插件」到同一个出口,第二个会被静默丢弃——控制台日志会显示 next node: [null],后续节点根本不会调度。
【分支内变量默认不可见】,比如你在开始节点设置了 $user.level = "vip",但在 if 分支里直接写 {{user.level == "vip"}} 会判为 undefined,因为分支创建了独立作用域。必须提前在条件节点配置中勾选 pass_through: true,或用「设置变量」节点显式中转。
配置判断条件的三步实操法
第一步:拖入「条件分支」节点,双击打开配置面板。
第二步:在 IF 区域点击「+」添加条件表达式,左侧「判断参数」下拉选择前置节点输出项(如 input.text),中间选「包含」,右侧「比较参数」选「输入」并填“天气”——此时表达式为 {{input.text}} contains "天气"。
第三步:点击「添加分支」新增 ELSE IF 分支,同样配置 {{input.text}} contains "外卖";再点一次「添加分支」加第三个分支,条件设为 {{input.text}} contains "知识";最后留好 ELSE 分支兜底,接「结束节点」返回“没听懂,请换种说法”。
注意:分支顺序决定匹配优先级。如果用户输入是“今天天气怎么样,顺便帮我订个外卖”,因“天气”在前被先匹配,就不会走到外卖分支——这不是 bug,是设计使然。需要更精准分流时,应改用正则提取关键词或拆成两层条件嵌套。
多条件组合的两种写法
方法一:单分支内用「且」连接多个条件
比如只对 VIP 用户且输入含“加急”的请求才触发人工客服:在 IF 分支里添加两个表达式,用「且」连接——{{input.user.role}} == "vip" 且 {{input.text}} contains "加急"。两个都为 true 才进该分支。
方法二:用嵌套分支实现分层过滤
先判断是否登录:IF {{input.user.authenticated}} == true → 进入子分支;子分支里再判断角色:IF {{input.user.role}} == "admin" → 走管理流,ELSE → 走普通用户流。这种结构适合权限体系复杂、判断维度超过 3 个的场景,避免单层分支堆砌导致维护困难。
方法三:用「或」放宽匹配范围
用户可能说“我要订餐”“我想点外卖”“帮我叫个饭”,统一归到外卖分支:在一个分支里连续添加三个表达式,全部用「或」连接,分别匹配“订餐”“外卖”“叫饭”。这样只要命中任意一个词就触发。
避坑要点与真错误排查
变量引用必须带双花括号且路径准确:写 {{user.level}} 错,要写 {{input.user.level}} 或 {{context.user.level}},具体取决于变量来源节点的输出字段名。错一个层级,整个条件恒为 false。
字符串比较务必注意类型:API 返回的 status 是字符串 "200",写 {{api_result.status > 200}} 会始终为 false,因为字符串和数字不能直接比大小。应改用 {{to_number(api_result.status) > 200}} 或 {{api_result.status == "200"}}。
空值导致 contains 报错:当 {{api_result.data}} 为 null 时,{{api_result.data.items}} contains "abc" 会中断流程。必须前置加判断:先用一个条件分支检查 {{api_result.data}} is not empty,再进下一层处理。
调试时务必开启「查看原始数据」:在节点右上角点「调试」→「查看输入数据」,确认你写的变量路径下真实存在什么值、是什么类型。很多条件不生效,只是因为压根没拿到预期数据。











