首页 时政热点 科技头条 智能AI 安全攻防 数码硬件 开发者生态 归档 标签 关于

Show HN:并行 Claude Code 代理的本地合并队列

2026-07-30 1 阅读 约9分钟阅读 funador
分享:
字号:
Claude Code Merge Queue 🚦 用于并行 Claude Code 代理的本地零成本合并队列。多个代理同时登陆、构建和测试——这将其序列化,因此推竞争、冗余的重型构建和共享资源测试不稳定的情况都不会发生。 ⚡ 快速入门 npm install --save-dev claude-code-merge-queue # 或:pnpm add -D/yarn add -D/bun add -d npx claude-code-merge-queue init 内容 ⚙️ 配置 🆚 与 GitHub 的合并队列 🧰 盒子里有什么 🚨 紧急舱口 🔍 了解限制 📄 许可证⚙️ 配置一切都在一个文件中 - 请参阅示例/claude-code-merge-queue.config.mjs 了解每个带注释的字段。简短版本:export default {branchPrefix : "lane/" , // Lane/1, Lane/2, ... worktreeSuffix : "-lane-" , // ../your-repo-lane-1 portBase : 3000 , // 通道 n 获取 portBase + n IntegrationBranch : "main" , // 代理登陆的位置 - 见下文 productionBranch : null , // 将其设置为两阶段模型 - 见下文protectedBranches : [ ] , // 除上述两个之外的额外分支;大多数存储库都不需要 regenerableFiles : [ ] , // 构建工具重写的文件 - 永远不会阻止这些符号链接的变基 : [ ".env" , ".env.local" , "node_modules" ] , buildOutputDirs : [ "dist" , "build" , ".next" ] , // 预览永远不会将这些复制到您的结帐 checkCommand : "npm run check" , // 实际上是什么控制着陆 - 参见下面的 checkRequired : true , // false = 故意不运行;见下文 } ;格式错误的配置(空分支名称、负端口、 productionBranch 等于 IntegrationBranch 等)在任何命令加载它时都会因列出的每个问题而大声失败 - 这不是三步后神秘的失败。 🆚 与 GitHub 的合并队列 GitHub 合并队列 Claude Code 合并队列 仅限私有存储库 仅限企业云 任何计划、任何存储库 每次登陆 GitHub 操作的成本分钟数,每次队列尝试 $0 — 在您自己的计算机上运行 需要拉取请求 无 — 直接变基 + 推送 相同的想法 — 序列化登陆,合并前测试,保持历史记录干净 — 在本地运行,而不是在其他人的计费云中运行。 🧰 框中的内容 命令 作用 claude-code-merge-queue hook worktree-create 一个 Claude Code WorktreeCreate 挂钩。将 Claude 代码合并队列的编号通道插入 Claude 的本机工作树创建中。 claude-code-merge-queue build-lock -- 运行 — 您的构建 — 在机器范围内的每个通道上序列化。 claude-code-merge-queue land 变基并通过 FIFO 队列将您的通道推送到集成分支上,因此两个通道永远不会同时推送到中间。代理自行运行。 claude-code-merge-queuesync 快进您的主要结帐,以便开发服务器实际上看到刚刚登陆的内容 - 并在锁定文件发生更改时重新安装依赖项。 claude-code-merge-queue Promotion 将集成分支交付到生产环境。仅限人类——从不按照特工的指示,从不自动化。 claude-code-merge-queue 预览 立即将通道的实时工作树(包括未提交的更改)镜像到主结帐上,以便您无需构建即可查看它。 claude-code-merge-queue port 打印通道的开发服务器端口,源自其自己的目录名称。 claude-code-merge-queue prune 根据需要删除已经登陆的同级通道工作树。预推送钩子使登陆变得不可选:直接 git 推送到集成分支会被拒绝,而是运行实际命令,并且相同的钩子在允许登陆之前运行 checkCommand — 没有配置 checkCommand 意味着默认情况下每次推送都会失败。每个区块都有一条出路(参见🚨紧急舱口),但需要命名特定的分支,而不是通用标志。 📝 init 写入 claude-code-merge-queue.config.mjs 的内容 — 自动检测到integrationBranch 和 checkCommand。 CLAUDE.md(或附加到您的)- 告诉 Claude Code 在绿色后落地自己的工作,而无需询问。 .claude/settings.json — WorktreeCreate 挂钩已连接,不触及任何其他已有内容。 .husky/pre-push — 创建或附加到(如果您已经有 Husky)。如果不这样做,init 会告诉您,而不是默默地写入未跟踪的 .git/hooks/pre-push 。 package.json 脚本 — land 、sync 、promote 、preview 、preview:restore ,跳过您已经定义的任何脚本。 claude-code-merge-queue-preflight.mjs — 一个独立的安全网,在 land /sync 之前运行,因此过时的分支会因真正的诊断而失败,而不是纯粹的命令未找到。 🚨 紧急舱口 每一个受阻的推送——集成分支、生产分支、受保护分支中的任何东西——都有一个真正的解决办法。一个环境变量,没有提示,没有第二个要记住的因素: CLAUDE_CODE_MERGE_QUEUE_EMERGENCY_PUSH=1 git push origin HEAD:main 这是一种约定,而不是硬性保证:它会阻止错误和杂散推送,而不是设置 var 本身的对抗代理。 🔍 了解极限 在它落地之前,没有人会对其进行任何评论。 checkCommand 传递是唯一的入口 - 真正的测试套件和 echo ok 看起来与此工具相同。想要一个人永远
这篇文章对您有帮助吗?

订阅66必读

每日精选科技资讯,直达你的邮箱