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