---
name: mc-review
description: 双轴代码评审。当用户写完一段模组代码要求「review / 检查这段改动 / 合并前把关 / 这写得对不对」，或 mc-spec / 开发流程结束要验收时激活：对固定点以来的 diff 独立跑两轴——标准轴（该平台该版本的规则与反模式）与规格轴（对照 spec 或共识清单逐条核对），输出问题与「核不到」清单。用户点名「全项目体检 / 不看这次改动看整体」时切全仓模式（改进点清单）。只出报告，不自动改代码。报错跑不起来属崩溃分诊，不用本技能。
---

# mc-review — 双轴评审

一句话目标：把「这段改动行不行」变成两份互相独立的证据：**符不符合这个平台这个版本的规矩**；**实没实现你要的东西**。

## 第 0 步 · 定评审对象

- diff 起点：用户指定（「相对 HEAD」「就这几个文件」）；默认 = 工作区相对最近提交。非 git 工程 → 让用户点名文件。
- 平台 + 精确版本 + mappings 口径：从工程实况取（MCP 在则 `detect_mod_project`），取不到先问。**坐标未定的评审不作数**——标准轴的证据全是按档的。

## 第 1 步 · 标准轴（平台规矩）

依据只取该档材料，禁止跨档互抄：该档 00–10 规则、09-anti-patterns、该档 `knowledge/` 下的 antipatterns、verified-api 核实表、本档 mappings 面。逐项核对 diff：

- 注册方式：禁止 `new` 直注；DeferredRegister / Registry.register 按平台与该档形态
- modid 合法性与元数据一致（mods.toml / fabric.mod.json / quilt.mod.json / …）
- 物理端与线程：客户端类进服务端路径、服务端数据被客户端直改
- mappings 口径：Yarn 工程混 mojmap 名、Neo 档抄 Forge 名、邻版类名顶替
- 数据与资源完整性：引用不存在的纹理 / 模型 / lang 键（MCP 在则 `audit_resources` / `validate_datapack_json`）
- **每个 API 名要么核到、要么标「存疑」**——核不到 ≠ 有罪，但**不得写成通过**

## 第 2 步 · 规格轴（做没做到）

- 有 spec 文档（mc-spec 产物）或共识清单（mc-grill 产物）→ 逐条核对：漏实现 / 擅自加戏 / 语义偷换，每条发现给 file:line 证据。
- 没有规格物 → 明说「规格轴无依据，本轮只跑标准轴」，禁止拿对话碎片冒充验收标准。

## 第 3 步 · 出报告

- 每条发现 = 位置（file:line）+ 轴 + 证据（该档出处或 diff 内容）+ 一句建议修法。
- 排序：会真崩 / 会丢数据的在前，纯风格在后；结尾列「未核到」清单。
- **行级落点闸**：每条行级发现的 file:line 锚点必须能在本轮 diff 的 hunk 行集里找到（全仓模式 = 该文件真实存在的行号）；对不上一律降级进「无法证实」单独清单，不进发现正文——位置本身就是证据，位置对不上内容的条目整条作废。
- **评审是报告不是改写**：改哪几条由用户拍板后才动手。

## 全仓模式（用户点名时替代 diff 范围）

- 触发：「全项目体检」「不看这次改动，看整体」。仍走第 0 步定坐标；没有 diff 起点这回事。
- 扫描维度（每条发现落 file:line）：注册与生命周期形态是否按档；资源完整性（模型 / 纹理 / lang 引用缺件，MCP 在则 `audit_resources`）；客户端 / 服务端分离；数据 JSON（配方 / 战利品 / 标签，`validate_datapack_json`）；gradle 与依赖（`diagnose_gradle` / `check_dependencies`）；废弃 API 与同构重复代码。
- 输出 = 改进点清单，按**严重度 × 爆炸半径**排序，每条一句最小改法；**只出清单不改码**，选哪几条交 mc-breakdown 排进切片再实施。
- 全仓模式下规格轴缺依据是常态（没有单一 diff 对应单一 spec）：如实写「本轮只跑标准轴的全仓扩展」，禁止拿聊天碎片当全工程验收标准。

## 边界

- 两轴独立：一条轴的结论不喂另一条。有子代理面时并行派两个各读各的；没有就分两遍跑，标准轴定稿后再开规格轴。
- 评审第三方 jar 的码 → 先走反编译工作流取码，再回来评审。
- **复审短路**：自上次评审报告以来没有新提交 → 不重跑两轴，直接引用上份报告并附其路径与时间锚；引不到锚点时按没评审过处理，重跑。
