处理 reviewer 反馈:Red→Green 修复 + 技术论证(禁止表演性同意)。 Use when: 收到 review 结果、reviewer 提了 P1/P2、需要处理反馈。 Not for: 发 review 请求(用 request-review)、自检(用 quality-gate)。 Output: 逐项修复确认 + reviewer 放行。
68
85%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Low
Low-risk findings worth noting
SOP 位置: 本 skill 是
sop-definitions/development.yamlstagereview的反馈处理执行细节。 上一步:request-review| 下一步:merge-gate
处理 reviewer 反馈的完整流程。核心原则:技术正确性 > 社交舒适,验证后再实现,禁止表演性同意。
| 来源 | 说明 |
|---|---|
| operator/猫猫转述 | 手动告知 review 结果 |
github-review-feedback connector 通知 | F140 自动投递:review decisions(approved/changes_requested)+ inline/conversation comments |
| 云端 Codex review | 通过 ReviewRouter 投递的 email review 结果 |
收到 github-review-feedback 通知时,按下面的核心知识处理——不区分来源,只区分反馈类型。
当 github-review-feedback connector 唤醒你时:
CHANGES_REQUESTED → 直接进入下方 Red→Green 流程APPROVED → 不需要 receive-review,检查是否可以走 merge-gateCOMMENTED → 判断是否需要代码修改,需要则进入 Red→Green 流程详见 refs/pr-signals.md Phase B 自动响应行为。
| 类型 | 特征 | 处理 |
|---|---|---|
| 代码级 | bug / edge case / 性能 / 命名 | Red→Green 修复流程 |
| 愿景级 | "这不是operator要的" / "缺了多项目管理" / "UI 不可用" | STOP → 回读原始需求 → 升级operator |
愿景级反馈不能用代码 patch 修补设计问题。 先对照operator experience验证 reviewer 说得对吗;如确实偏离,升级operator确认偏差范围,再重新设计。
当 review request 附有 Fresh-Context Findings 节时,reviewer 在自己的 findings 中标注 delta tag,量化 cross-model review 增值:
| Tag | 含义 | 用途 |
|---|---|---|
[FC:covered] | 该 finding 已被 fresh-context 发现 | 量化 fresh-context 覆盖率 |
[FC:new] | 该 finding 是 fresh-context 未发现的新发现 | 量化正式 reviewer 增值(reviewer delta metric) |
[FC:N/A] | 该 finding 不适用 delta 标注(如愿景级/架构级) | 排除非代码 finding |
Annotation 格式:在 finding 行末加 tag
P2-1: 边界条件未处理 — src/foo.ts:42 [FC:covered]
P1-1: Race condition in concurrent writes — src/bar.ts:18 [FC:new]
P3-1: 建议重新考虑整体架构方向 [FC:N/A]注意:
eval:qc 聚合分析❌ "You're absolutely right!" ❌ "Great point!"
❌ "Excellent feedback!" ❌ "Thanks for catching that!"
❌ "让我现在就改"(验证之前)行动说明一切——直接修复,代码本身证明你听到了反馈。
当以下情况时必须 push back,用技术论证,不是防御性反应:
如果你 push back 了但你错了:陈述事实然后继续,不要长篇道歉。
Review 代码时,自动执行 node scripts/check-fallback-layers.mjs 检测 fallback 模式增长。
同一文件新增 ≥3 层 fallback → 触发坐标系自检(三问):
review 报告中必须包含 fallback 层数分析结果。
Review 有零分歧 = 走过场(反顺从规则)。真正的 review 需要技术争论。
WHEN 收到 review 反馈:
1. READ — 完整读完,不要边读边反应。**R2+ 时额外动作**:回看上轮 finding 列表,标注每个 finding 的 failure-mode 类型,用于 AUDIT 步骤的同型判别
2. CLASSIFY — 区分愿景级 vs 代码级;按 P1/P2/P3 分优先级
3. CLARIFY — 有不清晰的问题先全部问清,再动手
4. VERIFY — reviewer 说的问题真的存在吗?(见下方三道门)
5. AUDIT — failure-mode sweep(见下方 §16e 判别)
6. FIX — 通过验证的问题 + audit 发现的同类问题 Red→Green 修复
7. CONFIRM — 修完回给 reviewer 确认,不能自判"改对了"对每条 review 意见,改代码之前必须过三道门:
特别注意:remote reviewer(Codex cloud)没有运行环境,判断基于静态分析和理论推理。你有本地环境 → 你的实测证据 > 他的理论推理。
修复顺序:P1(blocking)→ P2(必须修)→ P3(讨论后当场修或放下,不记 BACKLOG)
澄清原则:有任何问题不清晰,先 STOP,全部问清再动手。部分理解 = 错误实现。
VERIFY 完所有 findings 之后、动手修之前,做一次 failure-mode 判别:
判别问:这些通过验证的 P1/P2 里,有没有 ≥2 个属于同一类 failure mode?(边界遗漏、null 不安全、错误处理不一致、状态转换缺路径、类型假设不安全……)
R2+ 额外检查:如果本轮的 finding 和上轮是同型——不管数量多少,强制 audit。同型第二次出现 = author 上轮没泛化,这次必须补上。
≥3 轮升级规则(F229 PR-A1 20 轮教训)🔴:同一状态对象的 finding 连续 ≥3 轮出现(哪怕每轮都"修好了")= 不是你修得不对,是 plan/spec 层欠状态机的边——代码层 audit 扫不出"spec 没定义 restore boundary"这种上游缺失。停手,@ plan/spec 作者按 writing-plans「Stateful Object Gate」补状态转移表 + 不变量,补完再继续修。别一个人打到 R20(PR #2202:实现猫每轮诚实修好当轮 finding,但缺这个升级出口,20 轮才合入)。
为什么在 FIX 之前:先 audit 再修 = 一次修完所有同类;先修再 audit = 改了一个又发现三个,反复 rebase。
对每个 P1/P2 问题:
Step 0: 创建修复任务(F160 Phase C — 在动手修之前)
调用 cat_cafe_create_task 为每个 P1/P2 创建独立跟踪任务:
[P{N}] {问题摘要}(如 [P2] TaskComposer HTTP 错误时丢失输入)cat_cafe_update_task 状态改为 doneGotcha: 不要为 P3 创建任务——P3 当场修或放下,不记 BACKLOG 也不记毛线球。
1. 理解问题
2. 写失败测试(Red)
3. 运行测试,确认红灯
4. 修复代码
5. 运行测试,确认绿灯(Green)
6. 运行完整测试套件,确认无 regression例外:如果无法稳定自动化复现,提供最小手工复现步骤 + 说明原因,但不能跳过验证结论。
修复完成 ≠ 可以合入。必须回到原 feedback source 确认。
| Feedback source | 修复后动作 |
|---|---|
| 本地猫 reviewer | @reviewer 发送修复确认请求;等 reviewer 明确放行当前 SHA |
| cloud / GitHub review | 在 GitHub 回复或标注修复证据,push 新 SHA 后只重新触发 cloud review,等 PR tracking / review feedback;不要 @ 本地旧 reviewer |
| CI / PR check | 修复后 rerun/check gate;若只是外部 check gate,不需要本地 reviewer 续签 |
| operator / 愿景级 feedback | 回读原始需求;需要价值取舍时带 Decision Packet 给operator |
❌ 错误:cloud P2 修复 → @ 本地旧 reviewer 续签 → 等 cloud → 再 @ 本地 reviewer
✅ 正确:cloud P2 修复 → re-trigger cloud review → 等 PR truth source;local peer 只在非 cloud 行为 delta / scope 扩大时介入确认信格式(简要,详细版见 refs/ 如有需要):
## 修复确认请求
| # | 问题 | 状态 | Red→Green |
|---|------|------|-----------|
| P1-1 | {描述} | ✅ | {test file}: FAIL → PASS |
| P2-1 | {描述} | ✅ | {test file}: FAIL → PASS |
测试结果:pnpm test → {X} passed, 0 failed
Commit: {sha} — {message}
Fresh-Context Delta: {N} FC:covered, {M} FC:new, {K} FC:N/A <!-- 仅 review request 含 FC 节时 -->
请确认修复,确认后执行合入。修复完成后(F160 Phase C):
cat_cafe_update_task 状态改为 doneremote review 修了 P1/P2 → 必须 re-trigger remote review,不能自判通过直接合入,也不能把 cloud gate 投射成本地旧 reviewer。
教训(F121 狼人杀):reviewer 只看代码没打开浏览器,author 连续 9 轮瞎猜修都没被发现。
涉及 UX/前端/交互的改动,reviewer 必须实际打开浏览器操作验证,不能只看代码和测试输出。
验证清单:
1. 打开浏览器(Playwright/Chrome MCP)访问对应页面
2. 按 AC 或 bug 复现步骤实际操作
3. 截图/录屏作为验证证据
4. 如果和设计稿(.pen)有出入,标注差异没有浏览器验证的前端 review = 走过场。
Reviewer 在 review 过程中发现 author 触发以下任一条件,可直接发起 TAKEOVER(详见 shared-rules §18):
触发后:在 thread 显式宣布 TAKEOVER → 原 author 停止试错 → 你或另一只猫接手修复。接管猫不得自审,需由另一只猫 review。
| 错误 | 正确做法 |
|---|---|
| 边读边改,没读完 | 读完整反馈,分类后再动手 |
| 有不清晰的问题但先改清晰的 | 全部澄清后再统一动手 |
| 没写 Red 测试直接改代码 | 先写失败测试,确认红灯,再修 |
| 修完自判"对了"直接合入 | 必须回给 reviewer 确认 |
| 全盘接受,零 push back | 有技术理由必须说出来 |
| 愿景级问题用代码 patch | STOP,升级operator,不要硬修 |
| 云端 P1 修完不 re-trigger | 必须重新触发remote review |
| 前端改动只看代码不开浏览器 | 涉及 UX 必须打开浏览器实操验证 |
| 只修 reviewer 指的那一个点(补锅匠) | 先判 failure mode 是否同类,是则 audit 本 PR diff 全扫再修 |
| 同型 finding 打到 R5+ 还在逐轮修 | 第 3 轮就停,升级 plan/spec 作者补状态机(≥3 轮升级规则)——代码层修不掉 spec 层的洞 |
| Skill | 关注点 | 时机 |
|---|---|---|
quality-gate | 自己检查自己(spec + 证据) | 提 review 之前 |
request-review | 发出 review 请求 | 自检通过之后 |
| receive-review(本 skill) | 处理 reviewer 的反馈 | 收到 review 之后 |
merge-gate | 合入前门禁 + PR + remote review | reviewer 放行之后 |
Reviewer 在 review 期间创建的沙盒:
request-review 约定的路径 /tmp/cat-cafe-review/{review-target-id}/{reviewer-handle}为什么不让 reviewer 自己清理:reviewer session 在放行后结束,下次唤醒时 context 已换, 根本不记得自己在 /tmp 留了什么。merge-gate 是唯一确定性终态。
Reviewer 放行("LGTM"/"通过"/"可以合入")→ 直接加载 merge-gate skill(SOP stage merge)。不要停下来问operator(§17)。
80782c5
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.