AI Code Diff Preview

类 Cursor 的 AI 代码差异预览 VSCode 插件,支持 Accept/Reject 操作。

功能特性

  • ✅ 临时变更隔离 - AI 生成的代码不直接覆盖文件
  • ✅ 实时 Diff 预览 - 红绿高亮显示删除/新增内容
  • ✅ 逐行 Accept/Reject - 支持单块、整块操作
  • ✅ 冲突检测 - 自动检测用户手动修改导致的冲突
  • ✅ Claude Hooks 集成 - 自动触发 Diff 预览
  • ✅ 状态栏显示 - 实时显示变更状态

安装

# 克隆项目
git clone https://github.com/your-username/ai-diff-preview.git

# 安装依赖
cd ai-diff-preview
npm install

# 编译
npm run build

# 打包
npm run package

使用方法

1. 配置 Claude Hooks

在 Claude 配置文件中添加 Hook:

{
  "hooks": {
    "after_code_edit": {
      "command": "code",
      "args": ["--command", "aiDiffPreview.handleHook"]
    }
  }
}

2. 快捷键

快捷键 功能
Tab / Enter 接受当前块
Esc 拒绝所有变更
Ctrl+Shift+A Accept All
Ctrl+Shift+R Reject All

3. CodeLens 按钮

在代码上方会出现 Accept/Reject 按钮,点击即可操作。

开发

# 监听模式
npm run watch

# 运行测试
npm run test

# 代码检查
npm run lint

项目结构

src/
├── extension.ts              # 插件入口
├── trigger/
│   └── hookHandler.ts        # Claude Hook 处理器
├── snapshot/
│   └── snapshotManager.ts    # 快照管理器
├── diff/
│   └── diffEngine.ts         # Diff 计算引擎
├── render/
│   ├── inlineDecorator.ts    # 内联装饰器
│   ├── codeLensProvider.ts   # CodeLens 提供器
│   └── statusBar.ts          # 状态栏
├── transaction/
│   ├── acceptHandler.ts      # Accept 处理器
│   └── rejectHandler.ts      # Reject 处理器
└── models/
    ├── types.ts              # 类型定义
    └── constants.ts          # 常量定义

配置项

配置项 类型 默认值 说明
aiDiffPreview.enableAutoTrigger boolean true 启用自动触发
aiDiffPreview.showInlineButtons boolean true 显示内联按钮
aiDiffPreview.autoLint boolean true 自动运行 Lint
aiDiffPreview.maxFileSize number 100000 最大文件大小

License

MIT

S
Description
No description provided
Readme MIT 295 KiB
Languages
TypeScript 96.8%
JavaScript 2.1%
Batchfile 1.1%