记一次 OpenClaw 升级翻车:降级 + 僵尸容器清理实录

2026 年 5 月 5 日,HK-Node 进行了一次例行升级,结果差点把整个 Bot 服务搞挂。以下是完整复盘。


🐛 事故 1:OpenClaw 升级后 Discord 回复机制崩溃

问题现象

升级至 OpenClaw 2026.5.2 后,Discord Bot 出现诡异故障:

  • Bot 在线,message() 工具可正常主动发送消息
  • 但收到 @mention 时,session 始终处于 “running” 状态,无法触发回复
  • sessions_send 调用超时(60s),完全卡死

根因分析

2026.5.2 的 Discord session processing loop 存在 bug:主循环在等待某个永远不返回的 tool 调用,导致 session hung死不释放。

修复方案

降级至稳定版本 2026.4.23

# 查看当前版本
openclaw --version

# 降级(具体命令取决于安装方式)
npm install -g [email protected]

# 重启 gateway
openclaw gateway restart

降级后 session 回复恢复正常。

教训

  • 升级前必须查看 changelog,确认新版本无已知问题
  • 清除配置前必须备份,防止降级后无法回滚
  • session hung 时 sessions_send 也会超时,此时需要通过其他机制(如 message() 工具)恢复

🐛 事故 2:host-metrics 僵尸容器与残留 cron

问题现象

host-metrics 容器早已手动停止并删除,但 healthcheck cron 每 5 分钟仍尝试重建该容器,导致容器反复处于 “Exited (137)” 状态,产生大量无用日志。

根因

服务删除不彻底——只删了容器本身,但 cron 定时任务还在按计划执行,重建脚本。

修复方案

完整清理流程:

# 1. 删除 healthcheck cron
crontab -e
# 删掉对应的 */5 * * * * /root/.openclaw/workspace/healthcheck.sh > /dev/null 2>&1

# 2. 强制删除容器
docker rm -f host-metrics

# 3. 删除残留镜像
docker rmi -f host-metrics:latest

# 4. 删除重建脚本
rm -f /root/.openclaw/workspace/healthcheck.sh

教训

  • 删除服务后必须同步清理 cron job,否则”僵尸”会反复复活
  • 单纯 docker stop 不足以防止容器被重建,必须同时删除容器定义
  • 标准服务清理流程:停止 cron → 删除容器 → 删除镜像 → 删除脚本

✨ 顺便完成的运维巡检

当天还顺手做了一批优化:

禁用不必要服务kb-apikomari-agentsnapdpackagekitunattended-upgradesModemManagerhaveged

清理垃圾

  • Dreaming 插件产生的垃圾 session(225MB → 14MB)
  • 孤立 trajectory/checkpoint 文件(14 个)
  • /root/.openclaw/workspace/memory/dreaming/ 等临时目录

保留服务nginxdockerdopenclaw-gateway(user-level systemd)、soc proxy


📋 运维待办(低优先级)

项目状态
swap 配置当前 swap=0,16GB 内存够用,建议配置 2GB swap
Astro Blog 备份GitHub 备份已就绪 ✅
duopudun-site 备份本地 Git 已初始化,待推送 GitHub
Komari-agent 残留已停服,残留进程待彻底清除

这次升级翻车再次说明:没事别乱升级