# code-review **Repository Path**: hushuhai36012/code-review ## Basic Information - **Project Name**: code-review - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-06 - **Last Updated**: 2026-07-06 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 代码审查智能体 (Code Review Agent) 基于 Spring Boot 的多 Agent 代码审查系统,通过手写 AgentLoop + Function Calling 实现自动化 PR 审查,对接 Gitee Webhook。 ## 架构概览 ``` Webhook → Controller → Worker → Orchestrator → [BugReviewer, QualityReviewer] │ AgentLoop (LLM + Function Calling) │ Tools: GetDiff / ReadFile / GetRelatedFiles │ 审查结论 → Gitee PR Comment ``` ## 核心模块 | 模块 | 说明 | |------|------| | `agent/` | **Agent 引擎** — 手写 AgentLoop、LLM 客户端(Anthropic API)、工具定义与结果 | | `tools/` | **工具集** — GetDiff(获取 PR 变更)、ReadFile(读取文件)、GetRelatedFiles(关联文件) | | `reviewers/` | **审查 Agent** — BugReviewer(Bug 检测)、QualityReviewer(代码质量) | | `orchestrator/` | **编排器** — 协调 Bug/Quality 两个 Agent,委托工具调用,汇总审查报告 | | `gitee/` | **Gitee 集成** — PR 详情、文件内容、Diff 获取、评论发布 | | `webhook/` | **Webhook** — 接收 Gitee PR 事件、签名验证、事件分发 | | `worker/` | **任务调度** — 轮询待处理任务、异步执行审查、并发控制 | | `model/` | **数据模型** — ReviewTask、ReviewFinding、ReviewReport | ## 技术栈 - **框架**: Spring Boot 3.2.5 - **语言**: Java 17 - **HTTP 客户端**: OkHttp 4.12 - **LLM**: Anthropic Claude API(支持 Sonnet/Opus) - **数据库**: H2(开发)/ PostgreSQL(生产) - **构建**: Maven ## 快速开始 ### 环境要求 - JDK 17+ - Maven 3.8+ - Anthropic API Key ### 配置环境变量 ```bash export LLM_API_KEY="your-anthropic-api-key" export LLM_MODEL="claude-sonnet-4-6" # 可选,默认值 export GITEE_TOKEN="your-gitee-personal-token" export GITEE_WEBHOOK_SECRET="your-webhook-secret" ``` ### 启动服务 ```bash mvn spring-boot:run ``` 服务默认运行在 `http://localhost:8080`。 ### Gitee Webhook 配置 在 Gitee 仓库设置中添加 Webhook: - **URL**: `https://your-domain.com/webhook/gitee` - **事件**: Pull Request - **密钥**: 与 `GITEE_WEBHOOK_SECRET` 一致 ## 审查流程 1. **触发**: Gitee PR 事件 → Webhook 接收 2. **入队**: 创建 ReviewTask,Worker 轮询领取 3. **获取 Diff**: Orchestrator 通过 GetDiffTool 获取 PR 变更 4. **双 Agent 审查**: - **BugReviewer** — 检测逻辑错误、空指针、异常处理、并发问题 - **QualityReviewer** — 检查命名规范、代码结构、可读性、最佳实践 5. **汇总报告**: Orchestrator 合并两个 Agent 的发现,生成 ReviewReport 6. **发布评论**: 通过 Gitee API 将审查结果发布到 PR 评论区 ## 数据库表 | 表 | 说明 | |----|------| | `review_tasks` | 审查任务,记录 PR 信息和处理状态 | | `review_findings` | 审查发现,按严重程度和类别分类 | | `webhook_logs` | Webhook 日志,记录事件接收和处理状态 | ## 配置项 ```yaml review: max-files-per-review: 20 # 单次审查最大文件数 max-agent-loops: 20 # Agent 最大循环轮次 worker-poll-interval: 5000 # Worker 轮询间隔 (ms) max-concurrent-reviews: 2 # 最大并发审查数 ``` ## 项目结构 ``` src/ ├── main/java/com/example/codereview/ │ ├── CodeReviewApplication.java # 启动入口 │ ├── agent/ # Agent 引擎 │ ├── config/ # 应用配置 │ ├── gitee/ # Gitee API 客户端 │ ├── model/ # 数据模型 │ ├── orchestrator/ # 编排器 │ ├── reviewers/ # 审查 Agent │ ├── tools/ # 工具集 │ ├── webhook/ # Webhook 处理 │ └── worker/ # 任务调度 ├── main/resources/ │ ├── application.yml # 应用配置 │ ├── schema.sql # 数据库初始化 │ └── prompts/ # System Prompt 模板 │ ├── bug-system.txt │ ├── quality-system.txt │ └── orchestrator-system.txt └── test/ # 测试代码 ```