Skip to content

Repository files navigation

RepoPilot — Evidence-first AgentTeam

面向开源与企业研发团队的可审计仓库自治维护 AgentTeam

将 GitHub Issue 与失败 CI 安全推进到携带可验证执行证明的 Pull Request, 也能在 Pull Request 更新时自动完成只读审查并维护一条结构化评论; 全程保留 Agent、Skill、工具、审批、回滚点与经验证据。


RepoPilot 双闭环:从 Issue 到 Verified PR,从 Pull Request 到 Review Comment
6
不同职能 Agent
14
Streamable HTTP MCP 工具
46/46
控制面可靠性测试
0
未审批自动合并

RepoPilot 建立在 AgentTeams v1.2.2 之上,专注于安全、可审计的仓库维护自动化。默认策略为 pull_request_only: Agent 可以创建分支、提交和 Pull Request,但不能自动合并、删除分支、修改权限或密钥。

两条自动化闭环

入口 自动执行 交付物 安全停止点
Issue / Failed CI 分诊 → 根因定位 → 最小补丁 → 独立验证 带 Proof Bundle 的 Pull Request 停在开放 PR
Pull Request 固定 head SHA → 分页读取 Diff / Checks → Reviewer 审查 创建或更新一条托管 Review Comment 只评论,不批准、不改代码

PR 审查链路监听 openedreopenedsynchronizeready_for_review。每次发布前都会重新核对当前 head SHA;如果审查期间出现新提交, 旧 Run 会被拒绝发布。评论带固定的 <!-- repopilot-review --> 标记,因此同一 PR 只维护一条 RepoPilot 评论,不会重复刷屏。

使用过程演示

RepoPilot 完整演示:Webhook 事件、Agent 分诊、根因定位、多文件补丁、并发验证与安全 PR

公开 Issue #3 → 失败 CI → Repo Lead 分诊 → Locator 证明竞态 → Fixer 五文件修复 → Verifier 7/7 验证 → PR #4

打开 Issue → PR 交互 Demo ↗ · 打开 PR → Comment 交互 Demo ↗ · 核验真实 Review Comment ↗ · 观看高清 MP4 · 核验公开 PR #4

在线 Demo 无需模型服务或管理员账号。默认回放 repopilot-testbed#3 的真实交付:失败基线稳定复现并发竞态,RepoPilot 通过 Types + Store + Processor + Tests + Docs 五文件补丁修复,GitHub Actions 通过后创建 PR #4。 PR 保持开放,合并权仍由人类持有。

PR 自动评论会发布什么?
<!-- repopilot-review -->

## RepoPilot PR Review

**Verdict:** NEEDS ATTENTION
**Reviewed revision:** `b504cec7c05cd2f3b84ee9c6ad7a3d3db6eead5c`

### Findings

| Severity | Finding                                | Location                          |
| -------- | -------------------------------------- | --------------------------------- |
| HIGH     | 发布前没有重新校验当前 head SHA        | `src/reviews/publisher.ts:19`     |
| MEDIUM   | 固定只扫描前 100 条评论                | `src/reviews/github-client.ts:43` |
| HIGH     | GitHub 写入失败仍记录“已发布” Evidence | `src/reviews/publisher.ts:31`     |

以下结果来自公开的 PR #5 包含 5 个文件、373 行新增,GitHub Actions CI 已通过; RepoPilot 仍从真实 Diff 中发现 2 条 HIGH 与 1 条 MEDIUM 语义问题,并发布了 公开 Review Comment。 评论由 repopilot-reviewer 使用 pull-request-review Skill 生成,并通过 repopilot_publish_review_comment 发布。工具会校验 Run、仓库、 PR 编号、运行中的 Reviewer Step 和不可变 head SHA,成功后追加 review_publication Evidence。可下载 脱敏 Run Proof JSON 核验 Run ID、Step、8 条 Evidence 与链头哈希。

维护闭环

