AI Diff Review对 AI 编码智能体(opencode、Cursor、Claude Code、Trae、Aider 等)产生的文件改动进行 逐块人工审查:可以逐条接受、逐条拒绝,也可以按文件或一键全部接受 / 拒绝。 原理扩展在文件系统层面记录一份 基线(baseline),即改动之前的文件内容。之后外部程序对工作区文件的改动会被文件监听器捕获,并与基线对比生成 diff:
因为接受 / 拒绝只影响被选中的 diff 块,所以可以做到“改 10 处,接受 7 处、拒绝 3 处”。 每个操作执行前都会重新读取磁盘。因此“文件先被修改、随后又被删除(或再次修改、或整个目录被删掉)”时,接受 / 拒绝不会报“找不到文件”:
快速开始
审查入口侧边栏(AI 审查 活动栏)
审查面板(Webview,推荐)
原生 diff 编辑器
侧边栏「设置」页
编码与换行
重命名 / 移动改动文件被重命名或移动时,会尽量搬迁基线(而不是删除再重建):
基线按工作区根目录的哈希分别存放,因此多根工作区中增删一个根目录不会让其他根目录的基线错位。 缓存管理基线默认保存在扩展的 workspace storage 中;也可以为每个工作区单独指定缓存目录。设置页的「缓存」区域和独立的全宽面板可以集中查看:
自定义缓存目录如果位于某个工作区内,会被自动忽略,不会被当作待审查文件。旧版本(0.1.x)的基线布局也会显示为「旧版本」,可直接清理。
命令(命令面板
|
| 命令 | 说明 |
|---|---|
AI 审查: 启动监听 |
记录基线并开始监听当前工作区(默认未启动) |
AI 审查: 停止监听 |
停止监听并清空待审查列表 |
AI 审查: 打开审查面板 |
打开完整审查面板 |
AI 审查: 记录基线 |
为还没有基线的文件补记基线(幂等,不破坏已有待审查项) |
AI 审查: 设置 |
进入侧边栏整页设置 |
AI 审查: 管理基线缓存 |
打开全宽缓存面板,查看 / 删除所有工作区的基线缓存 |
AI 审查: 刷新 |
重新扫描工作区 |
AI 审查: 全部接受 |
接受全部改动 |
AI 审查: 全部拒绝 |
拒绝全部改动(有确认弹窗) |
AI 审查: 打开原生对比 |
打开 VS Code 内置 diff |
AI 审查: 打开文件 |
打开工作区真实文件(右键菜单) |
AI 审查: 在资源管理器中显示 |
在资源管理器中定位文件 |
AI 审查: 清理当前工作区缓存 |
删除当前工作区全部基线 |
AI 审查: 重置基线 |
清空基线并以当前内容重新开始 |
接受/拒绝当前文件、接受/拒绝此改动、打开文件等为树视图 / 面板 / 右键菜单的内联操作,不在命令面板中显示。
设置项
| 设置 | 默认值 | 说明 |
|---|---|---|
aiReview.watch.enabled |
false |
是否自动监听(工作区级,默认关闭) |
aiReview.autoCheckpoint |
true |
监听启动 / 范围变化时自动补记缺失的基线 |
aiReview.baselineFromGit |
false |
以 git HEAD 作为基线,让已有的未提交改动也进入审查 |
aiReview.ignore |
见下 | 不纳入审查的 glob(全局) |
aiReview.watch.paths |
[] |
仅监听的文件 / 文件夹(工作区级,留空=整个工作区) |
aiReview.watch.exclude |
[] |
本工作区额外排除的路径 / glob(工作区级) |
aiReview.cacheDir |
"" |
基线缓存目录(工作区级,留空=扩展默认存储) |
aiReview.maxTextFileKB |
1024 |
超过此大小的文本文件只支持文件级接受 / 拒绝 |
aiReview.maxBaselineMB |
20 |
超过此大小的文件不记录基线 |
aiReview.trackBinaryFiles |
false |
是否追踪二进制文件 |
aiReview.diffDisplay |
"full" |
diff 显示范围:full 整份 / hunks 仅变更片段 |
aiReview.reuseVSCodeEncoding |
false |
对已打开的文件复用 VS Code 编码识别 |
aiReview.showStatusBar |
true |
显示状态栏计数 |
aiReview.debounceMs |
150 |
文件变更防抖时间(毫秒) |
默认忽略:.git、node_modules、.vscode、.vscode-test、out、dist、build、.ai-review、各类 lock 文件、*.vsix 等,同时尊重 VS Code 的 files.exclude / search.exclude。自定义缓存目录如果落在工作区内,也会被自动忽略,不会自我追踪。
与 opencode 配合
opencode 直接写入磁盘文件,扩展监听器会自动捕获,无需额外集成。推荐:
- 在目标工作区执行一次
AI 审查: 启动监听(之后会记住该工作区的选择)。 - AI 改完文件后在「AI 审查」里审查。
- 逐块接受 / 拒绝,或一键处理。
若希望审查范围是相对 HEAD 的所有改动,可设 aiReview.baselineFromGit: true。
开发与调试
npm install
npm run compile # 或 npm run watch
npm run test:unit # 纯 Node 单元测试(glob / diff / 编码)
npm test # 运行 VS Code 集成测试(会下载测试用 VS Code)
在 VS Code 中按 F5 启动 Extension Development Host 测试;Ctrl+Shift+P → Developer: Show Running Extensions 可确认已加载。
打包安装:
npm run package # 生成 ai-diff-review-0.3.1.vsix
code --install-extension ai-diff-review-0.3.1.vsix
已知限制
- 只追踪工作区内的文件(
filescheme)。 - 二进制文件默认不追踪(可在设置开启);超大文件仅支持文件级接受 / 拒绝。
- 编码识别为启发式;极短或歧义的文本可能识别不准(会回退 UTF-8)。「复用 VS Code 编码识别」只对已打开的文件生效,避免为每个文件创建文本模型。
- 基线默认存在扩展的 workspace storage,可在设置里改到自定义目录;不污染工程目录,但不同机器 / 工作区之间不共享。
- 未保存的编辑器缓冲不参与比较,比较和回写对象是磁盘内容。
- 无 git 且“改名同时改内容”时,重命名可能退化为删除 + 新增。
- 监听关闭时不会捕获改动;需要先启动监听或手动记录基线。