Vestige:把 AI 生成的大段代码 diff 拆成可逐块审查
Vestige 是一款 VS Code 扩展,基于本地调用图分析 AI 改动的影响范围,并把大 diff 拆成有序审查卡…
Vestige 是一款刚发布 v0.1.0 的 VS Code 扩展,目标是让 AI 生成的大段代码 diff 在 push 之前变得「可被逐块审查」。它不替代 Git diff,而是在 AI agent 或自动重构一次性改动大量代码时,帮开发者回答三个问题:从哪里开始读、这次改动会影响什么、改之前这段代码原本在做什么。
核心思路:先画图,再拆卡片
Vestige 的关键设计是把「影响分析」和「文字总结」分开处理。打开一个本地文件夹后,扩展会用 tree-sitter(WASM)解析代码,构建函数调用图和文件依赖图,这一步完全在本地完成,不会调用任何 LLM。
在此基础上,它提供两个可视化面板:
- Repo Graph:函数调用关系图,点击节点可直接跳转到对应代码。
- Feature:基于依赖关系聚类出的「功能簇」视图。
当代码发生变化——无论是 AI agent 改动、git pull 还是批量编辑——Vestige 会检测到「非本人输入」的变更,并打开「Splash Zone」面板,把这次改动拆成一组有序的审查卡片,每张卡片包含:
- 该块的 blast radius(受影响范围)
- 行内或分屏 diff
- LLM 生成的一句话摘要
- 可点开的「Explain」按钮获取更深入解释
- accept / revert 按钮
设计原则:分析靠计算,不靠 LLM 猜
作者在文档中明确强调三点原则:
- 影响范围由静态图分析得出,是确定性的、可复现的,不依赖模型「猜」这次改动会碰到什么。
- LLM 只负责「贴标签」:解释代码片段、生成变更摘要、命名功能簇——不参与影响判定。
- 分析结果会被缓存,重新打开图或卡片不会重复执行或重复计费。
隐私与数据流
Vestige 的默认行为非常保守:调用图、依赖图、blast radius 分析全部在本地运行,代码结构不会上传。
只有以下两类功能会向其 AWS 后端(后端再调用 OpenAI 生成文本)发送代码:
- Explain Selection:发送选中的代码片段。
- 变更摘要:发送某块变更涉及的代码片段,用于生成一句话总结。
功能簇分析只发送预先生成的代码摘要,不发送原始源码。此外,作者承诺没有埋点和分析上报——除非用户主动触发上述功能,否则不会有任何外发请求。
当前已知局限
作为首发版本,Vestige 明确列出了几项限制:
- 语言支持:首发覆盖 TypeScript / JavaScript、Python、Go、Java,其他文件类型仅作为依赖图普通节点。
- 工作区:仅扫描首个根目录(单根工作区)。
- 解析:文件变更时的重解析尚未做到 AST 级增量,大型 monorepo 会感觉卡顿。
- Feature View:是全仓按需分析并缓存的结果,不实时更新。
- 整体提醒:blast radius 的准确性受限于静态调用图,无法覆盖动态分派和反射等场景。
可用命令一览
Vestige 提供了一组 VS Code 命令,包括 Open Graph、New Graph Tab、Show Repo Graph、Show Feature View、Explain Selection、Open Splash Zone、Rescan Workspace、Clear Cache 和 Getting Started 引导。其中 Getting Started 是一个五步走流程:映射项目、读图、审查变更、评估影响范围、解释并决定。
v0.1.0 是其首个公开版本,对于经常需要审阅 AI agent 或 Cursor / Copilot 类工具产出的开发者来说,提供了一种把「大黑盒 diff」拆成可消化步骤的思路;但也仍是一款早期工具,建议在小到中型仓库先试用。