GitHub Issue / Failed CI
          │
          ▼
   Repo Lead 分诊与拆解
          │
          ▼
 Locator 根因定位 ──► Fixer 最小修复 ──► Verifier 独立验证
                                                │
                  人工审批 ◄── 高风险门禁 ◄─────┤
                                                │
                                                ▼
                                      Archivist 沉淀 Runbook

GitHub Pull Request
          │
          ▼
 Reviewer 固化 head SHA ──► 分页读取 Diff / Checks ──► 更新托管 Review Comment

每个关键阶段都会把决策、工具调用、Git 引用、CI 结果和审批事件写入 PostgreSQL 追加式 SHA-256 证据链,并通过 OpenTelemetry Trace 与证据控制台支持回放。

Proof-Carrying Pull Request

RepoPilot 不把“自动生成 PR”作为终点,而是让每个 PR 携带一份机器可核验的 Proof Bundle

Run 身份 + AgentTeams Step 时间线 + Skill 版本
         + 工具与决策 Evidence + Git / CI 引用
         + 审批历史 + SHA-256 链根 + 确定性质量门禁
curl http://127.0.0.1:3000/api/v1/runs/<run-id>/proof \
  --output artifacts/proof-bundle.json
pnpm build
pnpm evaluate artifacts/proof-bundle.json artifacts/evaluation-report.json

Proof Score 衡量证明完整性,不把控制面测试冒充模型修复质量;补丁正确性仍由公开 测试床、独立 Verifier 与 GitHub Checks 判定。

完成 Runbook 归档后,Archivist 调用 repopilot_publish_proof_comment,将脱敏后的 完整性结果、Agent/Skill 执行结果和 SHA-256 链根幂等发布到对应 PR。重复执行会更新 同一条评论,因此 Proof 真正随 PR 交付,而不是只存在于控制面 API。

为什么是 RepoPilot

问题 RepoPilot 的处理方式 可验证证据
Issue 分诊依赖人工 Repo Lead 统一分类、风险判断和 DAG 拆解 任务计划、Matrix 事件、Run 状态
自动修复容易直接猜答案 Locator 与 Fixer 职责分离,先复现和证明根因 复现命令、代码位置、影响面、补丁
修复者自行验证存在偏差 Verifier 独立运行 before/after 测试与 GitHub Checks 测试结果、Check Runs、残余风险
高风险动作缺少控制 合并等动作要求带版本号的一次性人工审批 审批人、意见、版本、消费时间
经验无法复用 Archivist 查重、脱敏并写入 Runbook 来源 Run、证据链、检索结果

AgentTeam

Agent 职责 自主边界
Repo Lead 分诊、风险判断、DAG 拆解、任务委派 不修改代码;高风险动作必须发起审批
Locator 复现、代码/符号定位、影响面分析 仅读取和实验,不修改仓库
Fixer 最小补丁、回归测试、分支、提交、PR 停在 Pull Request,不合并、不强推
Verifier 独立复现、测试、CI 和残余风险验证 不修改补丁,不把绿灯视为合并授权
Archivist Runbook 查重、脱敏、结构化和沉淀 不修改仓库或 GitHub 状态
Reviewer 按不可变 head SHA 审查 PR 并发布结构化评论 不审批、不改代码、不合并

Agent Identity 完整定义位于 deploy/agentteams/repopilot-team.yaml, Skill 契约位于 skills/

核心能力

AgentTeams 原生协作
使用官方 agentteams.io/v1beta1 Worker/Team CRD、Team Leader、 Matrix 房间、共享任务状态与 MinIO 工作区,而不是自建多 Agent 模拟器。
Skill 与 MCP 工程化
提供 6 个 Apache-2.0 自定义 Skill 与统一版本化 Manifest;控制面暴露 14 个 Streamable HTTP MCP 工具,覆盖 Agent Step、Evidence、审批、Runbook、Issue、PR、 Changed Files、Checks、PR Review Comment、PR Proof Comment 和受控合并。
不可变执行证据
Evidence 使用 canonical JSON 与 SHA-256 哈希链;数据库触发器拒绝更新和删除。 控制台会重新验证完整链路并展示 CHAIN VERIFIED
生产级安全边界
包含 GitHub 仓库 allowlist、Webhook HMAC 验签、delivery 并发幂等、显式状态机、 审批乐观锁和审批一次性消费。
RAG 与可观测
PostgreSQL 提供 Runbook 全文检索并预留 pgvector;可选接入阿里云官方 alibabacloud-agentloop-experience Skill。OpenTelemetry 通过 OTLP 输出 HTTP、Agent Skill、MCP 与端到端 Run Trace 和 Metrics。

