AI 改代码总翻车?我直接给AI写了个“高德”地图,百万行项目一秒扫描完成!

3 阅读3分钟

10 万行以上的代码仓里,无论是人还是 AI,都会遇到同一个问题:
不知道从哪里开始看代码,更不知道该改哪里。

针对这个现象我写了 RepoMap

它是一个 CLI 工具,用于为大型代码仓生成一份稳定、可复现的仓库结构地图,主要解决下面这些真实工程痛点:

一、为什么需要 RepoMap?

在实际使用 Codex / Claude / 各类 Agent 改代码时,我反复遇到这些问题:

  • AI 很难快速理解整个仓库的结构
  • 修改点高度依赖“猜关键词”,命中率低
  • 纯向量 RAG 在大仓库中容易召回泛化、入口定位不准
  • 每次任务都要重新扫仓库,成本高、不可复现

二、RepoMap 会做什么

RepoMap 会扫描仓库,生成一份结构化产物:

  • 模块级索引(module_index.json)
  • 入口文件识别(路由 / controller / CLI / job 等)
  • AI 友好的 summary.md(适合作为 AI 的第一输入)
  • 支持 增量更新,避免全量重跑
  • 输出顺序稳定,避免 diff 噪音

三、快速上手

npm i -g @repo-map/repomap
repomap build --out .repomap
repomap query "refresh token" --out .repomap

生成的 .repomap/summary.md,可以直接作为 AI 的第一阅读文件。


四、适合谁用?

  • 使用 Codex / Claude Code / AI Agent 的工程师
  • 维护中大型 monorepo 的团队
  • 在做 prd2code / agent workflow 的平台开发者

五、测试:在 VS Code 仓库上跑 RepoMap

为了验证 RepoMap 在真实大型仓库中的可用性,我选了一个大家都很熟悉的项目:

microsoft/vscode
一个典型的 超大型 monorepo,结构复杂、入口众多、语言混合。


1️⃣ 测试环境

  • Repo:microsoft/vscode
  • Commit:e08522417da0fb5500b053f45a67ee4825f63de4
  • 文件数:约 8,700+
  • 机器:macOS 14.3(arm64)
  • Node:v22.17.1
  • RepoMap:v0.1.0

2️⃣ 运行命令

在 VS Code 仓库根目录执行:

repomap build --out .repomap

3️⃣ 生成的核心产物

RepoMap 会生成一个 .repomap/ 目录,核心文件包括:

.repomap/
├── module_index.json   # 模块级结构索引
├── entry_map.json      # 各模块入口文件(CLI / services / workers 等)
├── summary.md          # AI / 人类友好的仓库摘要
├── file_index.json     # 稳定文件索引 + hash
└── meta.json           # 版本、commit、生成信息

其中 summary.md 是我给 AI / Agent 先读的文件。


4️⃣ 性能表现(首次全量扫描)

使用 /usr/bin/time 测试:

/usr/bin/time -p repomap build --out .repomap

结果:

real 1.16
user 0.92
sys  0.62

👉 对一个 接近 9k+ 文件,代码百万行的仓库来说,速度可以说非常的fast!!!


5️⃣ 稳定性验证(非常关键)

RepoMap 的一个核心目标是:

同一份代码,在同一 commit 下,必须产出完全一致的结构结果。

我在相同仓库下,进行了两次构建,并对关键文件做 diff:

diff -u output/module_index.json output-tmp/module_index.json
diff -u output/entry_map.json output-tmp/entry_map.json
diff -u output/summary.md output-tmp/summary.md

结果:
👉 diff 无任何输出

这意味着:

  • 输出顺序稳定
  • 结构信息可复现
  • 非常适合缓存、CI、Agent 多轮决策

6️⃣ 在真实 AI 场景里的用法

在 VS Code 这样的大仓库里,如果直接对 AI 说:

“帮我看看 VS Code 的 extension 激活流程”

AI 往往会:

  • 猜关键词
  • 误入非核心模块
  • 漏掉真正入口

而我实际的做法是:

  1. 先让 AI 阅读 .repomap/summary.md
  2. repomap query "extension activation"
  3. 结合 rg 或 RAG 进行后续迭代开发。

👉 AI 的首次定位命中率明显更高

六、项目地址

GitHub:
👉 github.com/Nicenonecb/…

欢迎提 issue / PR,也欢迎在评论区交流使用AI遇到的各种奇葩问题!