项目简介
ReviewGenie 是一个基于 Model Context Protocol (MCP) 构建的后端服务,旨在为大型语言模型 (LLM) 客户端提供上下文感知和功能调用能力,专注于辅助 Pull Request (PR) 的代码审查。它能够获取 PR 详情,利用本地和云端 LLM 进行代码分析和风险评估,并通过向量搜索定位问题,最终生成内联评论。
主要功能点
- PR 信息查询: 获取 PR 的基本信息,如标题、作者、状态等。
- 代码变更摄取与缓存: 拉取 PR 的 diff 内容,解析并结构化,同时利用 SQLite 进行缓存以提高效率。
- 智能代码分析: 结合本地 LLM 进行快速代码气味检测,并利用云端 LLM 生成代码变更总结、识别关键问题并评估风险分数。
- 静态规则检查: 执行预定义的正则表达式规则,捕获潜在的安全或质量问题,并调整风险评分。
- 问题定位与内联评论: 利用代码片段的向量嵌入(通过 ChromaDB),将检测到的问题准确映射到代码的具体位置,并生成可直接在 GitHub PR 中发布的内联评论(支持干运行模式)。
- 测试用例生成: 根据代码变更尝试生成初步的 pytest 测试文件框架,并可选择创建新的 PR 包含这些测试存根。
安装步骤
- 克隆仓库:
git clone https://github.com/mann-uofg/codeview-mcp.git cd codeview-mcp - 创建并激活虚拟环境:
python -m venv .venv source .venv/bin/activate - 安装依赖:
pip install -r requirements.txt - 安装 ReviewGenie 包:
pip install -e . - 配置密钥: ReviewGenie 需要 GitHub Token 和 LLM 服务(如 Groq/OpenAI)的 API 密钥。可以通过环境变量或密钥环 (keyring) 设置。推荐使用密钥环:
或者设置环境变量 'GH_TOKEN', 'OPENAI_API_KEY', 'OPENAI_BASE_URL'。from codeview_mcp.secret import set_in_keyring set_in_keyring("GH_TOKEN", "YOUR_GITHUB_PAT") # 替换为你的 GitHub Personal Access Token set_in_keyring("OPENAI_API_KEY", "YOUR_LLM_API_KEY") # 替换为你的 LLM API 密钥 set_in_keyring("OPENAI_BASE_URL", "YOUR_LLM_BASE_URL") # 替换为你的 LLM 服务基地址 (如 Groq/OpenAI)
服务器配置
作为 MCP 服务器,ReviewGenie 需要被兼容的 LLM 客户端(如某些编辑器插件或独立应用)启动和连接。客户端通常通过一个 JSON 配置文件来定义如何启动 MCP 服务器进程。
以下是 MCP 客户端连接 ReviewGenie 服务器所需的典型配置示例 (请将此信息整合到你的 MCP 客户端配置中):
{ "name": "reviewgenie", "command": "python", "args": ["-m", "codeview_mcp.server"], "description": "ReviewGenie MCP Server for Code Review" // 其他可能的配置,如 transports (stdio, sse, websocket) 由 MCP 客户端决定 }
- 'name': MCP 服务器的标识名称。
- 'command': 启动服务器进程的命令,这里是 'python'。
- 'args': 传递给命令的参数,'-m codeview_mcp.server' 表示运行 'codeview_mcp' 包中的 'server.py' 模块。
确保你的环境中已正确安装 ReviewGenie 及其依赖,并且密钥已配置。
基本使用方法
ReviewGenie 被设计为一个由 MCP 客户端调用的后端服务。一旦通过上述配置由客户端成功启动,它会在后台运行,监听客户端的 JSON-RPC 请求。
用户无需直接与 'server.py' 交互(除非进行调试或手动启动)。所有的功能调用(如分析某个 PR、生成评论)都将通过 MCP 客户端的应用界面(例如,集成在 IDE 或其他 LLM 应用中)触发,客户端会将相应的请求发送给正在运行的 ReviewGenie MCP 服务器,服务器处理请求并返回结果。
开发者可以通过命令行工具 'reviewgenie' 直接调用其内部逻辑进行测试或脚本化操作,但这并非典型的 MCP 客户端使用方式。例如:
# 使用 CLI 工具测试 ping 功能 reviewgenie ping https://github.com/psf/requests/pull/6883 # 使用 CLI 工具分析 PR 并获取结果 JSON 输出 reviewgenie analyze https://github.com/psf/requests/pull/6883
请注意,CLI 调用方式不涉及 MCP 协议通信,它直接调用了 ReviewGenie 内部的函数。标准的 MCP 交互是由兼容客户端通过 JSON-RPC 完成的。
信息
分类
开发者工具