AIMergeBot 现已支持 MCP(Model Context Protocol)和 ReAct(Reasoning and Acting)功能,提供更智能的代码安全审计能力。
MCP 允许大模型通过工具调用访问代码仓库,实现更深入的代码分析。
- read_file: 读取指定文件的完整内容
- list_files: 列出指定目录下的所有文件
- search_code: 在代码中搜索指定的文本或模式
- git_diff: 获取指定提交或分支的代码差异
- git_log: 获取Git提交历史
{
"tool_name": "read_file",
"arguments": {
"file_path": "src/main.go"
}
}ReAct 方法通过多轮推理和工具调用来进行代码安全分析:
- 思考(Thought): 分析当前情况,确定下一步行动
- 行动(Action): 调用相应的MCP工具获取信息
- 观察(Observation): 获取工具执行结果
- 重复: 基于观察结果继续推理,直到得出最终结论
思考 → 工具调用 → 观察结果 → 思考 → ... → 最终答案
在 config.yaml 中添加以下配置:
# MCP和ReAct配置
mcp:
# 是否启用MCP功能
enabled: true
# 临时仓库存储路径(可选,默认使用系统临时目录)
temp_repo_path: ""
# 最大推理步骤数
max_steps: 10
# 是否启用详细日志
verbose_logging: true
react:
# 是否启用ReAct审计(替代传统AI分析)
enabled: true
# ReAct模型配置
model: "gpt-4o-mini"
# 温度参数(0.0-1.0)
temperature: 0.1
# 最大重试次数
max_retries: 3- mcp.enabled: 是否启用MCP功能
- mcp.max_steps: ReAct推理的最大步骤数
- react.enabled: 是否启用ReAct审计(替代传统方法)
- react.model: 用于ReAct推理的模型
- react.temperature: 模型温度参数,控制输出的随机性
设置 config.yaml 中的 react.enabled: true 和 mcp.enabled: true。
在Web界面中,每个MR卡片都会显示"🧠 ReAct详情"链接,点击可查看详细的推理过程。
GET /react_audit/{project_id}/{mr_id}
GET /mcp_tools
传统方法:
- 获取MR diff
- 直接发送给大模型分析
- 返回安全问题列表
ReAct方法:
- 获取MR diff
- 克隆代码仓库到本地
- 大模型进行多轮推理:
- 分析代码变更
- 调用MCP工具获取更多上下文
- 深入分析潜在风险
- 生成最终的安全评估报告
| 特性 | 传统方法 | ReAct方法 |
|---|---|---|
| 上下文理解 | 有限 | 深入 |
| 工具调用 | 无 | 支持多种工具 |
| 推理过程 | 单次 | 多轮迭代 |
| 可解释性 | 低 | 高 |
| 准确性 | 中等 | 更高 |
- MCPExecutor: 执行MCP工具调用
- ReActAuditor: 管理ReAct推理过程
- Storage: 存储ReAct审计结果
- Web界面: 展示推理过程和结果
新增 react_audit_results 表:
CREATE TABLE react_audit_results (
id INTEGER PRIMARY KEY AUTOINCREMENT,
project_id INTEGER,
mr_iid INTEGER,
react_result_json TEXT,
created_at DATETIME DEFAULT CURRENT_TIMESTAMP,
UNIQUE(project_id, mr_iid)
);-
ReAct审计失败
- 检查Git仓库访问权限
- 确认MCP工具可用性
- 查看日志获取详细错误信息
-
工具调用失败
- 确认系统已安装git、grep等工具
- 检查文件路径权限
- 验证仓库克隆URL
-
性能问题
- 调整
max_steps参数 - 优化临时目录配置
- 考虑使用更快的模型
- 调整
启用详细日志后,可以在控制台看到:
- ReAct推理步骤
- MCP工具调用
- 错误信息和回退机制
- 更多MCP工具: 添加代码分析、依赖检查等工具
- 自定义工具: 支持用户自定义MCP工具
- 性能优化: 缓存机制、并行处理
- 可视化增强: 更丰富的推理过程展示
欢迎提交Issue和Pull Request来改进MCP和ReAct功能。