智能体流程里,超时兜底指当某个环节迟迟没有返回时,系统按预设动作接管的整套安排:先判定超时,再决定重试、换路还是放弃。没有兜底的流程,一次接口卡顿就能让整批任务悬在半空。
类比餐厅等位:超过四十分钟没排到,店家送小食或建议换店,而不是让客人无限等下去。失效之处在于,任务的「合理等待时长」因环节而异,一个标准超时值套所有环节,要么误杀慢任务,要么放过真卡死。
超时是怎么被察觉的
机制上每步调用启动时就挂了一个计时器:约定时间内收到返回,计时器作废;时间到了还没动静,计时器触发超时事件。关键在阈值怎么定——用该环节的历史耗时分布做参照,比如取常见耗时的数倍,而不是拍一个全局秒数。海螺AI、扣子等平台的重试与超时配置项,对应的正是这个机制。
兜底动作的几个档位
从轻到重大致四档:第一档原地重试,适合偶发抖动;第二档降级执行,换备用接口或缩减产出范围;第三档挂起转人工,把现场存好等人处理;第四档标记失败并继续后续任务,不让一条卡住拖住整批。档位选择看环节重要性和失败代价。
四档由轻到重,选哪档看环节重要性和失败代价。
| 档位 | 具体动作 | 对流程的影响 |
|---|---|---|
| 第一档 原地重试 | 原地重发这一次调用 | 只影响本次调用,流程继续 |
| 第二档 降级执行 | 换备用接口,或缩减产出范围 | 产出可能打折,流程不断 |
| 第三档 挂起转人工 | 把现场存好,等人处理 | 该环节停住,等接手 |
| 第四档 标记失败并继续 | 标记失败,后续任务照跑 | 不让一条卡住拖住整批 |
重试和放弃之间怎么选
重试前先区分错误类型:网络抖动、临时限流值得重试,参数错误重试一百次也一样,直接转人工或修正参数。重试要有次数上限和间隔递增,避免把对方的临时故障打成持续冲击。放弃也不等于丢弃:记录现场、通知相关人、给任务一个明确的失败终态。
用户侧要有交代
无人值守的流程出问题时,用户最怕的不是失败,而是无声无息。兜底动作要配套通知:挂在哪一步、尝试了几次、下一步是什么。固定路线的工作流可以在卡点预设岔路,自由路线的智能体则要约束它别无限尝试,两者差异见工作流和 Agent 差在哪?固定路线与自由路线。
超时兜底速查表
- 阈值按环节历史耗时分布定,不拍脑袋
- 重试设次数上限与间隔递增
- 参数类错误不重试,直接转人工
- 每个失败终态都配通知与现场记录
一句话记住:有退路的自动化,才敢真正无人值守。
兜底与并发配合时尤其要紧:批量任务里一条卡死不该拖累整批,并发安排见任务的并发度是怎么定的?关键步骤一次讲清;重试会不会撞上工具限制,见工具白名单是怎么配的?过程拆开看;单智能体和多智能体在故障隔离上的表现不同,见单 Agent 和多 Agent 差在哪?;协议层的超时语义差异,见MCP 和函数调用差在哪?两种接入方式。
超时值的分层也值得一提:同一环节对外部接口可以设两道线——软超时触发告警但不打断,硬超时才执行兜底动作,两道线之间留出的缓冲,能消化掉大部分正常波动,减少误杀。无人值守场景还要考虑「连环卡死」:上游卡住导致下游排队,队列积压又拖垮后续批次,给队列长度设上限,超过就暂停接收新任务并通知,比硬扛着消化更体面。最后是演练:兜底逻辑写完不等于能用,定期挑几个非关键时段人为制造一次超时,看看整条链路的反应是否符合预期。没演练过的兜底,出事时大概率给你惊喜。
聊聊超时兜底的常见疑问
- 超时设长一点是不是更稳?:不是,过长的超时等于纵容卡死,整批任务跟着陪等,按分布定值更合理。
- 重试会不会造成重复副作用?:会,所以写操作要么幂等,要么重试前先核对状态,别盲发。
- 兜底动作本身失败了怎么办?:降级到最后就转人工并告警,机器能自动解决的循环到此为止,别再套娃。


