返回资讯中心
外部精选
软件工程
#开发者实时流

开源工具 bulkhead 用钩子防止同机多个 Claude Code 会话互相干扰

来源标题:Show HN: Replay your Claude Code logs to count parallel session collisions

开发者发布 bulkhead,一套无需依赖的 Claude Code 钩子,用于防止同一台机器上并行的多个会话及其子代理互相杀死对方进程或耗尽内存。0.2.0 版新增 bulkhead scan,可回放历史会话以检测冲突,并加入磁盘保护和 checkout 保护。工具含 8 个守卫、10 条命令和 6 个斜杠命令。

Hacker News 最新dooly62762026/11/9 · 今天30 分钟阅读

以下正文由 AI 翻译自 Hacker News 最新(原文版权归原站所有),可能存在偏差,重要内容请以原文为准。

English | 한국어 | 简体中文 | 日本語 | Español | Português (Brasil) 用于防止同一台机器上的并行 Claude Code 会话互相杀死对方的服务器或耗尽内存的钩子。 8 个守卫、10 个命令、一个状态行、6 个斜杠命令、1 个技能、零依赖 它是什么 | 扫描 | 为什么 | 功能 | 安装 | 快速开始 | 远程 | 工作原理 | 守卫 | 常见问题 0.2.0 新增:bulkhead scan 会针对守卫重放你过去的 Claude Code 会话,新增的 disk-guard 可阻止全盘扫描和并行扫描,checkout-guard 现在可阻止 git add -A 将另一个会话的编辑扫入你的提交,以及 rm -rf 删除另一个会话正在使用的文件夹,basics 可阻止以 Claude 身份创作的提交。发布说明:CHANGELOG.md。 Claude Code 钩子是 Claude Code 在固定时间点运行的小程序,例如在每条 shell 命令执行之前运行,并且可以阻止该命令并告诉 Claude 原因。 bulkhead 就是一组这样的钩子,专门针对一种情况:多个 Claude Code 会话及其子代理在同一台计算机上同时工作。每个会话都表现得好像它独占这台机器。bulkhead 会根据其他会话正在做的事情来检查每条 shell 命令:哪些进程和端口属于哪个会话、还剩多少内存,以及每个会话在哪个 git 树中工作。当一条命令会伤害另一个会话时,它会被阻止,Claude 会收到一条消息,告知应改为运行更安全的命令。 如果你同时运行两个或更多 Claude Code 会话(通常每个 git worktree 一个),或者你的会话和子代理会启动开发服务器、构建和测试运行,那么你需要它。 如果你一次只运行一个会话,并且不让它启动服务器或构建,那么你可能不需要它。bulkhead 所做的大部分事情都是关于会话互相妨碍。 你不必猜测。Claude Code 将每个会话的记录保存在 ~/.claude/projects 中,bulkhead scan 会针对守卫重放其中的 shell 命令:你实际同时运行了多少个会话,以及它们已经多少次做了 bulkhead 会阻止的事情。 /plugin install bulkhead@bulkhead # 然后,在 Claude Code 中: /bulkhead:scan 30d 它只读取,打印前会屏蔽任何看起来像秘密的内容,并且不会向任何地方发送任何东西。port-guard 和低内存检查不会被重放,因为记录不记录当时使用了哪些端口和多少内存;checkout-guard 会根据那一分钟哪些会话在同一个 git 树中活动来重建。详情:docs/commands.md。 用 Claude Code 加速工作的一种常见方式是在一个仓库上运行多个会话,每个会话在自己的 git worktree 中,每个都有自己的子代理。git 将分支分开。机器没有:每个会话共享相同的端口、相同的进程表和相同的内存。这就是它们发生冲突的地方。 Claude Code 跟踪器中有很多关于这一点的报告: claude-bulkhead 是一组小型钩子,可以阻止或清理上述每一种情况。每一个都可以单独关闭。这个名字来自舱壁模式:一个隔间进水不应该让整艘船沉没。 kill-guard 阻止 pkill node、taskkill /IM、Stop-Process -Name 和其他按程序名进行的终止。按 PID 终止可以通过。 port-guard 阻止在另一个会话已经提供服务的端口上启动开发服务器,以及按端口杀死该会话的服务器。 memory-guard 和 bulkhead-slot 在内存低时阻止重型命令,并针对每个会话共享的一个内存预算对重型作业进行排队。 checkout-guard 当另一个活动会话在同一个树中工作时,阻止 git checkout、stash、reset --hard、git add -A 及类似操作,以及删除另一个会话正在使用的文件夹。 wait-guard 阻止超过 3 分钟的前台睡眠循环,这会使下一个请求重写整个提示缓存。 orphan-reaper 当会话退出时,停止它留下的开发服务器、测试工作进程、监视器和无头浏览器。 disk-guard 新增 阻止 du -sh ~、不带 -maxdepth 的 find /,以及并行运行的磁盘扫描,这些会拖慢每个会话共享的磁盘。 bulkhead scan 新增 针对守卫重放你过去的 Claude Code 记录:它们本会阻止什么,以及同时运行了多少个会话。 basics 阻止在根目录、主目录或直接位于其中的文件夹执行 rm -rf,强制推送到 main,会丢失未提交工作的重置,以及以 Claude 身份创作的提交。 bulkhead status、top、log、doctor 显示每个会话、其内存、端口、排队的作业,以及守卫阻止了什么。 状态行 Claude Code 状态行中显示 3 个会话 2 个重型 9.1 GB 可用,耗时不到 100 毫秒。 配置和斜杠命令 每台机器和每个项目的配置,带允许列表,以及 /bulkhead:scan、/bulkhead:status、/bulkhead:log、/bulkhead:doctor 和 /bulkhead:reap。 可选:当这台机器没有多余内存时,bulkhead remote 通过 SSH 在另一台机器上运行测试套件、构建或浏览器运行。 使用 docs/demo.sh 录制。这两个会话是名为 claude 的替身进程;打印的所有内容都来自钩子脚本和 bulkhead status。 /plugin marketplace add dooly6276/claude-bulkhead /plugin install bulkhead@bulkhead PATH 中必须有 Node 18 或更高版本。原生 Claude Code 安装程序不安装 Node,所以先用 node --version 检查。没有 Node,每个钩子都无法启动:什么都不会被阻止,并且 Claude Code 会在每次工具调用时为每个钩子显示钩子错误通知。没有其他依赖。 如上所述安装插件并启动一个新的 Claude Code 会话。 看看它本会抓住什么:运行 /bulkhead:scan 30d,或在 Bash 工具中运行 bulkhead scan。它会读取你上个月的记录,不做任何更改。 检查设置。在 Claude Code 中运行 /bulkhead:doctor,或在 Bash 工具中运行 bulkhead doctor。每一行都应该显示 OK。WARN 或 FAIL 行会指出守卫和原因。 在你的会话旁边打开一个终端,运行 bulkhead top 实时查看会话、内存、端口和重型作业。按 q 退出。

(原文较长,此处译出前 6000 字,完整内容请点「打开原文」。)

正文由 探How 从来源站点 RSS 同步,内容未经改写;遇到排版缺失或需要图片、视频时请以原文为准。

打开原文
去社区讨论 →