用途
error-recovery 是一个用于优雅处理失败的结构化恢复技能。其核心原则是:当事情出错时不要慌张,按评估、保留、恢复、验证、记录的流程处理。该技能在开始时需要声明:"I'm using error-recovery to handle this failure."
恢复协议
恢复流程包含五个步骤:
- ASSESS(评估)——严重性?范围?影响?
- PRESERVE(保留)——在证据丢失前捕获
- RECOVER(恢复)——遵循决策树
- VERIFY(验证)——确认干净状态
- DOCUMENT(记录)——记录发生了什么
主要能力
步骤 1:评估严重性
严重性等级分为四级:
- Critical(严重):系统不可用,数据面临风险。例如构建完全损坏、测试导致数据丢失。
- Major(重大):重要功能损坏。例如功能不工作、大量测试失败。
- Minor(轻微):孤立问题,存在变通方法。例如单个测试不稳定、样式错误。
- Info(信息):仅警告,不阻塞。例如弃用通知、性能提示。
评估问题包括:系统是否仍可用?是否有数据面临风险?其他功能是否受影响?是否阻塞进度?范围包括受影响的文件、功能、用户。
步骤 2:保留证据
在尝试修复之前捕获证据,包括:
- 错误日志:使用
pnpm test 2>&1 | tee error-log.txt或./failing-command 2>&1 | tee error-log.txt - 堆栈跟踪:记录错误类型、位置和调用栈
- 状态捕获:
git status、git diff、env | grep -E "NODE|NPM|PATH"、pnpm list - 截图:对于 UI 错误,在更改前捕获截图
步骤 3:恢复
根据失败类型选择恢复方式:
- 代码错误:使用 Git 恢复。单文件损坏用
git checkout HEAD -- path/to/file.ts;功能损坏用git log --oneline找到最后良好提交后git reset --soft [GOOD_COMMIT]或git reset --hard [GOOD_COMMIT];工作目录混乱用git stash、git status、git stash pop。 - 构建错误:清理构建产物
rm -rf node_modules dist build .cache,重新安装依赖pnpm install --frozen-lockfile,重新构建pnpm build。 - 环境问题:检查环境
env | grep -E "NODE|PNPM",重置 Node 模块rm -rf node_modules和pnpm install --frozen-lockfile,使用 nvm 时验证版本nvm use,重新运行初始化脚本./scripts/init.sh。 - 外部服务:检查服务是否可用
curl -I https://service.example.com/health,如果不可用则等待并重试sleep 60后再次检查,如果仍不可用则检查状态页面并记录为外部阻塞。
步骤 4:验证
恢复后验证干净状态:
- 基本验证:
git status(预期 "nothing to commit, working tree clean" 或已知更改)、pnpm test、pnpm build、pnpm typecheck - 功能验证:运行之前损坏的具体测试
pnpm test --grep "specific test"或手动验证功能
步骤 5:记录
通过 gh issue comment [ISSUE_NUMBER] --body 记录错误恢复信息,包括错误描述、严重性、证据、恢复操作、验证结果、根本原因和预防措施。也可通过知识图谱存储:mcp__memory__add_observations 记录实体名称、内容和观察结果。
常见恢复模式
- "测试从通过变失败":检查
git diff HEAD~3、git diff HEAD~3 pnpm-lock.yaml,清理重装rm -rf node_modules && pnpm install --frozen-lockfile - "本地正常,CI 失败":检查环境差异(Node 版本、操作系统差异、环境变量),使用 CI 类似设置运行
CI=true pnpm test - "构建从正常变损坏":检查 TypeScript 错误
pnpm typecheck,检查循环依赖pnpm dlx madge --circular src/,清理构建rm -rf dist && pnpm build - "我搞砸了一切":不要慌张,找到最后已知良好状态
git log --oneline,重置到该状态git reset --hard [GOOD_COMMIT],验证pnpm test,然后更小心地重新开始
升级
如果恢复尝试 2-3 次后仍失败,则进行升级:记录问题编号、错误描述、恢复尝试及结果、当前状态、保留的证据、请求帮助的具体问题,将问题标记为 Blocked 并等待人工输入。
检查清单
错误发生时:评估严重性、保留证据(日志、状态、截图)、选择恢复操作、执行恢复、验证干净状态、测试通过、构建成功、记录问题。
集成
该技能被以下技能调用:issue-driven-development(错误发生时)、ci-monitoring(CI 失败时)。该技能可能触发:research-after-failure(如果原因未知)、通过 issue-lifecycle 更新问题。
限制
该技能的具体平台支持、收费模式、价格等信息暂未提供。