Wdocs AI Code Review

Wdocs AI Code Review 是一个专为腾讯文档团队打造的智能代码评审 VS Code 扩展。基于腾讯文档内部 AI 服务,为开发者提供专业的代码质量检查、安全漏洞扫描和代码规范建议。支持多种 AI 服务后端,包括 Knot、Adams 和 wdocs-ai 服务。
✨ 主要特性
- 🤖 多 AI 服务支持:集成 Knot、Adams、wdocs-ai 三种内部 AI 服务
- 🔍 智能代码评审:深度分析代码质量、安全性和可维护性
- 🚫 Git 提交拦截:在提交前自动进行代码评审,防止问题代码进入仓库
- 📊 可视化报告:生成美观的 HTML 评审报告,支持深色/浅色主题
- ⚙️ 灵活配置:支持多环境配置(devcloud/local)和服务快速切换
- 🎯 智能过滤:自动排除 node_modules、dist 等无需评审的文件
- 🔗 企微通知:支持将评审结果推送到企业微信群
- 🛠️ 调试工具:内置调试面板,方便开发和测试
- 📈 性能优化:支持大文件处理和批量评审
🚀 快速开始
安装
方式一:从 VSIX 文件安装(推荐)
# 构建并安装扩展
cd ai-code-review
npm run build
npm run package
npm run install-extension
方式二:开发模式安装
# 克隆项目
git clone https://git.woa.com/GYWeb/wdocs-ai-coding-ext.git
cd wdocs-ai-coding-ext/ai-code-review
# 安装依赖并构建
npm install
npm run build
# 在 VS Code 中按 F5 启动调试模式
基本配置
- 打开 VS Code 设置 (
Ctrl/Cmd + ,)
- 搜索 "AI Code Review"
- 选择 AI 服务类型并配置相应参数:
基本配置
{
"aiCodeReview.enabled": true,
"aiCodeReview.token": "your-service-token",
"aiCodeReview.username": "your-username"
}
注意: AI 服务类型、环境、超时时间、文件大小限制、排除模式等配置已内置默认值,无需手动配置。
快速开始示例
配置服务:
# 打开命令面板 (Ctrl/Cmd + Shift + P)
> AI Code Review: Configure AI Service
# 输入你的 token 和用户名
评审暂存区变更:
git add .
# 在 VS Code 中使用命令面板
> AI Code Review: Review Staged Changes
查看评审结果:
- 在弹出的 webview 面板中查看详细报告
- 在问题面板中查看具体问题定位
📖 使用指南
命令面板
通过 Ctrl/Cmd + Shift + P 打开命令面板,输入以下命令:
核心功能
AI Code Review: Review Staged Changes - 评审 Git 暂存区的所有变更
AI Code Review: Review Current File - 评审当前打开的文件
AI Code Review: AI CR - Commit - 智能提交评审(结合 Git 提交流程)
AI Code Review: Review Before Commit - 开启/关闭提交前自动评审
服务管理
AI Code Review: Switch to Knot AI Service - 切换到 Knot AI 服务
AI Code Review: Switch to Adams AI Service - 切换到 Adams AI 服务
AI Code Review: Switch to wdocs-ai Service - 切换到 wdocs-ai 服务
AI Code Review: Configure AI Service - 配置当前 AI 服务
AI Code Review: Test AI Service Connection - 测试 AI 服务连接
注意: 服务切换功能仍然可用,但默认使用 Knot AI 服务。
调试工具(开发模式)
AI Code Review: Open Debug Panel - 打开调试面板
AI Code Review: Debug Toolbox - 调试工具箱
右键菜单
在编辑器中右键点击,选择:
- Review Current File - 快速评审当前文件
Git 集成
在 Git 面板中,点击 Review Staged Changes 按钮来评审暂存的变更。
自动评审
启用自动评审功能后,插件会在以下情况自动触发:
⚙️ 配置选项
用户配置
| 配置项 |
类型 |
默认值 |
描述 |
aiCodeReview.enabled |
boolean |
true |
启用/禁用插件 |
aiCodeReview.token |
string |
"" |
服务认证令牌 |
aiCodeReview.username |
string |
"" |
用户名(部分服务需要) |
内置默认配置
以下配置已内置默认值,无需用户手动配置:
| 配置项 |
默认值 |
描述 |
serviceType |
"knot" |
AI 服务类型(Knot AI 服务) |
environment |
"local" |
服务环境(本地环境) |
timeout |
30000 |
请求超时时间(30秒) |
maxFileSize |
50000 |
最大文件大小限制(50KB) |
enableReviewBeforeCommit |
false |
提交前自动评审(默认关闭) |
excludePatterns |
["**/node_modules/**", "**/dist/**", ...] |
排除文件模式 |
🎯 使用场景
1. 代码提交前检查
# 添加文件到暂存区
git add .
# 在 VS Code 中点击 "Review Staged Changes"
# 或使用命令面板执行评审
插件会自动分析暂存区的变更,检测:
- 语法错误和逻辑问题
- 安全漏洞(如 SQL 注入、XSS 等)
- 代码规范问题
- 性能优化建议
2. 实时代码评审
在编辑器中打开任意文件,使用 AI Code Review: Review Current File 命令即可获得即时反馈。
3. 团队协作
配置统一的 AI 服务和规则,确保团队代码质量标准一致。
🔧 高级配置
AI 服务详细说明
默认服务:Knot AI
插件默认使用 Knot AI 服务,这是腾讯内部的智能对话平台,提供专业的代码评审能力:
- Agent ID:
5c3d4466aec342118f05933a158ae4e1
- 对话链接:
https://knot.woa.com/agent/detail/{agentId}/llmops
- 支持企微通知: 可将评审结果推送到企业微信群
- 默认超时: 30秒
- 文件大小限制: 50KB
其他可用服务
虽然默认使用 Knot AI,但仍可通过命令切换到其他服务:
Adams AI 服务
- 腾讯文档的内部 AI 服务
- 通过命令面板切换:
AI Code Review: Switch to Adams AI Service
wdocs-ai 服务
- 文档团队的专用 AI 服务
- 通过命令面板切换:
AI Code Review: Switch to wdocs-ai Service
工作区配置
在项目根目录创建 .vscode/settings.json:
{
"aiCodeReview.enabled": true,
"aiCodeReview.excludePatterns": [
"**/node_modules/**",
"**/coverage/**",
"**/*.test.js"
]
}
📊 评审结果
问题等级
- 🔴 Error(错误):严重问题,建议立即修复
- 🟡 Warning(警告):潜在问题,建议关注
- 🔵 Info(信息):改进建议,可选择性采纳
评审报告
插件会生成详细的 HTML 评审报告,包含:
报告结构
- 元数据信息:评审 ID、时间戳、分支信息等
- 变更分析:文件变更统计、业务上下文分析
- 问题列表:按优先级分类的问题详情
- 改进建议:具体的代码优化建议
- 总体评估:代码质量、安全性、可维护性评分
问题分级
- P0(严重):阻塞性问题,必须立即修复
- P1(重要):重要问题,建议优先修复
- P2(一般):一般问题,建议修复
- P3(轻微):轻微问题,可选择性修复
结果展示
评审结果会展示在:
- Webview 面板:美观的 HTML 报告界面
- 问题面板:VS Code 底部的问题标签页
- 企微通知:推送到指定的企业微信群(可选)
🛠️ 开发与调试
调试功能
插件内置了强大的调试工具,方便开发者测试和验证功能:
调试面板
# 使用命令面板
AI Code Review: Open Debug Panel
# 或使用 npm 脚本
npm run debug:panel
测试脚本
# 运行调试演示
npm run test:demo
# 独立测试
npx ts-node src/test/demo.ts
调试功能特性
- 模拟数据测试:使用
result.ts 中的示例数据
- 多场景测试:原始数据、修改数据、错误数据、性能测试
- 交互式界面:支持数据修改、导出和实时预览
- 性能监控:测试大量数据的处理性能
项目结构
ai-code-review/
├── src/
│ ├── core/ # 核心功能模块
│ │ ├── code-review-manager.ts
│ │ ├── git-manager.ts
│ │ ├── configuration-manager.ts
│ │ └── notify-to-wecom-manager.ts
│ ├── config/ # 配置文件
│ │ └── knot.ts
│ ├── test/ # 测试和调试
│ │ ├── debug-review-panel.ts
│ │ ├── demo.ts
│ │ └── mocks/
│ ├── examples/ # 示例数据
│ │ └── result.ts
│ └── extension.ts # 扩展入口
├── dist/ # 编译输出
└── package.json
🚀 部署与发布
构建扩展
# 开发构建
npm run build:dev
# 生产构建
npm run build
# 打包扩展
npm run package
安装测试
# 安装打包后的扩展
npm run install-extension
# 或手动安装
code --install-extension ai-1.0.18.vsix
📋 开发规范
代码提交规范
- 使用本插件进行代码评审后再提交
- 修复所有 P0 和 P1 级别的问题
- 考虑采纳 P2 级别的建议
测试要求
- 新功能需要添加测试用例
- 使用
npm run test:unit 运行单元测试
- 使用调试工具验证功能正确性
🤝 贡献指南
提交 Issue
- 详细描述问题现象
- 提供复现步骤
- 附上相关的配置信息
提交 PR
- Fork 项目并创建功能分支
- 确保代码通过所有测试
- 更新相关文档
📞 技术支持
常见问题
1. AI 服务连接失败
- 检查网络连接和服务配置
- 验证 token 和用户名是否正确
- 使用 "Test AI Service Connection" 命令测试
2. 评审结果不准确
- 确认使用的 AI 服务类型
- 检查代码文件大小是否超限
- 尝试切换不同的 AI 服务
3. 性能问题
- 调整
maxFileSize 限制
- 使用
excludePatterns 排除无关文件
- 考虑分批处理大型项目
联系方式
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
Powered by 腾讯文档团队 🚀
2. 编辑器内联:代码行旁的波浪线和提示
3. 通知消息:右下角的通知弹窗
🛠️ 故障排除
常见问题
Q: AI 服务连接失败
A: 检查网络连接和 API 密钥配置
- 验证 endpoint URL 是否正确
- 确认 API 密钥有效且有足够权限
- 检查防火墙设置
Q: 评审结果不准确
A: 尝试以下解决方案:
- 更换更强大的 AI 模型(如 GPT-4)
- 调整文件大小限制
- 检查代码语言是否被支持
Q: 插件无响应
A: 重启 VS Code 或重新加载窗口
- 使用 Ctrl/Cmd + Shift + P
- 执行 "Developer: Reload Window"
调试模式
启用调试模式获取详细日志:
{
"aiCodeReview.debug": true,
"aiCodeReview.logLevel": "debug"
}
查看输出面板中的 "AI Code Review" 频道获取详细信息。
🔒 隐私和安全
- 本地处理:代码分析在本地进行,仅发送必要的代码片段到 AI 服务
- 数据加密:所有 API 通信使用 HTTPS 加密
- 可配置性:支持私有部署的 AI 服务
- 排除敏感文件:通过配置排除包含敏感信息的文件
👨💻 开发者指南
AI Client 使用
插件使用共享的 AI Client 库与 AI 服务通信:
import { createAIClientAdapter, createAdamsAdapter } from '@tencent/wdocs-ai-coding-ext-shared';
// 创建 AI 客户端适配器(使用原有 ai-client)
const aiClientAdapter = createAIClientAdapter({
endpoint: 'http://wdocs.woa.com/troubleshooter',
apiKey: 'your-api-key',
timeout: 50000,
});
// 或者创建 Adams 适配器
const adamsAdapter = createAdamsAdapter({
adamsUserName: 'your-username',
adamsUserToken: 'your-token',
modelId: 'your-model-id',
businessName: 'your-business'
});
// 发送文本消息
const request = aiClientAdapter.createTextRequest('请评审这段代码...');
const response = await aiClientAdapter.request(request);
if (response.success) {
console.log('AI 响应:', response.content);
} else {
console.error('请求失败:', response.error);
}
扩展开发
如果需要扩展插件功能:
- 克隆项目:
git clone https://github.com/tencent/wdocs-ai-coding-ext.git
- 安装依赖:
npm install
- 构建项目:
npm run build
- 在 VS Code 中按 F5 启动调试
测试
# 运行单元测试
npm run test:unit
# 运行集成测试
npm run test:demo
# 生成覆盖率报告
npm run test:coverage
🤝 贡献
欢迎贡献代码和反馈!
- Fork 项目
- 创建功能分支 (
git checkout -b feature/AmazingFeature)
- 提交更改 (
git commit -m 'Add some AmazingFeature')
- 推送到分支 (
git push origin feature/AmazingFeature)
- 打开 Pull Request
📄 许可证
本项目采用 MIT 许可证 - 查看 LICENSE 文件了解详情。
🆘 支持
🎉 致谢
感谢所有贡献者和社区成员的支持!
让 AI 成为您的代码评审伙伴,提升代码质量,加速开发流程! 🚀