SuperAPI AI 工具集

pre-modification-check

编程与开发

查看项目

更新于 10-16 02:14

技能介绍

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 服务器不可用,则无法获得风险评估结果。该技能本身不执行修改,只提供决策参考信息。