可靠性与失败¶
English | 中文
Agent 的失败方式与确定性服务不同。模型非确定性,工具可能部分失败,上下文可能丢失, 重试可能重复副作用。可靠性是架构属性,不是重试设置。
失败域¶
| 域 | 示例失败 | 控制 |
|---|---|---|
| 模型 | 超时、限流、行为变化 | 路由、超时、回退、重新验证 |
| 工具 | 部分失败、错误响应 | 校验、幂等、补偿 |
| 上下文 | 缺失或过期 | 溯源、新鲜度、上下文检查 |
| 流程 | 崩溃、重启、状态丢失 | 持久流程、检查点 |
| 协调 | 重复或冲突工作 | 租约、声明、幂等 |
| 人类 | 审批瓶颈、升级遗漏 | 队列、SLA、升级路径 |
| 经济 | 成本失控 | 预算、步数限制、路由 |
核心概念¶
- 幂等。 重复命令不应重复效果。
- 持久性。 状态跨进程或设备故障存活。
- 恢复。 从记录状态继续。
- 补偿。 已完成步骤可以撤销或抵消。
- 超时。 慢依赖不会永远挂起。
- 退避。 重试不会放大故障。
- 熔断。 隔离失败依赖。
- 检查点。 运行可恢复而不重放一切。
- 预算。 Agent 不能无界花费或行动。
Agent 特有失败模式¶
- 非确定性重试。 重试产生不同计划或输出。
- 效果重复。 崩溃后工具调用被重复。
- 上下文漂移。 Agent 跨步骤丢失目标或约束。
- 工具级联。 一个失败工具引发一连串补偿调用。
- 审批死锁。 流程永远等待人类。
- 成本失控。 Agent 循环或调用昂贵模型而没有边界。
可靠性清单¶
- [ ] 每个外部效果有幂等键。
- [ ] 长期工作是持久的。
- [ ] 恢复经过测试,不是假设。
- [ ] 超时与退避已配置。
- [ ] 不可逆步骤有补偿。
- [ ] 预算与步数限制被执行。
- [ ] 审批路径有升级与过期。
- [ ] 证据在失败后存活。
与“它能工作”的区别¶
演示展示快乐路径。可靠性关注不快乐路径:
- 工具超时;
- 模型返回畸形输出;
- 流程重启;
- 人不回答;
- 外部系统宕机;
- 证据存储不可用。
为这些设计,快乐路径自然成立。