Files
16gagent/rules/error-handling.md
2026-06-06 10:40:48 +08:00

1.4 KiB

错误处理规范

从 Claude Code 的 categorizeRetryableAPIError() + isTerminalTaskStatus() 模式迁移。

错误三分类

类别         处理方式              例子
─────        ──────────            ──────────
可重试       退避重试(3次)       网络超时、API 限流
不可重试     立即报告              权限不足、参数非法
用户取消     静默终止              用户中断、超时退出

具体规则

网络/API 相关

  • 首次失败等待 2s → 第二次 5s → 第三次报告失败
  • 网络超时不等同于系统故障,一律重试
  • 重试时保持操作幂等(不产生重复副作用)

文件操作

  • 写文件前置检查路径合法性
  • 移动/删除文件用 mv 而非 rm(保留恢复可能)
  • 目录创建用 mkdir -p 确保幂等

执行命令

  • exec 失败时先看 stderr,非零退出不等同于失败
  • timeout 后进程可能仍在运行,需 process kill 清理
  • pipefail 确保中间步骤失败能被检测

用户取消

  • 用户中断(如 Ctrl+C)不做重试
  • 已产生的副作用不回滚,但标记状态
  • 报告"已处理到哪一步"而非"失败了"

Fast-Path 模式

复杂操作前先问快速路径:
  1. 这个操作我能 10s 内完成吗?→ 直接干
  2. 需要用户决策?→ 先问再干
  3. 可能失败?→ 预估风险,必要时先问