Diff Minimizer 用于处理已经存在的实现,把它变得更小、更局部、更安全,同时不削弱它必须完成的事情。
用途
该技能的核心目标是:在保留 PR 必需行为的前提下,实现最小的安全 diff 和语义影响范围。它明确反对盲目优化行数——共享基础设施中的三行改动,可能比叶子模块中三十行孤立改动更危险。
主要能力
优化按以下顺序进行:
- 保留必需行为、兼容性和正确性。
- 避免触碰共享系统、公共契约、schema、持久化数据、依赖和横切状态。
- 减少受影响的子系统、文件、调用点、概念和代码路径。
- 减少改动行数。
当共享抽象会让系统更多部分暴露于回归风险时,局部重复是可以接受的。
与其他技能的边界
- melech-8020 可能在实现前协商或收窄结果,寻找更便宜的有用路径。
- melech-prune 证明并移除死代码、僵尸路径和 YAGNI 残留。
- melech-diff-minimizer 保持结果固定,可能用一个更窄的实现替换可工作且必要的实现。
如果唯一有意义的缩减需要删除或改变行为,应停止,并将该产品权衡交给用户或 melech-8020。不要把更弱的结果称为等价。
使用方式
工作流分为六步:
- 建立契约和 diff:从用户命令、PR 元数据或仓库约定中确定比较目标;仅在目标确实模糊时询问。根据具体证据写出简短的必须保留契约,包括验收标准与缺陷复现、可观察行为与兼容性、测试与外部消费接口、明确的非目标。PR 描述和测试是证据,不是自动真理;冲突时应与用户声明的目标和当前代码进行调和。
- 测量当前改动面:检查整个 diff 及其集成点,记录基线,包括涉及的文件和子系统、新增或变更的公共 API、schema、依赖和状态、新增抽象和概念、受影响的调用点和共享路径、相关 diff 大小。标记大范围重构、泛化机制、并行实现、附带清理以及仅为适配所选设计而做的改动。
- 寻找最窄的安全切入点:寻找可承载必需行为的现有局部分支、适配器、钩子、辅助函数或边界。优先顺序为:修改现有叶子级决策、扩展现有邻近路径、添加小型局部实现、仅当多个真实消费者需要时才引入共享抽象。按语义暴露程度而非美观或 DRY 原则评判候选方案。当更小的文本补丁会把风险转移到更中心的路径时,应拒绝它。
- 重写实现:移除附带重构和更窄设计不再需要的机制。将编辑保持在所选契约内。保留承重注释,不添加推测性灵活性。当两个实现行为等价时,选择边界、假设和未来义务更少的那个。
- 证明等价性:先运行最窄的相关验证,然后按风险比例运行仓库要求的检查。确认两点:必须保留契约仍然成立;契约之外的行为没有扩大或回归。行为不等价的小 diff 是失败的缩减。
- 报告缩减结果:总结契约是否保留、原始与最终的文件、概念和 diff 大小、避免或移除的高风险边界、运行的检查及其结果、剩余不可避免的影响范围。不要仅凭行数声称风险更低。
适用场景
适用于已有 PR 或 diff 需要缩小、局部化、降低审查风险,同时必须保留原有行为的情况。典型场景包括:用现有格式化器中的一个分支替换新引入的共享格式化服务;在更短方案会修改全局中间件路径时,保留稍长的叶子局部改动。
限制
该技能不负责范围裁剪,那属于 melech-8020 和用户。它不会为了减少行数而牺牲行为等价性。如果不存在实质性的安全缩减,应如实报告。