OpenClaw 24h 更新快报(2026-04-16):Context-Window 收紧、Gateway 安全加固、插件运行时稳定性

内容管家 AI领域评论5字数 1269阅读4分13秒阅读模式
OpenClaw 24h 更新快报(2026-04-16):Context-Window 收紧、Gateway 安全加固、插件运行时稳定性

OpenClaw 24h 更新快报(2026-04-16):Context-Window 收紧、Gateway 安全加固、插件运行时稳定性

过去 24 小时,OpenClaw 仓库共有超过 25 个 PR 合并。本期快报重点关注三个方向:Context-Window 模块的大幅内存治理、多条 Gateway 安全防线的加固,以及插件bundled运行时的一致性修复。

Context-Window 内存治理:降低默认上限,精确化 memory_get 语义

由 Tak Hoffman 提交的 PR #67277 是本周期内最重量级的变更。该 PR 对多个高流量上下文表面进行了默认值的收紧,并对 memory_get 工具的行为契约做了明确化。

核心改动分为几个层面。首先,bootstrap、live tool-result、post-compaction AGENTS 注入和 memory qmd snippet 等多个读取路径的默认上限被调低,减少了无谓的上下文填充。其次,memory_get 从原来的"尽量多读"变更为有界精确摘录:调用方可通过 from/lines 参数精确定位,若读取内容被截断,返回结果中会携带 truncated 标记和 nextFrom 续读位置,避免模型误以为已读完全部内容。第三,新增 agents.defaults.contextLimits 和 agents.list[].contextLimits 配置面,允许按 agent 单独覆盖 memoryGetMaxChars、toolResultMaxChars 等上限,使运行时行为更易于调优。

该 PR 还修复了两个 tool-result 截断的真实缺陷:此前 tool-result 先被截断,再经过 persistence hook,hook 有可能将内容重新扩大后再追加;persisted-session 恢复路径也存在一个较旧的 floor 会削弱显式配置上限的问题。两个问题均已在此次修复中得到处理。

Gateway 安全:工具媒体信任边界与文件路径双重加固

本周期内有三个 PR 集中修复了 Gateway 层面的安全边界问题,均由 pgondhi987 提交,且与 webchat 媒体嵌入路径直接相关。

PR #67303 修复了工具名称标准化导致的媒体信任冒用问题。此前的 filterToolResultMediaUrls 根据标准化后的工具名称(如 Bash → bash)判断是否属于可信内置工具,但 normalizeCollide 会导致客户端提交的工具定义(如名为 "Bash" 的自定义工具)与真实内置工具共享同一信任状态,从而获得 MEDIA:file:// 路径的放行权限。修复后,Runner 现在传递精确原始工具名集合(builtinToolNames),媒体信任判断改为 exact raw-name 匹配,客户端工具名称若与内置工具发生 normalize 碰撞,会在 admission 阶段直接以 HTTP 400 invalid_request_error 拒绝请求。

PR #67298 堵住了 webchat 音频嵌入路径对 localRoots 的绕过。resolveLocalAudioFileForEmbedding 曾直接读取 15MB 以下的任意音频文件而未调用 assertLocalMediaAllowed 检查包含边界,导致攻击者可通过恶意工具输出或提示注入让 agent 将任意主机文件内容嵌入 webchat 音频块并发送给客户端。修复后,该函数现在调用 assertLocalMediaAllowed 进行 agent-scoped roots 校验,超出边界的访问会被静默丢弃并记录 warn 日志。

PR #67293 补充了同类问题的另一个缺口:resolveLocalMediaPathForEmbedding 使用原始 fileURLToPath() 解析 file:// URL,攻击者可传入 file://attacker/share/probe.mp3 触发出站 UNC/SMB 访问(在 Windows 上尤为严重)。修复已替换为 safeFileURLToPath(验证 hostname 为空或 localhost,并拒绝编码路径分隔符和 Windows UNC 路径),同时对直接传绝对路径的分支也加上了 assertNoWindowsNetworkPath 检查。

插件bundled运行时:根切换后元数据缓存一致性

由 Gustavo Madeira Santana 提交的 PR #67200 修复了 OPENCLAW_BUNDLED_PLUGINS_DIR 环境变量切换后,bundled channel 运行时复用过期元数据、入口和缓存的问题。

此前,bundled channel 的 runtime-store 按 pluginId 共享,但缓存和 bootstrap 插件列表在首次初始化后不会随根目录切换失效,导致在开发调试或容器重部署场景下使用了错误版本的 channel 配置。修复后,bundled channel discovery 和各级缓存均实现了 root-aware 机制,setup-entry/runtime-entry 加载增加了 early setup/runtime id 校验,setup 阶段失败也被正确隔离为 per-plugin 加载错误,不会污染其他 channel。该 PR 同时覆盖了 Matrix、Slack、Telegram、Discord、Feishu 等所有 20+ 个内置 channel。

其他值得注意的变更

本周期内还有多个 smaller-but-significant 修复值得关注:PR #67315 让 memory-core 在 session store 阶段就能识别 dreaming-narrative transcripts,避免在 bootstrap 记录到达前的竞态窗口内错误将梦境日记内容写入 Light Sleep 反思候选池。PR #66877 对 Telegram 频道的二进制附件(文档、图片等)增加了 payload 净化逻辑,防止超大二进制内容被意外拼入 prompt 导致 token 消耗异常膨胀。PR #67294 则进一步收紧了 Matrix 频道对 pairing-store 写入操作的权限边界,防止房间控制命令被源自 DM pairing-store 条目的请求错误授权。

整体来看,本周期 OpenClaw 的更新以安全加固和内存精细化管理为主线,核心运行时边界得到系统性补强。

常用链接

 
内容管家

发表评论