CodeReviewAI
基于 AI 大模型的 C# 代码审查工具,支持多种国产及国际 AI 模型,提供命令行和 Visual Studio 扩展两种使用方式。在代码提交前自动进行智能审查,协助开发者发现潜在的代码缺陷、性能瓶颈和安全漏洞。

功能特性
多模型支持
支持 4 种 AI 大模型,可自由切换:
|
模型 |
适配器 |
默认模型 ID |
特点 |
|---|---|---|---|
|
豆包 (Doubao) |
DoubaoAdapter |
doubao-seed-2-0-code-preview-260215 |
专注中文技术栈,代码质量与性能优化 |
|
千问 (Qianwen) |
QianwenAdapter |
qwen-plus |
强调安全漏洞检测(SQL注入、XSS、空引用) |
|
OpenAI |
OpenAIAdapter |
gpt-4-turbo |
英文审查,.NET/ASP.NET Core 最佳实践 |
|
智谱 (Zhipu) |
ZhipuAdapter |
glm-4 |
中文技术术语,本地化文档引用 |
智能代码审查
- Git Diff 分析
:自动获取 Git 仓库中的代码变更,仅审查修改的代码行及其上下文
- C# 专项审查:仅对
.cs文件进行审查,针对 .NET 6/8、C# 10/11、ASP.NET Core 技术栈 - RCIF 提示词框架
:使用
Role-Context-Instruction-Format 结构化提示词,确保审查结果规范 - 优先级标注:自动识别高优先级问题
[高优先级]和一般提议[提议] - 结构化输出
:每个问题包含位置、原始代码、改善提议、解释和参考文献
审查结果缓存
-
基于 SHA256 哈希的审查结果缓存,避免重复调用 API
-
可配置缓存过期时间(默认 30 分钟)
Git 集成
- Pre-commit Hook:安装 Git 钩子,在
git commit时自动触发 AI 审查 - 信号文件机制
:通过文件信号与 Visual Studio 扩展通信,实现跨进程审查
- 自动提交
:审查通过后可自动执行 git commit/push 操作
Visual Studio 扩展
- 审查窗口
:左右分栏展示修改代码与 AI 改善提议
- 模型选择
:在审查窗口中实时切换 AI 模型
- 一键操作
:审查完成后可直接提交本地暂存、推送、或拉取后推送
- 设置窗口
:图形化配置默认模型、API 密钥和缓存时间
- 暗色主题
:与 Visual Studio 暗色主题一致的 UI 风格
项目结构
CodeReviewAI/
├── config/
│ └── config.json # 模型配置文件
├── src/
│ ├── CodeReviewAI.Core/ # 核心库
│ │ ├── Adapters/ # AI 模型适配器
│ │ │ ├── IModelAdapter.cs # 适配器接口
│ │ │ ├── ModelAdapterFactory.cs # 适配器工厂
│ │ │ ├── OpenAIAdapter.cs # OpenAI 适配器
│ │ │ ├── DoubaoAdapter.cs # 豆包适配器
│ │ │ ├── QianwenAdapter.cs # 千问适配器
│ │ │ └── ZhipuAdapter.cs # 智谱适配器
│ │ ├── Git/
│ │ │ └── GitService.cs # Git 操作服务
│ │ ├── Models/
│ │ │ ├── GitDiffEntry.cs # Git Diff 数据模型
│ │ │ ├── ModelConfig.cs # 模型配置模型
│ │ │ ├── ReviewIssue.cs # 审查问题模型
│ │ │ └── ReviewResult.cs # 审查结果模型
│ │ ├── Prompts/
│ │ │ ├── PromptTemplates.cs # 提示词模板
│ │ │ └── RcifPromptBuilder.cs # RCIF 提示词构建器
│ │ └── Services/
│ │ ├── CodeReviewService.cs # 代码审查服务
│ │ ├── ICodeReviewService.cs # 审查服务接口
│ │ └── ReviewCacheService.cs # 审查缓存服务
│ ├── CodeReviewAI.Console/ # 命令行工具
│ │ └── Program.cs # CLI 入口
│ └── CodeReviewAI.VSExtension/ # Visual Studio 扩展
│ ├── CodeReviewAIPackage.cs # VS 扩展主包
│ ├── Commands/
│ │ ├── ReviewBeforeCommitCommand.cs # 审查命令
│ │ └── ReviewSettingsCommand.cs # 设置命令
│ └── UI/
│ ├── ReviewResultWindow.xaml(.cs) # 审查结果窗口
│ └── SettingsWindow.xaml(.cs) # 设置窗口
└── CodeReviewAI.slnx # 解决方案文件
配置说明
配置文件位于 config/config.json,格式如下:
{
"DefaultModel": "doubao",
"CacheExpirationMinutes": 30,
"Models": {
"doubao": {
"PromptPrefix": "你是一名资深C...",
"ApiUrl": "https://ark.cn-beijing.volces.com/api/v3",
"ApiKey": "your-doubao-api-key",
"ModelId": "doubao-seed-2-0-code-preview-260215",
"Temperature": 0.7,
"TopP": 0.9,
"MaxTokens": 2000
},
"qianwen": {
"PromptPrefix": "你是一名资深C...",
"ApiUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
"ApiKey": "your-qianwen-api-key",
"ModelId": "qwen-plus",
"Temperature": 0.7,
"TopP": 0.9,
"MaxTokens": 1000,
"StopSequences": [ "
#" ]
},
"openai": {
"PromptPrefix": "You are a senior C# code reviewer...",
"ApiUrl": "https://api.openai.com/v1",
"ApiKey": "your-openai-api-key",
"ModelId": "gpt-4-turbo",
"Temperature": 0.7,
"TopP": 0.9,
"MaxTokens": 2000
},
"zhipu": {
"PromptPrefix": "你是一名资深C...",
"ApiUrl": "https://open.bigmodel.cn/api/paas/v4",
"ApiKey": "your-zhipu-api-key",
"ModelId": "glm-4",
"Temperature": 0.7,
"TopP": 0.9,
"MaxTokens": 2000,
"ExtraParameters": {
"response_format": { "type": "markdown" }
}
}
}
}
配置项说明
|
字段 |
说明 |
默认值 |
|---|---|---|
DefaultModel |
默认使用的模型键名 |
"doubao" |
CacheExpirationMinutes |
审查结果缓存过期时间(分钟) |
30 |
Models. |
模型专属提示词前缀 |
各模型预设 |
Models. |
API 端点地址 |
– |
Models. |
API 密钥 |
– |
Models. |
模型标识符 |
– |
Models. |
生成温度 |
0.7 |
Models. |
Top-P 采样参数 |
0.9 |
Models. |
最大生成 Token 数 |
2000 |
Models. |
停止序列 |
可选 |
Models. |
额外参数 |
可选 |
命令行用法
基本语法
dotnet exec CodeReviewAI.Console.dll --command <命令> [选项]
选项
|
选项 |
说明 |
默认值 |
|---|---|---|
--command |
要执行的命令 |
review |
--path |
项目/仓库路径 |
当前目录 |
--model |
使用的模型键名 |
doubao |
--config |
配置文件路径 |
自动查找 |
--format |
输出格式( markdown/json/text) |
markdown |
可用命令
review– AI 代码审查
获取 Git 仓库中的 C# 代码变更,使用 AI 模型进行审查:
dotnet exec CodeReviewAI.Console.dll --command review --path /path/to/repo --model doubao --format markdown
diff– 查看代码变更
仅显示 Git 仓库中的 C# 代码变更,不进行审查:
dotnet exec CodeReviewAI.Console.dll --command diff --path /path/to/repo
commit– 提交到本地仓库
暂存所有变更并提交到本地 Git 仓库:
dotnet exec CodeReviewAI.Console.dll --command commit --path /path/to/repo
push– 提交并推送
暂存、提交并推送到远程仓库:
dotnet exec CodeReviewAI.Console.dll --command push --path /path/to/repo
pull-push– 拉取后提交并推送
先拉取远程更新(rebase),再暂存、提交并推送:
dotnet exec CodeReviewAI.Console.dll --command pull-push --path /path/to/repo
list-models– 列出可用模型
显示配置文件中所有可用的 AI 模型:
dotnet exec CodeReviewAI.Console.dll --command list-models --format json
test-connection– 测试模型连接
测试指定 AI 模型的 API 连接是否正常:
dotnet exec CodeReviewAI.Console.dll --commandtest-connection --model doubao
hook-init– 安装 Pre-commit Hook
在 Git 仓库中安装 CodeReviewAI 的 pre-commit 钩子:
dotnet exec CodeReviewAI.Console.dll --command hook-init --path /path/to/repo
安装后,每次执行 git commit时会自动触发 AI 审查。需要 Visual Studio 扩展处于运行状态来响应审查请求。
hook-uninstall– 卸载 Pre-commit Hook
卸载 CodeReviewAI 的 pre-commit 钩子并恢复原有钩子:
dotnet exec CodeReviewAI.Console.dll --command hook-uninstall --path /path/to/repo
Visual Studio 扩展用法
安装
- 构建
CodeReviewAI.VSExtension项目生成.vsix文件 - 双击
.vsix文件或在 Visual Studio 的「扩展」→「管理扩展」中安装 -
重启 Visual Studio
使用审查功能
-
打开一个包含 Git 仓库的解决方案
-
修改 C# 代码文件
-
通过菜单或快捷键触发「Review Before Commit」命令
-
在弹出的审查窗口中:
- 左侧面板
:显示修改的代码(绿色高亮变更行)
- 右侧面板
:显示 AI 改善提议(Markdown 渲染)
- 模型选择器
:切换不同的 AI 模型
- 刷新审查
:重新执行审查
- 提交本地暂存
:审查通过后提交到本地
- 推送
:提交并推送到远程
- 拉取然后推送
:先 pull rebase,再提交推送
- 撤销
:放弃提交
使用设置功能
通过菜单触发「Review Settings」命令,在设置窗口中可以:
-
选择默认模型
-
查看配置文件路径
-
修改缓存过期时间
-
配置各模型的 API 密钥(OpenAI、豆包、千问、智谱)
Pre-commit Hook 自动审查
当 Visual Studio 打开解决方案时,扩展会自动安装 pre-commit 钩子。此时执行 git commit的流程为:
-
Git 触发 pre-commit 钩子
- 钩子写入信号文件
codereviewai-request -
VS 扩展检测到信号,弹出审查窗口
- 用户确认提交 → 写入
APPROVED,提交继续 - 用户撤销 → 写入
REJECTED,提交被阻止 -
超时(30秒)→ 自动放行提交
关闭解决方案时,扩展会自动卸载钩子并清理信号文件。
审查输出格式
审查结果遵循标准 Markdown 结构:
# 代码审查结果
## 问题列表
### 1. [问题标题] [高优先级/提议]
- **位置**:文件名.cs 第N行
- **原始代码**:
```csharp
// original code
// improved code
- 解释
:[explanation]
- 参考文献
:[reference link]
若代码没有问题,则返回:
```markdown
# 代码审查结果
未发现问题,代码质量良好。
技术栈
- .NET 8
– 运行时框架
- LibGit2Sharp
– Git 仓库操作
- Microsoft.Extensions.AI
– AI 模型抽象层
- OpenAI .NET SDK
– OpenAI 兼容 API 客户端
- Microsoft.Extensions.Caching.Memory
– 内存缓存
- Microsoft.VisualStudio.Shell
– Visual Studio 扩展开发
- WPF
– 扩展 UI 界面
架构设计
适配器模式
所有 AI 模型通过 IModelAdapter接口统一抽象,由ModelAdapterFactory管理适配器实例。新增模型只需:
- 实现
IModelAdapter接口 - 在
ModelAdapterFactory中注册 - 在
config.json中添加模型配置
RCIF 提示词框架
使用
Role-Context-Instruction-Format 四段式结构化提示词:
- Role
:定义 AI 角色(如资深 C# 审查专家)
- Context
:提供代码上下文(变更代码 + 文件路径)
- Instruction
:审查指令(问题定位 → 提议生成 → 优先级标注)
- Format
:输出格式约束(标准 Markdown 结构)
信号文件通信
VS 扩展与 Git Hook 之间通过文件系统信号通信:
codereviewai-active → 标记扩展已激活
codereviewai-request → Hook 请求审查
codereviewai-response → 扩展返回审查结果(APPROVED/REJECTED)
开发与构建
前置条件
-
Visual Studio 2022(含 VS SDK 工作负载)
-
.NET 8 SDK
构建
dotnet build CodeReviewAI.slnx
构建 VS 扩展
dotnet build src/CodeReviewAI.VSExtension/CodeReviewAI.VSExtension.csproj
生成的 .vsix文件位于bin/目录下。
开源地址:
https://gitee.com/dyx88168/AICodeReview


