【Coze工作流】条件分支循环节点实战从单线执行到智能决策搭完第一个扣子工作流的时候我挺激动的开始→大模型→结束连上线就能跑。但真往业务里一放马上发现问题——它只能从头到尾走直线。用户说查天气和看新闻你总不能让它们走同一条路吧搜索接口返回10条结果你总不能手动一条条处理吧条件分支和循环节点就是干这事的。这篇文章我把自己踩过的坑和摸索出来的配置方法整理一下帮你少走弯路。一、问题背景单线工作流真不够用扣子工作流入门很简单开始节点→大模型节点→结束节点三步搞定。但真实业务哪有这么简单我遇到的实际需求用户输入不同内容需要调用不同插件——一个入口多条路径搜索接口返回一批结果要逐条生成摘要——一次输入重复处理生成的内容可能有问题得判断后再决定输出还是重试——执行到一半要分叉单线工作流对这三个场景全都束手无策。条件分支解决走哪条路循环解决做几遍两个一组合工作流才像个能干活的工具。二、核心原理搞懂底层逻辑再动手2.1 条件分支节点条件分支说白了就是编程里的if-else输入数据进来判断条件满足就走分支A不满足走分支B默认分支。扣子里支持多条件组合AND/OR也支持多个分支。每个分支可以接不同的下游节点走完全不同的处理路径。2.2 循环节点循环节点就是for-each遍历输入一个数组取出第1个元素执行循环体收集结果取出第2个元素再执行再收集直到遍历完。它需要一个数组类型的输入对每个元素执行同样的处理。循环体里面可以放任意节点组合。2.3 什么时候用哪个维度条件分支循环节点干什么路径选择批量处理输入类型任意变量数组变量典型场景根据意图走不同插件逐条处理搜索结果类比if-elsefor-each我踩过的坑忘了设默认分支数组为空直接报错2.4 组合使用的典型结构实际项目中最常见的组合模式——先判断走哪条路再对结果批量处理开始节点→大模型做意图识别→条件分支新闻类走搜索插件→循环节点逐条生成摘要→结束节点天气类走天气插件→结束节点其他走默认回复→结束节点。三、条件分支实战3.1 场景根据用户意图走不同处理路径我要搭一个多功能助手用户可以问新闻、查天气、或者闲聊。不同意图调不同能力。第一步大模型节点做意图识别在开始节点后面加大模型节点Prompt 这样写你是一个意图识别器。根据用户输入判断意图类型。意图类型news新闻资讯、weather天气、chat其他闲聊或问题请只输出意图类型标签不要输出任何其他内容。用户输入{{start.query}}输出格式选文本因为只需要一个标签词。第二步配置条件分支大模型节点后面加条件分支节点配三个分支分支名条件下游接什么新闻llm.output 包含 “news”头条搜索插件天气llm.output 包含 “weather”天气查询插件默认无条件始终匹配闲聊大模型节点⚠️这点我翻过车默认分支一定要配。我有次偷懒没加结果大模型输出了个不在条件里的标签工作流直接报错中断了。第三步各分支连到不同处理节点每个分支接不同的处理节点最后都汇到结束节点输出。3.2 我踩过的几个坑坑一数据类型不匹配条件判断里数字比较和字符串比较不是一回事。大模型输出的3是字符串直接和数字3比较永远不等。要么在条件表达式里统一类型要么前面加个代码节点转一下。坑二变量传递断裂不同分支的变量结构可能不一样——新闻分支返回数组天气分支返回对象。如果结束节点只引了一个分支的变量另一个分支跑完就报错。我的做法是确保每个分支的输出结构一致或者各自处理后再汇总。坑三没加默认分支这个问题我强调多少次都不够。大模型的意图识别不可能百分百准总会蹦出个意外输出。默认分支就是安全网没它就是在赌运气。四、循环节点实战4.1 场景批量处理搜索结果搜索插件返回多条新闻要逐条生成摘要。这是循环节点最典型的用法。第一步配置循环数据循环节点的循环数据输入框里通过添加变量→节点引用选搜索插件返回的结果数组。循环次数留空系统按数组长度自动执行。第二步设计循环体双击循环节点进内部画布加代码节点提取单条数据和大模型节点生成摘要两个节点串起来。代码节点从当前循环项里提取字段asyncdefmain(args:Args)-Output:# 获取当前循环项itemargs.params[input]# 提取需要的字段titleitem.get(title,)contentitem.get(content,)urlitem.get(url,)return{title:title,content:content,source:url}大模型节点的 Prompt请根据以下新闻信息生成一段50字以内的摘要。标题{{code.title}}内容{{code.content}}要求提炼核心信息语言简洁保留关键数据。第三步收集循环结果循环节点会自动把每次循环的输出收集成新数组。结束节点引用这个数组就行。4.2 嵌套循环和性能那些事嵌套循环扣子支持循环里套循环但别套太多层我建议不超过2层再深了调试起来很头疼内层循环的数据要引用外层循环的当前项每层循环的输出变量名得分开不然容易搞混循环次数控制输入数组太大直接全循环可能超时。两种控制方式方式一代码节点截取数组只取前5条别贪多asyncdefmain(args:Args)-Output:dataargs.params[input]# 只取前5条return{items:data[:5]}方式二循环体内加条件分支判断计数器到上限就跳出超时怎么办扣子工作流单次执行有超时限制大概5分钟。循环节点处理量大了容易超时我的应对方法减少单次循环里的处理复杂度拆成多个工作流用智能体串起来调用定时触发分批跑五、组合实战热点追踪工作流把条件分支和循环组合起来搭个完整的热点追踪工作流。工作流设计开始节点输入关键词→ 搜索插件查询新闻→ 循环节点遍历搜索结果内部放代码节点提取标题摘要、大模型判断是否AI相关→ 条件分支AI相关的生成深度解读非AI相关直接输出摘要→ 代码节点合并输出 → 结束节点。关键配置搜索插件插件选头条搜索查询参数引用开始节点的keyword返回数量设10条。循环体内大模型节点判断相关性判断以下新闻是否与AI/人工智能/大模型相关。标题{{code.title}}摘要{{code.content}}只输出相关或不相关不要输出其他内容。条件分支分支条件处理深度解读llm_judge.output 包含 “相关”大模型生成深度分析快速摘要默认直接输出原始内容合并输出的代码节点asyncdefmain(args:Args)-Output:itemsargs.params[items]result_parts[]foriteminitems:titleitem.get(title,)analysisitem.get(analysis,item.get(summary,))result_parts.append(f###{title}\n\n{analysis}\n)return{output:\n.join(result_parts)}调试顺序别跳步先单独跑搜索插件确认返回的数据结构长什么样再单独测循环体用一条数据跑通内部流程条件分支用两条测试数据一条相关的一条不相关的整体联调时留意耗时10条新闻循环处理一般1-2分钟能跑完六、常见问题排查Q1条件分支报错未匹配任何条件检查有没有配默认分支。再看看条件表达式里的变量引用路径对不对——点开上游节点确认输出变量名。Q2循环节点报错输入不是数组循环数据必须是数组类型。如果上游返回的是对象比如搜索插件返回的是包含results字段的对象需要用代码节点把results字段取出来再传给循环节点。Q3循环体里引用不到外面的变量循环体内部只能引用循环当前项和循环体内部节点的变量循环外面的变量是引用不到的。如果需要外部变量在循环数据里一起传进去。Q4条件判断老走默认分支大概率是大模型输出格式和条件对不上。比如它输出了带换行的内容多了个\n。用代码节点先strip()一下或者条件用包含别用等于。Q5循环跑一半超时了减少输入数组的长度或者降低单次循环里的处理量。也可以把大任务拆成几个小工作流让智能体调度着跑。Q6循环结果怎么合成一份完整输出循环节点会自动把每次循环的输出收成数组。循环结束后加个代码节点遍历数组拼成最终文本就行。Q7条件分支里能套循环吗可以在某个分支的下游接循环节点。但嵌套层级别搞太深2层以内比较稳。Q8循环里怎么做条件判断循环体内也能放条件分支。比如对每条新闻先判断相不相关再决定生成深度解读还是简单摘要。注意循环体内每个分支的输出结构要一致不然合并的时候会出问题。七、总结条件分支和循环节点是扣子工作流从能跑到能用的分水岭。单线流程应付不了复杂业务加上条件判断和批量处理工作流才真正派上用场。几个核心点再强调一遍条件分支解决路径选择默认分支别漏循环节点解决批量处理输入必须是数组先判断再循环是最常用的组合模式逐节点调试别攒到最后一起测进阶玩法条件分支可以配合知识库检索做更智能的路由循环节点可以搭并行处理提速两个组合还能做自我纠错——生成后自动检查质量不合格重来一遍。全网搜索「米核AI易山」了解更多工作流实战案例和完整教程。