ci-patch-verification-agent
This MCP server enables managing CI patch verification workflows by creating, running, tracing, previewing, and canceling patch verification tasks through local stdio tools.
README
CI Patch Verification Agent
一个面向 Python CI / 单元测试失败场景的本地 Agent 工作流示例。系统不会让模型直接修改代码,而是将故障复现、受控排查、候选补丁、沙盒验证、人工审批和测试回归串成可追踪的流程。
定位:个人学习项目与本地工程化 MVP,不是生产级自动修复平台,也不会自动提交、推送或创建 PR。
解决的问题
CI 测试失败后,开发者通常需要反复查看报错、定位源码、尝试修改并重新跑测试。直接让模型给出补丁不够可靠:它可能误解报错、修改错误位置,或让目标测试通过但破坏相邻功能。
本项目将模型限制在“分析和提出候选动作”的范围内,并保留验证和人工决策门槛。
flowchart LR
A[提交故障任务] --> B[检索已审核经验卡]
B --> C[复现目标测试]
C --> D[受控读取与排查]
D --> E[生成候选补丁]
E --> F[沙盒验证]
F --> G{人工审批}
G -->|批准| H[写入任务副本]
H --> I[目标测试与相关测试]
G -->|拒绝| J[安全结束]
I --> K[审核后沉淀经验卡]
已实现能力
- 使用 LangGraph
StateGraph编排任务状态和条件分支。 - 使用 FastAPI 提供创建、运行、查询、审批和取消任务的本地接口。
- 通过 SQLite 保存任务、State、Trace、证据、快照和审批记录。
- 模型只输出受 Schema 约束的动作;工具层额外校验名称、参数、路径、文件类型、步骤数和超时。
- 候选补丁先展示 diff 并在独立 Workspace 中验证;人工批准后才允许写入任务副本。
- 先运行目标测试验证原故障,再运行最多 5 条相关测试检查相邻功能。
- 将验证成功的根因和方法生成经验卡草稿,经过人工审核、范围过滤和重复卡决策后复用。
- 提供本地
stdioMCP Server,暴露创建、运行、查询、查看 Trace、预览补丁和取消任务等 6 个 Tool。
验证证据
项目使用 3 个公开 Python 故障任务验证受控闭环:
- Tenacity #233:配置复制时遗漏
retry_error_callback。 - more-itertools #658:
split_after(..., maxsplit=1)的边界条件错误。 - python-dateutil #981:无效日期应包装为
ParserError,但泄漏了TypeError。
三个任务均完成“复现失败 → 候选补丁 → 沙盒验证 → 人工批准 → 目标测试通过”的受控闭环。当前项目自身测试基线为 324 passed, 1 warning。
上述闭环结果是本地验证记录。公开仓库只提供 Agent、测试和脱敏评测素材,不内置第三方目标仓库副本;要复现完整闭环,需要自行取得相应公开仓库并放入本地 targets/,再按权限和版本说明运行。
跨仓库范围过滤用的合成占位样本单独放在 data/evaluation_scope_fixtures.json,不会进入正式经验卡库。
快速开始
1. 本地 Python 运行
要求:Python 3.11。
git clone https://github.com/liaohaodong1122-rgb/ci-patch-verification-agent.git
cd ci-patch-verification-agent
Copy-Item .env.example .env
pip install -r requirements-dev.txt
python -m pytest -q tests
uvicorn api.main:app --host 127.0.0.1 --port 8001
打开 http://127.0.0.1:8001/ 查看本地操作页,或访问 http://127.0.0.1:8001/docs 查看 API 文档。
模型调用需要在本地 .env 中配置兼容接口;测试不需要真实模型密钥。
2. Docker 运行
Copy-Item .env.example .env
docker compose up --build
容器只挂载本地 targets/ 目录为只读输入。请将自己有权使用的测试仓库放在该目录下;本仓库不包含任何第三方目标仓库副本。
MCP Tools
本地 MCP Server 默认使用 stdio,提供以下 Tool:
| Tool | 作用 |
|---|---|
create_ci_task |
创建受控故障诊断任务 |
run_ci_task |
启动任务 |
get_ci_task |
查询任务状态 |
get_ci_trace |
查看 Trace 与证据 |
get_ci_patch_preview |
查看候选补丁预览 |
cancel_ci_task |
请求取消任务 |
MCP 只负责标准化工具接入。它不直接读写源码、SQLite 或模型,也不提供批准补丁的 Tool;审批仍由本地操作员完成。
安全边界
- 不自动写入原始目标仓库,只操作每个任务的独立副本。
- 不自动执行 Git commit、push、PR 或回退操作。
- 不开放任意命令执行、任意路径访问或任意文件修改。
- 不应直接部署为公网代码执行服务。
- 当前是单机、本地
stdioMCP MVP,未实现多租户权限、远程 MCP、高并发 Worker 或生产级队列。
开源范围
本仓库只包含可公开的独立代码、脱敏示例数据和公开 Issue 的验证说明;不包含 API 密钥、本地数据库、临时工作区、第三方仓库副本或任何私人项目素材。
License
本项目采用 MIT License。
推荐服务器
Baidu Map
百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。
Playwright MCP Server
一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。
Magic Component Platform (MCP)
一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。
Audiense Insights MCP Server
通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。
VeyraX
一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。
graphlit-mcp-server
模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。
Kagi MCP Server
一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。
e2b-mcp-server
使用 MCP 通过 e2b 运行代码。
Neon MCP Server
用于与 Neon 管理 API 和数据库交互的 MCP 服务器
Exa MCP Server
模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。