第一次崩溃发生在上线第一天。
测试的时候用两条数据跑得好好的,一上线——API 超时,整个工作流直接挂了。连个报错提示都没有,就那么愣在那里,像一个被拔了网线的机器人。
第二次更离谱。LLM 节点突然返回了一段"自由发挥"的文字,格式跟我 Prompt 里写的完全不一样。下游解析节点一看——不是 JSON,直接报错,后面的步骤全停了。
第三次我最没想到:循环跑了三十几次,中间某一次上游输出为空,变量取了个 null,后面的节点一个接一个地炸。
三次崩溃,三种不同的死法。但死因只有一个——我只验证了理想路径,从来没想过异常来了怎么办。
六种死法
后来我把遇到的问题归了归类,发现扣子工作流的异常翻来覆去就这几种:
API 调用出了问题——超时、限流、网络不通。这是最不稳定的环节,毕竟你控制不了对方的服务器。
LLM 输出不听话——你要 JSON 它给你纯文本,你要简洁它给你"我来帮你分析一下"的前言。
变量为空——上游没输出,下游直接懵。这是最阴险的一种,因为不会报"错",只是沉默地传递一个 null,然后在你最意想不到的地方引爆。
类型转换失败、条件分支走进了死路、循环跑飞了——这些相对少见,但遇到了一样要命。
排错只有一个黄金法则:先看日志,别急着改 Prompt。 点开出问题的节点,看输入输出的实际值,90% 的答案都在那里。
HTTP 节点:给最不稳定的环节加安全绳
外部 API 是最大的不确定性来源。网络会抖,服务会限流,接口会悄悄改版——任何一个都能让你的工作流当场去世。
我现在的做法是三层防护:
第一层,重试。HTTP 节点可以配置重试次数和间隔,我一般设 2-3 次,间隔递增。别无限重试,不然工作流会跑很久。
第二层,异常分支。判断一下状态码是不是 200,不是就走另一条路——而不是让错误一路传递下去。
第三层,兜底数据。API 彻底挂了的时候,我准备了一份备用数据。比如调用天气接口失败了,就用上次成功获取的数据顶上。
有个朋友的工作流每天调翻译 API,某天突然被限流,全部返回 429。因为他配了本地词典兜底,工作流没断,只是翻译质量降了一档——用户几乎察觉不到。
好的兜底不是不出错,是出错了别人看不出来。
LLM 节点:对付一个不听话的黑盒
LLM 是最难保证稳定性的节点。同样的 Prompt,有时候乖乖返回 JSON,有时候非要加一段"让我来解释一下",有时候干脆输出为空。
我试过三种方法,组合用效果最好:
强化 Prompt 的格式约束——把"请按 JSON 格式输出"改成"你必须严格按照以下 JSON 格式输出,不要添加任何额外说明",再把错误示例和正确示例都写进去。LLM 看到反面教材,会乖很多。
在 LLM 后面加一个代码节点做格式清洗——先尝试直接解析 JSON,失败了就用正则提取 JSON 片段,再失败就返回兜底值。这段代码不长,但救过我好几次:

配置节点的时候,谁会想到"如果这个变量是空的呢?"——直到它真的空了,整条链路像多米诺骨牌一样倒下。
我在条件节点里加了空值判断:变量不为空走正常流程,为空就用默认值、跳过这一步、或者发个提醒。
代码节点里也养成了习惯——用 value or "默认值" 来取值,不让 None 有机会往下传。
变量为空不会报错,它只会沉默地毁掉一切。这比报错更可怕。
给工作流装一个安全气囊
把每种节点的异常处理都配好之后,我又加了一层全局的兜底策略,分三个级别:
L1 静默降级——出错时用默认值替代,用户无感知。非核心功能用这个。
L2 降级通知——功能降级,同时发一条飞书通知。一般业务用这个。
L3 熔断告警——立刻停止,紧急通知。核心业务用这个。
飞书通知节点的消息模板我固定了一个格式:哪个工作流、哪个节点、什么错误、什么时间、影响范围、处理建议。配好之后,每次异常都会自动推消息,不用盯着日志看。
一个真实的凌晨
我朋友的工作流每天早上 8 点自动运行,采集 5 个平台的热点,用 LLM 分析后推到飞书群。稳定运行了两周,突然连续 3 天输出为空。
查日志——LLM 节点报了 token 超限。原因很朴素:某天热搜特别多,采集的数据量暴增,超过了上下文窗口。工作流没有兜底逻辑,直接中断,什么都没发。
修了三刀:LLM 前面加个代码节点做数据截断,超过 2000 字自动摘要;LLM 异常分支加自动重试(只分析 Top 10);彻底失败就飞书通知"今日数据异常,请手动查看"。
修完之后,再没断过。即使遇到异常,也能降级输出。
一件事
工作流的稳定性,不取决于你写得有多优雅,而取决于你对异常场景考虑得有多全。
打开你正在跑的工作流,找出那些没有异常处理分支的节点——它们就是下一次崩溃的伏笔。
永远假设会出错,永远准备 Plan B。 异常处理不是附加题,是必修课。早点搭好,你会少掉很多头发。
你遇到过最离谱的工作流报错是什么?聊聊,看看谁的下限更低。
遇到问题无法解决?米核AI易山,全网同名。