
OpenClaw 24h 更新快报(2026-10-03):进程挂起、Blacksmith 提速、Mac 会话修复
过去 24 小时,openclaw/openclaw 仓库共有 7 个 PR 合并,涵盖 Node.js 24/26 兼容性修复、CI 构建提速、Mac 端 Claude Code 配置路径兼容、测试稳定性以及消息投递状态修复等多个层面。以下是本次更新值得关注的变化。
运行时稳定性:修复 Node 24/26 进程挂起
PR PR #163788 解决了一个在 Node 24 和 Node 26 上导致 CLI 和 Gateway 进程在退出后永久挂起的问题。根本原因在于这两个 Node 版本中 process.exit() 会等待 V8 平台 worker 完成,但如果此时有并发的 Maglev 或 Sparkplug 编译任务在等待主线程 GC,进程就会陷入 0% CPU 占用、永不结束的状态。
OpenClaw 现在在所有入口点(CLI、Gateway、macOS node worker)启动时主动关闭 Maglev 和并发 Sparkplug,与 Node 22 的行为对齐。测试数据表明:在 Node 24.19 下,未修复版本有 6/1019 概率挂起,修复后 0/1019;单独启用 Maglev 挂起率 2/1019,单独启用并发 Sparkplug 挂起率 12/944,说明两个标志必须同时关闭才能彻底避免问题。
构建效率:Blacksmith 替代默认 lint 路径
PR PR #163789 将默认 fork lint 检查的后端从原有实现切换为 Blacksmith,并保留在 backend 未设置或为 blacksmith 时的 16 类 stripe 路由逻辑。在 Linux 环境下,同一 SDK-miss stripe 的测量时间从 250-266 秒降至 157 秒,效果显著。OPENCLAW_CI_RUNNER_BACKEND=github 环境变量仍可强制覆盖,unset 时走快速路径且无需修改仓库配置。
macOS 兼容:修复 CLAUDE_CONFIG_DIR 环境变量下的会话扫描
PR PR #163787 修复了 macOS 原生节点目录在 CLAUDE_CONFIG_DIR 设置时无法正确读取 Claude Code 会话列表的问题。此前 native 实现始终读取 ~/.claude/projects,而 TypeScript 实现则遵循 CLAUDE_CONFIG_DIR,导致两者行为不一致。修复后统一按相同优先级解析项目根目录,并在 list、read、read-lease 及 advertisement 等入口处共享解析结果,同时确保现有根目录包含检查在两套实现上保持一致。
测试稳定性:Doctor 清理时序死锁修复
PR PR #163787 的上一个 commit(d6929f8)引入了 Doctor 完整性清理破坏命令的问题:cleanup owner 未被正确等待,导致 session-state 清理与 fixture 环境恢复产生竞争,进而引入 red main。修复在恢复 fixture 环境选择器和移除临时 home 目录之前,先等待 scoped session-state cleanup owner 完成。该修复已在 Node 24 和 Bun 上各通过五轮连续验证。
渠道投递:修复被拒回复的虚假送达警告
PR PR #163769 修复了在回复被拒绝后错误触发送达警告的问题。修复通过已有的 owner 机制结算被拒回复的投递状态,并补充了 dispatcher 端的回归测试覆盖。
配置验证:修复 e2e 测试中的 legacy agents.list 启动失败
PR PR #163766 修复了 exec approval Gateway e2e 测试在启动时因写入 legacy agents.list 格式而被配置验证拒绝的问题。PR #162612 将 legacy roster 读取移入 Doctor 后,配置验证现在会拒绝非 keyed agents.entries 格式的写入。该测试 fixture 改为写入 keyed agents.entries,同时保留 explicit 所有权、180 秒保留时间覆盖和 helper agent 配置,产品代码未做任何改动。
子会话错误报告:结构化错误信息保留
本次更新以运行时稳定性改善为主线,Node 24/26 兼容性修复覆盖了实际使用中容易触发挂起的并发编译场景,同时 CI 效率提升也降低了开发迭代成本。


评论