# Claude Code PR Review Toolkit：找出被 catch 吞掉的失败，并用坏输入复现

## 执行范围

已运行 Node 四类分支正负对照；官方 silent-failure-hunter 审查Agent未调用，未伪造AI审查报告。

## 输入与目标

catch后返回空列表、吞掉异常和正常无结果三种分支

交付：分支风险报告、最小失败请求与修复后的行为对照

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
node branches.mjs
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **准备四类输入**

把正常空数组、有数据、连接异常和items错误形状分开。正常空结果是业务成功，不应和外部失败混在一起。

2. **限定审查范围**

在自己的授权Claude会话让silent-failure-hunter只读branches.mjs，要求报告具体catch/fallback位置与能复现的输入。

3. **复现被吞异常**

运行作者坏实现：连接异常被catch变成[]。回读调用方所见结果，与正常空结果完全相同，说明故障已不可区分。

4. **检查形状缺口**

让外部返回items:null。没有形状检查时会把null传出去；这类合同破坏也不能被描述为“没有记录”。

5. **明确返回合同**

参考实现区分{ok:true,items}与{ok:false,error}，先检Array.isArray。修复目标是使失败可见，而非永远显示成功。

6. **回归正常空结果**

再次执行四种输入。正常[]继续成功，有数据保留原项；连接失败和错误形状都进入明确错误分支。

7. **核对审查证据**

将你自己的Agent报告逐项对照实际分支表。未复现的意见保留待查；本题branch-comparison.json来自Node执行，不是Agent输出。

## 来源

- https://raw.githubusercontent.com/anthropics/claude-plugins-official/main/plugins/pr-review-toolkit/agents/silent-failure-hunter.md
