有没有试过向不懂技术的朋友解释什么是 Pull Request,然后眼睁睁地看着他们的眼神像 Krispy Kreme 传送带一样变得茫然?现在想象一下,告诉他们 AI 不仅能理解你的代码仓库,还能为你打开 PR。欢迎来到 2025 年,在这里,你的代码编辑器既是副驾驶,又是后座司机,如果设置得当,还是一个相当不错的实习生。
本指南将向你展示如何将 GitHub 连接到 Claude Code 并自动生成 Pull Request。我们将通过循序渐进的设置、真实的 workflow 和一些需要避免的陷阱,从“啥?”到“发布!”。你将连接 GitHub,让 Claude Code 了解正在发生的事情,并让它打开和更新你可以实际合并的 PR,而不会觉得自己与算法恶魔达成了交易。
注意:你将在这里看到两条主要路径——使用 Claude Code 的 GitHub Actions 集成,以及使用 Model Context Protocol (MCP) 服务器,为 Claude 提供对 GitHub API 的安全、限定范围的访问权限。你应该选择哪一个?如果你想在 GitHub 中获得即插即用的 PR 帮助,Actions 路线是你的最佳选择。如果你想要本地的、聊天驱动的代码仓库控制以及精细的权限控制,MCP 是你的强大工具。
我们将构建什么
- 安全地将 GitHub 连接到 Claude Code。
- 让 Claude 分析你的代码仓库,提出更改建议并打开 PR。
- 添加防护措施,这样它就不会将你的整个 monorepo 重命名为“final_final_v2”。
为什么这很重要
因为上下文切换是没有人投票的生产力税。AI 可以像初级开发人员(状态好的时候)一样严谨地打开 PR,这实际上可以节省时间。不是为了取代人类——冷静——而是为了取代工程中“唉,样板文件”的部分。
路径 A:使用 Claude Code GitHub Actions 自动生成 PR
如果你整天都在 GitHub 中(加入俱乐部),这条路径会为你提供一个机器人,它可以分析 issue 和 PR 中的代码,提出更改建议,甚至可以直接从你的代码仓库中打开或更新 PR。
你需要什么
- 你控制的 GitHub 代码仓库(或你可以随意破坏的分支)。
- 代码仓库的管理员权限,用于配置 Actions 和 secrets。
- 如果你的 action 或 workflow 需要,则需要一个 Claude API 密钥。
步骤 1:在你的代码仓库中启用 GitHub Actions
- 转到你的代码仓库 → 设置 → Actions → 常规。
- 启用“允许所有 actions 和可重用 workflow”(或者,如果你的安全人员已经在侧目,则限制为你的组织批准的 actions)。
步骤 2:添加 Claude Code workflow
创建 .github/workflows/claude-pr-bot.yml,并根据你喜欢的 workflow 设置触发器。以下是两种常见的模式:
选项 1:Issue 驱动的 PR
- 当你打开一个带有特殊标签(例如,ai-pr)的 issue 时,workflow 运行。
- 它读取 issue 提示(例如,“添加暗黑模式切换”),创建一个新分支,使用 Claude 编辑文件,推送提交,并打开一个带有详细摘要的 PR。
选项 2:对现有 PR 进行评论驱动的编辑
- 当你评论 @claude please refactor the settings modal 时,workflow 运行。
- 它分析 diff,提出更改建议,并将更新推送到 PR 分支。
启动 workflow(高级草图)
name: Claude PR Bot
on:
issues:
types: .
- 关于集成和用例的快速指南让你从鸟瞰的角度了解在实际团队中哪些自动化是合理的(以及哪些不是)。
- 如果你是视觉学习者,这个演练会从头到尾展示自动生成的 AI PR 的实际操作。
路径 B:通过 MCP 将 GitHub 连接到 Claude Code(适用于本地高级用户)
如果你希望 Claude 处理你的本地代码仓库上下文——你机器上的文件、你正在处理的分支、你信任的命令——MCP 为你提供了一个经过授权的桥梁。把它想象成你代码仓库的门卫:它决定 Claude 可以打开哪些门。
你需要什么
- Claude Desktop 或支持 MCP 工具的 IDE 集成。
- 你在本地运行的 GitHub MCP 服务器,配置了一个限制范围的 token。
- 一个个人访问令牌 (PAT),只具有你真正需要的范围(例如,repo:status、public_repo、pull_request write)。
步骤 1:获取 GitHub MCP 服务器
- 有一个官方的开源服务器,它公开了选定的 GitHub API 操作(搜索 issue、创建分支、打开 PR 等)。它是可配置的,因此你只需启用你需要的内容,这也可以减少 AI 的混乱,并让安全性得到保证。有关 MCP 服务器和示例的更广泛视图,请查看中央目录。
步骤 2:配置你的客户端以与服务器通信
- 在你的客户端配置文件中(例如,你的 AI 应用程序的 JSON 配置文件),注册 GitHub MCP 服务器,通过环境变量将你的 token 传递给它,并将允许的代码仓库列入白名单。
- 专业提示:将 token 放在你的系统钥匙串或 dotenv 文件中,而不是你的配置文件中。不要成为下一次全体会议上的警示例子。
步骤 3:测试工具的表面积
- 要求 Claude 列出未解决的 issue、读取特定文件或创建分支。验证它无法执行你未明确允许的任何操作。
- 只有在你对基本命令进行健全性检查后,才应该启用 create_pull_request。
步骤 4:让 Claude 提出并打开 PR
- 提示示例:“在代码仓库 org/app-frontend 中,创建一个新分支 feat/dark-toggle,在 SettingsPanel.tsx 中实现暗黑模式的设置切换,更新测试,并打开一个带有 QA 清单的 PR。”
- 服务器协调:读取代码仓库状态,写入更改(如果你配置了本地文件工具),推送分支,使用你的模板打开 PR,并发布摘要。
真实对话:你真正需要的防护措施
- 只读 dry run:让 Claude 在具有写入权限之前生成统一的 diff (git diff)。在你检查过之后再合并。
- 模板化的 PR 正文:包括风险说明、测试计划和发布步骤。让机器人完成模板;让人类审查它。
- 标签规则:自动应用诸如 ai-generated 和 needs-tests 之类的标签,以保持事物的可发现性和诚实性。
- 分支命名:使用分支保护规则要求一个前缀(ai/ 或 bot/)。机器人也需要制服。
轶事时间:我要求 AI“修复身份验证错误”。它通过删除身份验证来“修复”它。非常适合提高生产力!对其他一切都非常糟糕。保持范围狭窄,提示具体,并确保 CI 测试严格。
从零到 PR:一个真实的端到端场景
场景:修复 React 项目中不稳定的 debounce 测试
- 你打开一个 issue:“Debounce util:CI 中 200 毫秒边界上的 flake。”你标记它为 ai-pr。
- Workflow 触发。它搜索 debounce.ts 和相关测试。
- Claude 提出一个 diff:使用 jest.useFakeTimers 调整计时器,在断言中添加一个 margin,更新文档。
- 机器人打开一个 PR,其中包含:标题、摘要、理由、测试计划和风险等级。
- 你审查 diff,并反驳:“当 delay=0 时的边缘情况。”
- 你评论 @claude handle delay=0 with immediate flush; add test. Workflow 重新运行,推送一个提交。
- CI 通过。你 squash 并合并。在某个地方,一个不稳定的测试哭了“大叔”。
好的提示是什么样的(以及要避免什么)
- 很好:“在 SettingsPanel.tsx 中添加一个暗黑模式切换;持久化到 localStorage;更新 SettingsPanel.test.tsx;遵循我们的 ESLint 规则;仅修改 /src/ui/ 和 /src/utils/;最多 250 行。”
使其安全:安全性和合规性快速检查
- Token 范围:仅在需要时使用 repo:contents write;对于 PR 创建,首选 pull_request write。
- 代码仓库允许列表:将机器人锁定到单个代码仓库或组织。
- 日志记录:确保机器人记录其 actions 和提示(减去 secrets)。当它“改进”你的 Dockerfile 时,你会想要证据。
故障排除:当机器人不工作时
- 它无法推送分支:检查 Actions 权限的 contents: write,并确保你的 token 具有代码仓库写入权限。
- 它打开空的 PR:你的上下文构建器没有将正确的文件交给它。收紧你的文件选择逻辑。
- 它在大代码仓库上超时:将上下文限制为已更改的路径或清单。AI 就像我们其他人一样,在 10GB 的 monorepo 上会消化不良。
- 它忽略你的 PR 模板:确认模板位于 .github/pull_request_template.md 中,或链接在你的代码仓库设置中。
何时使用哪种路径
- 如果你想要一种轻量级的方式来从 issue 或评论中自动生成 PR,并且所有事情都发生在 GitHub 中,请使用 GitHub Actions。
- 如果你希望 Claude 在你的本地环境中或跨多个工具以非常具体的控件进行操作,请使用 MCP。
值得注意的是:如果你想快速检查 workflow 的合理性或生成一个可靠的启动提示,Sider.AI 可以帮助你起草 PR 模板和防护措施提示,然后使用真实的代码仓库片段对其进行迭代。这就像有一个有主见的编辑,他实际上会编写代码。并且不会偷你的办公椅。 你想要复制的常见模式
- AI PR 标签和 CODEOWNERS:将 ai/* PR 路由到一个喜欢与机器人争论的审查组。
- 逐步提交:要求 Claude 创建小的、原子的提交,并带有清晰的消息,而不是一个名为“stuff”的 mega-commit。
- 测试优先模式:让 workflow 首先生成测试,运行 CI,然后生成实现。它比较慢。它更好。
- 合并后任务:添加一个 workflow 来自动打开一个后续 issue,用于文档、功能标志或清理。
快速的竞争性评估
- 有些人正在将其他 LLM 连接到类似的 GitHub workflow。它们有效——但 Claude Code 的代码推理和说“我不确定”的意愿可以为你节省数小时的猜测和检查。GitHub Actions 集成使其保持在审查自然发生的位置,并且 MCP 路线对于高级用户来说很灵活。
10 分钟设置清单
- 选择一条路径:GitHub Actions(更快)或 MCP(更多控制)。
- 构建一个严格的上下文构建器:文件列表、限制和规则。
- 首先在一个小的更改上进行测试。合并。庆祝。告诉你的 PM 你“提高了吞吐量”。
方便的快速参考
- Claude Code GitHub Actions 文档(模式、触发器、示例)。
- 用于精细、授权访问的 GitHub MCP 服务器。
Stern 总结
使用 Claude Code 自动化 PR 不会取代你的工程团队。它将取代你的工程团队最不喜欢的家务。从严格的范围、清晰的提示和严格的审查开始。让机器人处理脚手架,而你处理思考。然后回到有趣的事情上——比如最终删除你一直在避免的 utils2.ts 文件,因为你知道它只是用胶带和梦想将应用程序粘合在一起。
现在去让你的未来自己少一些抱怨。如果机器人失控了?你知道 Revert 按钮在哪里。
常见问题
Q1:Claude Code 可以自行打开 pull request 吗?
可以。通过 GitHub Actions 或 MCP 设置,Claude Code 可以创建一个分支,推送更改,并打开一个带有摘要和清单的 pull request。保持权限严格并要求人工审查,这样它就不会通过删除它来“优化”你的安全性。
Q2:将 GitHub 连接到 Claude Code 的最安全方法是什么?
使用最小范围的 token、代码仓库允许列表和分支保护。无论你选择 Actions 还是 MCP,在合并任何 AI 生成的 pull request 之前,都要启用 dry run 并要求测试通过。
Q3:如何阻止 AI PR 接触我的整个 monorepo?
使用允许的目录和文件清单来限定上下文,并限制每次运行的文件数量。好的提示也有帮助——具体说明路径和大小限制。
Q4:为什么我的 AI pull request 是空的或质量很低?
你的上下文构建器可能正在向 Claude 提供错误的文件或太少的细节。提供明确的目标、约束和测试期望——并考虑一个两步流程:首先生成测试,然后生成实现。
Q5:我应该为 Claude Code 使用 GitHub Actions 还是 MCP?
如果你想要快速、代码仓库原生的 PR 和审查自动化,请使用 GitHub Actions。如果你需要本地控制、自定义工具或细粒度的权限,MCP 会给你更多的权力——但需要更多的设置。