学习webhook与coze实现ai code review
这是一个基于Node.js开发的智能代码审查工具(demo)
测试可使用内网穿透工具将本地服务暴露到公网, 然后配置对应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 API - Coze服务 (
coze.js): 集成Coze智能体平台 - 服务工厂 (
index.js): 动态服务选择和管理
工作流程
1. 代码提交触发
DeveloperGitHubAI Review ToolGitHub APIgit pushWebhook EventGet Commit DiffReturn Diff DataDeveloperGitHubAI Review ToolGitHub API
2. AI分析处理
AI Review ToolAI ServiceAI ProviderSend Code DiffAPI RequestAnalysis ResultFormatted ReviewAI Review ToolAI ServiceAI Provider
3. 结果存储
AI Review ToolFile SystemLogsGitHubSave ReviewRecord ProcessResponse OKAI Review ToolFile SystemLogsGitHub
安装与配置
环境要求
- 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_key SILICONFLOW_MODEL=deepseek-chat # Coze智能体配置 COZE_API_URL=https://api.coze.cn/v3/chat COZE_API_KEY=your_coze_key COZE_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"
- Payload URL:
- 保存配置
审查结果查看
审查结果自动保存在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调用频率
- 配置适当的超时时间
- 使用负载均衡(高并发场景)
火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。
更多推荐
所有评论(0)