
OpenClaw 24h 更新快报(2026-08-27):Worker 诊断、Discord 语音、macOS SSH
过去 24 小时内,OpenClaw 合并了 48 个 PR,重点涉及 Worker 可诊断性提升、Discord 语音生命周期重构以及 macOS 退出时 SSH tunnel 清理等关键改进,涵盖稳定性、渠道集成和桌面端体验多个层面。
安全与稳定性:Worker 诊断信息大幅增强
本次最值得关注的变更来自 PR #130435:Worker 连接超时错误的可读性得到根本改善。此前 WorkerAdmissionDeadlineExceededError 对所有故障场景均返回同一模糊信息,运营人员无法区分网络分区、握手超时还是 admission 拒绝。修复后,错误信息携带终端诊断结论——包括最后失败类型、attempt 次数以及脱敏后的 endpoint(格式为 host:port),且凭证信息在截断前已完成原始、URL 编码和 JSON 转义三种形式的清洗,从 Worker IPC 到节点启动日志全程可追溯。同时,容器引擎 daemon 验证超时从 5s 提升至 30s 命名常量,在 50 容器并发启动的突发场景下不再因 OrbStack 响应正常但超窗口而误判关闭。
紧随其后,PR #130408 修复了 Cron 脚本工作线程在系统时钟跳跃时提前超时的问题。QuickJS 隔离虚拟机此前依赖系统时钟计量执行时间,导致时钟前跳时脚本被意外中断,后跳时又无法在父级看门狗之前强制执行限制。该 PR 改用 performance.now() 计量虚拟机内耗时,无论时钟如何修正均能维持精确的执行边界。
渠道集成:Discord 语音资源生命周期重构
PR #130415 对 Discord 语音模块进行了全面的资源所有权重构,消除了此前存在的多个竞争条件:用户加入语音频道后若 Discord 已提前销毁连接仍返回成功;播放设备在 Opus 编码器初始化期间取消可能导致编码器泄漏;以及旧会话的延迟回调误删新会话等问题。新方案为每个资源指定单一生命周期 owner:Node transform 在 _construct 中获取编码器、在 _flush 中发送尾部填充包、在 _destroy 中释放资源;会话拆除统一由 voice entry 处理,包括身份隔离的注册表移除。该重构减少生产代码 90 行,测试覆盖新增 186 行。
桌面端:macOS 退出时正确关闭 SSH tunnel
PR #130421 修复了 macOS 应用退出时遗留 SSH tunnel 和端口所有权凭证的问题。此前的根因是隧道关闭被安排在 applicationWillTerminate 中,执行时机已来不及等待清理完成;而 AppKit 的嵌套 .terminateLater 循环无法排出同一主队列上的清理任务,导致 MainActor 清理和截止时间双双饿死。修复后所有七个退出入口均通过主运行循环调度终止流程,并在辅助进程关闭前启动主要隧道和连接池的排水,调试重启路径也改为等待旧 PID 退出而非固定 200ms 猜测。
本次更新整体基调聚焦于运行时的可诊断性与资源清理确定性,渠道集成与桌面端均有实质性缺陷修复,规模化部署场景下的痛点得到直接回应。


评论