乐于分享
好东西不私藏

折磨人的bug终于修了:OpenClaw 4.12稳定性专项解析

折磨人的bug终于修了:OpenClaw 4.12稳定性专项解析

用 OpenClaw 一段时间的人都懂:功能好不好是一回事,稳不稳是另一回事。

4.12 在稳定性上做了大量工作,很多问题藏得很深,但影响每天的使用体验。

这篇把最值得关注的稳定性修复拆开来讲。


WebSocket 断连:长任务跑着跑着客户端掉线了

问题描述

在跑一个耗时较长的 AI 任务时(比如生成长文、批量处理),有时候客户端会突然断开,任务结果丢失。

根本原因

OpenClaw 会定期发送 WebSocket tick 心跳,但这个心跳被标记成了「可丢弃」的消息——当网络稍微有点抖动或者客户端处理较慢,tick 被丢弃,超时计时器触发,连接被主动断开。

而此时 AI 可能还在后台努力工作着。

4.12 修复

tick 广播不再标记为「可丢弃」,网络压力下连接不会因为心跳超时自动断开。

Code
修复前:tick(droppable=true) → 网络抖动 → tick 丢失 → 超时 → 断连
修复后:tick(droppable=false) → 网络抖动 → 重传 → 保持连接

消息丢失:用户发了第二条,第一条结果没了

问题描述

AI 还在处理第一条消息时,用户发来第二条,有时候第一条的处理结果会消失,第二条也可能无响应。

根本原因

当一个「孤立的」用户消息在任务进行中到达,系统没有把它正确排入队列,而是直接丢弃了。

4.12 修复

孤立的用户输入文本现在会被携带到下一个 prompt 执行轮次,确保消息不被静默丢弃。

这个 bug 在高并发使用场景(比如同时用多个频道跟 AI 交互)下特别容易出现。

Discord:zombie 回调崩溃整个进程

问题描述

Discord 网关断线重连后,有时候进程会直接崩溃,需要手动重启 OpenClaw。

根本原因

旧连接的心跳定时器没有被正确清理,重连后新旧两个心跳定时器同时运行,旧的「僵尸定时器」在回调时触发了未保护的操作,导致进程崩溃。

4.12 修复

重连前强制清除所有旧定时器,确保不会出现 zombie callback。


Telegram:审批按钮点了没反应

问题描述

在 Telegram 里通过内联按钮点击「审批」操作,有时候按钮完全没反应,或者需要等很久才生效。

根本原因

审批按钮的 callback query 和正在进行的 agent turn 共用同一个处理队列,被 agent 任务阻塞了。

4.12 修复

审批 callback query 现在走独立的 sequentializer 通道,不再被 agent turn 阻塞,点击即时响应。


Gateway 启动:侧载服务还没好,聊天历史就开始加载了

问题描述

OpenClaw 重启后,Control UI 立刻尝试加载聊天历史,但此时后端服务还没完全启动,导致加载失败,需要手动刷新。

4.12 修复

调度服务现在会等到所有 sidecar 初始化完成后才启动,Control UI 的历史加载也加了重试机制,启动后第一次加载不再失败。


WhatsApp:附件发出去了,对方收不到

问题描述

通过 OpenClaw 发 WhatsApp 附件(图片、文件),有时候对方收不到,但发送方没有报错。

根本原因

mediaUrl 字段为空但 mediaUrls 列表里有内容时,系统没有回退到列表,直接静默跳过了发送。

4.12 修复

mediaUrl 为空时,自动取 mediaUrls[0] 作为回退,附件不再静默丢失。


Cron 任务:定时任务配置热重载后失效

问题描述

修改配置后 OpenClaw 热重载,定时任务(cron jobs)里配置的 workspace 和 heartbeat 设置丢失,任务开始用错误的配置运行。

4.12 修复

热重载时隔离 agent 配置会被正确保留,cron 任务不受热重载影响。


稳定性的价值

功能可以慢慢加,但稳定性是每天都在影响你的东西。

4.12 修了一批「藏得很深但每天都在折磨你」的 bug,如果你之前用 OpenClaw 遇到过消息丢失、连接断开、按钮没反应这类问题,升级到 4.12 是值得的。

你遇到过哪些让你印象深刻的 bug?评论区聊聊,说不定已经修了。


一键三连「点赞」「转发」「小心心」,欢迎在评论区留下你的想法!