mc-review · git:20261010.79a4f96 · 2026-10-10 · sha256 0ab289ea8964cf1f

mc-review git:20261010.79a4f96A

Immutable. This exact content never changes and is served at /api/v1/blob/0ab289ea8964cf1f.

---
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 的码 → 先走反编译工作流取码,再回来评审。
- **复审短路**:自上次评审报告以来没有新提交 → 不重跑两轴,直接引用上份报告并附其路径与时间锚;引不到锚点时按没评审过处理,重跑。