SuperAPI AI 工具集

find-similar-functions

编程与开发

查看项目

更新于 10-16 01:16

技能介绍

用途:在编写可能与现有辅助函数重叠的 JavaScript 或 TypeScript 代码前,先发现附近的函数、方法、常量、类型和接口,以便复用或扩展,而不是制造重复行为。truffler 是模糊符号搜索工具,只作为发现层,匹配结果仍需人工阅读代码确认是否可复用。

工作流:先用几个词描述即将实现的行为;据此推导 3-6 个查询词,包括拟用的函数或类名、领域名词(如 symbol、path、file、route、token、config)、动词(如 parse、normalize、discover、scan、format、rank、score、resolve、validate)以及常见缩写与同义词(如 btn、cfg);先在最窄的有用根目录运行 truffler,必要时再扩大范围;用常规代码阅读工具检查靠前的匹配项后再编辑;行为基本吻合时优先复用、扩展或移动现有代码,只有搜索表明没有合适符号时才新建。最终回复中简要说明发现了什么、是复用还是有意新增。

命令示例:项目内已安装时可用 truffler "normalize path" src --kind function,method,constant,type --limit 20,或 truffler "score" src --kind function,method --format json --limit 15;在 truffler 仓库内用 bun src/cli.ts "discover file" src --kind function,method,constant,type --limit 20;无已安装二进制且不应添加依赖时,若环境允许联网执行包,可用 bunx @rayhanadev/truffler "parse config" src --kind function,method,type --limit 20。若无法运行 truffler,应说明并回退到仓库现有搜索工具,仍遵循先搜索再实现的去重意图。

搜索策略:从最可能代表可复用行为的符号开始;需要结构化字段(排序、位置、签名、自动化)时用 --format json;精确函数名无匹配时,把领域名词和动词分开搜索;工具可能位于 src/ 之外时,尝试已知的 library、package、app 或 test 根目录;匹配过多时限制 --kind 并缩小根目录,而不是浏览无关输出;靠前匹配接近时,先读实现及附近测试或调用点再决定。

复用判断:当现有符号已处理相同输入形态、副作用、错误行为和返回形态,或小幅扩展能保持其现有契约时,可考虑复用;不要仅因名称接近就复用,模糊匹配可能命中无关代码,改动前应检查签名、实现、调用方和测试。没有合适符号时,把新实现放在最相关模块附近,并遵循该模块的命名、错误处理和测试风格。

报告模板:可写“我用 truffler 以 normalize、path、resolve 等查询检查了现有符号,最接近的是 src/files.ts 中的 normalizePath,因此复用了该行为而非新增辅助函数”;若无相关结果,可写“我在 src/ 下用 truffler 搜索 parse、config、loadConfig,匹配项无关,因此在最近模块新增了辅助函数”。

限制:资料未提供 truffler 的安装方式、版本、平台支持、性能或收费信息;其结果为模糊匹配,需人工核实,不能替代代码审查。