乐于分享
好东西不私藏

OpenClaw 更新日志 | 2026.5.12 → 2026.5.18

OpenClaw 更新日志 | 2026.5.12 → 2026.5.18

这次更新跨度不小——从 5.12 直接跳到了 5.18,中间隔了 6 个版本。我翻了将近 3000 行的 CHANGELOG,一句话总结:这次更新的主线是安全加固,但稳定性修复也占了很大比重。

更新概览

不是那种”加了个酷炫新功能”的更新,而是实打实地补漏洞。40 多项安全修复,覆盖了 SSRF、路径遍历、Webhook 签名验证、内存注入这些关键领域。说实话,这种更新比加功能更重要,只是没那么好看而已。

安全加固:这是重点

SSRF 防护全面升级

SSRF(服务端请求伪造)是这次修得最多的漏洞类型。几个关键修复:

  • 媒体 URL 获取现在默认拒绝私有/内部主机访问。Tlon/Urbit 渠道可以通过 channels.tlon.allowPrivateNetwork 可选开启
  • BlueBubbles、Zalo、Google Chat 等多个渠道修复了共享路径 Webhook 路由的歧义问题——以前多个目标匹配同一个 guid/password 时会错误路由
  • 修复了通过 IPv4 映射 IPv6 字面量绕过 SSRF 防护的问题
  • CLI 链接解析流程中阻止了内网/回环模式

路径遍历防护

  • Hook 转换模块现在只能从 ~/.openclaw/hooks/transforms 目录加载,防止通过配置加载外部恶意模块
  • Skill 安装时的解压过程加固了,防止路径遍历到目标目录外
  • Signal 安装时的归档提取也做了加固
  • apply_patch 工具在非沙箱模式下强制工作区根路径边界,阻止符号链接逃逸
  • 浏览器控制限制了文件上传/下载路径到 OpenClaw 临时目录

Webhook 签名验证

  • Telnyx 语音通话现在要求 Webhook 签名验证,没有 telnyx.publicKey 的配置会被拒绝
  • Twilio 即使在 ngrok 免费层回环兼容模式下也要求有效签名
  • Telegram webhookSecret 缺失或为空时拒绝启动 Webhook

内存注入防护

LanceDB 内存现在将召回的内存视为不可信上下文,自动捕获时跳过可能的提示注入载荷。另外,自动捕获现在默认关闭了——需要显式设置 autoCapture: true 才能启用。这个改动挺合理的,毕竟自动捕获 PII 数据不是什么好事。

渠道安全加固

每个渠道都收到了安全相关的修复:

  • Telegram:要求数字 sender ID 进行 allowlist 授权,拒绝 @username 主体,自动将 @username 解析为 ID
  • Discord:DM slash 命令即使 dmPolicy=open 也计算命令授权,防止未授权用户通过 DM 运行特权命令
  • 飞书:加固了媒体 URL 获取,防止 SSRF 和本地文件泄露
  • Signal:加固了 signal-cli 安装期间的归档提取
  • BlueBubbles:要求显式的 mediaLocalRoots allowlists,拒绝模糊的共享路径 Webhook 路由,反向代理下的 webhook 认证加固
  • Google Chat:拒绝 users/<email> allowlists(视为不可变用户 ID),阻止共享路径 Webhook 路由歧义
  • Nostr:要求回环源并阻止跨源 profile 变异/导入尝试
  • Windows:生成子进程时避免 shell 调用,防止通过不可信 CLI 参数注入 cmd.exe 元字符

稳定性修复:容易被忽视但很重要

这部分容易被忽视,但影响很大。多个组件修复了无界增长问题——说白了就是内存泄漏:

  • 诊断会话状态修剪过时条目,限制跟踪的会话状态数量
  • agentRunSeq 追踪在运行完成/中止时清理,强制维护时修剪
  • ABORT_MEMORY 通过驱逐最旧条目和删除重置标志来限制增长
  • Slack 线程启动缓存加了 TTL 和最大大小修剪
  • Outbound 目录缓存加了最大大小驱逐和主动 TTL 修剪
  • Skill 远程节点缓存移除了断开连接的节点

如果你是长期运行的网关用户,这些修复会让你的服务更稳定。

内存系统改进

  • QMD 索引验证:验证并打印活跃的 QMD 索引文件路径/大小,更新后缺失或零字节索引时失败
  • 自动修复:检测空字节 ENOTDIR 更新失败,重建托管集合并重试
  • Watcher 优化:缩小内存观察器目标到 markdown globs,忽略依赖/venv 目录,减少文件描述符压力

沙箱和网关

  • 沙箱文件工具支持 bind-mount 感知(包括绝对容器路径),强制执行写入的只读 bind 语义
  • Windows 进程安全:生成子进程时避免 shell 调用,防止 cmd.exe 元字符注入
  • Gateway 路由:阻止 system.execApprovals.* 通过 node.invoke
  • 沙箱提示:显示沙箱容器工作目录作为提示工作目录,澄清主机路径用法

其他值得关注的变更

  • 新增了可选的 Podman 安装方式(setup-podman.sh),不想用 Docker 的人有福了
  • Discord 支持从本地音频文件发送带波形预览的语音消息
  • Discord 添加了可配置的 presence status/activity/type/url
  • Slack 通过 message_sending hooks 控制线程外发,包括 @-mention bypass 追踪
  • 添加了一流的 Hugging Face Inference provider 支持
  • 新增 MiniMax 中国 API 认证选项 minimax-api-key-cn
  • Agents 添加了预提示上下文诊断(messages、systemPromptChars、promptChars),方便调试上下文溢出

破坏性变更

  • .moltbot 状态已彻底移除。如果你还有 ~/.moltbot 下的配置,需要迁移到 ~/.openclaw,或者设置 OPENCLAW_STATE_DIR / OPENCLAW_CONFIG_PATH
  • POST /hooks/agent 默认拒绝 payload sessionKey 覆盖。需要设置 hooks.defaultSessionKey(推荐设为 ["hook:"])来保持固定 hook 上下文。如果需要用旧行为,显式设置 hooks.allowRequestSessionKey: true

怎么更新

这次更新涉及大量安全修复,建议尽快更新。

npm update -g openclaw

更新后跑一下 openclaw doctor --fix 检查和修复配置问题。用了 hooks 的话,注意检查 hooks.defaultSessionKey 配置。

如果你还在用 ~/.moltbot,趁这次机会迁移到 ~/.openclaw 吧,老状态目录已经不维护了。