2026 年 3 月 7 日,OpenClaw 发布 v2026.3.7-beta.1,创下这个项目迄今最密集的单版本更新纪录——89 次代码提交、200 余个 Bug 修复。创始人 Peter Steinberger 在 X 上亲自高调宣布,社区随即引爆讨论。
这不是一次普通的迭代。在宏大数字之外,本次更新的核心价值是一项等待了半年的架构突破:ContextEngine 插件接口——它让 OpenClaw 从”用什么上下文管理策略取决于官方”变成了”你说了算”。本文逐层解析本次更新的技术内核。更多资讯请访问 OpenClaw 中文版官网。
一、89 次提交、200+ Bug 修复:数字背后的意义
自 OpenClaw 爆红以来,多渠道并行支持、跨平台部署和快速迭代让积压的技术债务以肉眼可见的速度增长。v2026.3.7-beta 是一次大规模的”清账”:200 余个 Bug 覆盖了几乎所有主要功能模块,从 Discord 断线恢复到 iMessage 回声循环,从 Slack 重复回复到飞书流式卡片——凡是社区长期报告但未被修复的问题,这次得到了系统性清理。
更重要的是,89 次提交并非分散的小修小补,而是围绕一个核心架构目标聚焦展开。在所有提交中,ContextEngine 插件接口(PR #22201)一项就重塑了 OpenClaw 处理上下文的方式。
二、ContextEngine 插件接口:上下文管理的”插拔革命”
历史背景:硬编码的痛点
在 v2026.3.7 之前,OpenClaw 的上下文压缩逻辑是硬编码在核心代码中的。当对话长度接近 Token 上限时,系统会按固定策略进行有损压缩:丢弃旧消息、生成粗略摘要——开发者无法干预,也无法替换。
这带来了实际使用中反复出现的三类问题:
- 智能体漂移:长对话中 AI 开始回复上一条消息而非当前消息,整个对话脱轨
- 记忆黑洞:上下文被压缩后,关键决策、未完成任务的上下文随之蒸发
- 任务断层:多步骤任务在压缩后丢失批处理进度、用户最新请求和跟进承诺
ContextEngine 的设计理念
v2026.3.7 引入的 ContextEngine 插件接口采用插槽式注册表(Slot-based Registry)和配置驱动解析(Config-driven Resolution)设计:你在配置文件中指定使用哪个 ContextEngine 插件,系统将上下文管理的全部控制权委托给该插件。核心代码不再包含任何压缩逻辑,全部外包给插件层。
使用方式极为简洁:
{
"plugins": {
"slots": {
"contextEngine": "lossless-claw"
}
}
}
什么都不配置时,系统自动加载 LegacyContextEngine 包装器——完整保留此前的压缩行为,零行为变更,完全向后兼容。
7 个生命周期钩子:完整接管上下文全周期
ContextEngine 插件通过 7 个生命周期钩子介入上下文管理的每个关键节点:
| 钩子名称 | 触发时机 | 典型用途 |
|---|---|---|
| bootstrap | 插件初始化时 | 建立持久化存储(SQLite、向量数据库等),加载已有记忆索引 |
| ingest | 每条新消息进入系统时 | 将消息写入持久化存储,更新记忆图谱,触发增量索引 |
| assemble | 每次向 LLM 发送请求前,组装上下文时 | 决定哪些历史消息、摘要、记忆片段进入本次请求的上下文窗口 |
| compact | 上下文接近 Token 上限时 | 执行自定义压缩策略:可以是摘要生成、DAG 压缩、向量检索等任意方式 |
| afterTurn | 每轮对话完成后 | 持久化本轮对话结果,更新摘要节点,清理临时状态 |
| prepareSubagentSpawn | 子智能体被创建前 | 为子智能体配置独立的上下文范围,防止父子智能体上下文污染 |
| onSubagentEnded | 子智能体任务结束时 | 将子智能体的工作结果合并回父上下文,清理子智能体专属记忆空间 |
PR 作者 @jalehman 说明:大多数使用场景只需要实现前四个核心钩子(bootstrap、ingest、assemble、compact),后两个子智能体相关钩子仅在构建需要独立记忆空间的子智能体协作场景时才需要。
子智能体钩子的运行时隔离通过 AsyncLocalStorage 实现,确保子智能体的上下文读写操作天然隔离,不需要调用者手动管理作用域。
三、lossless-claw:第一个 ContextEngine 参考插件
官方在发布 ContextEngine 接口的同时,也在 Release Notes 中特别提及了第一个成熟的参考实现——lossless-claw(由 Martian Engineering 开发)。
核心原理:DAG 无损压缩
传统上下文压缩面临的根本矛盾是:压缩 = 信息损失。lossless-claw 通过一种截然不同的架构解决这个问题:
原始消息永不删除。所有对话消息都被持久化写入 SQLite 数据库,按会话组织,物理上不会被截断或丢弃。
当对话变长需要”压缩”时,系统不是丢弃旧消息,而是:
- 用配置的 LLM 为旧消息块生成摘要节点
- 将摘要节点组织成有向无环图(DAG),低层节点是原始消息,高层节点是摘要
- 每轮对话发送给 LLM 的是摘要层 + 最新原始消息的组合,而非截断后的历史
这意味着:AI 在任何时候都能”回溯”到完整的原始对话——lossless-claw 为此提供了三个专用工具供 AI 主动检索:
lcm_grep:在历史对话中全文搜索关键词lcm_describe:描述特定时间段的对话摘要lcm_expand:展开某个摘要节点,查看对应的原始消息
安装与配置
# 安装 lossless-claw
openclaw plugins install lossless-claw
# 或通过 ClawHub
openclaw plugins install clawhub:lossless-claw
安装后,插件配置会自动写入 plugins.slots.contextEngine: "lossless-claw"。可选的环境变量调优:
# 在达到 75% 上下文容量时提前触发压缩(默认 100%)
LCM_CONTEXT_THRESHOLD=0.75
# 指定用于生成摘要的模型(默认使用系统主模型)
LCM_SUMMARY_MODEL=deepseek/deepseek-chat
# 指定摘要生成的服务商
LCM_SUMMARY_PROVIDER=deepseek
PR 作者 @jalehman 本人在发布时表示,他已连续运行 lossless-claw 一周:”说它表现良好,是轻描淡写。”
四、ACP 持久化频道绑定:重启后不再失联
ACP(Agent Control Protocol)持久化频道绑定是本次更新的另一个高频需求(PR #34873,贡献者 @dutifulbob)。
解决的问题:在此之前,ACP 线程目标(如 Discord 频道或 Telegram 话题)的绑定关系存储在内存中。每次 OpenClaw 重启——无论是更新、崩溃恢复还是主动重启——都会丢失所有频道绑定,需要用户手动重新绑定,对于维护多智能体、多频道工作流的用户极为烦人。
修复后的效果:
- Discord 频道和 Telegram 话题的绑定关系现在被持久化写入磁盘
- 重启后自动恢复所有绑定,无需任何手动操作
- 支持通过 CLI 管理绑定关系(列出、删除、更新)
- Telegram 话题现在支持按话题路由独立智能体——同一个 Telegram 论坛群组的不同话题可以运行完全不同的智能体,互不干扰
五、GPT-5.4 和 Gemini 3.1 Flash:首次亮相
v2026.3.7 是 GPT-5.4 和 Gemini 3.1 Flash 在 OpenClaw 官方模型目录中的首次出现。
- GPT-5.4:OpenAI 面向智能体任务优化的模型,在 OSWorld-Verified 基准测试中达到 75.0%,超过人类基线(72.4%),对浏览器自动化和多步骤工具调用场景有专门优化
- Gemini 3.1 Flash:Google 高速多模态模型,以低延迟著称,适合实时响应场景
两个模型在升级后自动更新别名,无需修改现有配置。如需显式使用:
# 使用 GPT-5.4
/model openai/gpt-5.4
# 使用 Gemini 3.1 Flash
/model google/gemini-3.1-flash-preview
六、破坏性变更:gateway.auth.mode 必须显式设置
⚠️ 升级前必读:如果你的配置文件中同时设置了
gateway.auth.token和gateway.auth.password(包括通过 SecretRef 方式),必须在升级前显式设置gateway.auth.mode,否则 Gateway 将拒绝启动。
受影响的配置场景
以下两种情况需要立即处理:
# 场景一:显式同时配置了 token 和 password
{
"gateway": {
"auth": {
"token": "your-token",
"password": "your-password"
// ❌ 缺少 auth.mode,升级后将启动失败
}
}
}
# 场景二:通过 SecretRef 同时引用 token 和 password
{
"gateway": {
"auth": {
"token": { "$ref": "env:OPENCLAW_TOKEN" },
"password": { "$ref": "env:OPENCLAW_PASSWORD" }
// ❌ 同样需要显式 mode
}
}
}
修复方法
# 检查当前配置
openclaw config get gateway.auth
# 修复:选择其中一种模式
openclaw config set gateway.auth.mode token
# 或
openclaw config set gateway.auth.mode password
设计意图:这是一个主动的”失败关闭(Fail Closed)”安全改进。同时配置两种认证方式意味着系统无法确定应该使用哪种,模糊的安全状态比明确报错更危险。强制显式声明消除了潜在的配置歧义。
七、200+ Bug 修复:高频问题专项盘点
Telegram:Stale-Socket 重启风暴修复
修复了一个已存在多个版本的重大稳定性问题:OpenClaw 将长时间正常运行的 Telegram 连接误判为”过期 Socket”并触发重启,随后重启又被误判,形成恶性循环(重启风暴)。
修复方案:只对发布了事件存活时间戳的渠道应用 Stale-Socket 检测,Telegram 提供商不再因为单纯的长时间运行而被误标为过期。
Memory/QMD:混合搜索和文件 URI 修复
- 修复了 BM25 混合搜索在某些查询下回退到纯向量搜索的问题
- 修复了只包含文件 URI(格式:
qmd://collection/path.md)而没有 docid 的搜索命中无法被解析的问题 - QMD 配置目录现在按智能体独立隔离,防止跨智能体集合索引冲突
iMessage:回声循环加固
修复了 iMessage 通道中智能体回复被自身再次接收并处理的回声循环问题,包括:去除出站回复中泄漏的助手内部脚手架文本、延长回声缓存文本保留时间以应对延迟反射,以及在队列溢出前提前抑制循环流量。
Slack:重复回复与流式 Markdown 修复
- 修复了 Slack 频道中同一消息被处理两次导致重复回复的问题
- 修复了流式 Markdown 被双重转换(HTML 实体编码后再次转义)导致输出乱码的问题
- 修复了 Reaction 回复的线程路由错误
飞书:流式卡片修复
修复了飞书流式卡片(Streaming Card)在特定条件下内容更新失败的问题,以及群聊中 @提及 检测的误判。
子智能体:竞态条件修复
- 修复了 announce 模式下子智能体在结束信号和完成信号之间的竞态条件
- 修复了工具调用结果清理的超时问题
八、安全修复:供应链与路径遍历漏洞
Hono 框架漏洞
OpenClaw 依赖的 Hono Web 框架存在已知安全漏洞,本次更新将 Hono 升级到修复版本。
tar 硬链接路径遍历(GHSA-qffp-2rhf-9h96)
修复了 tar 包中的硬链接路径遍历漏洞(CVE 编号 GHSA-qffp-2rhf-9h96)。该漏洞允许特制的 tar 归档文件通过硬链接在提取时写入归档根目录以外的位置。对于 OpenClaw 而言,这意味着安装恶意技能包时可能覆盖系统文件。
ZIP 硬链接竞态条件
修复了 ZIP 提取中类似的硬链接竞态条件问题。
/status 和 /models 命令凭证泄漏
修复了 /status 和 /models 命令输出中可能包含凭证片段的问题,现在这两个命令会主动过滤并脱敏敏感内容。
九、其他值得关注的改进
TUI 改进
/new命令现在为每个客户端分配真正独立的会话,不再存在多 TUI 客户端共享同一会话的问题- 会话键规范化修复:
openclaw tui --session的值现在统一转小写处理,大写会话名不再导致实时流失败 - 模型指示器状态过时问题修复(显示的模型不再落后一步)
上下文压缩连续性增强
即使不使用 ContextEngine 插件,内置的压缩逻辑也得到改进:压缩交接时现在会保留活跃任务状态、批处理进度、最新用户请求和跟进承诺,减少压缩后的任务断层。
Ollama 远程提供商支持
- 新增 Ollama 远程提供商认证回退支持
- 支持 Ollama 自定义请求头
- Ollama 现在支持上下文压缩和摘要生成
Docker 多阶段构建优化
Docker 构建流程重构为多阶段构建,减少最终镜像体积,为 iOS App Store 提交做准备(需要更小的依赖树)。
HEIF 图像格式支持
新增对 HEIF/HEIC 图像格式的支持(iPhone 默认拍摄格式),OpenClaw 现在可以直接处理从 iOS 设备分享的 HEIF 图片,无需用户手动转换格式。
引导向导 API Key 输入加固
修复了复制 API Key 时携带的不可见 Unicode 字符(非 Latin-1)导致 HTTP 头 ByteString 构建崩溃的问题。现在系统会自动净化输入,保留合法 Latin-1 字符和内部空格,丢弃其他 Unicode 工件。
十、版本时间线与历史地位
将 v2026.3.7 放在 OpenClaw 版本演进的时间线中看,它的意义更为清晰:
| 版本 | 发布时间 | 核心主题 |
|---|---|---|
| v2026.2.17 | 2026-02-17 | Claude Sonnet 4.6 + 1M Token 上下文(Beta) |
| v2026.3.7-beta | 2026-03-07 | ContextEngine 插件接口 + 200+ Bug 修复(本版) |
| v2026.3.24 | 2026-03-25 | Teams SDK 重构 + 7 个技能一键安装 |
| v2026.3.28 | 2026-03-28 | MiniMax image-01 + xAI Responses API |
| v2026.3.31 | 2026-03-31 | 插件运行时外部化(引发 Docker 依赖问题) |
| v2026.4.1 | 2026-04-02 | 修复 Docker 依赖 + /tasks 看板 + Cron 工具白名单 |
v2026.3.7 处于 OpenClaw 3 月密集更新潮的起点,扮演了”清账 + 奠基”的双重角色:密集 Bug 修复清除了前两个月爆炸式增长积累的技术债,ContextEngine 接口为后续的插件生态发展打下架构基础。
十一、升级操作指南
升级前检查(关键)
# 步骤 1:备份配置
cp ~/.openclaw/openclaw.json ~/.openclaw/openclaw.json.bak-3.7
cp -r ~/.openclaw/credentials/ ~/.openclaw/credentials.bak-3.7/
# 步骤 2:检查 gateway.auth 配置
openclaw config get gateway.auth
# 步骤 3:如果同时存在 token 和 password,必须设置 auth.mode
# 确认只使用其中一种认证方式,并设置:
openclaw config set gateway.auth.mode token
# 或
openclaw config set gateway.auth.mode password
执行升级
# npm 方式
npm install -g openclaw@latest
# Docker 方式
docker compose pull && docker compose up -d
# 验证版本
openclaw --version
# 应显示:2026.3.7 或更高
升级后验证
# 全面健康检查
openclaw doctor
# 确认 Gateway 正常启动(特别是 auth.mode 相关)
openclaw gateway status
# 如有兴趣,试用 lossless-claw 插件
openclaw plugins install clawhub:lossless-claw
openclaw daemon restart
# 发送几条消息后,观察上下文是否得到更好的保留
总结
v2026.3.7-beta 的历史价值在于两件事的同时发生:
向后看——200+ Bug 修复是对爆红两个月后积压问题的系统性清算,它让 OpenClaw 从”原型级可用”迈向”生产级可信赖”;
向前看——ContextEngine 插件接口将 OpenClaw 从”工具”升维为”平台”。开发者可以针对特定场景构建专属的上下文管理策略,形成可复用、可分享的插件生态。lossless-claw 的 DAG 无损压缩只是第一个示范;随着接口的开放,更多的上下文管理创新将在社区中涌现。
这是 OpenClaw 历史上技术密度最高的单次更新,也是理解这个项目从”爆火工具”迈向”基础设施平台”的关键版本节点。想继续追踪 OpenClaw 每个版本的中文深度解读,欢迎访问 OpenClaw 中文版官网。