SuperAPI AI 工具集

repo-scan

编程与开发

查看项目

更新于 10-15 11:23

技能介绍

用途

repo-scan 用于解决大型遗留代码库的审计难题。正如其介绍所指出的:每种生态都有自己的依赖管理器,但没有工具能横跨 C++、Android、iOS 和 Web 告诉你——哪些代码真正属于你、哪些是第三方、哪些是死重(dead weight)。repo-scan 正是为此设计的扫描技能,适合在接管大型遗留代码库、进行大规模重构之前、审计直接嵌入源码(而非在包管理器中声明)的第三方依赖、或为 monorepo 重组准备架构决策记录时使用。

主要能力

  • 跨技术栈扫描:一次性处理 C/C++、Java/Android、iOS(OC/Swift)、Web(TS/JS/Vue)。
  • 文件分类:每个文件被标记为项目代码、第三方代码或构建产物。
  • 库检测:识别 50 多个已知库(FFmpeg、Boost、OpenSSL 等),并提取版本信息。
  • 四级结论:核心资产(Core Asset)/ 抽取合并(Extract & Merge)/ 重建(Rebuild)/ 废弃(Deprecate)。
  • HTML 报告:交互式暗色主题页面,支持逐层下钻导航。
  • Monorepo 支持:层级化扫描,输出汇总报告与子项目报告。

工作流程

  1. 分类仓库表面:枚举文件,将每个文件标记为项目代码、嵌入式第三方代码或构建产物。
  2. 检测内嵌库:检查目录名、头文件、许可证文件和版本标记,识别打包依赖及其可能版本。
  3. 为每个模块打分:按模块或子系统分组,根据归属、重复度和维护成本给出四级结论之一。
  4. 突出结构性风险:指出死重产物、重复封装、过时的内嵌代码,以及应被抽取、重建或废弃的模块。
  5. 生成报告:返回简要摘要与可交互的 HTML 输出,支持按模块下钻,便于异步审查审计结果。

分析深度级别

级别 每模块读取文件数 使用场景
fast 1-2 个 对超大目录做快速盘点
standard 2-5 个 默认审计,含完整依赖与架构检查
deep 5-10 个 增加线程安全、内存管理、API 一致性检查
full 全部文件 合并前的全面审查

使用方式与安装

repo-scan 通过一个引导指针(bootstrap pointer)安装,安装来源为固定在特定 commit 上的外部技能仓库。安装脚本的说明明确要求先克隆,以便在安装前审查被固定的提交。脚本文本包含:设定 REPO_SCAN_COMMIT 为 2742664ebcad1450c208eda0ae45d3c17fad5dd8,安装目录默认为 ${CLAUDE_CONFIG_DIR:-$HOME/.claude}/skills/repo-scan,通过 git clone --filter=blob:none --no-checkout https://github.com/haibindev/repo-scan.git 后检出该 commit,并在提示输入 install 确认后才替换目标目录;脚本还包含临时目录、锁文件、备份与失败回滚等处理。

其资料提示:安装前请审查源码。安装完成后仅完成引导步骤,需要重载 agent harness,然后再次调用 repo-scan。该 ECC 指针负责安装外部技能,但本身不执行扫描。

资料中还包含一条通用提醒:在安装任何 agent skill 之前,请审查其源码。

使用建议

资料给出的最佳实践包括:

  • 首次审计从 standard 深度开始。
  • 对于拥有 100 以上模块的 monorepo,使用 fast 获取快速盘点。
  • 对被标记为需重构的模块,增量运行 deep。
  • 查看跨模块分析,以检测子项目之间的重复。

示例

资料中给出的一个示例:在一个 50,000 文件的 C++ monorepo 上,repo-scan 发现 FFmpeg 2.x(2015 年版本)仍在生产中使用;发现同一个 SDK 封装被重复了 3 次;识别出 636 MB 已提交的 Debug/ipch/obj 构建产物;分类结果为 3 MB 项目代码对 596 MB 第三方代码。

限制

  • 具体收费、价格、平台兼容范围、性能上限、支持的模型等信息,资料中暂未提供。
  • 安装脚本依赖 git 与 tar 等环境,并在交互式终端中要求输入 install 确认。
  • 本技能为外部技能的安装指针,安装后需重载并再次调用才会实际执行扫描。

链接