工作流中断等问题源于缺乏异常拦截和重试机制;需识别三类异常并分别处理:①变量引用失败用变量聚合节点兜底;②大模型输出不可控需Prompt约束、代码校验与分支重试;③HTTP异常按错误码分级重试或告警。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

扣子工作流上线后突然中断、节点报红、输出为空、分支不执行就失败——这些问题不是配置错了,而是缺少明确的异常拦截路径和可控的重试节奏。没有容错设计的工作流,一次网络抖动或模型输出波动就会导致整条链路崩溃。
识别三类典型异常源头
先确认你遇到的是哪一类问题,再针对性处理:
① 变量引用失败:比如报The input data is incorrect as fields cannot be extracted from null values,本质是多分支中某路未执行,下游节点却强行读取该分支变量;
② 大模型节点不稳定:同一 prompt 有时返回 JSON,有时返回“好的,我明白了”,有时直接超时;
③ 外部 API 调用失败:如微信 access_token 过期、万物识别服务临时不可达、扣子平台返回 401/403 鉴权错误。
这三类问题必须用不同机制应对,混用方案会放大故障面。
多分支空值问题:用变量聚合节点兜底
方法一:插入变量聚合节点(推荐)
把所有分支输出线全部连接到一个【变量聚合节点】上;
在该节点中设置统一输出变量名,例如【output_result】;
勾选“取第一个非空值”,这样无论哪条分支实际执行,下游都只认这个变量,不会因读空值而中断。
【注意:变量聚合节点不能替代逻辑判断,它只是让数据流“不断链”,业务含义仍需在后续节点中校验。】
大模型节点输出不可控:三重保险强制校验
方法一:Prompt 层加格式铁律
在大模型节点的 system prompt 末尾硬性声明:“你只能输出严格符合以下 JSON 格式的字符串,禁止任何额外说明、换行、Markdown 符号或中文解释:{ \"status\":\"success\",\"data\":{\"title\":\"xxx\",\"tags\":[\"a\",\"b\"]} }”;
方法二:接代码节点做结构校验
在大模型节点后立即添加【代码节点】,粘贴如下脚本:
try { const d = JSON.parse(llm_output); if (d && d.status === 'success') { return d; } else { throw new Error('Invalid status'); } } catch (e) { return { status: 'error', message: e.message }; }
方法三:分支重试兜底
将代码节点的输出接入条件节点 → 判断{{code_1.output.status}} === 'error' → 是则连回大模型节点重新生成,最多重试2次;
【大模型节点的 output 永远是 String,哪怕 Prompt 写了 JSON】——这是最常被忽略的前提,90% 的“取不到字段”问题都源于此。
HTTP节点异常:按错误码分级处理
第一步:打开 HTTP 节点配置面板 → 展开「高级设置」→ 开启「启用重试」
第二步:设置重试策略 → 重试次数填2,重试间隔填1000ms(即1秒)
第三步:点击「添加异常分支」→ 在弹出框中输入错误码匹配规则:
• 匹配 401 → 接入 token 刷新节点 → 刷新后再调用原接口
• 匹配 403 或 404 → 直接连到结束节点并返回提示:“权限不足或资源不存在”
• 匹配 500 或超时 → 连到告警节点,发送企业微信通知
第四步:确保主分支只接收 2xx 响应 → 其他所有状态码都会走异常分支,不会卡死流程。
调试动作:用节点测试快速定位问题
① 点击任一报错节点右侧的「详情」按钮 → 查看「输入」与「输出」的实际内容
② 若输出为 null 或空字符串 → 往上点一个节点,同样打开「详情」→ 检查它的输出是否也为空
③ 如果上游输出正常,下游却报错 → 打开下游节点输入配置 → 删除手输变量名 → 点击{}按钮从变量选择器中重新插入引用路径
④ 在可疑节点前插入代码节点 → 输入 console.log("debug:", typeof input, input) → 运行后看控制台打印类型与值
这一步操作起来很简单,直接把文件拖进去就行。


















