首页 /
术语百科 / Agent Error Handling
🔧 Agent Error Handling(智能体错误处理)
AI也会犯错,关键是怎么优雅地摔跤——然后自己爬起来。
什么是Agent Error Handling?
Agent Error Handling(智能体错误处理)是Agent系统中检测、分类、恢复和记录错误的一整套机制。它不仅仅是try-catch,而是一个包含错误预防、检测、恢复、学习和告警的完整体系。
Agent错误分类体系
| 错误类型 |
严重级别 |
示例 |
处理策略 |
| 工具调用错误 |
高 |
API返回500、参数错误、认证失败 |
重试 → 降级 → 替代工具 |
| 模型推理错误 |
中 |
幻觉输出、格式错误、拒绝回答 |
重试 → prompt修正 → 模型降级 |
| 上下文溢出 |
中 |
token超限、上下文窗口不足 |
压缩 → 截断 → 分段处理 |
| 循环死锁 |
严重 |
Agent反复执行同一操作 |
循环检测 → 强制终止 → 状态重置 |
| 权限错误 |
高 |
无权访问资源、操作被拒绝 |
权限升级 → 交接 → 告警 |
| 数据错误 |
中 |
输入格式错误、数据缺失、类型不匹配 |
数据校验 → 默认值 → 人工确认 |
| 网络错误 |
低 |
连接超时、DNS解析失败 |
重试 → 备用连接 → 离线模式 |
| 安全错误 |
严重 |
注入攻击、越权操作、数据泄露 |
立即终止 → 审计 → 告警 |
OpenClaw 错误处理架构
error_handling:
tool_errors:
retryable:
- "rate_limit"
- "timeout"
- "connection_error"
- "503_service_unavailable"
non_retryable:
- "401_unauthorized"
- "403_forbidden"
- "404_not_found"
- "422_validation_error"
retry_policy:
max_attempts: 3
backoff: "exponential"
llm_errors:
on_hallucination: "verify_and_retry"
on_refusal: "rephrase_and_retry"
on_format_error: "reparse_with_fallback"
model_fallback_chain:
- "claude-3-opus"
- "claude-3-sonnet"
- "gpt-4o"
workflow_errors:
on_loop_detected:
max_iterations: 10
action: "checkpoint_and_replan"
on_context_overflow:
action: "compress_context"
on_cascading_failure:
action: "circuit_breaker"
关键错误处理模式
1. 断路器模式 (Circuit Breaker)
当错误率超过阈值时,暂时停止调用,给系统恢复时间。
circuit_breaker:
states:
closed:
failure_threshold: 5
time_window: 60s
open:
recovery_timeout: 30s
fallback: "cached_response"
half_open:
test_requests: 3
2. 检查点恢复 (Checkpoint & Resume)
定期保存Agent状态,出错后从最近的检查点恢复。
checkpoint:
enabled: true
interval: "every_step"
storage: "redis"
ttl: "24h"
on_error:
action: "resume_from_last_checkpoint"
max_resumes: 5
3. 输入验证层
在Agent执行前验证输入,拦截错误数据。
input_validation:
required_fields: ["task", "context"]
sanitization:
- type: "remove_html_tags"
- type: "max_length"
value: 10000
- type: "detect_injection"
on_invalid: "reject_with_explanation"
4. 安全护栏
防止Agent执行危险操作。
safety_guardrails:
forbidden_patterns:
- regex: "DROP TABLE"
action: "block_and_alert"
- regex: "rm -rf /"
action: "block_and_alert"
dangerous_operations:
- pattern: "DELETE"
requires_approval: true
- pattern: "WRITE"
max_records: 1000
优雅降级的艺术
错误处理的最高境界不是"不犯错",而是犯错后用户感觉不到:
graceful_degradation:
scenario: "web_search_fails"
chain:
1. 尝试备用搜索引擎
2. 使用缓存结果
3. 请求用户重新表述
4. 提供已知相关信息
user_message: "搜索暂时不可用,我将使用已缓存的信息来帮助您"
错误日志与学习
每次错误都是学习机会:
- 结构化日志 - 记录错误类型、上下文、触发条件
- 错误统计 - 识别高频错误,优化优先级
- 自动修复建议 - AI分析错误根因,推荐修复方案
- 回归测试 - 从错误中生成测试用例
HN事件教训:生产数据库被删
2026年4月HN热帖教训总结:
- 🚫 Agent不应该有"直接删除"的权限
- 🚫 危险操作必须经过人工审批(Human-in-the-Loop)
- 🚫 没有安全护栏的Agent就像没有刹车的汽车
- 🚫 错误处理不是"出错了再处理",而是"防止出错的错误"