3.22 拆了旧架构,重建了地基。3.23 确保缝合线没崩。龙虾从手术台上活着下来了——勉强。40 多个修复、8 个 auth 补丁、两个浏览器回归解决。病人算是稳住了。
现在,病人站起来了。
3.24 在 3.23 发布一天后就跟了上来。343 次提交。18 项 Breaking Changes。15 项修复。但这次的 Breaking Changes 不是再开一刀——是康复训练。有目的、有控制的动作,教新身体做旧身体做不到的事。
老规矩再说一遍:生产环境的龙虾,谨慎升级。
Breaking Changes
18 项 Breaking Changes。但跟 3.22 那种拆骨头的 Breaking 不一样,这次是康复训练——每一项都是在教龙虾用新骨架做新动作。
Microsoft Teams:平台级重写
Teams 不是修修补补了——是推倒重来。
整个 Microsoft Teams 集成迁移到官方 Teams SDK,AI Agent 的 UX 最佳实践直接内建。(#51808) 流式 1:1 回复。带 prompt starters 的欢迎卡。反馈与反思流程。有意义的状态更新。输入指示器。原生 AI 标签。这不是在聊天适配器上硬塞 AI 功能——是从 SDK 层面构建一等公民的 AI Agent 体验。感谢 @vincentkoc。
在此之上,已发送消息的编辑和删除也到位了,包括没有明确指定目标时的线程内回退。(#49925) 你现在可以纠正或撤回 bot 说过的话了——这功能本来就该从第一天就有。
Teams 是这个版本里最大的单项投入。旧的集成能用。新的集成用得对。
开发者工具与 Skill 生态
七项变更聚焦一个主题:让开发者和运维知道自己有什么工具、缺什么、怎么装。
工具可见性:/tools 现在展示当前 agent 此刻真正能用的工具列表,而不是一个理论上的目录。默认紧凑视图,可选详细模式。Control UI 多了一个实时的"Available Right Now"区域,让你在提问之前就能看到什么是可用的。
Skill 安装体验:内置 skill——coding-agent、gh-issues、openai-whisper-api、session-logs、tmux、trello、weather——现在附带一键安装方案。(#53411) CLI 和 Control UI 在依赖缺失时可以主动提供安装。Skill 管理界面新增状态筛选标签(All / Ready / Needs Setup / Disabled)带计数,以及点击详情弹窗,展示依赖、开关、安装操作、API Key 输入、来源元数据和主页链接。CLI 把缺依赖的标签从"missing"软化成"needs setup",并显示 API Key 设置指引。macOS App 在 API Key 编辑器里加了"Get your key"主页链接和存储路径提示。整个 Skill UX 翻新感谢 @BunsDev。
Node 版本下限:Node 22 的支持下限降到 22.14+,同时继续推荐 Node 24,这样 npm 安装和自我更新不会把 Node 22.14 用户卡在旧版本上。CLI 现在会在执行 openclaw update 之前预检目标 npm 包的 engines.node,过时的 Node 运行时会收到明确的升级提示,而不是去尝试安装一个不兼容的版本。
Control UI 进化
四项变更,把 Control UI 从"能用的面板"推向"你真的想用的东西"。
Agent 工作区的文件行改成可展开的 <details>,带延迟加载的内联 markdown 预览,加上完整的 .sidebar-markdown 样式覆盖标题、列表、代码块、表格、引用和 details/summary 元素。(#53411)
文件预览弹窗改成毛玻璃背景、固定尺寸面板和样式化头部,集成 @create-markdown/preview v2 做富 markdown 渲染——标题、表格、代码块、callout、引用——自动适配 App 的明暗主题 token。(#53411)
macOS App 把水平药片式的子导航换成了带折叠箭头和缩进子行的树状侧边栏。Agent 模型选择器下拉框增加了"Not set"占位符,空状态不再令人困惑。(#53411) 全部感谢 @BunsDev。
频道能力扩展
三项变更,让各个频道变得更聪明。
Slack 恢复了直接投递的富回复对等性,自动把行尾的 Options: 渲染成按钮和选择器,改善了 Slack 交互设置默认值,并把回复控件与插件交互处理器隔离开。(#53389) 感谢 @vincentkoc。
Discord 新增可选的 autoThreadName: "generated" 命名方式,自动创建的线程可以被异步重命名为 LLM 生成的精简标题,同时保留现有的基于消息的命名作为默认。(#43366) 感谢 @davidguttman。
插件/钩子新增 before_dispatch,带规范化的入站元数据,处理后的回复走正常的最终投递路径,保留 TTS 和路由投递语义。(#50444) 感谢 @gfzhx。
基础设施与兼容性
两项变更,让 OpenClaw 跑在更多地方,和更多东西对话。
Gateway/OpenAI 兼容:新增 /v1/models 和 /v1/embeddings 端点,显式模型覆盖通过 /v1/chat/completions 和 /v1/responses 转发,提升客户端和 RAG 的兼容性。感谢 @vincentkoc。
CLI 容器支持:--container 和 OPENCLAW_CONTAINER 让你在运行中的 Docker 或 Podman OpenClaw 容器内直接执行 openclaw 命令。(#52651) 不用再 exec 进容器然后祈祷 CLI 装好了。感谢 @sallyom。
安全
两个修复堵住了媒体沙箱的缺口。
mediaUrl/fileUrl 别名绕过被关闭,出站工具和消息操作无法再逃脱媒体根目录限制。(#54034) 这是一个真实的逃逸——结构化的 payload 可以通过别名绕过沙箱边界。修了。
出站媒体访问与配置的 fs 策略对齐:workspaceOnly 关闭时,本地文件和入站媒体路径继续正常发送;严格的工作区模式下 agent 仍然被沙箱限制。之前策略不一致——有些路径尊重沙箱,有些不。现在统一了。
修复
Gateway
重启哨兵 (#53940):中断的 agent 会话现在通过心跳唤醒重启,而不是只发一条尽力而为的重启通知。出站投递在瞬态失败时重试一次。显式的线程/话题路由在唤醒路径中保留,回复落在正确的 Telegram 话题或 Slack 线程里。感谢 @VACInc。
频道启动隔离 (#54215):频道启动保持顺序执行,但每个频道的启动失败被隔离——一个坏掉的频道不再阻塞后续频道启动。感谢 @JonathanJing。
Docker
安装循环 (#53385):全新 Docker 安装不再在 gateway 启动前就失败。通过把安装阶段的 onboard/config 写入路由到 openclaw-gateway,绕过了 openclaw-cli 的共享网络命名空间循环。感谢 @amsminn。
群组回声 (#53624):追踪最近由 gateway 发出的消息 ID,只抑制匹配的群组回声,保留关联账户 fromMe 流量中的 /status、/new 和 /activation 命令。感谢 @w-sss。
回复 bot 检测:通过解包 botInvokeMessage payload 和从 creds.json 读取 selfLid,恢复了隐式群组回复检测,基于回复的 @ 提及在关联账户群聊中又能触达 bot 了。
Telegram
论坛话题 (#53699):在 Telegram 省略论坛元数据时恢复 #General topic 1 路由,覆盖原生命令、交互回调、入站消息上下文和回退错误回复。感谢 @huntharo。
出站错误 (#53635):保留可操作的 403 成员/封禁/踢出详情。bot-not-a-member 被视为永久投递失败,Telegram 发送停止对注定失败的聊天重试。感谢 @w-sss。
图片 (#52545):预检 Telegram 图片尺寸和宽高比规则,图片元数据无效或不可用时回退到文档发送。图片上传不再因 PHOTO_INVALID_DIMENSIONS 失败。感谢 @hnshah。
Discord
Gateway 监管:Gateway 错误处理集中到生命周期管理的 supervisor 后面,早期、活跃期和延迟拆除的 Carbon gateway 错误保持一致分类,不再以杀进程的拆除崩溃形式冒出来。
超时 (#53823):入站 Discord worker 在最终回复开始前超时时,发送一条可见的超时回复,包括已创建的自动线程目标和排队运行排序。感谢 @Kimbo7870。
Slack
运行时默认值 (#53957):精简 Slack DM 回复开销,恢复 Codex 自动传输,收紧 Slack/web-search 运行时默认值——围绕 DM 预览线程、缓存范围、警告去重和显式 web-search opt-in。感谢 @vincentkoc。
其他
嵌入运行/Secrets:未解析的 SecretRef 配置不再导致嵌入 agent 运行崩溃——系统在需要时回退到已解析的运行时快照。修复 #45838。
ACP/直接聊天 (#53692):当最终 TTS 没有产生音频时,始终投递一个终端 ACP 结果,即使 block 文本之前已经流式传输过。跳过多余的空文本最终合成。感谢 @w-sss。
贡献者
18 位贡献者在 3.24 中落地了变更。特别感谢 @BunsDev,大约十项贡献横跨整个 Skill 安装体验、Control UI 工作区、markdown 预览、macOS 导航和模型选择器——这种聚焦且有设计感的贡献,把"能用"变成了"用着舒服"。
@vincentkoc 交付了 Microsoft Teams SDK 重写、Slack 交互回复恢复、Gateway OpenAI 兼容和 Slack 运行时默认值——一个版本里覆盖四个主要领域。
@w-sss 落地了三个频道修复,横跨 WhatsApp 群组回声、Telegram 出站错误处理和 ACP 直接聊天投递。
感谢 @sallyom(CLI 容器)、@davidguttman(Discord 自动线程)、@gfzhx(插件钩子)、@VACInc(gateway 重启哨兵)、@amsminn(Docker 安装)、@JonathanJing(gateway 频道隔离)、@huntharo(Telegram 论坛话题)、@Kimbo7870(Discord 超时)、@hnshah(Telegram 图片)。
升级建议
- •Teams 用户:这是一次完整的 SDK 迁移。检查你的 Teams 频道配置——集成接口发生了重大变化。
- •Docker 用户:新的
--container标志让你在运行中的容器内执行 CLI 命令。全新安装应该不再在初始化阶段失败了。 - •Node 版本:下限降到 Node 22.14+,但仍推荐 Node 24。运行
openclaw update——CLI 现在会在尝试安装前告诉你 Node 版本是否太旧。 - •插件/钩子作者:
before_dispatch是新的钩子点,带规范化的入站元数据。如果你维护拦截入站消息的插件,检查一下新的分发流程。 - •生产环境龙虾:一如既往,谨慎升级。先在 staging 测试。
---
3.22 打开胸腔,换了发动机。3.23 缝好伤口,守着监护仪。3.24,龙虾站起来了——不只是能走,是在跑。
18 项 Breaking Changes 没有打碎什么——它们在重建的架构上构建新能力。一次完整的 Teams 平台重写。一个终于会告诉你自己需要什么的 Skill 生态。一个开始像产品而不是管理面板的 Control UI。15 项修复继续在每个频道拧紧螺丝。
康复训练的目标从来不是回到受伤前的水平。是变得比受伤前更强。
龙虾在跑了。比以前任何时候都快。