展示 HN:一个用于并行 Claude Code 代理的本地合并队列
用于并行 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 的合并队列比较 🧰 包含的内容 🚨 紧急通道 🔍 了解限制 📄 许可证 ⚙️ 配置 所有内容都存储在一个文件中——请参见 examples/claude-code-merge-queue.config.mjs 以获取每个字段及其注释的示例。简要版: export default { branchPrefix: "lane/", // lane/1, lane/2, ... worktreeSuffix: "-lane-", // ../your-repo-lane-1 portBase: 3000, // lane n 获取 portBase + n integrationBranch: "main", // 代理落地的位置——见下文 productionBranch: null, // 为两阶段模型设置此项——见下文 protectedBranches: [], // 除上述两个外的额外分支;大多数库不需要任何 regenerableFiles: [], // 构建工具重写的文件——绝不是阻止重基的原因 symlinks: [".env", ".env.local", "node_modules"], buildOutputDirs: ["dist", "build", ".next"], // 预览不会复制这些 onto 你的检出 checkCommand: "npm run check", // 实际上限制落地的条件——见下文 checksRequired: true, // false = 故意不运行任何;见下文 }; 一个格式错误的配置(空分支名称、负端口、productionBranch 等于 integrationBranch 等)会在加载任何命令的那一刻发出 loud 的失败讯息,列出每个问题——而不是在三步之后的神秘失败。 🆚 与 GitHub 的合并队列比较 GitHub 合并队列 Claude Code 合并队列 私有库 仅企业云 任何方案,任何库 每次落地的成本 GitHub Actions 分钟,每个队列尝试 $0 — 在你自己的机器上运行 需要 拉取请求 没有——直接重基 + 推送 相同的理念——序列化落地,在合并前测试,保持历史干净——在本地运行,而不是在其他人收费的云中。 🧰 包含的内容 命令 作用 claude-code-merge-queue hook worktree-create 一个 Claude Code WorktreeCreate hook。将 Claude Code Merge Queue 的编号通道插入 Claude 的原生工作树创建中。 claude-code-merge-queue build-lock -- <cmd> 运行 <cmd>——你的构建——在每个通道和机器范围内序列化。 claude-code-merge-queue land 通过 FIFO 队列将你的通道重基并推送到集成分支,因此两个通道在推送时不会同时进行。代理自行运行此命令。 claude-code-merge-queue sync 快速向前推进你的主检出,以便开发服务器实际看到刚落地的内容——并在锁定文件更改时重新安装依赖项。 claude-code-merge-queue promote 将集成分支发布到生产。仅限人工——决不能在代理指令中,绝不自动化。 claude-code-merge-queue preview 即时镜像一个通道的实时工作树——包括未提交的更改——到主检出中,这样你可以直接查看,而无需构建。 claude-code-merge-queue port 打印一个通道的开发服务器端口,从其自身目录名称派生。 claude-code-merge-queue prune 根据需要删除已经落地的兄弟通道工作树。预推送 hook 使得落地变得非可选:直接将 git push 直接推送到集成分支会被拒绝,实际运行的命令将替代,并且同样的 hook 在允许落地之前运行 checkCommand——没有配置 checkCommand 意味着每个推送默认为失败。每个阻塞都有出路(见 🚨 紧急通道),但需要指定特定分支,而不是通用标志。 📝 init 写入的内容 claude-code-merge-queue.config.mjs——自动检测集成分支和 checkCommand。 CLAUDE.md(或附加到你的文件)——告诉 Claude Code 在绿灯后落地其工作,而无需请求。 .claude/settings.json——已连接的 WorktreeCreate hook,而不触及已经存在的任何其他内容。 .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 之前运行,这样过时的分支会以真实的诊断失败,而不是bare命令未找到。 🚨 紧急通道 每个被阻塞的推送——集成分支、productionBranch、protectedBranches 中的任何事物——都有真正的通道可以通过。一个环境变量,无需提示,也不需要记住第二因素: CLAUDE_CODE_MERGE_QUEUE_EMERGENCY_PUSH=1 git push origin HEAD:main 这是一种约定,而不是硬性保证:它阻止错误和孤立推送,而不是对设置变量的敌对代理。 🔍 了解限制 没有人在人力审查这些内容之前就会落地。checkCommand 通过是唯一的门禁——一个真正的测试套件和 echo ok 看起来与此工具完全相同。想要每个更改都有人工参与吗?
本站免费、广告极少。如果觉得有帮助,可以请我们喝杯咖啡 —— 任何金额都对持续运营有实际帮助。
☕请我喝杯咖啡