Pre-Modification Check 是 Repowise 生态中的一项修改前风险评估技能,用于在改动代码之前评估潜在影响。它适用于已被 Repowise 索引的代码库,判断依据是项目根目录下存在 .repowise/ 目录。
用途 在修改、重构或删除文件之前,先了解该文件的风险状况,避免因盲目改动而破坏依赖它的其他代码。
主要能力 编辑单个文件前,调用 get_risk(targets=["path/to/file.py"])。该工具会针对每个文件返回以下信息:
- hotspot_score 与 trend:热点分数与变化趋势,用于判断是否为高变更、高复杂度区域。
- risk_type:风险类型,例如 bug-prone(易出缺陷)或 high-coupling(高耦合)。
- impact_surface:影响范围,返回前三个受影响对象。
- dependents_count:依赖者数量,反映改动的影响半径。
- co_change_partners:共同变更伙伴,即经常与该文件一起改动、但通常没有导入关系的文件,可能也需要同步更新。
- primary_owner:主要维护者,以及是否由单一作者维护(巴士因子)。
- test_gap:测试缺口,标记未测试的文件。
- security_signals:安全信号,标记安全敏感文件。
- defect_profile:缺陷画像,仅对存在修复记录的文件出现,包含过去 6 个月的修复次数 fix_count、最近一次修复距今天数 last_fix_days_ago、表示近期持续修复压力的 bug_magnet 标记,以及 top_symbols(按符号统计的近似计数,应理解为“问题主要集中在这里”)。反复被修复的文件是“下一次编辑可能破坏功能”的最强单一信号,应优先关注。
使用方式
- 修改单个文件前:调用 get_risk(targets=["path/to/file.py"])。
- 修改多个文件时:将所有目标合并为一次调用,例如 get_risk(targets=["file1.py", "file2.py", "module/"])。
- 重构或移动代码前:先调用 get_context(targets=["file.py"]),了解谁在使用该文件、有哪些架构决策约束它、以及它为何如此组织,从而避免无意中违反架构决策。
- 进行大规模重构时:额外调用 get_health(targets=["file.py"]),其标记发现(复杂度、深层嵌套、低内聚、重复)可指出可改进之处,并提供修改前后的分数对比。
何时提醒用户 如果 get_risk 显示以下情况,应明确告知用户:
- defect_profile 中 bug_magnet 被设置:直接说明该文件近期被反复修复。
- 热点分数超过 90 百分位:说明这是频繁变更的高风险文件。
- 依赖者超过 10 个:列出主要依赖者,说明此处的 API 变更会破坏调用方。
- 巴士因子为 1:说明该代码仅由一人维护。
- 风险类型为 bug-prone 或 high-coupling:在改动前明确标记。
错误处理 如果 get_risk 返回工具错误,可能表示 MCP 服务器未运行。此时可以继续修改,但需注明风险评估不可用。
适用场景与限制 适用于已建立 Repowise 索引、且通过 MCP 服务器提供上述工具的代码库。若代码库未索引或 MCP 服务器不可用,则无法获得风险评估结果。该技能本身不执行修改,只提供决策参考信息。