← 返回更新日志

OpenClaw v2026.3.24-beta.1 预发布

2026-03-25 · GitHub 原文
## 2026.3.24-beta.1 ### 重大变更 ### 功能更新 - **网关/OpenAI 兼容性**:新增 `/v1/models` 和 `/v1/embeddings` 端点,并通过 `/v1/chat/completions` 和 `/v1/responses` 转发显式模型覆盖设置,以提升更广泛客户端和 RAG 系统的兼容性。感谢 @vincentkoc。 - **代理/工具**:使 `/tools` 端点仅显示当前代理实际可用的工具,新增紧凑型默认视图(可选详细模式),并在控制界面中添加实时“当前可用”板块,以便在提问前更清晰地了解可执行操作。感谢 @BunsDev。 - **Microsoft Teams**:迁移至官方 Teams SDK,并引入 AI 代理用户体验最佳实践,包括流式一对一回复、带提示启动器的欢迎卡片、反馈/反思功能、信息性状态更新、输入指示器以及原生 AI 标签。 (#51808) - **Microsoft Teams**:为已发送消息添加编辑和删除支持,包括在未提供明确目标时提供线程内回退机制。 (#49925) - **技能/安装元数据**:为捆绑技能(coding-agent、gh-issues、openai-whisper-api、session-logs、tmux、trello、weather)添加一键安装配方,使 CLI 和控制界面能在依赖缺失时提供安装指引。 (#53411) 感谢 @BunsDev。 - **控制界面/技能**:新增带计数的状态筛选标签页(全部/就绪/需配置/已禁用),用点击查看详情的对话框替换内联技能卡片,展示需求、切换开关、安装操作、API 密钥输入、源元数据和主页链接。 (#53411) 感谢 @BunsDev。 - **Slack/交互式回复**:恢复直接投递的富回复一致性,自动将尾随简单 `Options:` 行渲染为按钮/选择器,改进 Slack 交互式设置默认值,并将回复控件与插件交互处理器隔离。 (#53389) 感谢 @vincentkoc。 - **CLI/容器**:新增 `--container` 和 `OPENCLAW_CONTAINER` 参数,支持在运行的 Docker 或 Podman OpenClaw 容器内执行 `openclaw` 命令。 (#52651) 感谢 @sallyom。 - **Discord/自动线程**:新增可选 `autoThreadName: "generated"` 命名配置,使新自动创建的线程能通过 LLM 生成的简洁标题异步重命名,同时保留现有基于消息的命名作为默认行为。 (#43366) 感谢 @davidguttman。 - **插件/钩子**:新增 `before_dispatch` 钩子(携带规范化的入站元数据),并将已处理回复路由至常规最终投递路径,保留 TTS 和路由投递语义。 (#50444) 感谢 @gfzhx。 - **控制界面/代理**:将代理工作区文件行转换为可展开的 `<details>` 元素(支持延迟加载内联 Markdown 预览),并为标题、列表、代码块、表格、引用以及 details/summary 元素添加全面的 `.sidebar-markdown` 样式。 (#53411) 感谢 @BunsDev。 - **控制界面/Markdown 预览**:重新设计代理工作区文件预览对话框(采用毛玻璃背景、自适应面板和样式化页头),并集成 `@create-markdown/preview` v2 系统主题以实现富 Markdown 渲染(标题、表格、代码块、标注、引用),自动适配应用的明/暗设计令牌。 (#53411) 感谢 @BunsDev。 - **macOS 应用/配置**:用可折叠树形侧边栏(带展开箭头和缩进子区块行)替换水平胶囊式子区块导航。 (#53411) 感谢 @BunsDev。 - **CLI/技能**:将“缺失”需求标签柔化为“需配置”,并在 `openclaw skills info` 输出中展示 API 密钥设置指引(密钥获取位置、CLI 保存命令、存储路径)。 (#53411) 感谢 @BunsDev。 - **macOS 应用/技能**:在 API 密钥编辑器对话框中添加“获取密钥”主页链接和存储路径提示,并在保存确认消息中显示配置路径。 (#53411) 感谢 @BunsDev。 - **控制界面/代理**:在默认代理模型选择下拉框中添加“未设置”占位符。 (#53411) 感谢 @BunsDev。 ### 问题修复 - **安全/沙箱媒体投递**:关闭 `mediaUrl`/`fileUrl` 别名绕过漏洞,防止出站工具和消息操作突破媒体根目录限制。 (#54034) - **网关/重启信标**:重启后通过心跳唤醒中断的代理会话(而非仅发送尽力而为的重启通知),在瞬时故障时重试出站投递一次,并保留显式线程/话题路由信息以确保回复准确落入 Telegram 话题或 Slack 线程。 (#53940) 感谢 @VACInc。 - **Docker/安装**:通过 `openclaw-gateway` 路由安装时的 onboard/config 写入操作,避免预启动 `openclaw-cli` 共享网络命名空间循环,使全新 Docker 安装在网关启动前不再失败。 (#53385) 感谢 @amsminn。 - **网关/频道**:保持频道启动顺序执行,同时隔离各频道启动失败情况,使单个频道故障不再阻塞后续频道启动。 (#54215) 感谢 @JonathanJing。 - **嵌入式运行/密钥**:通过回退到已解析的运行时快照,阻止未解析的 `SecretRef` 配置导致嵌入式代理运行崩溃。修复 #45838。 - **WhatsApp/群组**:跟踪最近网关发送的消息 ID,仅抑制匹配的群组回声,保留所有者 `/status`、`/new` 和 `/activation` 命令免受关联账户 `fromMe` 流量干扰。 (#53624) 感谢 @w-sss。 - **WhatsApp/回复机器人检测**:通过解包 `botInvokeMessage` 载荷并从 `creds.json` 读取 `selfLid`,恢复隐式群组回复检测,使关联账户群聊中的基于回复的提及能重新触达机器人。 - **Telegram/论坛话题**:当 Telegram 省略论坛元数据时恢复 `#General` 话题 `1` 路由,涵盖原生命令、交互式回调、入站消息上下文和回退错误回复。 (#53699) 感谢 @huntharo。 - **Discord/网关监管**:将网关错误处理集中到生命周期拥有的监管者中,确保早期、活跃和后期拆卸阶段的 Carbon 网关错误保持一致的分类,并防止其作为进程终止性拆卸崩溃暴露。 (#53823) 感谢 @Kimbo7870。 - **Discord/超时**:当入站 Discord 工作线程在最终回复开始前超时时,发送可见超时回复(包括已创建的自动线程目标和排队运行顺序)。 (#53823) 感谢 @Kimbo7870。 - **ACP/直接聊天**:即使最终 TTS 未生成音频,也始终交付终端 ACP 结果(即使先前已流式传输块文本),并跳过冗余的空文本最终合成。 (#53692) 感谢 @w-sss。 - **Telegram/出站错误**:保留可操作的 403 成员资格/屏蔽/踢出详情,并将 `bot not a member` 视为永久投递失败,使 Telegram 停止重试 doomed 聊天。 (#53635) 感谢 @w-sss。 - **Telegram/照片**:预检 Telegram 照片尺寸和宽高比规则,当图像元数据无效或不可用时回退至文档发送,防止照片上传因 `PHOTO_INVALID_DIMENSIONS` 失败。 (#52545) 感谢 @hnshah。 - **Slack/运行时默认值**:精简 Slack DM 回复开销,恢复 Codex 自动传输,并收紧 Slack/网络搜索运行时默认设置(DM 预览线程化、缓存范围、警告去重、显式网络搜索选择加入)。 (#53957) 感谢 @vincentkoc。 - **Doctor/图像生成**:为迁移的遗留 Nano Banana Google 提供商配置植入 `/v1beta` API 根和空模型列表,使 `openclaw doctor --fix` 能完成迁移,且迁移后的原生 Google 图像路径继续命中正确端点。 (#53757) 感谢 @mahopan。 - **模型/Google**:规范裸 Google Generative AI API 根的自定义提供商名称,并在仅在各模型上声明 `api` 时保持内置 Google 模型 ID 重写生效,使自定义 Google 通道和旧配置不再缺失 `/v1beta` 或预览 ID 规范化。 (#44969) 感谢 @Kathie-yu。 - **飞书/启动**:在账户解析期间将未解析的 `SecretRef` 应用凭据视为未配置,防止 CLI 启动和只读飞书配置在运行时支持的密钥解析前崩溃。 (#53675) 感谢 @hpt。 - **飞书/群组**:当 `groupPolicy` 为 `open` 时,停止隐式要求未设置 `requireMention` 的 @提及,使图像、文件、音频等非文本群消息能送达机器人(除非操作员明确保持提及限制)。 (#54058) 感谢 @byungsker。 - **飞书/启动**:在机器人身份启动探测失败时保持 `requireMention` 强制严格,将启动机器人信息超时提升至 30 秒,并添加可取消的后台身份恢复,使提及限制群组能在无干扰回退情况下恢复。 (#43788) 感谢 @lefarcen。 - **飞书/MSTeams 消息工具**:在合并的工具架构中保持提供商原生 `card` 载荷可选,防止仅媒体发送在通道运行时投递前验证失败。 (#53715) 感谢 @lndyzwdxhs。 - **飞书/docx 块排序**:插入块时保留 `docx.document.convert` 的文档树顺序,修复新写入飞书文档中标题/段落/列表错序问题。 (#40524) 感谢 @TaoXieSZ。 - **Telegram/原生命令**:对已解析运行时快照执行原生斜杠命令,确保当新鲜配置读取暴露未解析 SecretRefs 时 DM 命令仍能回复。 (#53179) 感谢 @nimbleenigma。 - **网关/端口**:正确解析 Docker Compose 风格的 `OPENCLAW_GATEWAY_PORT` 主机发布值,不再复活遗留的 `CLAWDBOT_GATEWAY_PORT` 覆盖。 (#44083) 感谢 @bebule。 - **插件/memory-lancedb**:在 OpenAI 嵌入请求前引导环境配置的 HTTP/HTTPS 代理调度器,使内存捕获和召回在需要代理的环境中恢复工作。 (#54119) 感谢 @neeravmakwana。 - **运行时/构建**:稳定长期惰性 `dist` 运行时入口路径,并强化捆绑插件 npm 暂存,防止本地重建因缺失哈希块或损坏的 shell `npm` 填充而失败。 (#53855) 感谢 @vincentkoc。 - **安全/技能**:针对各包管理器对技能安装程序元数据执行严格正则允许列表验证,净化技能元数据终端输出,在 Markdown 预览和技能主页链接中实施 URL 协议允许列表,警告非捆绑技能安装源,并移除不安全的 `file://` 工作区链接。 (#53471) 感谢 @BunsDev。 - **内存/内置 sqlite**:通过每个源快照文件状态一次、重用同步语句以及合并状态聚合读取,削减冗余同步和状态查询波动,降低内置内存在同步/状态/doctor 类路径上的开销。感谢 @vincentkoc。 - **TUI/聊天**:当缓慢的本地运行发出空最终事件时保留待定用户消息,但仍在新活动运行完成后延迟刷新所需历史记录,避免静默/仅工具运行保持不完整状态。 (#53130) 感谢 @joelnishanth。 - **DeepSeek/定价**:用当前 DeepSeek V3.2 定价替换零成本 DeepSeek 目录费率,使 DeepSeek 会话使用总额不再显示 `$0.00`。 (#54143) 感谢 @arkyu2077。 - **CLI/日志**:使美观日志时间戳在默认 UTC 和 `--local-time` 模式下始终包含显式时区偏移,防止事件排查混合使用模糊时钟显示。 (#38904) 感谢 @sahilsatralkar。 - **浏览器/默认检测**:识别 macOS LaunchServices Edge 捆绑 ID,使默认 Chromium 检测在 Edge 为系统默认时不再回退到 Chrome。 (#48561) 感谢 @zoherghadyali。 - **CLI/Telegram 话题**:通过 Telegram `topic-create` 路由 `message thread create`(需提供话题 `name` 字段),使 Telegram 论坛话题创建功能在 CLI 中恢复工作。 (#54336) 感谢 @andyliu。 - **Telegram/配对**:将配对码和批准命令渲染为 Telegram 专用代码块,同时保持共享配对回复为其他频道的纯文本。 (#52784) 感谢 @sumukhj1219。 - **代理/cron**:即使目标非 cron 会话密钥,也抑制 cron 触发嵌入式运行的默认心跳系统提示,防止 cron 任务读取 `HEARTBEAT.md` 并污染无关线程。 (#53152) 感谢 @Protocol-zero-0。 - **代理/cron**:当任何载荷失败时将尽力而为的公告运行标记为未投递,并记录部分投递失败而非静默报告成功。 (#42535) 感谢 @MoerAI。 - **插件**:对工具/消息守卫强制执行终端钩子决策语义。 (#54241) 感谢 @joshavant。 - **市场/代理**:修正代理文档中的 ClawHub 技能 URL,并将市场归档下载流式传输至磁盘,避免安装过程内存使用过量并在空响应时干净失败。 (#54160) 感谢 @QuinnH496。 - **Discord/配置类型**:向 `DiscordGuildChannelConfig` 添加缺失的 `autoArchiveDuration`,使 TypeScript 配置定义与现有架构和运行时支持匹配。 (#43427) 感谢 @davidguttman。 - **文档/IRC**:修复 IRC 频道示例中五个 `json55` 代码围栏拼写错误,使 Mintlify 正确应用 JSON5 语法高亮。 (#50842) 感谢 @Hollychou924。