ci-patch-verification-agent

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.

Category
访问服务器

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 条相关测试检查相邻功能。
  • 将验证成功的根因和方法生成经验卡草稿,经过人工审核、范围过滤和重复卡决策后复用。
  • 提供本地 stdio MCP 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 或回退操作。
  • 不开放任意命令执行、任意路径访问或任意文件修改。
  • 不应直接部署为公网代码执行服务。
  • 当前是单机、本地 stdio MCP MVP,未实现多租户权限、远程 MCP、高并发 Worker 或生产级队列。

详细设计见 架构说明安全边界

开源范围

本仓库只包含可公开的独立代码、脱敏示例数据和公开 Issue 的验证说明;不包含 API 密钥、本地数据库、临时工作区、第三方仓库副本或任何私人项目素材。

License

本项目采用 MIT License

推荐服务器

Baidu Map

Baidu Map

百度地图核心API现已全面兼容MCP协议,是国内首家兼容MCP协议的地图服务商。

官方
精选
JavaScript
Playwright MCP Server

Playwright MCP Server

一个模型上下文协议服务器,它使大型语言模型能够通过结构化的可访问性快照与网页进行交互,而无需视觉模型或屏幕截图。

官方
精选
TypeScript
Magic Component Platform (MCP)

Magic Component Platform (MCP)

一个由人工智能驱动的工具,可以从自然语言描述生成现代化的用户界面组件,并与流行的集成开发环境(IDE)集成,从而简化用户界面开发流程。

官方
精选
本地
TypeScript
Audiense Insights MCP Server

Audiense Insights MCP Server

通过模型上下文协议启用与 Audiense Insights 账户的交互,从而促进营销洞察和受众数据的提取和分析,包括人口统计信息、行为和影响者互动。

官方
精选
本地
TypeScript
VeyraX

VeyraX

一个单一的 MCP 工具,连接你所有喜爱的工具:Gmail、日历以及其他 40 多个工具。

官方
精选
本地
graphlit-mcp-server

graphlit-mcp-server

模型上下文协议 (MCP) 服务器实现了 MCP 客户端与 Graphlit 服务之间的集成。 除了网络爬取之外,还可以将任何内容(从 Slack 到 Gmail 再到播客订阅源)导入到 Graphlit 项目中,然后从 MCP 客户端检索相关内容。

官方
精选
TypeScript
Kagi MCP Server

Kagi MCP Server

一个 MCP 服务器,集成了 Kagi 搜索功能和 Claude AI,使 Claude 能够在回答需要最新信息的问题时执行实时网络搜索。

官方
精选
Python
e2b-mcp-server

e2b-mcp-server

使用 MCP 通过 e2b 运行代码。

官方
精选
Neon MCP Server

Neon MCP Server

用于与 Neon 管理 API 和数据库交互的 MCP 服务器

官方
精选
Exa MCP Server

Exa MCP Server

模型上下文协议(MCP)服务器允许像 Claude 这样的 AI 助手使用 Exa AI 搜索 API 进行网络搜索。这种设置允许 AI 模型以安全和受控的方式获取实时的网络信息。

官方
精选