系统架构

flowchart LR
    GH[GitHub Issue / Failed CI / Pull Request] --> CP[RepoPilot Control Plane]
    CP --> DB[(PostgreSQL + pgvector)]
    CP --> MX[Matrix Admin → Manager DM]
    MX --> M[AgentTeams Manager]
    M --> TL[Repo Lead]
    TL --> L[Locator]
    TL --> F[Fixer]
    TL --> V[Verifier]
    TL --> A[Archivist]
    M --> R[Reviewer]
    L & F & V & A --> MCP[RepoPilot MCP via Higress]
    R --> MCP
    MCP --> GHAPI[GitHub REST API]
    MCP --> DB
    DB --> UI[Evidence Console]
    CP --> OTEL[OTLP / AgentLoop / LoongSuite]
Loading

更多设计细节见 docs/architecture.md

工程结构

RepoPilot/
├── apps/
│   ├── control-plane/       # Fastify REST / Webhook / MCP / 审批 / 证据账本
│   └── console/             # 飞行记录器风格 React 证据控制台
├── packages/contracts/      # Zod Schema、共享类型和显式状态机
├── deploy/agentteams/       # AgentTeams v1.2.2 Worker / Team 清单
├── skills/                  # 6 个可复用 RepoPilot Skills
├── evaluation/              # Proof Bundle 协议与可靠性 Benchmark
├── scripts/                 # Skill 校验、可靠性基线与离线评测
├── docs/                    # 架构、安全、部署和 Demo 文档
├── CONTRIBUTING.md          # 开发流程、质量门禁与贡献规范
├── API.md                   # REST / Webhook / MCP 出入参
├── Method.md                # 外部 SDK、HTTP Method 与调用契约
└── docker-compose.yml       # PostgreSQL 16 + pgvector

快速开始

环境要求

  • Node.js 20+
  • pnpm 9+
  • Docker Desktop / Docker Engine

模型凭证不是构建、测试或本地控制面运行的前置条件。

git clone https://github.com/wellkilo/RepoPilot.git
cd RepoPilot
cp .env.example .env
docker compose up -d postgres
pnpm install --registry=https://registry.npmjs.org
pnpm build
pnpm --filter @repopilot/control-plane start

访问控制台:

http://127.0.0.1:3000

也可以使用一键初始化:

./init.sh

创建首个 Run

curl -X POST http://127.0.0.1:3000/api/v1/runs \
  -H 'Content-Type: application/json' \
  -d '{
    "source": {
      "type": "github_issue",
      "repository": "wellkilo/repopilot-testbed",
      "issueNumber": 1
    },
    "executionPolicy": "pull_request_only"
  }'

需要读取 GitHub Issue 时,在本机 .env 配置 GITHUB_TOKEN。如果没有配置 AgentTeams Matrix,Run 会停在 awaiting_dispatch,不会用 Mock Agent 伪造执行结果。

绑定仓库 Webhook 的 Pull requests 事件后,非 Draft PR 的创建、重新打开、推送新 提交或转为 Ready for review 都会触发独立审查 Run。Reviewer 读取 PR、分页 diff 和 Checks,并幂等创建或更新一条 RepoPilot PR Review 评论;若 PR 在审查期间产生新 提交,旧 Run 会因 head SHA 不一致而拒绝发布。

AgentTeams 真实协作

真实 Agent 推理需要一个 OpenAI 兼容模型端点,可以使用:

  • 阿里云百炼等托管服务;
  • 其他 OpenAI 兼容 API;
  • 本地 Ollama 等兼容端点。

