注册

学习webhook与coze实现ai code review

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 API
  • Coze服务 (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+

快速开始

  1. 克隆项目
git clone 
cd ai-code-review
  1. 安装依赖
npm install
  1. 环境配置
cp .env.example .env
# 编辑.env文件,配置必要的API密钥
  1. 启动服务
# 开发模式
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配置

  1. 进入GitHub仓库设置页面
  2. 选择"Webhooks" → "Add webhook"
  3. 配置参数:
  4. 保存配置

审查结果查看

审查结果自动保存在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调用频率
  • 配置适当的超时时间
  • 使用负载均衡(高并发场景)


作者:只想过平凡生活的迪迪
来源:juejin.cn/post/7530106539467669544

0 个评论

要回复文章请先登录注册