News Hacker|极客洞察

21 6 小时前 droppedasbaby.com
💥Claude Code 误触 fork bomb:SessionStart hook、多开实例与 Git worktrees
让 Claude 自己生 Claude,不炸才怪吧?

🎯 讨论背景

Claude Code(Anthropic 的命令行编码代理)本来用于自动化编程,但这里讨论的是它在某个会话启动钩子里又去启动自己,结果把自动化写成了类似 fork bomb(通过递归创建进程耗尽系统资源的脚本)的事故。评论补充说,作者原本想用 SessionStart/SessionEnd hook 自动记录和总结会话,因为 SessionEnd 并不总会触发;更稳妥的替代方案是把这些工作交给 batch job。还有人提议用 Git worktrees(Git 的多工作区功能)配合轻量 VM 或 sandbox-exec(macOS 的沙箱工具)来并行运行多个会话并彼此隔离。老用户顺手提到 90 年代的 Microsoft 示例代码也曾让人踩坑,而 Windows 与 Unix 的进程模型不同,所以“fork bomb”在不同平台上的表现并不完全一样。

📌 讨论焦点

递归启动 Claude Code 的自动化场景

讨论焦点不是单纯“再开两个实例”有多离谱,而是为什么要让 Claude Code 这样做。有人解释是想用 SessionStart hook 兜底,补救 SessionEnd hook 偶尔没触发的问题,于是让新会话自动带上前一轮摘要和元数据。随后有人指出,这类事情更适合交给 batch job,而不是把递归逻辑塞进会话钩子里。也有人用“指数级生产力”来调侃这种自我复制的思路,并建议用 Git worktrees、轻量 VM 或 sandbox 隔离来并行跑很多会话。

[来源1] [来源2] [来源3] [来源4] [来源5]

fork bomb 的老教训

有人回忆自己在 90 年代就因 Microsoft 官方示例代码踩中过 fork bomb 的坑,教训是即便来自开发者门户的 sample code 也不能盲信。这个例子还带出平台差异:有人提醒 Windows 并没有 Unix 那样的 fork,因此“fork bomb”在不同系统上的实现方式并不相同。整体意思是,危险不一定来自黑客工具,普通教程代码也可能写出灾难级的进程风暴。

[来源1] [来源2]

把事故当作“入门里程碑”的玩笑

不少回复用调侃口吻把“第一个 fork bomb”说成某种成长经历,甚至夸赞标题里把它叫作“first”的心态。另有人分享了大学时代故意在开放 telnet 的机器上捣乱的往事,说可以临时接管别人的电脑,看着对方找不到罪魁祸首。这个分支的语气明显是黑色幽默:技术事故被讲成了年轻时的恶作剧与经验值。

[来源1] [来源2] [来源3]

AI 速度快但失控更吓人

有人指出,哪怕是“运行得很糟”的代码,速度也往往比平均人类更快,这正是让人后怕的地方。唯一的安慰只是它会猛吃 RAM,因此资源上限还能暂时阻止更大的灾难。这个感受和整串讨论很一致:AI agent 的能力很强,但一旦递归、自举或多开失控,后果会非常像机器版的失手。

[来源1]

📚 术语解释

fork bomb: 一种通过递归创建进程或任务来耗尽 CPU、内存或进程表的脚本或攻击。

SessionStart/SessionEnd hook: 在会话开始或结束时自动触发的回调,用于记录、清理或启动额外流程。

Git worktrees: Git 的多工作区功能,可让同一个仓库同时对应多个独立工作目录。

sandbox-exec: macOS 上用来给进程套沙箱限制的工具,可减少多实例运行时的越权和互相影响。