处理 reviewer 反馈:Red→Green 修复 + 按 engagement mode 收口。Use when: 收到 review 结果或 P1/P2。Not for: 发 review 请求、自检。Output: 按 iterative / one-shot 契约闭环。
65
80%
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
Fix and improve this skill with Tessl
tessl review fix ./cat-cafe-skills/receive-review/SKILL.mdSOP 位置: 本 skill 是
sop-definitions/development.yamlstagereview的反馈处理执行细节。 上一步:request-review| 下一步:merge-gate
处理反馈要形成有依据的判断、修复与真实闭环。历史教训是顺从照改、点修不查同类,以及把修完误当已通过审查。
后文的处理顺序、表格和确认信是可选参考,可以直接使用、改造或替换;实际 source/typed 字段与授权契约仍按适用路径满足。发起 review 用 request-review,自己的交付自检用 quality-gate。
| 来源 | 说明 |
|---|---|
| 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 流程详见 ../.cat-cafe-shared-refs/pr-signals.md Phase B 自动响应行为。
| 类型 | 特征 | 处理 |
|---|---|---|
| 代码级 | bug / edge case / 性能 / 命名 | Red→Green 修复流程 |
| 愿景级 | "这不是operator要的" / "缺了多项目管理" / "UI 不可用" | 回读原始需求;明确的实现偏差直接修,新的价值取舍才升级 operator |
先对照operator experience判断偏差。实现遗漏与设计取舍分开处理,不把“愿景级”标签当成重复索要既有授权的理由。
当 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 聚合分析先核实反馈,再说明实际处置。正常礼貌不影响技术判断;赞同、反对或措辞本身都不能证明 review 有效。
当以下情况时必须 push back,用技术论证,不是防御性反应:
如果你 push back 了但你错了:陈述事实然后继续,不要长篇道歉。
Review 代码时,自动执行 node scripts/check-fallback-layers.mjs 检测 fallback 模式增长。
同一文件新增 ≥3 层 fallback → 触发坐标系自检(三问):
review 报告中必须包含 fallback 层数分析结果。
核验后没有分歧是合法结果。需要指出的是有依据的问题,不能为了表示独立制造争论。
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. CLOSE — 按 engagement mode 收口:iterative 回原 source;one-shot 用测试闭环,必要时转日常 reviewer核验应覆盖需求一致性、真实失败机制和用户路径。下面是一种组织方式,不要求逐项填表或采用固定顺序:
证据边界:实测可以反驳具体假设,但“没有复现”不能单独否定可证明的静态失败路径。按问题本身的证据裁决,不按 reviewer 的来源默认接受或驳回。
修复顺序:P1(blocking)→ P2(必须修)→ P3(讨论后当场修或放下,不记 BACKLOG)
澄清原则:不清楚的前提先查证;依赖它的修改暂停,相互独立且已核实的工作继续。
VERIFY 完所有 findings 之后、动手修之前,做一次 failure-mode 判别:
判别问:这些通过验证的 P1/P2 里,有没有 ≥2 个属于同一类 failure mode?(边界遗漏、null 不安全、错误处理不一致、状态转换缺路径、类型假设不安全……)
R2+ 额外检查:如果本轮的 finding 和上轮是同型——不管数量多少,强制 audit。同型第二次出现 = author 上轮没泛化,这次必须补上。
反复同型 finding(F229 PR-A1 教训):同一状态对象连续多轮出现问题时,停下重查共同机制、修复是否落地与状态契约。次数是调查信号,不是 plan 缺边的证明;确实发现生命周期或不变量缺失时,回 writing-plans 的 Stateful Object Gate 补清契约,以合适的图、表或精确描述表达,避免继续逐边打补丁。
为什么在 FIX 之前:先 audit 再修 = 一次修完所有同类;先修再 audit = 改了一个又发现三个,反复 rebase。
cat_cafe_create_task 新建任务,完成后更新为 done。P3 当场修或放下,不新增跟踪债务。修复完成 ≠ 自动可以合入;但闭环也不等于必须召回同一只猫。 先读取原 review packet 的
Engagement:普通 iterative review 回本轮可验证的 feedback source;稀缺判断席位的
one_shot_calibration / final_seal 按一次性契约退出,作者用 Red→Green + 风险匹配 gate 消费普通 finding,
仍需独立确认时转日常 reviewer。只有新的架构/决策判断、无法机械验收的原 finding,或 operator 明确要求,才复入原稀缺 reviewer。
对需要复入的本地 iterative review,权威来源是 direct review carrier(直接承载 review 请求的 thread),
不是任务祖先 thread,也不是第一次误投 verdict 的落点。若二者冲突,停止沿错路级联并回 direct review carrier。
只有 mode 判定确实需要复入时,P1/P2 修复产生的新 exact HEAD 才是一轮新的 review work。发送前重新加载 request-review,并严格消费其中唯一的 direct-carrier、ordinary durable A2A、accepted-source anchor 与 verdict-field 契约;本 skill 只保留守卫锚点:普通 durable A2A 必须携带 typed localReviewVerdict 与 reviewedHeadSha,其余字段和状态机不在这里复制。exact-HEAD 变化本身不能越过稀缺席位的 one-shot 退出条件。
| Feedback source | 修复后动作 |
|---|---|
本地 iterative reviewer | 在 direct review carrier 向 @reviewer 发送普通 durable 修复确认请求;等 reviewer 明确放行当前 SHA |
稀缺 one_shot_calibration / final_seal reviewer | 作者修复 + 测试/gate;仍需独立确认则转日常 reviewer,不因普通 finding 或 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 扩大时介入可选确认信格式(已有载体足够时直接更新,不另造文档):
## 修复确认请求
| # | 问题 | 状态 | 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 节时 -->
后续:按原 Engagement 决定回原 source 或转日常 reviewer。修复完成后(F160 Phase C):
cat_cafe_update_task 状态改为 doneiterative 本地 review 回 direct review carrier云端 finding 修复后的证据归 cloud 路径消费;若已命中 merge-gate 的封板条件,按既有封板出口处理。 不能自判通过直接合入,也不能把每次 cloud 修复投射成本地旧 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,再验证 GREEN |
| 修完自判"对了"直接合入 | 按 engagement 与 active source 满足审查覆盖,机械 continuity 可复用 |
| 未核实就全盘接受或为了争论而反对 | 以证据形成判断,核实后零分歧合法 |
| 用点 patch 掩盖设计/需求偏差 | 回读原意,明确遗漏直接修;新的价值取舍才升级 operator |
| cloud 修复不核对对应来源 | 沿 cloud 路径闭环;命中封板条件则走既有终局出口 |
| 前端改动只看代码不开浏览器 | 涉及 UX 必须打开浏览器实操验证 |
| 只修 reviewer 指的那一个点(补锅匠) | 先判 failure mode 是否同类,是则 audit 本 PR diff 全扫再修 |
| 同型 finding 多轮出现仍只做点修 | 查共同机制与修复是否落地;契约缺口回 plan 层补清 |
| 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(SOP stage merge)。
61389cc
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.