AI代码审查工具
github github.com/zhangjiadi2…
测试可使用内网穿透工具将本地服务暴露到公网, 然后配置对应webhook. 日志目前只保留发送请求的message以及ai审查报告 .
ai建议使用coze, 直接使用gpt相关接口, 暂时每次都得携带大量文本 .
项目概述
这是一个基于Node.js开发的智能代码审查工具(demo)
核心特性
🚀 多AI服务支持
- 硅基流动AI: 基于深度学习的代码分析引擎Coze智能体: 专业的代码审查AI助手动态切换: 支持运行时切换不同的AI服务
🔗 无缝集成
- GitHub Webhook: 自动监听代码推送事件实时处理: 提交后立即触发审查流程零配置部署: 简单的环境变量配置即可运行
📊 智能分析
- 代码质量评估: 全面分析代码结构、性能和安全性最佳实践建议: 基于行业标准提供改进建议多语言支持: 支持JavaScript、Python、Java等主流编程语言
💾 结果持久化
- 本地存储: 审查结果自动保存为结构化文本文件历史追踪: 完整的审查历史记录便于查阅: 清晰的文件命名和内容格式
技术架构
系统架构图
GitHub Repository ↓ (Webhook) Express Server ↓ Webhook Handler ↓ GitHub Service ←→ AI Service Factory ↓ ↓ Diff Analysis [SiliconFlow | Coze] ↓ ↓ File Storage ←── Review Results
核心组件
1. Web服务层 (src/index.js
)
- 基于Express.js的HTTP服务器提供健康检查、日志查看等管理接口优雅的错误处理和请求日志
2. Webhook处理器 (src/routes/webhook.js
)
- GitHub事件监听和处理提交数据解析和验证异步任务调度
3. GitHub服务 (src/services/github.js
)
- GitHub API集成代码差异获取智能文件过滤(仅处理代码文件)
4. AI服务工厂 (src/services/ai/
)
- 基础抽象类 (
base.js
): 定义AI服务通用接口硅基流动服务 (siliconflow.js
): 集成硅基流动AI APICoze服务 (coze.js
): 集成Coze智能体平台服务工厂 (index.js
): 动态服务选择和管理工作流程
1. 代码提交触发
sequenceDiagram Developer->>GitHub: git push GitHub->>AI Review Tool: Webhook Event AI Review Tool->>GitHub API: Get Commit Diff GitHub API-->>AI Review Tool: Return Diff Data
2. AI分析处理
sequenceDiagram AI Review Tool->>AI Service: Send Code Diff AI Service->>AI Provider: API Request AI Provider-->>AI Service: Analysis Result AI Service-->>AI Review Tool: Formatted Review
3. 结果存储
sequenceDiagram AI Review Tool->>File System: Save Review AI Review Tool->>Logs: Record Process AI Review Tool-->>GitHub: Response OK
安装与配置
环境要求
- Node.js 14.0+npm 6.0+
快速开始
- 克隆项目
git clone <repository-url>cd ai-code-review
- 安装依赖
npm install
- 环境配置
cp .env.example .env# 编辑.env文件,配置必要的API密钥
- 启动服务
# 开发模式npm run dev# 生产模式npm start
配置说明
基础配置
# 服务端口PORT=3000# 环境类型NODE_ENV=development
GitHub集成
# GitHub访问令牌(可选,用于私有仓库)GITHUB_TOKEN_AI=your_github_token
AI服务配置
# 当前使用的AI服务类型AI_SERVICE_TYPE=coze# 硅基流动AI配置SILICONFLOW_API_KEY=your_siliconflow_keySILICONFLOW_MODEL=deepseek-chat# Coze智能体配置COZE_API_URL=https://api.coze.cn/v3/chatCOZE_API_KEY=your_coze_keyCOZE_BOT_ID=your_bot_id
使用指南
GitHub Webhook配置
- 进入GitHub仓库设置页面选择"Webhooks" → "Add webhook"配置参数:
- Payload URL:
http://your-domain.com/webhook/github
Content type: application/json
Events: 选择"Just the push event"审查结果查看
审查结果自动保存在reviews/
目录下,文件命名格式:
review_[service]_[commit_id]_[timestamp].txt
示例文件内容:
代码审查报告 (coze)==========================================提交ID: abc123def456提交信息: 修复用户登录bug作者: 张三审查时间: 2024-01-01T10:00:00.000Z详细建议:------------------------------------------1. 安全性建议: - 建议在密码验证前添加输入验证 - 考虑使用bcrypt进行密码哈希2. 性能优化: - 数据库查询可以添加索引优化 - 建议使用连接池管理数据库连接3. 代码规范: - 变量命名建议使用驼峰命名法 - 建议添加必要的错误处理
项目结构
ai-code-review/├── src/ # 源代码目录│ ├── index.js # 应用入口文件│ ├── routes/ # 路由处理│ │ ├── webhook.js # Webhook事件处理│ │ ├── debug.js # 调试接口│ │ └── logs.js # 日志查看接口│ ├── services/ # 核心服务│ │ ├── ai/ # AI服务模块│ │ │ ├── base.js # AI服务基类│ │ │ ├── index.js # 服务工厂│ │ │ ├── siliconflow.js # 硅基流动AI服务│ │ │ └── coze.js # Coze智能体服务│ │ ├── github.js # GitHub API服务│ │ └── logger.js # 日志服务│ ├── middleware/ # 中间件(预留)│ ├── utils/ # 工具函数(预留)│ └── public/ # 静态资源├── reviews/ # 审查结果存储├── messages/ # AI请求消息存储├── logs/ # 系统日志├── test/ # 测试文件├── package.json # 项目配置├── .env # 环境变量└── README.md # 项目说明
开发特性
代码质量保障
- ESLint: 代码风格检查错误处理: 完善的异常捕获机制日志系统: 详细的操作日志记录
扩展性设计
- 插件化架构: 易于添加新的AI服务配置驱动: 通过环境变量灵活配置模块化设计: 清晰的代码组织结构
性能优化
- 异步处理: 非阻塞的事件处理智能过滤: 仅处理代码文件,忽略配置和资源文件错误恢复: 优雅的错误处理,避免服务中断
最佳实践
安全建议
- 使用HTTPS部署生产环境定期轮换API密钥限制GitHub Token权限范围配置防火墙规则
性能优化
- 定期清理历史文件监控API调用频率配置适当的超时时间使用负载均衡(高并发场景)