SuperAPI AI 工具集

error-recovery

编程与开发

查看项目

更新于 10-16 02:04

技能介绍

用途

error-recovery 是一个用于优雅处理失败的结构化恢复技能。其核心原则是:当事情出错时不要慌张,按评估、保留、恢复、验证、记录的流程处理。该技能在开始时需要声明:"I'm using error-recovery to handle this failure."

恢复协议

恢复流程包含五个步骤:

  1. ASSESS(评估)——严重性?范围?影响?
  2. PRESERVE(保留)——在证据丢失前捕获
  3. RECOVER(恢复)——遵循决策树
  4. VERIFY(验证)——确认干净状态
  5. 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 更新问题。

限制

该技能的具体平台支持、收费模式、价格等信息暂未提供。