SuperAPI AI 工具集

dry-consolidation

通用与其它

查看项目

更新于 10-15 23:49

技能介绍

用途:在多个文件中出现相同或近似代码块时,将其抽取为共享且经过测试的抽象,减少复制粘贴。适用于重复的工具函数、UI 片段(分页、确认弹窗、错误状态)、重复 Hook 或状态管理样板、臃肿的导入块等。若只是清理单个文件、只做反模式检测、仅做结构化搜索或 Lint 格式问题,应改用其他技能(如 /code:refactor、/code:antipatterns、ast-grep-search、/lint:check)。

主要能力:按七步流程工作。一,用基于 token 的 jscpd 检测克隆:npx jscpd --reporters json --min-tokens 50 --output /tmp/jscpd-dry --silent <path>,解析报告中 duplicates 数组的精确文件与行范围,只读取相关区间;再用 ast-grep 元变量确认结构形状,例如 ast-grep -p 'const $VAR = useState($INIT)' --lang tsx <path>;无 npx 时退化为 Grep/Glob/Read 文本搜索,但对重命名变量的近重复召回较低。二,将重复分类为工具、组件、Hook、类型,并遵循项目既有共享代码目录约定。三,制定抽取计划,命名抽象、定义接口、确定位置、列出消费者、评估差异与风险。四,执行抽取,参数化差异而非创建多个抽象,按工具→组件→Hook 顺序进行。五,为每个抽象编写测试(单元、渲染/属性/可访问性、Hook 状态转换、类型级测试)。六,清理未用导入与死代码。七,验证:JS/TS 运行 npx tsc --noEmit、npm run lint、npm run test;Python 运行 ty check .、ruff check .、pytest;Rust 运行 cargo check、cargo clippy、cargo test。

使用方式:默认扫描 src/,支持 --scope(utilities、components、hooks 或 all)与 --dry-run(仅报告不改动)。参数 $1 为扫描路径。

限制:jscpd 依赖 npx 环境,缺失时改用 Grep 回退且召回率下降;抽取前需用户确认计划;资料未提供具体价格、平台支持范围或性能数据。