CodeReviewAI
AI 驱动的代码审查插件。支持多种审查模式:Git 提交自动审查、暂存变更审查、工作区变更审查、当前文件审查、选中代码审查。审查结果在编辑器内可视化展示(Problems 面板 + 行内诊断 + 快速修复建议),同时支持飞书 Webhook 推送通知。插件支持前端(Vue/TypeScript)和后端(Java)等多种技术栈,能够根据项目特征自动识别并应用相应的审查规范。
功能特性
- 多种审查模式:提交审查、暂存变更、工作区变更、当前文件、选中代码,覆盖各种开发场景
- 自动审查:Git 提交后自动触发 AI 代码审查,无需配置 Git Hook
- 一键修复:针对常见问题提供自动修复功能,点击即可应用修复建议
- 侧边栏面板:Activity Bar 中的专属入口,包含快捷操作、配置概览、审查报告列表三个视图
- 编辑器内展示:审查问题显示在 Problems 面板,支持点击跳转、行内波浪线提示、快速修复建议
- 审查报告:自动保存 Markdown 格式审查报告到
.ai-review/ 目录,支持预览和管理
- 飞书推送:提交审查和手动触发审查的报告自动发送到飞书群和/或飞书用户私信
- 审查锁定:审查进行中自动禁用所有审查按钮,防止重复触发,显示"正在审查中..."状态
- 自动撤销:提交审查发现重大问题(error 级别)时,可选择撤销提交,代码修改保留在暂存区
- 内置规范:基于 frontend-standards 规范体系,涵盖命名、Vue3、TypeScript、CSS、数据验证等 8 大类别
- 智能技术栈识别:支持
frontend-vue 和 backend-java 两套审查规范,可根据项目特征(如 pom.xml、package.json 等文件)自动检测并应用相应规范,也可通过配置手动指定
- 可扩展:支持自定义审查规则,覆盖或扩展内置规则
- 多模型支持:兼容 OpenAI API 格式,可使用 DeepSeek、通义千问等国内服务
内置规范
插件内置了前端和后端开发规范,包括:
前端规范
适用于 JavaScript、TypeScript、Vue、React 等前端项目。
- 命名规范 (tech-naming.md) - 变量、函数、组件、文件命名
- Vue3 组件规范 (tech-vue3.md) - Composition API、组件结构、Props 定义
- TypeScript 规范 (tech-typescript.md) - 类型安全、接口定义、泛型使用
- CSS/SCSS 规范 (tech-css.md) - 样式组织、选择器命名、响应式设计
- 数据验证规范 (tech-data-validation.md) - 表单验证、API 数据校验
- 项目结构规范 (tech-structure.md) - 目录组织、模块划分
- 开发原则 (tech-principle.md) - 组件设计、状态管理、性能优化
- 代码检查清单 (tech-checklist.md) - 提交前检查项
后端规范
适用于 Java 后端项目(Spring Boot、MyBatis、Hibernate 等)。
- Java 基础规范 (tech-java.md) - 命名、结构、异常处理、资源管理、注释
- Java 最佳实践 (tech-java-best-practices.md) - 面向对象设计(SOLID)、并发编程、泛型、单元测试、Lambda/Stream API
- Java 性能与安全规范 (tech-java-performance-security.md) - 性能优化、SQL 注入防护、XSS 防护、内存管理
快速开始
- 安装插件
- 配置 AI API Key(必需):
aiReview.ai.apiKey
- 配置飞书 Webhook(可选):
aiReview.feishu.webhooks
- 提交代码,自动触发审查
审查模式
| 模式 |
触发方式 |
审查范围 |
飞书通知 |
| 触发代码审查 |
侧边栏按钮 / 命令面板 |
最近一次 Git 提交的 diff |
✅ |
| 提交自动审查 |
Git 提交后自动触发 |
最近一次 Git 提交的 diff |
✅ |
| 审查暂存变更 |
侧边栏按钮 / 命令面板 |
git diff --cached 暂存区内容 |
❌ |
| 审查工作区变更 |
侧边栏按钮 / 命令面板 |
git diff 未暂存的修改 |
❌ |
| 审查当前文件 |
侧边栏按钮 / 命令面板 |
当前编辑器打开的完整文件 |
❌ |
| 审查选中代码 |
侧边栏按钮 / 右键菜单 / 命令面板 |
编辑器中选中的代码片段 |
❌ |
侧边栏面板
点击 Activity Bar 中的 CodeReviewAI 图标打开侧边栏,包含三个视图:
快捷操作
一键触发各种审查模式和常用操作:
- 触发代码审查、审查暂存变更、审查工作区变更、审查当前文件、审查选中代码
- 清除审查标记(清除编辑器中的波浪线和 Problems 面板标记)
- 查看最新报告、校验配置、打开设置
配置概览
分组展示当前扩展配置状态,点击可跳转到对应设置项:
- AI 引擎:API Key 状态、API 地址、模型名称
- 飞书通知:Webhook 数量、App ID、App Secret、通知用户数
- 审查规则:技术栈、自定义规则路径、内置规则(可展开查看详细规则文件)、优先级映射
- 行为设置:自动触发开关、超时时间
审查报告
按审查时间倒序列出 .ai-review/ 目录下的所有历史报告,支持:
- 点击预览报告(Markdown 预览)
- 右键删除报告
- 手动刷新列表
报告文件名按审查模式区分,如 review-commit-<hash>-<时间>-<摘要>.md、review-staged-<时间>.md 等。
命令
| 命令 |
说明 |
AI Review: Trigger Review |
手动触发审查(最近一次提交) |
AI Review: 审查暂存变更 |
审查已暂存的代码变更 |
AI Review: 审查工作区变更 |
审查工作区未暂存的变更 |
AI Review: 审查当前文件 |
审查当前打开的文件 |
AI Review: 审查选中代码 |
审查编辑器中选中的代码(也可右键触发) |
AI Review: 清除审查标记 |
清除所有审查诊断标记 |
AI Review: Show Full Report |
查看最新审查报告 |
AI Review: Open Settings |
打开插件设置 |
AI Review: Validate Settings |
校验配置有效性 |
一键修复功能
审查发现的问题会在编辑器中以波浪线标记,鼠标悬停或按 Ctrl+.(Mac: Cmd+.)可查看快速修复建议(仅部分内置规则支持一键修复)。
使用方式
方式一:快速修复菜单(推荐)
- 审查完成后,编辑器中会显示问题标记(波浪线)
- 将光标放在问题行,按
Ctrl+.(Mac: Cmd+.)打开快速修复菜单
- 选择 "🔧 一键修复: xxx" 自动应用修复
- 部分问题可能只显示 "💡 AI 建议: xxx",表示需要手动修复
方式二:命令面板
- 将光标放在有问题的代码行
- 按
Ctrl+Shift+P(Mac: Cmd+Shift+P)打开命令面板
- 输入 "AI Review: 一键修复当前行问题"
- 确认应用修复
配置项
| 配置项 |
类型 |
默认值 |
说明 |
aiReview.ai.apiUrl |
string |
https://api.openai.com/v1 |
AI API 地址 |
aiReview.ai.apiKey |
string |
"" |
AI API Key |
aiReview.ai.model |
string |
gpt-4o |
AI 模型名称 |
aiReview.feishu.webhooks |
string[] |
[] |
飞书群 Webhook 地址列表 |
aiReview.feishu.appId |
string |
"" |
飞书应用 App ID(用于向用户发私信) |
aiReview.feishu.appSecret |
string |
"" |
飞书应用 App Secret |
aiReview.feishu.userIds |
string[] |
[] |
飞书用户邮箱列表,用于发送私信通知 |
aiReview.behavior.autoTrigger |
boolean |
true |
是否自动触发审查 |
aiReview.behavior.timeoutSeconds |
number |
180 |
审查超时时间(秒) |
aiReview.behavior.autoRollbackOnCritical |
boolean |
true |
发现重大问题(error 级别)时是否自动撤销提交 |
aiReview.rules.techStack |
string |
(自动检测) |
技术栈选择(frontend-vue / backend-java),留空则自动检测项目类型 |
aiReview.rules.enabledCategories |
string[] |
全部 8 类 |
启用的审查规则类别 |
aiReview.rules.customRulesPath |
string |
"" |
自定义规则文件路径,支持 ${workspaceFolder} 变量 |
aiReview.rules.priorityMapping |
object |
{"A":"error","B":"warning","C":"info"} |
优先级映射 |
使用 DeepSeek 示例
{
"aiReview.ai.apiUrl": "https://api.deepseek.com/v1",
"aiReview.ai.apiKey": "sk-your-key",
"aiReview.ai.model": "deepseek-chat",
"aiReview.behavior.timeoutSeconds": 120
}
技术栈识别与切换
插件支持自动识别和手动配置两种方式来选择审查规范:
自动识别
插件会根据项目根目录的文件自动检测技术栈:
- Java 项目:检测到
pom.xml、build.gradle、build.gradle.kts 等文件且存在 .java 源码时,自动应用 Java 审查规范
- 前端项目:检测到
package.json、yarn.lock、pnpm-lock.yaml 等文件且存在 .js、.ts、.vue 等源码时,自动应用前端审查规范
手动配置
你也可以在设置中手动指定技术栈(主要用于覆盖自动检测结果):
{
"aiReview.rules.techStack": "backend-java"
}
插件会根据技术栈选择从 rules/frontend/ 或 rules/backend/ 读取对应的审查规范。
飞书用户私信
除了群 Webhook,还可以通过飞书应用 API 向指定用户发送私信。需要先在飞书开放平台创建企业自建应用并开通 im:message:send_as_bot 权限。
{
"aiReview.feishu.appId": "cli_xxxx",
"aiReview.feishu.appSecret": "your-app-secret",
"aiReview.feishu.userIds": ["zhangsan@company.com", "lisi@company.com"]
}
直接填飞书用户的邮箱即可,插件会自动通过飞书 API 将邮箱转换为用户 ID 再发送。也兼容直接填 open*id(ou* 开头)或 user_id。群 Webhook 和用户私信可以同时配置,互不影响。
自定义规则
创建 JSON 文件,配置 aiReview.rules.customRulesPath 指向该文件:
{
"aiReview.rules.customRulesPath": "${workspaceFolder}/rules/custom-rules.json"
}
JSON 文件格式:
[
{
"id": "custom-console-log",
"name": "禁止 console.log",
"category": "custom-debug",
"priority": "B",
"description": "禁止在代码中使用 console.log",
"content": "## 禁止 console.log\n\n- 不要在生产代码中使用 console.log\n- 推荐使用 VS Code 输出通道或专业日志库"
}
]
字段说明:
id:规则唯一标识,相同 ID 会覆盖内置规则
priority:优先级(A=error / B=warning / C=info)
content:详细规则内容,支持 Markdown 格式
同 ID 的自定义规则会覆盖内置规则。
License
MIT