重试是药也是毒:对瞬时网络错误有用,对业务拒绝与校验失败会更糟。

可重试 vs 不可重试(经验划分)

  • 可重试:超时、429/503、连接重置(仍要尊重 Retry-After)
  • 不可重试:400 参数错误、权限拒绝、明确的业务「已取消」

把错误分类写进工具包装层,不要让 LLM 自由发挥是否重试。

检查清单

  1. 是否有 最大次数 与总时限?
  2. 是否 指数退避 + 抖动?
  3. 写操作是否 幂等键?(参见 工具调用幂等)
  4. 重试时是否避免重复拼接巨型上下文?(参见 工具结果截断)
  5. 达到上限后的 降级:问人、换工具、标记失败原因

提示词侧

告诉模型:「工具返回可重试错误时,等待后再次调用同一幂等键;不可重试则解释原因并停止。」

人工介入时机

连续失败且影响资金、删除、外发消息——直接停,不要让 Agent 在夜里默默重试到成功。

实践时如何避免「看起来很忙、没有变好」

  1. 先写清失败案例:哪类输入现在一定会错。
  2. 只改一个环节(提示词、检索、重试或评估),保留前后样例。
  3. 用同一批样例回归,而不是每次换新例子自我安慰。
  4. 把「何时停下来问人」写进流程,避免自动化在错误方向空转。
  5. 文档里区分事实、猜测与待验证,防止团队把草稿当结论。

如果你维护的是团队流程,把上述五步做成合并请求或工单模板中的检查项,比额外再上一个工具更有效。

常见问题

问:一定要用很贵的模型吗?
答:多数通知、清单、结构化合稿用你日常能稳定调用的对话模型即可;关键是材料和规则要由人提供。

问:生成后还要改多久?
答:第一周可能每条改 2–5 分钟;模板稳定后,多数情况只替换变量并扫一眼敏感句。

问:能不能让 AI 直接对客发送?
答:涉及承诺、金钱、健康、未成年人与安全核验的内容,建议始终人工确认后再发。

为什么值得做成固定流程

临时找 AI「帮我写一下」每次都要重新解释背景,结果忽长忽短。固定流程的好处是:规则只维护一份,新人也能按同一口径沟通,并且出了问题可以回看是材料不全还是模板过时。把提示词、审核人和更新日期写在一起,比把文案散落在聊天记录里更可持续。

观测与告警

给工具调用打上:错误类、重试次数、是否最终成功、是否触发人工。若某一依赖半夜重试占比突然升高,应先熔断该工具,而不是让 Agent 继续烧配额。把这些指标放进和普通后端服务一样的值班视角,Agent 才不会成为不可见的故障放大器。

把上述流程写成团队约定后,新成员可以更快接手,也减少「每个人都用自己的口头禅对客」带来的口径分裂。维护成本主要在规则变更时更新提示词,而不是每天从零写作。