3.11 的博客我们没有单独发。不是因为没什么好说的——3.11 其实相当充实——而是四天后 3.12 就跟着出来了,合并成一篇更合理。两个版本,一篇文章。
以下是真正重要的内容。
Control UI:Dashboard v2
Control UI 从头重写了。不是换个皮,是重新想清楚了。
旧版 dashboard 是一张大而全的页面,什么都往上堆。新版拆成了独立视图:Overview、Chat、Config、Agent、Sessions,每个页面只做一件事。加入了命令面板(Cmd+K)供高级用户使用,手机端有底部导航栏,Chat 视图现在支持斜杠命令、消息搜索、导出和消息置顶。
这是 @BunsDev 在 PR #41503 中完成的工作,这种级别的贡献会实实在在地改变人们每天与 OpenClaw 打交道的方式。如果你平时通过浏览器管理实例,现在的体验已经不是原来那回事了。
快速模式:GPT-5.4 和 Claude,一个开关搞定
快速模式以前是个模糊的概念——有些模型支持,有些不支持,开关行为在不同界面里也不一致。
3.12 把这件事理顺了。现在有一个统一的 /fast 开关,在 TUI、Control UI 和 ACP 中都有效。对 OpenAI,它会将请求路由到 GPT-5.4 的快速档;对 Anthropic,它直接映射到 API 的 service_tier 参数。两者都会实时验证——如果你的账户没有快速档权限,系统会明确告知,而不是悄悄降级。
你可以在每个模型的配置中设置快速模式作为默认值,同时让其他模型保持标准模式。也可以在对话中随时切换。
一个开关,两家厂商,各处行为一致。就这么简单。
Ollama:正式升为一等公民(3.11)
Ollama 在 3.11 从"受支持"变成了"一等公民"。
引导向导现在有了专属的 Ollama 接入路径,提供两种模式:本地(全部在本机运行)和云端 + 本地(繁重任务走云端模型,隐私敏感的任务走本地)。支持浏览器内云端登录,根据你的硬件推荐适合的模型,并能智能判断何时不需要额外拉取本地模型。
这一点很关键,因为本地模型本质上是隐私问题的答案——无需 API Key,数据不离机,没有月租费。对于有这类需求的用户,现在的上手体验和接入云服务商一样顺畅。感谢 @BruceMacD。
另外,3.12 中 Ollama、vLLM 和 SGLang 都迁移到了服务商插件架构。服务商自主管理引导流程、模型发现、选择器配置和选后钩子,整体变得更模块化。如果你在做自定义服务商集成,这是现在推荐的模式。
多模态记忆:图像与音频(3.11)
OpenClaw 的记忆系统开始能"看"和"听"了。
3.11 为 memorySearch.extraPaths 新增了可选的多模态索引能力。把一个包含图片或音频文件的目录指定进去,记忆搜索就能在上下文中找到它们。底层使用 Gemini 的 gemini-embedding-2-preview 模型,支持自定义输出维度,维度变更时会自动重建索引。
这是需要主动开启的功能——不会悄悄给你的照片库建索引。但对于想让 Agent 记住视觉上下文(截图、流程图、收据)的用户,这是实质性的能力扩展。感谢 @gumadeiras。
iOS 和 macOS:原生体验持续打磨(3.11)
3.11 有两项重要的原生平台改进:
iOS 首页画布(@ngutman):iOS 应用新增了一个内置欢迎界面,提供实时 Agent 概览,在连接、重连和回到前台时自动刷新。浮动控件改为固定工具栏,布局适配小屏手机,Chat 现在会在已解析的主会话中打开,而不是合成的 iOS 会话。此外还加入了通过 Fastlane 支持 TestFlight 测试版发布的流程。
macOS 聊天界面(@ImLukeF):macOS 聊天输入区新增了模型选择器,重启后保持 thinking 等级的选择,并能正确跨服务商同步会话模型。
这些不是什么轰动的大功能,但它们会积累。每一次原生体验变得顺畅一点点,"用 Telegram 访问 OpenClaw"和"原生使用 OpenClaw"之间的差距就缩小一点。
Kubernetes:一个起点
3.12 新增了 Kubernetes 的基础安装方式:原始 manifests、用于本地测试的 Kind 配置,以及部署文档。感谢 @sallyom、@dzianisv 和 @egkristi。
这不是一个经过生产验证的 Helm Chart——它是一个起点,供想在 K8s 上运行 OpenClaw 的团队参考。预计会根据社区反馈快速迭代。
子 Agent:sessions_yield
一个小但重要的编排原语:sessions_yield 允许编排 Agent 立即结束当前轮次,跳过队列中所有待执行的工具调用,并将一个隐藏的后续载荷带入下一个会话轮次。
为什么重要:在多 Agent 工作流中,编排器有时需要提前退出某个轮次——可能是更高优先级的任务来了,也可能是当前工具链走偏了。以前只能等所有排队工作跑完。现在可以直接插队退出。感谢 @jriff(#36537)。
安全:8 份公告
如果你在生产环境中运行 OpenClaw,这一节请认真读。3.11 和 3.12 之间共有 8 份 GitHub Security Advisory:
严重:WebSocket 来源校验(3.11) **GHSA-5wcw-8jjv-m286** — 当代理头不存在时,浏览器来源校验会被跳过。在受信代理模式下,这会开启跨站 WebSocket 劫持路径,可能给不受信来源授予 `operator.admin` 权限。修复方案:来源校验现在对所有浏览器连接强制执行,不再依赖代理头是否存在。
3.12 安全修复
| 公告编号 | 问题描述 | 影响范围 |
|---|---|---|
| GHSA-99qw-6mr3-36qr | 工作区插件未经信任自动加载 | 克隆的仓库可能静默执行插件代码 |
| GHSA-pcqg-f7rg-xfvv | 执行审批提示中的不可见 Unicode 字符 | 零宽字符可伪装已审查的命令 |
| GHSA-9r3v-37xh-2cf6 | 执行检测中的 Unicode 规范化绕过 | 全角/不可见字符可逃避启发式检查 |
| GHSA-f8r2-vg7x-gh8m | POSIX 下执行白名单大小写敏感性问题 | 模式可跨大小写/目录边界过度匹配 |
| GHSA-r7vr-gr74-94p8 | 非所有者访问 /config 和 /debug | 授权非所有者可访问仅限所有者的界面 |
| GHSA-rqpp-rjj8-7wv8 | 共享令牌作用域自声明 | 无设备令牌可自行声明高级作用域 |
| GHSA-vmhq-cqm9-6p7q | 通过 browser.request 持久化浏览器配置 | 写权限调用方可持久化仅限管理员的浏览器配置 |
| GHSA-2rqg-gjgv-84jm | Agent 工作区边界被外部覆盖 | 外部调用方可绕过网关工作区边界限制 |
Unicode 相关的修复(GHSA-pcqg、GHSA-9r3v)尤其值得关注。攻击者利用零宽和全角 Unicode 字符,让恶意命令在审批提示中看起来完全正常。修复方案是在显示和检测之前,对 Unicode 进行规范化并剥离不可见格式字符。
工作区插件修复(GHSA-99qw)改变了一个默认行为:克隆仓库中的插件不再自动加载,需要明确的信任授权。这对依赖隐式工作区插件加载的用户是一个破坏性变更——而且是故意为之。
结论:升级到 3.12。 这些不是理论上的漏洞。
其他修复
两个版本中还有大量零散修复,这篇文章放不完,但对特定用户来说都很重要:
- •Telegram:模型选择持久化、HTML 分块、预览投递去重——四处独立修复,解决消息可靠性问题
- •Kimi Coding:恢复工具调用的原生 Anthropic 格式,修复订阅鉴权的 User-Agent 头,支持 kimi-k2.5:cloud 的 Ollama 兼容
- •Mattermost:Block 流式去重,本地文件上传时的回复媒体投递
- •BlueBubbles/iMessage:自聊天回声去重,不再广泛抑制 webhook
- •Windows:原生更新路径修复——不再因缺少 git 或 node-llama-cpp 而崩溃
- •沙盒:写操作不再静默创建空文件
- •Discord(3.11):线程可配置自动归档时长
变更汇总
| 模块 | 3.11 | 3.12 |
|---|---|---|
| 界面 | iOS 首页画布、macOS 模型选择器 | Control UI dashboard-v2、命令面板 |
| 模型 | Ollama 一等公民接入、OpenCode Go 服务商 | GPT-5.4 快速模式、Claude 快速模式、服务商插件架构 |
| 记忆 | 基于 Gemini embeddings 的图像/音频多模态索引 | — |
| 基础设施 | — | Kubernetes manifests、子 Agent sessions_yield |
| 安全 | WebSocket 来源校验(严重) | 7 份公告:插件、Unicode、作用域、工作区 |
| 平台 | Discord 线程归档、Feishu 图片修复 | Slack Block Kit、Mattermost 修复、Windows 原生更新 |
| 稳定性 | Telegram 预览投递(4 处修复)、Agent 故障转移优化 | Cron 去重、会话发现、沙盒写入修复 |
两个版本。没有废话。现在去更新。