skill
auto-pr-workflow
全自动 PR 提交工作流 — 从代码变更到合并,最大限度减少人工干预
Set up
Skills are installed by placing their folder where your agent loads skills.
The download comes from github.com/KuaaMU/auto-pr-workflow itself, not from our server, so what you get is exactly what its author published.
Install instructions come from the README
README
synced Oct 25, 2026Auto-PR Workflow
教 AI Agent 自主提交高质量 PR 的方法论。
不是自动化脚本,不是 CLI 工具 — 是一套让 Agent 像资深贡献者一样思考、分析、执行的工作流。
核心原则
- 先理解,再动手 — 不读完 README/CONTRIBUTING/CI 不写一行代码
- 最小修复 — 改动越小越容易被 merge,不要顺手重构
- 维护者视角 — 每个 PR 都在增加维护者的审查负担,你的 PR 必须值得
- 诚实透明 — PR 描述说清楚改了什么、为什么、怎么验证,不夸大
- 知道何时不 PR — 项目明确拒绝 AI PR、没有真实痛点、改动有风险 → 停下来
- 合并率是唯一硬指标 — < 10% 就停止提交,先推已有 PR 合并
工作流
深度分析项目(README、CONTRIBUTING、CI、Issues、代码)
│
▼
维护者友好度评估(该项目接受 AI PR 吗?)
│
▼
制定策略(什么 PR 有价值、什么会被拒绝)
│
▼
调用 Claude Code 执行代码工作(小任务、精确指令)
│
▼
自审 + 测试(第二个实例审查,覆盖并发/崩溃/边界)
│
▼
提交 PR + 监控 CI
│
▼
回应审查反馈 + 修复
│
▼
结构化复盘 + 更新方法论
信任梯度
Agent 应该像一个有礼貌的新贡献者一样,渐进式建立信任:
| 接触次数 | 贡献类型 | 风险 |
|---|---|---|
| 第一次 | 文档修复 / Typo 修正 | 零风险,建立存在感 |
| 第二次 | 补充测试用例 | 低风险,展示技术能力 |
| 第三次+ | 修复 Bug(有复现步骤) | 中风险,此时已有信任基础 |
安装
方式一:Hermes Agent(推荐)
hermes skills install https://raw.githubusercontent.com/KuaaMU/auto-pr-workflow/main/skills/auto-pr-workflow/SKILL.md -y
方式二:手动安装
git clone https://github.com/KuaaMU/auto-pr-workflow.git
cd auto-pr-workflow
# 核心方法论在 skills/auto-pr-workflow/SKILL.md
前置依赖
- Git
- GitHub CLI (
gh) 并登录 - Python 3.8+(用于批量审计脚本)
- Claude Code 或其他 AI Agent 框架
# 安装 GitHub CLI
brew install gh # macOS
# 或
sudo apt install gh # Ubuntu
# 登录 GitHub
gh auth login
使用教程
1. 单次执行:提交一个 PR
方式 A:让 Agent 自主执行
# 使用 Hermes Agent
hermes delegate_task --goal "分析项目 X,提交一个有价值的 PR" \
--context "使用 auto-pr-workflow skill 的方法论"
方式 B:指定具体项目和 Issue
hermes delegate_task --goal "为 warpdotdev/warp 修复 Issue #9745" \
--context "
项目:warpdotdev/warp (Rust, ⭐51K)
Issue:#9745 - Add Hermes CLI agent detection
要求:
1. 先读 CONTRIBUTING.md 和 AGENTS.md
2. 检查是否有 .agents/ 目录(AI 友好项目)
3. 用 auto-pr-workflow skill 的方法论执行
4. 提交后更新 PR-LOG.md
"
方式 C:并发提交多个 PR
hermes delegate_task --role orchestrator --tasks '[
{
"goal": "为 projectA 提交 PR",
"context": "项目语言: Go, Issue: #123, 修复方案: ...",
"toolsets": ["terminal", "file"]
},
{
"goal": "为 projectB 提交 PR",
"context": "项目语言: Rust, Issue: #456, 修复方案: ...",
"toolsets": ["terminal", "file"]
}
]'
2. 批量 PR 审计
检查所有 open PR 的状态:
# 进入 skill 目录
cd ~/.hermes/skills/auto-pr-workflow
# 运行审计脚本
python3 scripts/batch-pr-audit.py
输出示例:
🔍 Fetching open PRs... (2026-05-02 10:00 UTC)
Found 26 external open PRs
============================================================
📊 PR WATCHDOG REPORT (26 external open PRs)
============================================================
✅ READY TO MERGE (1)
chenhg5/cc-connect #828 — feat: add DingTalk image message handling
CI: 5/5 passing | https://github.com/chenhg5/cc-connect/pull/828
⚠️ NEEDS ACTION (2)
delucis/astro-og-canvas #172 — docs: add bgImage usage examples
Changes requested by: ['delucis']
PostHog/posthog-js #3508 — fix: consume fetch response body
CI: 7 real failures
📭 NO ACTIVITY (16)
...
Summary: ✅1 ⚠️2 💬7 🔀0 💤0 📭16
3. 持续监控(Cron Job)
设置定时任务自动监控 PR 状态:
# 创建 cron job,每 2 小时检查一次
hermes cronjob create \
--name "PR 状态复查" \
--schedule "0 */2 * * *" \
--prompt "
你是 PR 监控 Agent。运行 batch-pr-audit.py 脚本检查所有 open PR。
如果有以下事件,通知用户:
- ✅ PR 被合并
- ❌ CI 持续失败
- ⚠️ 维护者请求修改
- 🔀 合并冲突
无事件时只回复:✅ PR 状态正常,无需干预。
" \
--skills '["auto-pr-workflow"]' \
--deliver telegram
4. 查看 PR 记录
# 查看 PR-LOG.md
cat ~/.hermes/skills/auto-pr-workflow/PR-LOG.md
# 查看案例库
ls ~/.hermes/skills/auto-pr-workflow/test-records/
5. 自定义配置
修改 OWN_REPOS(排除自有仓库)
编辑 scripts/batch-pr-audit.py:
OWN_REPOS = {"KuaaMU/omnihive", "KuaaMU/auto-pr-workflow", "KuaaMU/clay"}
修改合并率阈值
MERGE_RATE_THRESHOLD = 0.10 # 10%,低于此值报警
修改 stale 检测天数
STALE_DAYS = 7 # 超过 7 天无更新视为 stale
项目结构
auto-pr-workflow/
├── skills/
│ └── auto-pr-workflow/
│ ├── SKILL.md # 核心方法论(v3.12.0)
│ ├── PR-LOG.md # PR 提交记录
│ ├── scripts/
│ │ └── batch-pr-audit.py # 批量 PR 审计脚本
│ └── references/ # 详细文档
│ ├── anti-patterns.md # 20+ 失败模式
│ ├── gh-cli-quirks.md # GitHub CLI 坑点
│ ├── rust-clippy-patterns.md
│ ├── batch-pr-audit.md
│ └── ...
├── test-records/ # 案例库
└── README.md
战略原则
做减法再做加法:合并率 < 10% 时,停止提交新 PR,优先推动已有 PR 合并。
| 合并率 | 策略 |
|---|---|
| < 10% | 停止新 PR,全力跟踪现有 PR |
| 10-30% | 放慢节奏,增加跟踪频率 |
| > 30% | 可以继续提交 |
实战统计
口径声明(重要):本仓库的 PR 数字不能与 AIInfra 课程贡献合并统计—— 两者性质完全不同:AIInfra 是受聘人工编写(12 提交/11 合并,2025-09
12), 本节是 agent 流水线产出(2026-0405 自动化窗口)。
| 分类 | PR 总数 | 已合并 | 未合并/关闭 | open | 合并率 |
|---|---|---|---|---|---|
| 本流水线(外部仓库) | 66 | 18 | 42 | 6 | 27.3% |
| 本仓库自提(auto-pr-workflow 等) | 6 | 6 | 0 | 0 | — |
| AIInfra 课程贡献(人写,另计) | 11 | 11 | 0 | 0 | — |
全账号共 83 个 PR,覆盖 20 个仓库(含自有)。
① agent 流水线产出的已合并 PR(外部仓库)
| 项目 | PR | 描述 | 合并日期 |
|---|---|---|---|
| anthropics/claude-agent-sdk-python | #219 | Fix Windows test failures due to path separator issues | 2025-10-07 |
| anthropics/claude-agent-sdk-python | #245 | handle Windows command line length limit for --agents op | 2025-10-11 |
| chenhg5/cc-connect | #828 | add DingTalk image message handling | 2026-04-30 |
| entireio/cli | #1086 | use agent-neutral wording in explain empty-state message | 2026-04-30 |
| h4ckf0r0day/obscura | #73 | implement CharacterData DOM API for jQuery DataTables co | 2026-04-30 |
| DeusData/codebase-memory-mcp | #306 | add .m extension to EXT_TABLE for content-based disambig | 2026-04-30 |
| rtk-ai/rtk | #1645 | remove max_lines cap from helm filter that truncates tem | 2026-04-30 |
| garritfra/cell | #85 | escape quotes and backslashes in .cell format labels | 2026-04-30 |
| marco-prontera/vite-plugin-css-injected-by-js | #166 | update outdated GitHub Actions and improve CI reliabilit | 2026-04-30 |
| tod-org/tod | #1577 | replace once_cell with std::sync::LazyLock | 2026-04-30 |
| mco-org/mco | #83 | close stdout/stderr pipes in AcpTransport.close() | 2026-04-30 |
| esengine/DeepSeek-Reasonix | #62 | add unit tests for clipboard.ts | 2026-05-01 |
| bytecodealliance/wrpc | #1170 | add Unix Domain Socket transport example | 2026-05-01 |
| warpdotdev/warp | #9833 | add Hermes CLI agent detection and configuration | 2026-05-01 |
| go-openapi/runtime | #422 | handle literal colons in URL paths for denco router | 2026-05-01 |
| kontext-security/kontext | #88 | add exponential backoff to sidecar heartbeat loop | 2026-05-01 |
| NodeJSmith/hassette | #644 | install fd-find so docker requirements tests run in CI | 2026-05-02 |
| esengine/DeepSeek-Reasonix | #911 | sensitive-path pattern guard for run_command args (#259) | 2026-05-15 |
⚠️
facebook/openzl#702 是特例:GitHub API 的merged字段为false, 但 Meta 通过内部 diff 同步落地(meta-codesync[bot]记录 + 官方Merged标签), 维护者公开回复 "Good find @KuaaMU !"。代码确实合入,只是未经 GitHub merge 动作。
② 自有仓库(6 个)
| 项目 | PR | 描述 | 合并日期 |
|---|---|---|---|
| KuaaMU/swarmmind | #3 | SwarmMind v1 bootstrap — Zod schemas, LiquidityAgent, Co | 2026-03-16 |
| KuaaMU/omnihive | #6 | Execution Control Plane - Phase 0-4 Complete | 2026-03-19 |
| KuaaMU/auto-pr-workflow | #5 | Add skill: auto-pr-workflow | 2026-04-29 |
| KuaaMU/auto-pr-workflow | #4 | add submit.sh tests | 2026-04-29 |
| KuaaMU/auto-pr-workflow | #3 | resolve all shellcheck warnings | 2026-04-29 |
| KuaaMU/auto-pr-workflow | #2 | add checks.sh tests and fix bash syntax validation | 2026-04-29 |
③ AIInfra 课程贡献(11 个,人工编写)
| 项目 | PR | 描述 | 合并日期 |
|---|---|---|---|
| Infrasys-AI/AIInfra | #175 | 增加Gpipe的小节,调整了小节的顺序,使实验路线更平缓 | 2025-09-11 |
| Infrasys-AI/AIInfra | #211 | 增加了最终的对比测试。添加显存占用对比 | 2025-09-21 |
| Infrasys-AI/AIInfra | #233 | 补充更新Code03Pipeline.md文件 | 2025-09-26 |
| Infrasys-AI/AIInfra | #238 | 4.3.1初试 | 2025-09-28 |
| Infrasys-AI/AIInfra | #245 | 单GPU模拟测试 | 2025-10-05 |
| Infrasys-AI/AIInfra | #277 | 修改Code01ZeRO、Code04Expert | 2025-10-12 |
| Infrasys-AI/AIInfra | #285 | fix/Code01ZeRO:大幅度修改实验代码,添加文本介绍 | 2025-10-14 |
| Infrasys-AI/AIInfra | #303 | Fix:Code02Megatron,修改分布式训练代码,并验证 | 2025-10-24 |
| Infrasys-AI/AIInfra | #322 | Fix:补充验对比验证TP内存优化 | 2025-11-05 |
| Infrasys-AI/AIInfra | #327 | 修正启动方式,可在jupyter内一键自动运行。同步markdown文件。 | 2025-11-07 |
| Infrasys-AI/AIInfra | #365 | OpenCompass实践 | 2025-12-06 |
实验结论(负结果,如实记录)
- 自动化窗口外部合并率 27.3%(18/66),低于本项目之前的手写期 68%。
- 据此于 2026-08 停止对陌生仓库的自动化批量投递, 改为只对有真实痛点、维护者明确欢迎 PR 的仓库定向提交。
- 失败模式已沉淀进
anti-patterns/,每条附真实仓库与 PR 编号。
关键教训
| 教训 | 来源 |
|---|---|
| 必须先开 Issue 讨论再提交实现 | config-rs #751 |
| 测试必须验证真实逻辑而非 Mock 行为 | dali2mqtt #72 |
| Fork PR 必须从干净 upstream 分支创建 | rtk #1645 |
| 自审必须覆盖错误路径和并发场景 | dingo #86 |
| squash merge 不一定设置 mergedAt | openzl #702 |
| C 项目首次构建慢,用 background=true | codebase-memory-mcp #306 |
| git config user.name 必须匹配 GitHub 身份 | daily-api #3836 |
常见问题
Q: 如何判断一个项目是否接受 AI PR?
检查以下信号:
- 有
.agents/或AGENTS.md文件 - CONTRIBUTING.md 提到 "you can use any coding agent"
- 有
ready-to-implement或good first issue标签 - 近期有 AI agent 提交的 PR 被合并
- 有 AI review bot(Oz、CodeRabbit、Copilot)
Q: PR 提交后多久能合并?
取决于项目活跃度:
- 活跃项目:1-7 天
- 一般项目:1-4 周
- 不活跃项目:可能永远不合并
建议:14 天无更新的 PR 发一条友好提醒。
Q: CI 失败怎么办?
- 检查是否是预期失败(Vercel fork 授权、artifact upload)
- 运行
gh run view <RUN_ID> --log-failed查看具体原因 - 修复代码后 push,CI 会自动重跑
- 如果是基础设施问题,push 空 commit 触发 re-run
Q: 如何提高合并率?
- 选择 AI 友好项目
- 首次贡献只做 docs/typo
- 修复真实 Bug 而非添加功能
- 小 PR(< 10 文件)更容易被审查
- 提供完整的测试覆盖
Q: 如何处理 CodeRabbit/Copilot 的审查?
- 先检查反馈是否有效
- 如果建议合理,修复代码后回复
- 如果是误报,礼貌解释
- 添加回归测试是最有力的回应
与竞品的区别
| Qodo Merge / CodeRabbit | Sweep / Devin | Auto-PR Workflow | |
|---|---|---|---|
| 主体 | CLI / 服务 | Agent | Skill(方法论) |
| 思考方式 | 固定流程 | 任务执行 | 深度分析 + 自主决策 |
| 适用场景 | 代码审查 | 自动修复 | 开源贡献全流程 |
| 独立运行 | ✅ | ✅ | 需要 Agent 框架 |
贡献
欢迎贡献!请先阅读 CONTRIBUTING.md。
License
MIT