CodeReviewAI基于 AI 大模型的 C# 代码审查工具支持多种国产及国际 AI 模型提供命令行和 Visual Studio 扩展两种使用方式。在代码提交前自动进行智能审查帮助开发者发现潜在的代码缺陷、性能瓶颈和安全漏洞。功能特性多模型支持支持 4 种 AI 大模型可自由切换模型适配器默认模型 ID特点豆包 (Doubao)DoubaoAdapterdoubao-seed-2-0-code-preview-260215专注中文技术栈代码质量与性能优化千问 (Qianwen)QianwenAdapterqwen-plus强调安全漏洞检测SQL注入、XSS、空引用OpenAIOpenAIAdaptergpt-4-turbo英文审查.NET/ASP.NET Core 最佳实践智谱 (Zhipu)ZhipuAdapterglm-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: [ \n# ] }, 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默认使用的模型键名doubaoCacheExpirationMinutes审查结果缓存过期时间分钟30Models.key.PromptPrefix模型专属提示词前缀各模型预设Models.key.ApiUrlAPI 端点地址-Models.key.ApiKeyAPI 密钥-Models.key.ModelId模型标识符-Models.key.Temperature生成温度0.7Models.key.TopPTop-P 采样参数0.9Models.key.MaxTokens最大生成 Token 数2000Models.key.StopSequences停止序列可选Models.key.ExtraParameters额外参数可选命令行用法基本语法dotnet exec CodeReviewAI.Console.dll --command 命令 [选项]选项选项说明默认值--command要执行的命令review--path项目/仓库路径当前目录--model使用的模型键名doubao--config配置文件路径自动查找--format输出格式markdown/json/textmarkdown可用命令review- AI 代码审查获取 Git 仓库中的 C# 代码变更使用 AI 模型进行审查dotnet exec CodeReviewAI.Console.dll --command review --path /path/to/repo --model doubao --format markdowndiff- 查看代码变更仅显示 Git 仓库中的 C# 代码变更不进行审查dotnet exec CodeReviewAI.Console.dll --command diff --path /path/to/repocommit- 提交到本地仓库暂存所有变更并提交到本地 Git 仓库dotnet exec CodeReviewAI.Console.dll --command commit --path /path/to/repopush- 提交并推送暂存、提交并推送到远程仓库dotnet exec CodeReviewAI.Console.dll --command push --path /path/to/repopull-push- 拉取后提交并推送先拉取远程更新rebase再暂存、提交并推送dotnet exec CodeReviewAI.Console.dll --command pull-push --path /path/to/repolist-models- 列出可用模型显示配置文件中所有可用的 AI 模型dotnet exec CodeReviewAI.Console.dll --command list-models --format jsontest-connection- 测试模型连接测试指定 AI 模型的 API 连接是否正常dotnet exec CodeReviewAI.Console.dll --commandtest-connection --model doubaohook-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/repoVisual 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-requestVS 扩展检测到信号弹出审查窗口用户确认提交 → 写入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