因素09:把错误压缩进上下文
大约 2 分钟
因素09:把错误压缩进上下文
来源:12-Factor Agents / Factor 9(Compact Errors into Context Window)
一句话先懂
把错误转成结构化、可行动的信息回灌给模型,促成自愈;同时严格限制重试,避免无限打转。
奶奶版理解
做菜失败了,不是直接放弃,而是记住“这次盐放多了”,下一次修正。
但连错三次就要请会做的人帮忙,而不是死磕。
原文核心思想
- agent 的优势之一是自恢复。
- 工具失败后,模型读到错误信息,常能修正下一步。
- 但必须配合控制策略,不然会 error spin(错误旋转)。
推荐错误压缩格式
{
"type": "error",
"tool": "deploy_backend",
"category": "network_timeout",
"message": "connect deploy-service timeout",
"retryable": true,
"hint": "check service health or retry with backoff"
}重点不是“日志越多越好”,而是“可行动信息越清晰越好”。
落地策略
- 错误分类:参数错误 / 权限错误 / 外部依赖错误 / 业务冲突。
- 按类别设定重试预算(如最多 2-3 次)。
- 重试失败触发升级(人工或降级策略)。
- 已修复错误做上下文压缩,避免污染注意力。
常见误区
- 原始堆栈整段塞上下文,token 爆炸。
- 不设重试上限,陷入死循环。
- 把不可恢复错误也当可恢复处理。
我的思考
这条和 Factor 8 是一对组合拳:
- Factor 9 给“修复能力”
- Factor 8 给“停止边界”
只有两者一起,才能既聪明又不失控。
小结
- 错误要回灌,但要压缩和结构化。
- 自愈必须有预算,不能无限重试。
- 真正稳定的系统是“会修复,也会止损”。