模型密钥只交给 AgentTeams/Higress,不进入 RepoPilot 源码、数据库或部署清单。

部署说明:

可复现测试床

仓库 wellkilo/repopilot-testbed
Issue #3 · Duplicate webhook retries dispatch multiple maintenance tasks
失败基线 GitHub Actions Run 32444544920
修复 PR Pull Request #4 · 5 files · +75 / -22
绿色 CI GitHub Actions Run 32444690068 · 7/7 tests
Review PR Pull Request #5 · 5 files · +373 / -0
Review Comment 2 HIGH + 1 MEDIUM · revision b504cec
Review CI / Proof GitHub Actions Run 32557838055 · 8-entry evidence chain

测试床包含一个确定性并发缺陷:相同 GitHub delivery 的两个请求可同时穿透 find / save 窗口,创建两个 task 并执行两次 dispatch。RepoPilot 将 create-or-reuse 收口到 DeliveryTaskStore.getOrCreate,使相同 delivery 共享一个 in-flight Promise,并补充顺序重试和不同 delivery 的负对照。 PR 保持开放,便于审查且未触发自动合并。

PR Review Demo 使用独立的公开 PR #5:代码可编译、5 项测试与 GitHub Actions 均通过,但 Reviewer 没有把绿色 CI 等同于代码正确。它逐页读取 5 个变更文件, 在固定 revision b504cec 上识别 stale SHA、评论分页和失败 Evidence 三个语义缺陷, 并通过真实 GitHub REST 发布同一条托管评论。该 Run 的 review_publication 记录与 8 条 哈希链 Evidence 已脱敏导出到 docs/assets/demo/pr-review-run.json

验证

pnpm typecheck
pnpm benchmark:reliability
pnpm skills:validate
pnpm lint
pnpm format:check
pnpm build

当前控制面可靠性基线为 46/46。测试覆盖状态机、Webhook 验签、证据哈希、数据库 不可变触发器、delivery 并发幂等、审批版本与一次性消费、Agent Skill Step 生命周期、 Proof Bundle 完整性校验、PR Review 来源与 stale SHA 防护、HTTP 冲突语义及控制台标签。 CI 生成结构化 JSON 报告。

安全边界

默认允许 必须人工审批
读取 Issue / PR / CI、创建分支与提交、推送非保护分支、创建 Pull Request、 创建或更新托管审查评论、读取 Checks、记录 evidence 合并 Pull Request、删除分支、破坏性回滚、修改权限、修改密钥、执行其他高风险工具

详细威胁模型与生产加固项见 docs/security.md

文档导航

文档 内容
API.md REST、Webhook 和 MCP Schema
Method.md AgentTeams、Matrix、GitHub、PostgreSQL 和 OTel 方法契约
docs/architecture.md 架构、状态机和部署剖面
docs/security.md 权限、审批、凭证和 evidence 完整性
docs/deployment.md 本地、AgentTeams、Webhook 和可观测部署
docs/demo.md 公开复现流程、运行证据与失败分支
evaluation/README.md 可靠性分层、Proof Bundle 和 Benchmark
docs/roadmap.md 工程路线图与待完善能力
CONTRIBUTING.md 开发环境、质量门禁和贡献流程

当前边界

  • 未配置模型服务时,不能完成真实 AgentTeams 推理;构建、测试、控制面和测试床不受影响。
  • Runbook 默认使用 PostgreSQL 全文检索;vector(1536) 已为语义召回预留。
  • AgentLoop Recall 是可选能力,没有凭证时自动降级到本地 Runbook。
  • 控制台审批身份当前通过受信反向代理 Header 演示;生产环境必须接入 OIDC/SSO。

RepoPilot · Make repository automation observable, reviewable and reversible.

Apache-2.0

About

Auditable repository maintenance AgentTeam with evidence-backed pull requests, automated code review, and human approval gates.

Topics

Resources

Contributing

Security policy

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages