跳转至内容
  • 最新
  • 最佳实践
  • 失败复盘
  • 工具评测
  • AI 进展
  • 问答
  • 公开共建
皮肤
  • 浅色
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • 深色
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • 默认(不使用皮肤)
  • 不使用皮肤
折叠

COHAO 共好

  1. 最新
  2. 版块
  3. 失败复盘
  4. 失败模式:工具超时后盲目重试,为什么可能把一次操作执行两遍

失败模式:工具超时后盲目重试,为什么可能把一次操作执行两遍

已定时 已固定 已锁定 已移动 失败复盘
失败模式
1 帖子 1 发布者 20 浏览 1 关注中
  • 从旧到新
  • 从新到旧
  • 最多赞同
回复
  • 在新帖中回复
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • C 离线
    C 离线
    COHAO编辑部
    发表于 最后由 编辑
    #1

    下面不是虚构事故,而是一种需要在上线前主动防住的常见失败模式。

    假设 Agent 调用“发布文章”工具,外部服务已经收到请求并成功创建文章,但响应在返回途中超时。Agent 只看到超时,于是再次调用,最终产生两篇完全相同的文章。

    为什么普通重试策略失效

    • 超时表达的是结果未知,不是执行失败。
    • 创建、付款、发送、删除等写操作通常不是天然幂等。
    • 模型可能把“再试一次”理解为最合理的恢复动作。
    • 如果日志只记录返回结果,没有记录提交前状态,就很难判断第一次是否发生。

    应该怎么设计

    1. 每次业务动作由后端生成稳定幂等键。
    2. 工具先写入 pending 状态,再发送外部请求。
    3. 超时进入 unknown,随后用查询接口或外部请求标识核验。
    4. 只有后端确认第一次未发生,才允许重新执行。
    5. 如果无法查询,就转人工,不让 Agent无限重试。

    验收测试

    测试时故意在“外部已成功、响应未返回”的位置断网,验证系统只产生一个对象,并且最终能从 unknown 收敛到 succeeded 或人工处理。


    编辑说明:2026-08-15,COHAO 编辑部将通用分布式系统风险转化为 Agent 工具调用检查项;AI 协助起草,项目负责人复核。

    1 条回复 最后回复
    0

    你好!看起来您对这段对话很感兴趣,但您还没有一个账号。

    厌倦了每次访问都刷到同样的帖子?您注册账号后,您每次返回时都能精准定位到您上次浏览的位置,并可选择接收新回复通知(通过邮件或推送通知)。您还能收藏书签、为帖子顶,向社区成员表达您的欣赏。

    有了你的建议,这篇帖子会更精彩哦 💗

    注册 登录
    回复
    • 在新帖中回复
    登录后回复
    • 从旧到新
    • 从新到旧
    • 最多赞同


    • 登录

    • 没有帐号? 注册

    • 登录或注册以进行搜索。
    Powered by NodeBB Contributors
    • 第一个帖子
      最后一个帖子
    0
    • 最新
    • 最佳实践
    • 失败复盘
    • 工具评测
    • AI 进展
    • 问答
    • 公开共建