← 返回更新日志

OpenClaw v2026.3.22

2026-03-23 · GitHub 原文
### 重大变更 - **插件/安装**:裸命令 `openclaw plugins install <package>` 现在会优先从 ClawHub 而非 npm 获取 npm 安全名称,仅当 ClawHub 中没有对应包或版本时才回退到 npm。文档:https://docs.openclaw.ai/tools/clawhub - **浏览器/Chrome MCP**:移除遗留的 Chrome 扩展中继路径、打包的扩展资源、`driver: "extension"` 以及 `browser.relayBindHost`。运行 `openclaw doctor --fix` 可将主机本地浏览器配置迁移至 `existing-session` / `user`;Docker、无头、沙箱和远程浏览器流程仍使用原始 CDP。文档:https://docs.openclaw.ai/gateway/doctor 和 https://docs.openclaw.ai/tools/browser (#47893) 感谢 @vincentkoc。 - **工具/图像生成**:在核心 `image_generate` 工具上标准化内置图像创建/编辑路径。旧的 `nano-banana-pro` 文档/示例已移除;如果之前复制了该示例技能配置,请切换到 `agents.defaults.imageGenerationModel` 以使用内置图像生成,或显式安装单独的第三方技能。 - **技能/图像生成**:移除打包的 `nano-banana-pro` 技能包装器。改用 `agents.defaults.imageGenerationModel.primary: "google/gemini-3-pro-image-preview"` 实现原生的 Nano Banana 风格路径。 - **插件/SDK**:新的公共插件 SDK 接口为 `openclaw/plugin-sdk/*`;`openclaw/extension-api` 已被移除且无兼容性填充。打包的插件必须使用注入的运行时进行主机端操作(例如 `api.runtime.agent.runEmbeddedPiAgent`),任何剩余的直接导入必须来自狭窄的 `openclaw/plugin-sdk/*` 子路径,而非单体 SDK 根目录。文档:https://docs.openclaw.ai/plugins/sdk-migration 和 https://docs.openclaw.ai/plugins/sdk-overview - **插件/消息发现**:共享 `message` 工具发现现在需要 `ChannelMessageActionAdapter.describeMessageTool(...)`。遗留的 `listActions`、`getCapabilities` 和 `getToolSchema` 适配器方法已被移除。插件作者应将消息发现迁移到 `describeMessageTool(...)`,并将频道特定的操作运行时代码保留在所属插件包内。感谢 @gumadeiras。 - **插件/Matrix**:新增由官方 `matrix-js-sdk` 支持的 Matrix 插件。如果从之前的公共 Matrix 插件升级,请遵循迁移指南:https://docs.openclaw.ai/install/migrating-matrix 感谢 @gumadeiras。 - **配置/环境**:在运行时、安装程序和测试工具中移除遗留的 `CLAWDBOT_*` 和 `MOLTBOT_*` 兼容性环境名称。请改用对应的 `OPENCLAW_*` 环境名称。 - **配置/状态**:移除遗留的 `.moltbot` 状态目录和 `moltbot.json` 自动检测/迁移回退。如果仍将状态保留在 `~/.moltbot` 下,请将其移至 `~/.openclaw` 或显式设置 `OPENCLAW_STATE_DIR` / `OPENCLAW_CONFIG_PATH`。文档:https://docs.openclaw.ai/install/migrating 和 https://docs.openclaw.ai/start/getting-started - **执行/环境沙箱**:阻止主机执行环境中的构建工具 JVM 注入(`MAVEN_OPTS`、`SBT_OPTS`、`GRADLE_OPTS`、`ANT_OPTS`)、glibc 可调优利用(`GLIBC_TUNABLES`)以及 .NET 依赖项解析劫持(`DOTNET_ADDITIONAL_DEPS`),并将 Gradle 初始化脚本重定向(`GRADLE_USER_HOME`)限制为仅覆盖块,以便用户配置的 Gradle 主目录仍能传播。 (#49702) - **Discord/命令**:默认将原生命令部署切换到 Carbon 协调,使 Discord 重启停止通过 OpenClaw 的本地部署路径频繁变动斜杠命令。 (#46597) 感谢 @huntharo 和 @thewilloftheshadow。 - **安全/执行审批**:在允许列表评估和始终允许持久化期间,将 `time` 视为透明分发包装器,以便批准的 `time ...` 命令绑定到内部可执行文件而非包装器路径。感谢 @YLChen-007 报告。 - **语音通话/网络钩子**:在读取正文前拒绝缺少提供者签名标头的请求,将预认证正文预算降至 `64 KB` / `5s`,并限制每个源 IP 的并发预认证请求数,以便未经身份验证的调用者无法强制使用旧的 `1 MB` / `30s` 缓冲路径。感谢 @SEORY0 报告。 - **插件/Matrix**:在消息实际路由前,停止因提及门控或其他原因被丢弃的房间聊天刷新聚焦的线程绑定,以便在需要提及的房间中空闲 ACP 和会话绑定仍能正常过期。感谢 @vincentkoc、@dinakars777 和 @mvanhorn。 - **插件/Matrix**:跨网关重启持久去重传入房间事件,避免之前处理的 Matrix 消息作为新消息重放,同时为未见过的事件保留干净重启积压传递。 (#50922) 感谢 @gumadeiras - **代理/媒体回复**:将剩余的浏览器、画布和节点快照输出迁移到 `details.media`,以便生成的媒体在收集后附加重构后仍能附加到助手回复。 (#51731) 感谢 @christianklotz。 - **Android/联系人搜索**:在联系人名称查询中转义字面量 `%` 和 `_`,使 `100%` 或 `_id` 等搜索不再通过 SQL `LIKE` 通配符匹配不相关的联系人。 (#41891) 感谢 @Kaneki-x。 - **网关/使用情况**:在总计、会话发现和仅归档会话详情回退中包含重置和已删除的归档会话记录,以便使用情况视图不再低估轮换的会话。 (#43215) 感谢 @rcrick。 ### 新功能 - **ClawHub/安装**:新增原生 `openclaw skills search|install|update` 流程,以及 `openclaw plugins install clawhub:<package>`(带跟踪的更新元数据)、网关技能安装/更新对 ClawHub 支持请求的支持,以及新源路径的回归覆盖/文档。 - **插件/市场**:新增 Claude 市场注册表解析、`plugin@marketplace` 安装、市场列表和更新支持,以及本地和官方市场流程的 Docker E2E 覆盖。 (#48058) 感谢 @vincentkoc。 - **命令/插件**:新增所有者门控的 `/plugins` 和 `/plugin` 聊天命令,用于插件列表/显示和启用/禁用流程,以及显式的 `commands.plugins` 配置门控。感谢 @vincentkoc。 - **安装/更新**:允许通过 `openclaw update --tag main`、安装程序 `--version main` 或直接的 npm/pnpm git 规范从 GitHub `main` 进行包管理器安装。 (#47630) 感谢 @vincentkoc。 - **插件/捆绑包**:新增兼容的 Codex、Claude 和 Cursor 捆绑包发现/安装支持,将捆绑技能映射到 OpenClaw 技能,并将 Claude 捆绑包 `settings.json` 默认值应用于嵌入式 Pi(清理了 shell 覆盖)。感谢 @vincentkoc。 - **CLI/钩子**:将钩子包安装和更新路由通过 `openclaw plugins`,保持 `openclaw hooks` 专注于钩子可见性和每钩子控制,并在 CLI 输出中显示插件管理的钩子详情。 - **模型/OpenAI**:将默认 OpenAI 设置模型切换为 `openai/gpt-5.4`,Codex 保持为 `openai-codex/gpt-5.4`,并将 OpenAI 聊天、图像、TTS、转录和嵌入默认值集中到一个共享模块,以便未来默认模型更新保持低变动。感谢 @vincentkoc。 - **代理**:新增每代理思考/推理/快速默认值,并在代理默认选择中自动还原被禁止的模型覆盖。感谢 @xuanmingguo 和 @vincentkoc。 - **命令/btw**:新增 `/btw` 侧边问题,用于在不改变未来会话上下文的情况下对当前会话进行快速无工具回答,具有可关闭的会话内 TUI 回答和外部频道上的显式 BTW 回复。 (#45444) 感谢 @ngutman。 - **沙箱/运行时**:新增可插拔沙箱后端,发布具有 `mirror` 和 `remote` 工作区模式的 OpenShell 后端,并使沙箱列表/重建/修剪以后端感知而非仅 Docker 进行。感谢 @vincentkoc。 - **沙箱/SSH**:新增核心 SSH 沙箱后端,支持基于密钥、证书和 known_hosts 输入的机密,将共享远程执行/文件系统工具移至核心,并保持 OpenShell 专注于沙箱生命周期加可选的 `mirror` 模式。 - **浏览器/现有会话**:支持 `browser.profiles.<name>.userDataDir`,以便 Chrome DevTools MCP 可通过其自身用户数据目录附加到 Brave、Edge 和其他基于 Chromium 的浏览器。 (#48170) 感谢 @velvet-shark。 - **插件/捆绑包**:使已启用的捆绑 MCP 服务器在嵌入式 Pi 中公开可运行工具,并将默认相对捆绑 MCP 启动指向捆绑根目录,以便像 Context7 这样的市场捆绑包可通过 Pi 工作,而不是在配置导入处停止。 - **插件/提供者**:将 OpenRouter、GitHub Copilot 和 OpenAI Codex 提供者/运行时逻辑移至打包插件,包括动态模型回退、运行时身份验证交换、流包装器、能力提示和缓存 TTL 策略。 - **模型/Anthropic Vertex**:新增核心 `anthropic-vertex` 提供者支持,通过 Google Vertex AI 支持 Claude,包括 GCP 身份验证/发现和主运行路径路由。 (#43356) 感谢 @sallyom 和 @yossiovadia。 - **插件/Chutes**:新增具有插件拥有 OAuth/API 密钥身份验证、动态模型发现和默认开启扩展连接的打包 Chutes 提供者。 (#41416) 感谢 @Veightor。 - **网络工具/Exa**:新增 Exa 作为打包的网络搜索插件,支持 Exa 原生日期过滤器、搜索模式选择和 `plugins.entries.exa.config.webSearch.*` 下的可选内容提取。感谢 @V-Gutierrez 和 @vincentkoc。 - **网络工具/Tavily**:新增 Tavily 作为打包的网络搜索提供者,具有专用的 `tavily_search` 和 `tavily_extract` 工具,使用 `plugins.entries.tavily.config.webSearch.*` 下的规范插件拥有配置。 (#49200) 感谢 @lakshyaag-tavily。 - **网络工具/Firecrawl**:新增 Firecrawl 作为 `onboard`/配置搜索提供者,通过打包插件,公开显式的 `firecrawl_search` 和 `firecrawl_scrape` 工具,并使核心 `web_fetch` 回退行为与 Firecrawl 基础 URL/环境回退以及受保护的端点获取保持一致。 - **模型/OpenAI**:在 OpenAI 提供者目录、运行时解析和推理能力门控中新增对 `gpt-5.4-mini` 和 `gpt-5.4-nano` 的原生前向兼容支持。感谢 @vincentkoc。 - **控制 UI/聊天**:在助手聊天气泡和应用内会话导航(从会话和定时器视图)上新增展开到画布按钮。感谢 @BunsDev。 - **控制 UI/外观**:统一 Claw、Knot 和 Dash 的主题边框半径,并在外观设置中新增圆度滑块,以便用户可将角半径从锐利调整为完全圆角。感谢 @BunsDev。 - **控制 UI/使用情况**:改进使用情况概览样式、本地化以及响应式聊天/上下文通知呈现,包括更安全的主题颜色处理和未裁剪的使用情况标题菜单。 (#51951) 感谢 @BunsDev。 - **控制 UI/使用情况**:移除空的会话详情占位符卡片,以便在选择真实会话详情面板之前,使用情况视图保持单列。 (#52013) 感谢 @BunsDev。 - **Android/移动**:在入职前后屏幕中新增系统感知的深色主题,使应用在设置、聊天和语音流程中跟随设备主题。 (#46249) 感谢 @sibbl。 - **Android/通话**:将 Talk 语音合成移至网关 `talk.speak` 后,将 Talk 机密保留在网关上,并将 Android 播放切换到最终响应音频而非设备本地 ElevenLabs 流。 (#50849) - **Android/节点**:新增 `callLog.search` 以及共享通话记录权限连接,以便 Android 节点可通过网关搜索最近通话记录。 (#44073) 感谢 @lixuankai。 - **Android/节点**:新增 `sms.search` 以及共享短信权限连接,以便 Android 节点可通过网关搜索设备短信。 (#48299) 感谢 @lixuankai。 - **Telegram/apiRoot**:跨发送、探测、设置、医生修复和入站媒体下载路径新增每账户自定义 Bot API 端点支持,以便代理或自托管的 Telegram 部署端到端工作。 (#48842) 感谢 @Cypherm。 - **Telegram/主题**:在首条消息上使用 LLM 生成的标签自动重命名 DM 论坛主题,具有每账户和每 DM `autoTopicLabel` 覆盖。 (#51502) 感谢 @Lukavyi。 - **Telegram/操作**:新增 `topic-edit` 用于论坛主题重命名和图标更新,同时共享插件运行时使用的相同 Telegram 主题编辑传输。 (#47798) 感谢 @obviyus。 - **Telegram/错误回复**:新增默认关闭的 `channels.telegram.silentErrorReplies` 设置,以便机器人错误回复可在常规回复、原生命令和回退发送中静默传递。 (#19776) 感谢 @ImLukeF。 - **飞书/卡片**:新增结构化交互式审批和快速操作启动器卡片,通过路由保留回调用户和对话上下文,并保持遗留卡片操作回退行为,以便常见操作无需键入原始命令即可运行。 (#47873) 感谢 @Takhoffman。 - **飞书/ACP**:为支持的 DM 和主题对话新增当前对话 ACP 和子代理会话绑定,包括完成传递回原始飞书对话。 (#46819) 感谢 @Takhoffman。 - **飞书/流式传输**:在流式卡片中新增 `onReasoningStream` 和 `onReasoningEnd` 支持,以便 `/reasoning stream` 将思考令牌作为同一卡片中的 markdown 块引用渲染——匹配 Telegram 频道的推理通道行为。 (#46029) 感谢 @day253。 - **飞书/卡片**:为飞书回复和直接发送新增身份感知结构化卡片页眉和注释页脚,同时通过共享出站身份路径保持该呈现连接。 (#29938) 感谢 @nszhsl。 - **插件/Matrix**:新增 `allowBots` 房间策略,以便配置的 Matrix 机器人账户可以相互交谈,具有可选的仅提及门控。感谢 @gumadeiras。 - **插件/Matrix**:新增每账户 `allowPrivateNetwork` 选择加入私有/内部 homeserver,同时保持公共明文 homeserver 被阻止。感谢 @gumadeiras。 - **插件/MiniMax**:新增 MiniMax-M2.7 和 MiniMax-M2.7-highspeed 模型,并将默认模型从 M2.5 更新为 M2.7。 (#49691) 感谢 @liyuan97。 - **MiniMax/快速模式**:将共享 `/fast` 和 `params.fastMode` 映射到 MiniMax `-highspeed` 模型,适用于 M2.1、M2.5 和 M2.7 API 密钥和 OAuth 运行。感谢 @vincentkoc。 - **模型/MiniMax 默认值**:将打包的 MiniMax M2.5/M2.7 上下文窗口、最大令牌和定价元数据提升到当前上游 Pi SDK 提供的更高默认值。感谢 @vincentkoc。 - **模型/MiniMax**:新增打包的 `MiniMax-M2`、`MiniMax-M2.1` 和 `MiniMax-M2.1-highspeed` 目录条目,以便 OpenClaw 的提供者元数据和 OAuth 别名与当前上游 Pi SDK 保持一致。感谢 @vincentkoc。 - **插件/MiniMax**:将打包的 MiniMax API 和 MiniMax OAuth 插件表面合并为单个默认开启的 `minimax` 插件,同时保持遗留 `minimax-portal-auth` 配置 id 别名以实现兼容性。 - **代理/Pi 兼容性**:使 OpenClaw 的打包 MiniMax 运行时行为与当前上游 Pi 0.61.1 版本保持一致,以便嵌入式运行保持与最新发布 Pi SDK 语义的同步。感谢 @vincentkoc。 - **模型/GitHub Copilot**:允许无需代码更新的前向兼容动态模型 id,同时为这些合成模型保留配置的提供者和每模型覆盖。 (#51325) 感谢 @fuller-stack-dev。 - **xAI/模型**:将打包的 Grok 目录同步到当前的 Pi 支持 ID、限制和定价元数据,同时保持较旧的 Grok 快速和 4.20 别名在运行时干净解析。感谢 @vincentkoc。 - **xAI/快速模式**:将共享 `/fast` 和 `params.fastMode` 映射到当前的 xAI Grok 快速模型系列,以便直接 Grok 运行可以选择更快的 Pi 支持变体。感谢 @vincentkoc。 - **CLI/配置**:使用 SecretRef 和提供者构建模式、JSON/批量分配支持以及具有结构化 JSON 输出的 `--dry-run` 验证扩展 `config set`。 (#49296) 感谢 @joshavant。 - **Z.AI/模型**:将打包的 GLM 目录同步到当前 Pi 元数据,包括较新的 4.5/4.6 模型系列、更新的多模态条目以及当前定价和令牌限制。感谢 @vincentkoc。 - **Mistral/模型**:将打包的默认 Mistral 元数据同步到当前 Pi 定价,以便内置默认值不再宣传零成本使用。感谢 @vincentkoc。 - **插件/Xiaomi**:将打包的 Xiaomi 提供者切换到 `/v1` OpenAI 兼容端点,并将 MiMo V2 Pro 和 MiMo V2 Omni 添加到内置目录。 (#49214) 感谢 @DJjjjhao。 - **代理/压缩**:在后续自动压缩开始和完成时通知用户,使这些通知远离 TTS 并保留真实助手回复的回复线程。 (#38805) 感谢 @zidongdesign。 - **内存/插件**:让活动内存插件注册其自己的系统提示部分,同时保留缓存清除和快照加载提示隔离。 (#40126) 感谢 @jarimustonen。 - **网关/健康监控**:新增可配置的陈旧事件阈值和重启限制,以及每频道和每账户 `healthMonitor.enabled` 覆盖,同时保持 `gateway.channelHealthCheckMinutes=0` 上的现有全局禁用路径。 (#42107) 感谢 @rstar327。 - **插件/代理集成**:扩展插件表面以支持具有频道感知命令、交互式回调、入站声明以及 Discord/Telegram 对话绑定支持的应用服务器集成。 (#45318) 感谢 @huntharo 和 @vincentkoc。 - **插件/绑定**:新增 `onConversationBindingResolved(...)`,以便插件可在绑定批准或拒绝后立即反应,而不阻止频道交互确认。 (#48678) 感谢 @huntharo。 - **插件/上下文引擎**:在公共插件 SDK 上公开 `delegateCompactionToRuntime(...)`,重构遗留引擎以使用共享助手,并澄清非拥有引擎的 `ownsCompaction` 委托语义。 (#49061) 感谢 @jalehman。 - **插件/上下文引擎**:将嵌入式运行器 `modelId` 传递到上下文引擎 `assemble()`,以便插件可根据模型调整上下文格式。 (#47437) 感谢 @jscianna。 - **插件/上下文引擎**:为上下文引擎新增转录维护重写,在重写期间保留活动分支转录元数据,并将溢出恢复截断加固为在正常会话写入锁下重写会话。 (#51191) 感谢 @jalehman。 - **技能/提示预算**:在当完整提示格式超过 `maxSkillsPromptChars` 时丢弃条目之前,通过紧凑目录回退保留所有已注册技能。 (#47553) 感谢 @snese。 - **钩子/工作区**:保持仓库本地 `<workspace>/hooks` 禁用直到显式启用,阻止工作区钩子名称冲突遮蔽打包/管理/插件钩子,并将 `hooks.internal.load.extraDirs` 视为受信任的管理钩子源。 - **安全/插件**:拒绝远程市场清单条目在克隆的市场仓库之外扩展安装,包括外部 git/GitHub 源、HTTP 归档和绝对路径。 - **网关/文档**:澄清空 URL 输入允许列表被视为未设置,记录 `allowUrl: false` 作为拒绝所有开关,并为规范化路径新增回归覆盖。 - **机密**:加固只读 SecretRef 命令路径和诊断。 (#47794) 感谢 @joshavant。 - **范围消息 SecretRef 解析并加固医生/状态路径。** (#48728) 感谢 @joshavant。 - **构建/内存工具**:将 `dist/cli/memory-cli.js` 作为稳定核心入口发出,以便运行时 `memory_search` 加载不再依赖哈希的 `memory-cli-*` 捆绑名称。 (#51759) 感谢 @oliviareid-svg。 - **插件/测试**:新增公共 `openclaw/plugin-sdk/testing` 表面用于插件作者测试助手,并将仅打包扩展测试桥从 `extensions/` 移至私有仓库测试助手。 - **代理/转向文档**:更新嵌入式 Pi 转向文档和运行器注释以匹配当前上游行为,其中排队转向在活动助手回合完成其工具调用后注入,而不是在回合中途跳过剩余工具。感谢 @vincentkoc。 - **医生/重构**:开始通过首先提取 Telegram 首次运行和组允许列表警告到提供者特定模块,将医生提供者检查拆分为 `src/commands/doctor/providers/*`,保持当前设置指导和警告行为不变。感谢 @vincentkoc。 - **重构/频道**:移除遗留频道填充目录并将频道特定导入直接指向扩展拥有的实现。 (#45967) 感谢 @scoootscooob。 - **文档/Zalo**:澄清市场机器人支持矩阵和配置指导,以便 Zalo 频道文档更紧密匹配当前 Bot Creator 行为。 (#47552) 感谢 @No898。 - **文档/插件**:将社区钉钉插件列表添加到文档目录。 (#29913) 感谢 @sliverp。 - **文档/插件**:将社区 QQbot 插件列表添加到文档目录。 (#29898) 感谢 @sliverp。 - **文档/插件**:将社区企业微信插件列表添加到文档目录。 (#29905) 感谢 @sliverp。 ### 问题修复 - **网络工具/搜索提供者列表**:在保持单独的运行时自动检测优先级(用于基于凭证的提供者选择)的同时,保持入职、配置和文档提供者列表按字母顺序排列。 - **媒体/Windows 安全**:在核心媒体加载和相邻提示/沙箱接缝中的本地文件系统解析之前,阻止远程主机 `file://` 媒体 URL 和 UNC/网络路径,以便下一个版本不再允许结构化本地媒体输入触发 Windows 上的出站 SMB 凭据握手。感谢 @RacerZ-fighting 报告。 - **网关/发现**:在 CLI 发现、入职和 `gateway status` 中对未解析的 Bonjour 和 DNS-SD 服务端点失败关闭,以便仅 TXT 提示不再能引导路由或 SSH 自动目标选择。感谢 @nexrin 报告。 - **安全/配对**:将 iOS 设置代码绑定到预期的节点配置文件,并拒绝请求更广泛角色或范围的首次使用引导兑换。感谢 @tdjackey。 - **内存/核心工具**:独立注册 `memory_search` 和 `memory_get`,以便一个不可用的内存工具不再在新会话中抑制另一个。 (#50198) 感谢 @artwalker。 - **网络工具/Exa**:通过支持较新的搜索类型和更丰富的 `contents` 选项使打包的 Exa 插件与当前 Exa API 保持一致,同时修复结果计数上限以遵守 Exa 的更高限制。感谢 @vincentkoc。 - **插件/Matrix**:将打包插件 `KeyedAsyncQueue` 导入移至稳定的 `plugin-sdk/core` 表面,以便 Matrix Docker/运行时构建不依赖脆弱的 keyed-async-queue 子路径。感谢 @ecohash-co 和 @vincentkoc。 - **Nostr/安全**:在解密前强制执行入站 DM 策略,将 Nostr DMs 路由通过标准回复管道,并添加预加密速率和大小保护,以便未知发送者无法绕过配对或强制无限制的加密工作。感谢 @kuranikaran。 - **群晖聊天/安全**:默认情况下将回复传递绑定到稳定的数字 `user_id`,并将可变用户名/昵称收件人查找置于 `dangerouslyAllowNameMatching` 后并新增回归覆盖。感谢 @nexrin。 - **代理/默认超时**:将共享默认代理超时从 `600s` 提高到 `48h`,以便长时间运行的 ACP 和代理会话不会失败,除非您配置更短的限制。 - **网关/启动**:从内置安装的编译 `dist/extensions` 条目加载打包的频道插件,以便网关启动不再在每次启动时重新编译打包的扩展 TypeScript,而 WhatsApp 级别的冷启动降至秒级而非数十秒或更差。 (#47560) 感谢 @ngutman。 - **网关/启动**:在频道启动前预热配置的主模型,并在 transient 提供者运行时缺失时重试一次,以便启动后的第一条 Telegram 或 Discord 消息不再因 `Unknown model: openai-codex/gpt-5.4` 而失败。感谢 @vincentkoc。 - **CLI/启动**:延迟加载频道添加和根帮助启动路径以修剪可避免的 RSS 和帮助延迟,适用于受限主机。 (#46784) 感谢 @vincentkoc。 - **配置/启动**:将出站发送依赖项解析移至轻量助手,以便 `openclaw configure` 不再在横幅后停滞,同时急切加载频道插件。 (#46301) 感谢 @scoootscooob。 - **CLI/身份验证选择**:延迟加载插件/提供者回退解析,以便映射的身份验证选择保持在静态路径上,仅未知选择支付沉重的提供者加载。 (#47495) 感谢 @vincentkoc。 - **网关/Discord 启动**:在网关启动期间仅加载配置的频道插件,并延迟加载 Discord 提供者/会话运行时设置,以便启动停止导入不相关的提供者并减少冷启动延迟。感谢 @vincentkoc。 - **代理/入站**:延迟加载纯文本回合的媒体和链接理解,并按认证文件状态缓存同步的认证存储,以便普通入站回复避免不必要的启动变动。感谢 @vincentkoc。 - **代理/OpenAI 兼容工具调用**:跨实时助手消息和重放历史记录去重重复的工具调用 id,以便 OpenAI 兼容后端不再因重复的 `tool_call_id` 值而拒绝 HTTP 400。 (#40996) 感谢 @xaeon2026。 - **代理/OpenAI 响应**:对于非 OpenAI 兼容响应端点剥离 `prompt_cache_key` 和 `prompt_cache_retention`,同时将它们保留在直接 OpenAI 和 Azure OpenAI 路径上,以便第三方 OpenAI 兼容提供者不再因这些请求而拒绝 HTTP 400。 (#49877) 感谢 @ShaunTsai。 - **模型/OpenAI 补全**:默认非原生 OpenAI 兼容提供者省略工具定义 `strict` 字段,除非用户显式选择回退,以便工具调用在使用拒绝该选项的提供者时保持工作。 (#45497) 感谢 @sahancava。 - **模型/OpenRouter 运行时能力**:在首次使用时获取未编录的 OpenRouter 模型元数据,以便新添加的视觉模型保持图像输入而不是静默降级为仅文本,并为 `/api/v1/models` 提供顶级能力字段回退。 (#45824) 感谢 @DJjjjhao。 - **控制 UI/会话路由**:在外部发起的会话中,当 webchat 视图或发送时保留已建立的出站传递路由,以便子代理完成仍返回到原始频道而非仪表板。 (#47797) 感谢 @brokemac79。 - **Telegram/回复**:在针对回复目标的发送和媒体错误通知上设置 `allow_sending_without_reply`,以便删除的父消息不再丢弃其他有效回复。 (#52524) 感谢 @moltbot886。 - **Telegram/轮询**:对卡住的 `getUpdates` 请求进行硬超时,以便卡住的网络路径更快失败,而不是等待轮询停滞看门狗。感谢 @vincentkoc。 - **Android/位置**:使当前位置请求在超时后丢弃延迟回调,而不是因 `Already resumed` 崩溃。 (#52318) 感谢 @Kaneki-x。 - **Android/配对**:在入职期间将无端口安全设置 URL 解析为 `443`,同时保留直接的明文网关默认值和显式的 `:80` 手动端点。 (#43540) 感谢 @fmercurio。 - **Android/画布**:忽略来自打包脚手架和受信任 A2UI 表面之外的页面的桥接消息。感谢 @vincentkoc。 - **CLI/状态**:通过跳过未在 JSON 有效负载中呈现的插件兼容性扫描,保持 `status --json` stdout 干净。 (#52449) 感谢 @cgdusek。 - **WhatsApp/重新连接**:在扩展收件箱监控中恢复追加最近性过滤器,并正确处理 protobuf `Long` 时间戳,以便重新连接后的新鲜追加消息得到处理,而陈旧历史同步保持抑制。 (#42588) 感谢 @MonkeyLeeT。 - **WhatsApp/登录**:在 Baileys `515` 配对重启后(在 QR 登录和 `channels login` 流程中)等待待处理的凭据写入后再重新打开,并将重启覆盖范围固定到实际包装的错误形状加上每账户凭据队列。 (#27910) 感谢 @asyncjason。 - **Android/画布**:在评估 WebView JS 之前序列化 A2UI 操作状态事件字符串,以便操作 id 和多行错误不会破坏回调分发。 (#43784) 感谢 @Kaneki-x。 - **Android/相机**:在 `camera.snap` 中回收中间和最终快照位图,以便重复捕获不泄漏原生图像内存。 (#41902) 感谢 @Kaneki-x。 - **控制 UI/日志记录**:使浏览器安全日志记录导入避免急切临时目录解析,以便打包的控制 UI 在日志记录达到 `tmp-openclaw-dir` 时不再崩溃为空白屏幕。 (#48469) 修复 #48062。感谢 @7inspire。 - **控制 UI/聊天会话**:再次在分组会话下拉菜单中显示人类可读标签,在元数据缺失时保持唯一作用域回退,并仅在需要时消除重复标签。 (#45130) 感谢 @luzhidong。 - **Telegram/回复**:在描述回复上下文时忽略格式错误的非字符串回复文本和标题字段,以便意外的 Telegram 回复负载不再破坏入站上下文组装。 (#50500) 感谢 @p3nchan。 - **控制 UI/仪表板**:在重启断开连接期间保留结构化的网关关闭原因,以便配置触发的重启不再回退到 `disconnected (1006): no reason`。 (#46580) 修复 #46532。感谢 @vincentkoc。 - **Android/聊天**:明确主题思考下拉菜单和 TLS 信任对话框,以便弹出表面匹配活动应用主题而不是回退到不匹配的 Material 默认值。 - **节点/启动**:移除遗留调试 `console.log("node host PATH: ...")`,该调试在每次 `openclaw node run` 调用时打印解析的 PATH。 (#46515) 修复 #46411。感谢 @ademczuk。 - **Slack/启动**:加固 `@slack/bolt` 导入跨当前打包运行时形状的互操作性,以便 Slack 监控在插件 SDK 打包更改后不再因 `App is not a constructor` 而崩溃。 (#45953) 感谢 @merc1305。 - **控制 UI/模型切换**:在从聊天下拉菜单切换模型时保留选定的提供者前缀,以便多提供者设置不再在用户选择 `openai/gpt-5.2` 时发送 `anthropic/gpt-5.2` 样式的错配。 (#47581) 感谢 @chrishham。 - **控制 UI/存储**:按网关基础路径范围持久化设置键,从遗留共享键迁移,以便一个域下的多个网关停止覆盖彼此的仪表板首选项。 (#47932) 感谢 @bobBot-claw。 - **控制 UI/概览**:在仪表板启动期间保持语言下拉菜单与持久化的语言环境一致,以便刷新页面在语言环境水合完成前不会回退到英语。 (#48019) 感谢 @git-jxj。 - **macOS/登录时启动**:对桌面应用启动代理停止发出 `KeepAlive`,以便 OpenClaw 在登录时启用时手动退出后不再立即重新启动。 (#40213) 感谢 @stablegenius49。 - **Mattermost/线程**:对于已线程化的入站帖子,遵循 `replyToMode: "off"`,以便线程后续回复在配置时回退到顶层回复。 (#52543) 感谢 @RichardCao。 - **入职/自定义提供者**:使用 Responses API 配置形状存储 Azure OpenAI 和 Azure AI Foundry 自定义端点,规范化的 `/openai/v1` 基础 URL 和 Azure 安全默认值,以便 TUI 和代理运行在设置后工作。 (#49543) 感谢 @kunalk16。 - **CLI/完成**:减少递归完成脚本字符串变动并修复嵌套 PowerShell 命令路径匹配,以便生成的嵌套完成在 PowerShell 上也解析。 (#45537) 感谢 @yiShanXin 和 @vincentkoc。 - **macOS/画布操作**:仅在受信任的应用内画布表面上保留无人值守的本地代理操作,并停止将深度链接回退密钥暴露给任意页面脚本。 (#46790) 感谢 @vincentkoc。 - **代理/压缩**:在压缩进行中时延长封闭运行截止时间一次,并在超时/取消时中止底层 SDK 压缩,以便大型会话压缩停止在运行中途冻结。 (#46889) 感谢 @asyncjason。 - **网关/Telegram 关闭**:在关闭时中止卡住的 Telegram 轮询获取,清理每周期中止监听器,并保持进程内看门狗在主管停止超时之前,以便 SIGTERM 不再留下僵尸网关。 (#51242) 感谢 @juliabush。 - **Telegram/设置**:当设置将 DMs 留在配对而没有允许列表时发出警告,并显示有效的账户作用域补救命令。 (#50710) 感谢 @ernestodeoliveira。 - **医生/Telegram**:用首次运行指导替换全新安装空组允许列表误报,该指导解释 DM 配对批准和下一步组设置步骤,以便新的 Telegram 安装获得可操作的设置帮助而非错误配置警告。感谢 @vincentkoc。 - **医生/扩展**:将 Matrix DM `allowFrom` 修复保留在规范 `dm.allowFrom` 路径上,并停止将 Zalouser 组发送者门控视为回退到 `allowFrom`,以便医生警告和 `--fix` 与运行时访问控制保持一致。感谢 @vincentkoc。 - **医生/重构**:将内置频道医生语义集中到一个静态能力注册表中,对未知/外部频道采用保守回退行为,以便未来扩展更改停止依赖分散的共享字符串检查。感谢 @vincentkoc。 - **频道/插件**:通过修复 Slack 自定义回调路由和重复点击去重,允许仅交互发送,以及保留有序 Discord 共享文本块,保持共享交互式有效载荷合并就绪。 (#47715) 感谢 @vincentkoc。 - **Slack/交互式回复**:通过实时 DM 传递和预览最终编辑保留 `channelData.slack.blocks`,以便 Block Kit 按钮和选择指令渲染而不是回退到原始文本。 (#45890) 感谢 @vincentkoc。 - **飞书/操作**:扩展运行时操作表面,包括消息读取/编辑、显式线程回复、固定以及面向操作员的聊天/成员检查,以便飞书可以更直接地操作工作区。 (#47968) 感谢 @Takhoffman。 - **飞书/主题线程**:在启动主题线程会话时获取完整线程上下文,包括之前的机器人回复,以便飞书主题中的后续回合保持正确的对话状态。 (#45254) 感谢 @Coobiw。 - **飞书/媒体**:在出站发送、入站下载、线程回复、目录/操作别名和能力文档之间保持原生图像、文件、音频和视频/媒体处理对齐,以便不支持区域是显式而非隐含的。 (#47968) 感谢 @Takhoffman。 - **飞书/网络钩子**:加固签名网络钩子验证以使用恒定时间签名比较,并在网络钩子 E2E 覆盖中保持格式错误的短签名失败关闭。 - **Telegram/消息发送**:通过 `sendPayload` 路径以及 `sendMedia` 转发 `--force-document`,以便具有 `channelData` 的 Telegram 有效载荷发送继续将图像作为文档上传而不是静默回退到压缩照片发送。 (#47119) 感谢 @thepagent。 - **Telegram/消息分块**:在 HTML 溢出重新分块分割格式化回复时保留空格、段落分隔符和单词边界。 (#47274) 感谢 @obviyus。 - **Z.AI/入职**:即使对于显式的 `zai-coding-*` 端点选择也检测工作的默认模型,以便编码计划设置可以在 `glm-5` 可用时保持选定的端点同时默认为它,或回退到 `glm-4.7`。 (#45969) 感谢 @obviyus。 - **CI/入职冒烟**:将 `ensure-base-commit` 获取失败显示为工作流警告,并在预期的设置提示漂移时失败入职 Docker 冒烟测试,而不是继续静默。感谢 @Takhoffman。 - **Z.AI/入职**:将 `glm-5-turbo` 添加到默认 Z.AI 提供者目录,以便入职生成的配置将新模型与现有 GLM 默认值一起公开。 (#46670) 感谢 @tomsun28。 - **Zalo 个人/组门控**:当 `groupAllowFrom` 未设置时,停止对已允许组的发送者门控重新应用 `dmPolicy.allowFrom`,以便允许组中的任何成员可以触发回复,而 DM 保持受限。 (#46663) 修复 #40146。感谢 @Takhoffman。 - **Zalo/插件运行时**:从实际插件目录解析打包插件根目录,以便插件本地安装保持在 `dist/extensions/zalo` 下而不是逃逸到 `dist/extensions` 并失败运行时设置。 (#46549) 感谢 @No898。 - **Docker/实时测试**:将外部 CLI 认证主目录挂载到可写容器副本,从 JWT `exp` 推导 Codex OAuth 过期,刷新同步的 CLI 凭据而不是信任陈旧的缓存过期,并让网关实时探针等待转录输出,以便 `pnpm test:docker:all` 在 Linux 上保持绿色。 - **网关/监视模式**:在打包插件包和清单元数据更改时重启,为扩展源和 `tsdown.config.ts` 更改重建 `dist`,并仍然忽略扩展文档。 (#47571) 感谢 @gumadeiras。 - **网关/监视模式**:在干净或陈旧的 `dist` 状态后重新创建打包插件运行时元数据,以便 `pnpm gateway:watch` 在重建后不再因缺少 `dist/extensions/*/openclaw.plugin.json` 清单而失败。感谢 @gumadeiras。 - **控制 UI**:按网关范围持久化会话选择,防止令牌化网关打开之间的陈旧会话渗漏,并限制存储的网关会话历史。 (#47453) 感谢 @sallyom。 - **模型/OpenAI Codex OAuth**:启动 Codex 登录的远程手动输入竞赛,并使粘贴输入提示与实际接受的值保持一致,以便远程/VPS 身份验证不再因无法访问的 localhost 回调而停滞。 (#51631) 感谢 @cash-echo-bot。 - **组提及门控**:拒绝无效和不安全的嵌套重复 `mentionPatterns`,在提及剥离和检测之间重用共享安全配置正则编译器,并缓存剥离时正则编译,以便嘈杂的组避免重复重新编译。 - **浏览器/配置文件**:删除自动创建的 `chrome-relay` 浏览器配置文件;需要 Chrome 扩展中继的用户现在必须通过 `openclaw browser create-profile` 创建自己的配置文件。 (#46596) 修复 #45777。感谢 @odysseus0。 - **CI/频道测试路由**:将内置频道套件移至 `test:channels` 并保持它们不在 `test:extensions` 中,以便扩展 CI 在频道迁移后不再失败,而目标测试路由仍将 Slack、Signal 和 iMessage 套件发送到正确的通道。 (#46066) 感谢 @scoootscooob。 - **网关/配置验证**:停止将隐式默认内存槽视为必需的显式插件配置,以便启动不再在 `memory-core` 仅被推断时因 `plugins.slots.memory: plugin not found: memory-core` 而失败。 (#47494) 感谢 @ngutman。 - **Tlon**:遵循显式空允许列表并推迟引用扩展。 (#46788) 感谢 @zpbrent 和 @vincentkoc。 - **Tlon/DM 身份验证**:在 DM 授权和所有者命令处理之后推迟引用消息扩展,以便未经授权的 DM 和所有者批准/管理员命令不再在拒绝或命令路径之前触发跨频道引用获取。 - **网关/代理事件**:停止向客户端广播错误的运行结束 `seq gap` 错误,并使用每运行运行 ID 隔离节点驱动的入口回合,以便陈旧尾部事件不能泄漏到以后的会话运行中。 (#43751) 感谢 @caesargattuso。 - **节点/待处理操作**:在将它们返回节点之前,根据当前节点命令策略重新检查排在前台的操作。 (#46815) 感谢 @zpbrent 和 @vincentkoc。 - **Windows/网关状态**:接受 `schtasks` `Last Result` 输出作为 `Last Run Result` 的别名,以便运行计划任务安装不再显示 `Runtime: unknown`。 (#47844) 感谢 @MoerAI。 - **ACP/acpx**:从实际插件目录解析打包插件根目录,以便插件本地安装保持在 `dist/extensions/acpx` 下而不是逃逸到 `dist/extensions` 并失败运行时设置。 (#47601) 感谢 @ngutman。 - **网关/WS 握手**:将默认预认证握手超时提高到 10 秒并新增 `OPENCLAW_HANDSHAKE_TIMEOUT_MS` 作为运行时覆盖,以便繁忙的本地网关停止在 3 秒时丢弃健康的 CLI 连接。 (#49262) 感谢 @fuller-stack-dev。 - **网关/websocket 配对绕过(针对禁用身份验证)**:当 `gateway.auth.mode=none` 时,跳过控制 UI 操作员会话的设备配对强制,以便反向代理仪表板不再因身份验证被显式禁用而卡在 `pairing required`。 (#47148) 感谢 @ademczuk。 - **代理/使用情况跟踪**:停止对非原生 OpenAI 补全提供者强制 `supportsUsageInStreaming: false`,以便兼容的后端再次报告令牌使用情况和成本而不是显示全零。 (#46500) 修复 #46142。感谢 @ademczuk。 - **ACP/acpx**:在实时仓库检查中保持插件本地后端安装在 `extensions/acpx` 下,以便重建不再删除运行时二进制文件,并避免运行时修复期间的包锁定变动。 - **代理/压缩**:在 `session.compact()` 后重新运行转录修复,以便孤立的 `tool_result` 块不能在压缩后存活并破坏以后的 Anthropic 请求。 (#16095) 感谢 @claw-sylphx。 - **代理/压缩**:在工具结果保护后触发溢出恢复,因为压缩后上下文仍然超过安全阈值,以便长工具循环在下一个模型调用硬失败之前压缩。 (#29371) 感谢 @keshav55。 - **macOS/执行审批**:加固 exec-host 请求 HMAC 验证以使用时间安全比较,并在聚焦的 IPC 身份验证覆盖中保持格式错误或截断的签名失败关闭。 - **网关/执行审批**:在网关主机审批提示中公开请求的环境覆盖键,以便操作员可以在不继承嘈杂基础主机环境的情况下审查幸存的环境上下文。 - **Telegram/网络**:在轮询重启之间保留粘性 IPv4 回退状态,以便具有不稳定 IPv6 到 `api.telegram.org` 的主机在每次重启后停止重新触发重复的 Telegram 超时。 (#48282) 感谢 @yassinebkr。 - **代理/压缩**:为空的准备写入最小边界摘要,同时保持拆分回合前缀在正常路径上,以便无摘要消息会话停止重新触发保护循环。 (#42215) 感谢 @lml2468。 - **模型/聊天命令**:默认情况下保持 `/model ...@YYYYMMDD` 版本后缀完整,但仍遵循相同提供者的匹配存储数字认证配置文件覆盖。 (#48896) 感谢 @Alix-007。 - **网关/频道**:序列化每账户频道启动,以便重叠启动不会两次启动相同的提供者,防止启动和重启期间 MS Teams `EADDRINUSE` 崩溃循环。 (#49583) 感谢 @sudie-codes。 - **Discord**:强制执行严格的 DM 组件允许列表身份验证 (#49997) 感谢 @joshavant。 - **稳定插件加载器和 Docker 扩展冒烟测试** (#50058) 感谢 @joshavant。 - **Telegram**:稳定配对/会话/论坛路由和回复格式测试 (#50155) 感谢 @joshavant。 - **网关**:加固 OpenResponses 文件上下文转义 (#50782) 感谢 @YLChen-007 和 @joshavant。 - **LINE**:加固 Express 网络钩子解析以验证原始正文 (#51202) 感谢 @gladiator9797 和 @joshavant。 - **执行**:加固网关和节点之间的主机环境覆盖处理 (#51207) 感谢 @gladiator9797 和 @joshavant。 - **语音通话**:强制执行语音输出合同并修复流式 TTS 静音回归 (#51500) 感谢 @joshavant。 - **xAI/模型**:将打包的 Grok 4.20 目录条目重命名为 GA ID 并在运行时标准化保存的弃用 beta ID,以便现有配置和会话保持解析。 (#50772) 感谢 @Jaaneek - **代理/引导警告**:将引导截断警告移出系统提示并放入每回合提示正文,以便当截断警告出现或消失时提示缓存重用保持稳定。 (#48753) 感谢 @scoootscooob 和 @obviyus。 - **Telegram/DM 主题会话密钥**:通过入站消息、原生命令和会话状态查找的相同每账户基础会话密钥路由命名账户 DM 主题,以便 `/status` 和线程恢复停止创建幻影 `agent:main:main:thread:...` 会话。 (#48204) 感谢 @vincentkoc。 - **ACP/配置绑定**:重新初始化卡在 `error` 状态的配置 ACP 会话,而不是重用失败的运行时。 - **Telegram/网络**:在 API 和媒体获取下统一粘性 IPv4 和固定 IP 回退链,并针对 SSRF 策略重新验证固定覆盖地址。 (#49148) 感谢 @obviyus。 - **代理/提示组合**:将引导截断警告追加到当前回合提示并为稳定系统提示缓存不变量新增回归覆盖。 (#49237) 感谢 @scoootscooob。 - **群晖聊天/多账户**:按账户和发送者范围直接消息会话,以便不同群晖账户上相同的网络钩子 `user_id` 值不再共享转录或传递状态。 - **Telegram/安全**:新增回归覆盖,证明固定回退主机覆盖保持绑定到 Telegram 并将不匹配的主机名委托回原始查找路径。感谢 @vincentkoc。 - **工具/图像生成**:新增打包的 fal 图像生成支持,以便 `image_generate` 可以针对 `fal/*` 模型使用 `FAL_KEY`,包括通过 FLUX 图像到图像的单图像编辑流程。感谢 @vincentkoc。 - **网关/钩子**:在异步隔离代理调度中保留不可变钩子入口来源,以便规范化钩子会话路由保持外部包装、Gmail 特定策略和 Gmail 模型选择完整。 - **消息/投票**:在 `message.send` 上将零值投票参数视为未设置默认值,同时保持投票验证路径上的非零投票参数。 (#52150) 修复 #52118。感谢 @Bartok9。 - **xAI/网络搜索**:添加缺失的 Grok 凭据元数据,以便打包的提供者注册再次类型检查。 (#49472) 感谢 @scoootscooob。 - **代理/会话缓存**:在稍后的缓存活动期间机会性地清除过期的嵌入式运行器会话缓存条目,以便一次性会话文件不会永久积累。 (#52427) 感谢 @karanuppal。 - **WhatsApp**:稳定入站监控和设置测试 (#50007) 感谢 @joshavant。 - **Matrix**:使入职状态运行时安全 (#49995) 感谢 @joshavant。 - **频道**:稳定通道线束和监控测试 (#50167) 感谢 @joshavant。 - **代理/压缩**:新增可选的压缩后会话 JSONL 截断步骤,该步骤在保留保留分支尾部实时会话元数据的同时删除汇总的转录条目。 (#41021) 感谢 @thirumaleshp。 - **Telegram/路由**:当 `message send` 目标是未知的非默认 Telegram `accountId` 时大声失败,而不是静默回退到频道级机器人令牌并通过错误的机器人发送。 (#50853) 感谢 @hclsys。 - **网络搜索**:使入职、配置和完成与插件拥有的提供者合同保持一致,包括禁用提供者恢复、配置感知凭据钩子和运行时可见摘要。 (#50935) 感谢 @gumadeiras。 - **代理/重放**:在提供者重放之前清理格式错误的助手工具调用重放块,以便后续 Anthropic 请求不继承下游 `replace` 崩溃。 (#50005) 感谢 @jalehman。 - **Discord/启动日志**:在网关仍连接时报告客户端初始化,而不是在达到准备状态之前声称 Discord 已登录。 (#51425) 感谢 @scoootscoob。 - **代理/压缩保护**:当有上限的重试回退重用最后一个成功摘要时,保留拆分回合上下文和保留的最近回合。 (#27727) 感谢 @Pandadadadazxf。 - **代理/内存刷新**:在内存刷新回退重试期间保持转录哈希去重活动,以便写入然后抛出刷新尝试不能在回退周期完成之前附加重复的 `MEMORY.md` 条目。 (#34222) 感谢 @lml2468。 - **Discord/ACP**:将工作者中止信号转发到 ACP 回合,以便超时的 Discord 作业取消正在运行的回合而不是静默离开绑定的 ACP 会话在后台工作。 - **ACP/Codex 会话重放**:在加载或重新绑定现有 ACP 会话时保留隐藏的助手思考,以便存储的思考块不会重放为可见的助手文本。感谢 @vincentkoc。 - **网关/命令**:在内部调用者可以持久化 `/exec` 默认值或通过 `/phone arm|disarm` 变更 `phone-control` 节点策略之前,保持内部 `chat.send` 斜杠命令用户体验同时要求 `operator.admin`。 - **插件/Matrix**:将打包插件 `KeyedAsyncQueue` 导入移至稳定的 `plugin-sdk/core` 表面,以便 Matrix Docker/运行时构建不依赖脆弱的 keyed-async-queue 子路径。感谢 @ecohash-co 和 @vincentkoc。 - **插件/上下文引擎**:在加载器和公共 SDK 路径上强制执行所有者感知的上下文引擎注册,以便插件不能欺骗特权所有权、声称核心 `legacy` 引擎 id 或通过直接 SDK 导入覆盖现有的引擎 id。 (#47595) 感谢 @vincentkoc。 - **插件/打包程序 TDZ**:修复 `RESERVED_COMMANDS` 暂时性死区错误,该错误阻止设备配对、电话控制和语音插件在打包程序将命令模块放在同一输出块中的调用站点之后时注册。感谢 @BunsDev。 - **插件/导入**:修复陈旧的 googlechat 运行时 API 导入路径和被最近插件 SDK 重构破坏的 Signal SDK 循环重新导出。感谢 @BunsDev。 - **插件/安装优先级**:默认情况下保持打包插件在自动发现的全局之前,但让显式安装的插件记录在其自己的重复 id 平局中获胜,以便安装的频道插件在 `openclaw plugins install` 之后从 `~/.openclaw/extensions` 加载。 (#46722) 感谢 @Takhoffman。 - **插件/范围 id**:在安装和配置键控期间保留范围插件 id,并默认保持打包插件在发现的重复 id 之前,以便 `@scope/name` 插件不再与无范围安装冲突。 (#47413) 感谢 @vincentkoc。 - **文档/Mintlify**:修复 Perplexity、模型提供者、Moonshot 和执行审批页面上的 MDX 标记语法,以便本地文档预览不再破坏渲染或留下陈旧页面未发布。 (#46695) 感谢 @velvet-shark。 - **插件/运行时桶**:将打包扩展运行时导入路由通过公共 `openclaw/plugin-sdk/*` 子路径,并阻止相对跨包逃逸,以便打包扩展停止依赖仅 monorepo 的相对路径。 (#51939) 感谢 @vincentkoc。 - **文档/安全审计**:阐明 `gateway.controlUi.allowedOrigins: ["*"]` 是显式的允许所有浏览器来源策略,应避免在严格控制的本地测试之外使用。 - **插件/子代理**:在运行时、工具和嵌入式运行器加载路径之间保留网关拥有的插件子代理访问,以便网关插件工具和上下文引擎在加载器缓存拆分后仍能生成和管理子代理。 (#46648) 感谢 @jalehman。 - **插件/子代理**:通过网关插件子代理分发转发每运行提供者和模型覆盖,以便插件启动的代理委托再次 honoring 显式模型选择。 (#48277) 感谢 @jalehman。 - **测试/OpenAI Codex 身份验证**:将登录期望与默认 `gpt-5.4` 模型对齐,以便 CI 覆盖与当前 OpenAI Codex 默认值保持一致。 (#44367) 感谢 @jrrcdev。 - **插件/Matrix TTS**:将自动 TTS 回复作为原生 Matrix 语音气泡发送而不是通用音频附件。 (#37080) 感谢 @Matthew19990919。 - **插件/发现**:区分缺少包入口文件与包路径逃逸违规,以便启动跳过不存在的插件入口路径而不引发错误的安全诊断。 (#52491) 感谢 @hclsys。 - **插件/Matrix**:接受共享发送工具媒体别名(`mediaUrl`、`filePath`、`path`)并通过 Matrix 操作分发保留 `asVoice` / `audioAsVoice`,以便仅媒体发送和语音消息意图正确到达插件发送层。感谢 @psacc 和 @vincentkoc。 - **插件/运行时 API**:使用显式护栏覆盖固定扩展运行时 API 导出表面,以便未来表面 creep 成为有意的差异。感谢 @vincentkoc。 - **插件/WhatsApp**:共享插件命令注册和活动 WhatsApp 监听器的拆分加载单例状态,以便重复模块图不再丢失原生插件命令或出站监听器状态。 (#50418) 感谢 @huntharo。 - **插件/更新**:让 `openclaw plugins update <npm-spec>` 通过发行标签或确切版本定位跟踪的 npm 安装,并保留记录的 npm 规范供以后基于 id 的更新。 (#49998) 感谢 @huntharo。 - **测试/CLI**:减少命令机密网关测试导入压力,同时保留真实协议有效载荷验证器,以便隔离通道不再承载更重的运行时 web 和消息通道图。 (#50663) 感谢 @huntharo。 - **网关/插件**:跨重复模块图共享插件交互式回调路由和插件绑定批准状态,以便 Telegram Codex 选择器按钮和插件绑定批准不再落入正常入站消息路由。 (#50722) 感谢 @huntharo。 - **插件/上下文引擎**:当旧引擎拒绝时,重试严格的遗留 `assemble()` 调用而不带新的 `prompt` 字段,为预提示插件保留提示感知检索兼容性。 (#50848) 感谢 @danhdoan。 - **插件/运行时状态**:跨重复模块图共享插件面向基础设施单例状态,并保持会话绑定适配器所有权稳定直到活动所有者注销。 (#50725) 感谢 @huntharo。 - **Discord/选择器**:通过跨重复模块图共享组件回调状态,保留 `/codex_resume --browse-projects` 选择器回调在 Discord 中存活,保留回调回退,并在分发前确认匹配的插件交互。 (#51260) 感谢 @huntharo。 - **内存/核心工具**:独立注册 `memory_search` 和 `memory_get`,以便一个不可用的内存工具不再在新会话中抑制另一个。 (#50198) 感谢 @artwalker。 - **Telegram/Mattermost 消息工具**:在隔离和定时器会话中保持插件按钮模式可选,以便没有当前频道活动时普通发送不会失败验证。 (#52589) 感谢 @tylerliu612。 > macOS 应用附件将在公证构建准备后附加。