先说结论
Agent 需要总任务截止时间与调用预算,每个工具在剩余预算内设置超时,按错误类型决定是否重试。临时故障使用受限退避,权限和输入错误先处理原因;写结果未知先查询。长任务使用可查询作业状态,而不是让一个网络连接无限等待。
读完你会得到
- 多个层同时重试会放大调用量,应明确责任层。
- 取消等待不等于外部任务已经停止。
- 截止后保留可查询状态和未完成事项,别伪装成成功。
一个失败工具被 SDK 重试,工作流又重试,Agent 还在循环调用。最后用户等了很久,上游服务也收到大量相同请求。本文把任务预算与重试责任写成明确约定,示例时间只用于解释计算,不是推荐配置。
配套资料与延伸阅读
- AI 工作流怎么搭建:从单点工具到可重复业务流程(阅读)
相关方法与实施说明
- 企业 AI Agent 开发检查清单:从工具权限到上线评测(阅读)
相关方法与实施说明
- 企业 AI / FDE 服务(了解)
可以用一次耗时或反复重试的任务讨论企业 Agent 的预算、异步状态和恢复方式。
任务超时与工具超时不是一回事
任务截止限制用户愿意等待的总过程;工具超时限制某次调用的等待。检索、模型、多个工具和重试都会消耗总预算,不能让每一步都独立使用完整任务时间。
例如教学任务总预算为 60 秒,前面已用 45 秒,就不应再开始一个可能等 30 秒的调用。实际时间按业务需求和依赖性能制定,保留收尾记录与状态返回的余量。
超时只说明调用方没有及时获得结果。外部服务可能已经执行,也可能继续运行;尤其是业务写入,要按标识查询当前状态,不把 timeout 转换成确定失败。
明确在哪一层负责重试
AWS 的重试指导指出多层重试会放大请求,并建议限制次数或总时间、采用退避与抖动。先查 SDK、HTTP 客户端、工作流引擎和 Agent 各自是否重试,明确哪些错误由哪层处理。
可以让工具封装层处理符合合同的短暂网络故障,Agent 收到明确结果后再决定任务下一步。不要让模型重复调用同一错误工具,同时底层继续自动重试。
优先理解现成客户端的重试能力与默认行为,再增加必要逻辑。重复包裹“更可靠”的重试器,可能增加负载与恢复时间。
本节依据: [1] Amazon Web Services
错误类型决定是否值得再试
| 结果类型 | 处理方式 | 注意事项 |
|---|---|---|
| 参数无效 | 更正缺失或错误字段 | 重复相同输入通常无效 |
| 权限不足 | 进入授权或接管路径 | 不扩大 token 权限来绕过 |
| 版本冲突 | 重读并核对新内容 | 可能需要重新确认业务意图 |
| 限流或临时服务故障 | 按合同退避并限制预算 | 遵守平台提示与最大尝试 |
| 写入结果未知 | 先查询原请求结果 | 不得生成新意图盲目写入 |
| 确定业务拒绝 | 返回条件和下一步 | 不能靠等待改变业务规则 |
服务返回的 HTTP 状态只是线索,还要看平台合同。某些错误的可恢复性与最终一致性有关,不能只按所有 5xx 重试、所有 4xx 不重试写成通用规则。
退避、抖动和次数上限各解决什么
退避让连续尝试之间等待更久,减轻持续压力;抖动避免大量任务在同一时间再次请求;次数与总预算防止无限积压。三者应一起受任务剩余预算约束。
等待期间任务可被取消或授权条件可能改变,下一次调用前检查当前状态。重试间隔不是“越长越安全”,过长可能拖过业务处理窗口,过短又可能加剧负载。
记录每次尝试原因和累计耗时。用户看到“处理中”时,维护者应能判断是在等待队列、等待外部作业还是重试工具,避免所有状态都变成不可解释的转圈。
长任务改用作业状态与查询
长时间分析、批量处理或外部任务可以先返回作业标识,再提供查询当前阶段与结果的入口。受理不等于完成,轮询也要设置间隔、次数与截止条件。
定义 pending、running、completed、failed 和 cancel_requested 等状态的含义,具体命名由系统决定。取消请求发出后,只有外部服务确认停止,才能声称已取消;已经发生的动作仍要核对。
作业标识要与身份绑定,不能让知道标识的人读取别人的内容。重复回调或状态查询使用幂等处理,终态不应被迟到的旧事件随意覆盖。
到达截止条件后怎样返回结果
说明已经完成的部分、仍未确认的部分和下一步。只完成资料检索,就不要显示“业务处理完成”;已受理写请求但状态未知,返回可查询标识并进入接管或后台核对。
对于没有副作用的研究任务,可以返回部分结果与来源覆盖限制;对于写任务,优先说明业务状态和是否允许继续操作。不要用一段流畅总结掩盖未完成步骤。
保存必要检查点,但不能假设进程恢复会自动处理外部状态。恢复前再次检查权限、版本、预算和作业结果,过期任务可以停止,而不是重新从头执行。
测试取消时同时观察等待连接、内部队列和外部作业。取消本地等待后,队列中尚未开始的动作应按约定阻止;已经提交给外部平台的动作需要查询确认。若平台不支持取消,明确说明本地已停止等待,外部作业仍可能继续;只有确已提交取消请求时,才显示“已请求停止,结果待确认”。不能仅因为前端按钮变灰就宣称业务已经停止。
用三种故障测试预算是否真实有效
隔离演练
- 让只读接口短暂失败
观察退避、尝试上限与总时间是否按约定结束。
- 让写接口丢失响应
检查是否查询原结果,确认没有重复对象。
- 让异步作业迟迟不结束
检查用户状态、取消语义、后台查询预算和接管入口。
本文适合带多步工具调用的 Agent 和工作流。预算设计不能消除底层故障,但能限制等待、费用和负载扩散。生产参数应依据实际时延与任务价值制定,并持续观察。
常见问题
每个工具设置相同超时可以吗?
不同工具时延、业务影响和可恢复性不同,应各自约定,并受总任务剩余预算限制。相同数值可以是初始实验,不是通用最佳值。
浏览器关闭后任务应该自动取消吗?
取决于产品约定。后台任务可以继续,但必须有状态查询和取消机制;关闭连接不能被误解为外部动作已停止。
资料来源与核对说明
文章中的行业定义与技术方法尽量引用官方或标准组织资料;表格、清单和决策框架是基于这些资料形成的编辑性整理,不代表来源机构对本站服务的背书。
- REL05-BP03 Control and limit retry callsAmazon Web Services
用于限制重试、退避与抖动、避免多层重试放大;没有通用的固定超时或重试次数。
带上流程、样例和目标,添加企业微信沟通。先确定项目范围与验收方式,再安排实施。


