多 Agent 代码与数据库变更安全闭环系统
普通变更,AI 自主完成。高危变更,系统停下等人工。
上排红黄徽章不是缺陷,是如实声明的当前边界——本项目把"还没做到的"钉在第一屏。
Demo 视频(75 秒 · 1080p · 中文旁白):Watch Demo
在线体验:git clone 后执行 cd demo-platform && node backend/server.mjs,访问 http://127.0.0.1:4173(若该端口落在 Windows 保留段被拒,服务会自动顺延并在控制台打印实际地址)。零第三方依赖,无需 npm install。也可下载离线包 MergePilot-demo.zip(约 1 MB)。
AI 改代码很快,但企业不敢让它碰生产环境:出了高危漏洞谁负责?改坏了怎么追溯?MergePilot 解决的是"敢让 AI 改"这件事——每一步有审计,高危必须人工点头,拒绝就真的停下。
推荐顺序:① 先跑演示平台(零依赖,无需 Docker);② 需要完整隔离栈时,用离线镜像包 + 一键启动器(外部 Windows 机器已两轮实测 10/10);③ 有网络时可选用 GHCR 镜像(预留,见 DEPLOY.md C)。
git clone https://github.com/nghqqa/MergePilot.git
cd MergePilot/demo-platform
node backend/server.mjs # 打开 http://127.0.0.1:4173Node.js ≥ 18 即可,无需 npm install:前端已预构建(frontend/dist/),三个案例的回放证据随仓库分发(evidence/PHASE14-*,SHA256 锁定)。Windows 也可直接双击 demo-platform/start-demo.bat。
自测:node backend/test/selftest.mjs(54 项:脱敏、回放完整性、API 契约、无泄密扫描;CI 在 Node 18/20/22 上自动运行)。
不想 clone?下载 MergePilot-demo.zip(约 1 MB,已含证据、预检脚本与现场演示手册),解压后进入 MergePilot-demo-现场版 目录,双击 start-demo.bat 或执行 node MergePilot-demo/backend/server.mjs。PPT、视频与完整提交包见 Release v0.2.0。
当前交付:Release v0.2.1——9 镜像 · zstd 单包(265MB · 逐镜像 digest 清单)+ offline-config 配置包(数据库 schema/角色初始化五件套 + start-stack.bat|.sh 两阶段启动器 + env 模板)。
1. 下载 v0.2.1 的镜像包与配置包,解压到同一目录
2. load-images(Windows PowerShell / Linux 脚本均随包提供)
3. 双击 start-stack.bat —— 自动测量容器网络、写 .env、启动 7 服务
4. 验证:6 服务 healthy + PREFLIGHT_OK + http://127.0.0.1:8600 返回 200
可复现性证据:在一台独立外部 Windows 机器上完成两轮验证与一次复验——第一轮暴露交付缺口,十个启动门禁逐个拦下 8 类真实故障;修复后 rev2 版本 10/10 通过标准全 PASS、零干预一键启动。完整加载、校验与故障对照见 DEPLOY.md。
AgentTeams 运行时镜像(嵌入式 Manager + CoPaw worker:Reviewer / Fixer / Verifier)单独提供:runtime-images-20260912。项目最初运行在 WSL2,后整体迁移至 Docker Desktop for Windows 并跑通全流程(由 Controller 统一 reconcile),三条案例的回放数据即产自该环境。
仓库内的 docker-compose.yml 与 Dockerfile.* 是隔离栈镜像的构建配方:开发态由 tools/demo_console/one_click_startup.py 编排调用;离线交付态由配置包内的 start-stack 脚本驱动 docker compose(含数据库 schema 初始化挂载)。源码开发与本地测试命令见 CONTRIBUTING.md。
| 路径 | 案例 | 行为 | 验证点 |
|---|---|---|---|
| 自主完成 | PR #1(普通变更) | AI 审查 → 修复 → 验证,全自动完成,无人工介入 | 项目 completed · PR 保持 OPEN |
| 批准后完成 | PR #2(高危 · CWE-22) | 人工安全门 → 批准 → 修复 → 探针验证(200→404) | 修复有效 · PR 保持 OPEN |
| 拒绝后停止 | PR #3(严重 · CWE-78) | 人工拒绝 → 永久 BLOCKED → 409 终态 | 拒绝不可翻转 · 审计归档 |
Reviewer、Fixer、Verifier 三个 Agent 职责分离、互相制衡:
- Reviewer 只做语义判断与风险分级(NORMAL / HIGH / CRITICAL 三级;
benchmark/数据集对同一维度标注为 L0 / L1 / L2),不修改代码 - Fixer 在被派发前保持 LOCKED,高危时必须等人工门放行
- Verifier 用独立探针复核修复效果(不信任 Fixer 的自述),结果写入 MinIO 证据
- 人工安全门:高危时系统自动暂停(Fixer/Verifier LOCKED),批准或拒绝均为真实人工记录,拒绝后 409 终态不可翻转
- DAG 依赖:review-1 → fix-1 → verify-1,逐级锁定防止越权
Agent 只承担语义判断,六类 Skill 以 Schema、deadline、错误码和 fail-closed 合同执行。Workflow Controller 负责状态机、确定性交接、CAS、超时 HOLD 和回滚;Policy Gateway 负责 ALLOW/DENY/HOLD;GitHub MCP 是隔离服务,PAT 不进入 Worker。
想在自己的环境复用这套 Agent 设计与 Skill?按投入分四级(验证 / 单独跑 Skill / 完整闭环 / 指向你自己的仓库的真实闭环):见 docs/agent-runtime-adoption.md 与 docs/real-loop-your-repo.md。
源图(可编辑 SVG):docs/assets/mergepilot-architecture.svg
全流程已接入阿里云 AgentLoop,Agent + LLM + Tool 三类 span 合并在同一条链路。
权威 Trace:fbf4a3cec0493990d76e10a102418be1(真实 CoPaw 运行,17.6s)
| 指标 | 值 |
|---|---|
| Agent 调用 | 1 |
| LLM 调用 | 24 |
| 工具调用 | 8 |
| 总 Token | 51,890(入 49,867 / 出 2,023) |
| 模型 | deepseek-chat |
| 会话 ID | N2KQqHVSBsSZc9utWsEeZ5f |
span 父子关系:agent_step → invoke_agent → { chat deepseek-chat(原生)+ genai.llm.call(loongsuite 包装)+ tool.projectflow + tool.taskflow + matrix.send }。原生 agentscope span 与 loongsuite 包装 span 共享全局 TracerProvider,天然合并。
内置 8 篇合成演示文档(9 分块),支持自然语言检索并返回引用来源。
- 每次检索返回
query_hash(不保存原文)、top_k、逐条{document_id, chunk_id, score, source_ref} - 无引用来源的答案不会被标记为已验证
- 数据模式为 SYNTHETIC/REDACTED(合成演示集,非企业语料)
- 嵌入:本地确定性 hash-bow-256(无外部服务依赖)
| 项 | 状态 |
|---|---|
| PolarDB | NOT CONNECTED(8 项接入门槛已在代码中预留) |
| Database Branch | SIMULATED(隔离模拟环境上的验证状态机) |
| PR Auto Merge | DISABLED |
支持 create_branch → validate_migration → assert_data → rollback_check 全链路(当前在模拟 fixture 上运行)。真实 PolarDB 接入需满足 8 项门槛后由环境变量切换。
MergePilot/
├── demo-platform/ # 演示平台:前端 + 后端 + RAG + PolarDB 模拟适配器
│ ├── backend/ # 零依赖 Node 后端(server + API + RAG + PolarDB 边界)
│ ├── frontend/ # React 控制台(含预构建 dist)
│ ├── evidence-adapter/# 只读数据适配层 + 内置演示数据集
│ ├── rag-data/ # RAG 合成数据集
│ ├── SKILLS.md # 核心 Skill 清单
│ └── test/ # 自测脚本(54 项)
├── evidence/ # 回放证据子集(SHA256 锁定)
├── shared/ # 数据契约
├── docs/ # 文档与架构图
├── skills/ # Agent Skill 定义
├── config/ # 配置
└── LICENSE # Apache 2.0
结果评估与轨迹评估分开执行、分别呈现:
- 结果评估(最终状态):关联仓库识别、影响表识别、历史风险命中、候选结论、数据核对、回滚检查、人工门终态
- 轨迹评估(过程顺序):先检索 RAG、正确选择工具、创建隔离 Branch、拒绝后锁定、source_refs 保留、Agent→LLM→Tool Trace 形成
即使最终状态正确,若过程顺序违规(如未检索先动手、跳过人工门),轨迹评估仍判不通过。
- 主项目:Python(pyproject.toml)· 1490 tests(可复现命令见 CONTRIBUTING)· 6 类 Skill · 4 Agent 承载 6 类职责
- 演示平台:Node.js 零依赖后端 + React 前端(Vite 预构建)
- 可观测:OpenTelemetry GenAI 语义约定 · loongsuite 探针 · 阿里云 AgentLoop
submission/— 决赛提交文档:SKILLS.md(分级如实口径)、跨仓 Schema 审查 Skill、演示平台 DEPLOY 说明与.env.example、路演备用网页版(含同版 PDF)- 离线交付方案与外部机器验证记录:见 Release v0.2.1 与 DEPLOY.md

