← 返回更新日志

OpenClaw v2026.5.3-beta.2 预发布

2026-05-03 · GitHub 原文
## 2026.5.3 ### 亮点 - **Plugins/file-transfer**: 新增捆绑的文件传输插件,提供 `file_fetch`、`dir_list`、`dir_fetch` 和 `file_write` 代理工具,用于在配对节点上执行二进制文件操作;在 `plugins.entries.file-transfer.config.nodes` 下采用默认拒绝的每节点路径策略,需操作员批准,默认拒绝符号链接遍历(需通过 `followSymlinks` 显式 opting-in),且每次往返传输有 16 MB 的字节上限。(#74742) 感谢 @omarshahine。 - **Plugins/install**: 强化官方插件的安装、卸载、更新、引导、ClawHub 回退、npm 依赖状态报告以及 Beta 通道更新路径,使外部化插件的行为如同一级包安装。 - **Gateway/performance**: 通过延迟加载插件/运行时发现、cron、schema、shutdown、sessions 和模型元数据工作(仅在需要时执行),精简启动和控制 UI 的热路径。 - **Channels/replies**: 改进 Discord 状态反应和降级传输报告,新增 WhatsApp 频道/通讯稿目标,并收紧 Telegram、飞书、Matrix、Microsoft Teams 和 Slack 的投递/恢复行为。 - **Install/update**: 修复损坏的 macOS LaunchAgent 升级,在运行时加载前拒绝仅包含源代码的插件包,并在更新和 doctor 运行期间修复过时的 Gateway/插件状态。 - **Agent/runtime reliability**: 在常见边缘情况下保持流式提供程序回复、延迟的 A2A 会话回复、提示词/工具投递、记忆召回、网络搜索提供程序发现以及提供程序特定的推理/模型元数据。 ### 变更 - **Plugins/onboarding**: 允许手动设置安装可选的官方插件,包括基于 ClawHub 的诊断(带 npm 回退),并将外部 Codex 插件公开为可选的提供程序设置选项。感谢 @vincentkoc。 - **Plugins/CLI/update**: 在 `openclaw plugins list --json` 中包含包依赖安装状态,在 Beta OpenClaw 通道上优先尝试插件 `@beta` 更新,并在不存在插件 Beta 版本时回退到默认/最新版本。 - **Plugins/ClawHub**: 为 429 错误标注重置窗口和未认证的高速率限制提示,以便操作员了解下载何时恢复以及登录何时有帮助。感谢 @romneyda。 - **Gateway/performance**: 延迟加载早期运行时发现、shutdown hooks、cron、channel-config schema 元数据、restart sentinels 和 maintenance timers(在就绪后);精简重复的插件自动启用工作并添加启动 CPU/性能分析控制。 - **Gateway/config**: 阻止 Gateway 启动和热加载自动恢复无效配置;无效配置现在会失败关闭,`openclaw doctor --fix` 负责最后已知良好状态的修复。 - **Discord/status**: 允许显式的反应工具调用通过 `trackToolCalls: true` opting-in 以跟踪后续工具进度,共享工具显示表情符号映射,并在状态输出中暴露降级的 Discord 传输或网关事件循环饥饿情况。(#76327) 感谢 @joshavant。 - **Channels/WhatsApp**: 支持显式的 WhatsApp 频道/通讯稿 `@newsletter` 出站消息目标,使用频道会话元数据而非 DM 路由。修复 #13417;延续了 #13424 的狭义出站目标思路。感谢 @vincentkoc 和 @agentz-manfred。 - **Agents/tools**: 当有效工具拒绝列表已阻止可选媒体和 PDF 工具工厂时跳过它们,避免为在模型使用前将被过滤的工具进行不必要的热路径设置。(#76773) 感谢 @dorukardahan。 - **Agents/sandbox**: 将沙盒容器和浏览器注册表条目存储为每运行时分片文件,减少 `openclaw doctor --fix` 迁移遗留单体注册表文件时无关会话锁争用。(#74831) 感谢 @luckylhb90。 - **Tools/BTW**: 将 `/side` 添加为文本和原生斜杠命令别名,用于 `/btw` 的侧面问题。 - **Exec approvals**: 添加基于 tree-sitter 的 shell 命令解释器,用于未来的批准和命令审查界面。(#75004) 感谢 @jesse-merhi。 - **QA/Mantis**: 添加 `pnpm openclaw qa mantis discord-smoke` 运行器和手动 GitHub 工作流,验证 Mantis Discord 机器人能否看到配置的 guild/channel、发布烟雾消息、添加反应并上传产物。 ### 修复 - **Plugins/update**: 即使配置仍显示 stable,也保持 Beta 安装的 OpenClaw 包更新在 Beta 插件通道上,使 Discord 和其他外部化插件从编译的 `@beta` 包更新,而非过时的仅源代码 `latest` 产物。 - **Agents/tools**: 停止将 `tools.deny: ["write"]` 视为隐式的 `apply_patch` 拒绝;希望阻止补丁写入的操作员应显式拒绝 `apply_patch` 或 `group:fs`。修复 #76749。(#76795) 感谢 @Nek-12 和 @hclsys。 - **Plugins/release**: 验证已发布的插件 npm 压缩包在发布后暴露编译的运行时条目,在发布结束前捕获仅 TypeScript 的包产物。感谢 @vincentkoc。 - **CLI/message**: 在消息命令插件注册表加载失败于分发前干净地退出并返回非零状态,防止 `openclaw-message` 子进程在插件加载错误后继续存活。修复 #76168。 - **Gateway/update**: 在包更新后恢复已安装但未加载的 macOS LaunchAgent,重新运行 Gateway 健康/版本/通道就绪检查,并在报告更新失败前打印重启、重新安装和回滚指南。(#76790) 感谢 @jonathanlindsay。 - **CLI/plugins**: 解释当缺失的插件命令别名属于默认禁用的捆绑插件时,包括 `openclaw plugins enable <plugin>` 修复命令。(#76835) - **Google Meet**: 通过网关拥有的运行时路由有状态的 CLI 会话命令,使加入的实时会话在启动 CLI 进程退出后仍能存活。修复 #76344。感谢 @coltonharris-wq。 - **Memory/status**: 在 `memory status --deep` 和 `openclaw status` 中将内置 sqlite-vec 存储就绪状态与嵌入提供程序就绪状态分离,使本地向量存储故障不再看起来像提供程序故障,而提供程序故障不再掩盖健康的本地向量存储。 - **CLI/doctor**: 当 CLI 端活动内存后端解析不可用时,信任就绪的网关内存探测,防止为健康的运行时设置误报“未注册活动内存插件”。修复 #76792。感谢 @som-686。 - **Memory/status**: 通过将向量和嵌入提供程序探测保留给 `--deep` 或 `--index`,保持普通 `openclaw memory status` 和 `openclaw memory status --json` 在廉价只读路径上。修复 #76769。感谢 @daruire。 - **Telegram**: 当较新的已接受消息在较旧的正在进行的 Telegram 分发完成前到达时,抑制过时的同会话回复。修复 #76642。感谢 @chinar-amrutkar。 - **Slack**: 将例行的 Socket Mode 乒乓超时重连折叠为一条 OpenClaw 重连日志行,并抑制重复的 Slack SDK 乒乓警告。 - **Gateway/diagnostics**: 在长时间无进度停滞后中止排队的嵌入式运行,使单个死会话不再让排队的 Discord/频道回合被重复的 `recovery=none` 活跃度警告阻塞。 - **Plugins/ClawHub**: 接受实时产物解析器的 `kind`/`sha256` 字段名以及类型化的 `artifactKind`/`artifactSha256` 形式,使 `clawhub:` 安装的 npm 包和遗留 ZIP 包不再错过可下载产物。感谢 @romneyda。 - **Control UI/Sessions**: 避免为聊天回合 `sessions.changed` 负载进行完整的 `sessions.list` 重新加载,使大型会话存储在聊天响应投递期间不再增加多秒延迟。(#76676) 感谢 @VACInc。 - **Gateway/watch**: 在开发 Gateway 子进程启动期间退出时运行一次 `doctor --fix --non-interactive` 并重试,使过时的本地插件安装/配置状态不会导致 tmux watch 会话消失而无修复尝试。 - **Doctor/Telegram**: 警告所选 Telegram 引用回复可能抑制 `streaming.preview.toolProgress`,并记录 `replyToMode` 权衡而不改变运行时投递。修复 #73487。感谢 @GodsBoy。 - **Channels/Discord**: 在 inbound DM 被接受后立即发送尽力而为的原生输入指示,使缓慢的预分发回合在排队、上下文组装、模型或工具工作开始前显示 Discord 活跃度。修复 #76417。感谢 @mlopez14。 - **Plugins/install**: 拒绝仅源代码的 TypeScript 包安装和缺失编译运行时输出的已安装插件包,使损坏的 npm 产物在安装/发现时失败,而不是通过 jiti 渗透并在后期显示为不可用的提供程序。修复 #76720。 - **Discord/status**: 在仅工具的 guild 频道中尊重显式的 `messages.statusReactions.enabled: true`,使排队确认反应可以经过思考/完成生命周期反应,而不是停在初始表情符号。感谢 @Marvinthebored。 - **Discord/native commands**: 在协调期间比较 Discord 规范化的斜杠命令描述和本地化描述,使 CJK 或多行命令文本不再触发冗余的启动 PATCH 突发和速率限制 429。修复 #76587。感谢 @zhengsx。 - **Agents/OpenAI**: 仅当存在函数工具时,为 `gpt-5.4-mini` 省略 Chat Completions `reasoning_effort`,同时保留无工具的 Chat 和 Responses 推理支持,防止 Telegram 路由的回退运行在 OpenAI 拒绝工具负载后挂起。修复 #76176。感谢 @ThisIsAdilah 和 @chinar-amrutkar。 - **Telegram**: 在可恢复的 `deleteWebhook` 清理失败后,重用成功的启动 `getMe` 探测进行 grammY 轮询启动并继续进入 `getUpdates`,减少长轮询开始前的高延迟 Bot API 控制平面调用。引用 #76388。感谢 @jackiedepp。 - **Gateway/diagnostics**: 在诊断会话状态和活动跟踪中合并会话 ID/键别名,使完成的运行不再留下过时的排队工作,使活跃度样本保持在警告级别。 - **Agents/models**: 当没有运行时覆盖时,将模型 `maxTokens` 转发为 OpenAI 兼容 Responses 和 Completions 传输的默认输出令牌限制,防止提供程序默认值静默截断更大的输出。(#76645) 感谢 @joeyfrasier。 - **macOS CLI/onboarding**: 在 `openclaw-mac wizard` 中通过 termios 无回显输入尊重敏感向导文本步骤,在保留长 API 密钥和网关令牌的同时抑制保存的凭证预览。修复 #76698。感谢 @anurag-bg-neu 和 @sallyom。 - **Control UI/Skills**: 通过将 `showModal()` 延迟到对话框元素连接到 DOM 之后,修复技能详情模态在所有浏览器中静默失败的问题;Lit `ref` 回调在连接前触发,导致每次技能点击都出现 `DOMException: HTMLDialogElement.showModal: Dialog element is not connected`。感谢 @nickmopen。 - **Gateway/update**: 在 Control UI 全局包更新后运行 `doctor --non-interactive --fix` 再报告成功,使遗留配置在网关重启前迁移。感谢 @stevenchouai。 - **Gateway/cron**: 停止丢失热重载竞赛的延迟 cron 启动,防止旧 cron 服务在重载已替换 cron 状态后启动。 - **CLI/plugins**: 当缺失的插件命令别名属于默认禁用的捆绑插件时发出警告,包括 `openclaw plugins enable <plugin>` 修复命令。(#76835) 感谢 @LindalyX-Lee。 - **Agents/Telegram**: 在嵌入式模型提示中保留显式回复和引用上下文,而不让引用文本驱动提示本地图像加载。修复 #76419。(#76659) 感谢 @cheechnd。 - **Active Memory**: 将 `setupGraceTimeoutMs` 应用于嵌入式召回运行器以及外部提示构建看门狗,使非常冷的首次召回保持配置的设置宽限期端到端。(#74480) 感谢 @volcano303。 - **Channels/Feishu**: 限制每聊天顺序队列将后续相同键任务阻塞在单个进行中任务后的时间(默认 5 分钟),使单个挂起的调度不再导致后续同聊天消息保持 `queued` 状态直到网关重启;卡住的任务继续运行但被逐出阻塞链并记录警告。修复 #70133。(#76687) 感谢 @martingarramon 和 @bek91。 - **Active Memory**: 在解析嵌入式召回运行频道时跳过作用域的 Telegram 论坛主题会话 ID(包含 `:`),回退到 `messageProvider`,使 Active Memory 不再在论坛主题会话中抛出捆绑插件 dirName 验证错误。修复 #76704。 - **Agents/tools**: 将自动 PDF 模型/认证解析延迟到使用 PDF 工具时,使代理回合工具准备不会在无 PDF 的消息上探测认证配置文件,同时保留显式 PDF 模型注册。修复 #76644。感谢 @hclsys。 - **CLI/config**: 即使补丁仅包含 SecretRef 对象,也保持 JSON 试运行补丁针对捆绑频道 schema 验证触摸的频道配置。 - **Plugins/tools**: 将禁用的捆绑工具插件保留在显式运行时允许列表所有权之外,并从加载但空的频道注册表回退到承载工具的插件注册表,使 Active Memory 即使禁用 `memory-lancedb` 也能使用捆绑的 `memory-core` search/get 工具。修复 #76603。感谢 @jwong-art。 - **Plugins/install**: 从管理的 npm-root 清单运行 `npm install`,以便安装一个 `@openclaw/*` 插件时保留已安装的同级插件而不是修剪它们。修复 #76571。(#76602) 感谢 @byungskers 和 @crpol。 - **Plugins/context-engine**: 在网关启动加载计划中包含选定的 `plugins.slots.contextEngine` 插件,使外部上下文引擎插件(清单中无 `activation.onStartup`)在任何代理回合解析活动引擎之前加载;防止“上下文引擎 X 未注册;回退到默认引擎遗留”警告在网关启动后出现。修复 #76576。感谢 @hclsys。 - **Plugins/tools**: 为基于路径的插件(来源“config”)恢复按需注册表加载,因此通过 `plugins.load.paths` 注册的工具工厂在代理请求时解析(当没有预热的频道注册表时);防止网关启动后出现“未知方法”错误。修复 #76598。感谢 @hclsys。 - **Plugins/hooks**: 在网关启动运行时范围内包含显式启用的支持钩子的插件,使嵌入式 PI 运行可以看到它们的 `before_prompt_build` 和 `agent_end` 钩子。修复 #76649。感谢 @wwf3045 和 @MkDev11。 - **Plugins/OpenCode**: 通过轻量级提供程序策略表面公开 Claude 推理配置文件,使指令和会话验证对 `opencode/claude-opus-4-7` 保留 `xhigh`、`adaptive` 和 `max`,而不是将 `xhigh` 重新映射为 `high`。修复 #76648。感谢 @aaajiao。 - **Channels/QQ Bot**: 在 QQ 令牌交换前解析结构化的 `clientSecret` SecretRef,将 QQ Bot 秘密合约暴露给秘密工具,并拒绝遗留的 `secretref:/...` 标记字符串。(#74772) 感谢 @xialonglee。 - **Agents**: 通过在原始体块上刷新受保护的获取超时来保持活动流式提供程序回复存活,并将真正的提示流超时作为显式错误 surfaced 而不是部分助手片段。修复 #76307。(#76633) 感谢 @MkDev11。 - **Plugins/externalization**: 保持官方 ACPX、Google Chat 和 LINE 安装规范在生产包名称上,将 Beta 标签探测留给显式的 OpenClaw Beta 更新通道。感谢 @vincentkoc。 - **CLI/doctor**: 防止缺失插件修复用运行时回退覆盖官方目录元数据,使 ACPX 修复在外部化推出期间保留官方 npm 规范。感谢 @vincentkoc。 - **CLI/doctor**: 通过精确解析的包名称匹配过时的捆绑插件安装记录,以便 doctor 不删除仅共享 OpenClaw 包名前缀的外部 npm 或 ClawHub 记录。 - **Plugins/catalog**: 在生成打包频道目录时保留 ClawHub 安装规范,以便未来的 storepack-first 频道插件保留其远程源而不是变为仅 npm。感谢 @vincentkoc。 - **Plugins/catalog**: 将预发布外部频道目录条目中的裸 npm 规范固定到目录条目版本,使 Beta 目录不静默安装最新的稳定包。 - **Plugins/update**: 将目录匹配的官方 npm 更新和 OpenClaw authored 外部化捆绑 npm 桥视为受信任的官方安装,以便启动代码插件可以更新或迁移出捆绑树而不受扫描器误报。感谢 @vincentkoc。 - **Plugins/onboarding**: 仅对缺失包/版本错误从 ClawHub 回退到 npm,在 storepack 推出期间保持完整性和验证失败关闭。感谢 @vincentkoc。 - **CLI/onboarding**: 在交互式 `openclaw onboard` 向导中通过 termios 无回显输入屏蔽凭证输入(模型认证提供程序 API 密钥、网关令牌和密码、网络搜索提供程序密钥以及技能环境变量值),使粘贴的秘密不再回显到终端滚动回退、`Start-Transcript` 日志或屏幕截图;在敏感提示前通过屏蔽预览确认步骤保留现有令牌/密码。感谢 @anurag-bg-neu。 - **Control UI/Talk**: 通过从浏览器报价头中剥离仅服务器端的归属头(`originator`、`version`、`User-Agent`)修复 Talk (OpenAI Realtime WebRTC) CORS 失败;`api.openai.com/v1/realtime/calls` 的 CORS 预检仅允许 `authorization` 和 `content-type`,转发这些头导致浏览器 SDP 交换失败。修复 #76435。感谢 @hclsys。 - **Chat delivery**: 使 `/verbose on|full|off` 更改再次影响后续工具使用聊天气泡,包括具有草稿预览工具进度启用的频道,同时保留一次性详细指令。 - **CLI/logs**: 在瞬态网关断开时通过有界退避、stderr 重试警告、`[logs] gateway reconnected` 恢复通知和 JSON `notice` 记录自动重新连接 `openclaw logs --follow`,同时在不可恢复的身份验证或配置错误时立即退出。修复 #74782。(#75059, #75372) 感谢 @shashank-poola 和 @romneyda。 - **Codex/WhatsApp**: 当 Codex 源回复配置为消息工具投递时保持 `message` 动态工具可用,使编码配置文件聊天代理不会私下完成回合而没有可见频道回复。修复 #76660。(#76663) 感谢 @VishalJ99。 - **Codex/heartbeat**: 通过 Codex 回合范围协作模式指令发送心跳特定倡议指导,保持普通消息工具聊天回合在默认模式而不泄漏心跳提示。感谢 @pashpashpash。 - **Plugins/onboarding**: 信任从官方目录选择的可选官方插件和网络搜索安装,使 npm 安全扫描将它们视为其他源链接的官方安装路径。感谢 @vincentkoc。 - **Agents/web_search**: 当网络搜索元数据缺失时保持已安装运行时提供程序发现启用,使 Brave 等外部安装的官方提供程序对代理和 cron 回合可见,而不是回退到仅捆绑查找。修复 #76626。感谢 @amknight。 - **Tests/plugins**: 将 Discord npm 引导 Docker 通道公开为包脚本并断言计划的 Docker 通道指向真实脚本,使外部频道引导覆盖实际可运行。感谢 @vincentkoc。 - **Plugins/ClawHub**: 将未发布的 ClawHub 插件产物解释为 rollout-state 回退到 `npm:` 安装,而不是泄漏原始压缩包元数据字段。感谢 @vincentkoc。 - **Tests/onboarding**: 断言打包频道引导使 `openclaw channels status --json` 和普通 `openclaw status` 显示配置的频道,覆盖空频道表回归路径。感谢 @vincentkoc。 - **Microsoft Teams**: 跨网关重启持久化已发送消息标记,使最近机器人消息的后续回复保持解析原始会话而不是重启后脱落,标记 TTL 在尽力恢复中保留。(#75585) 感谢 @amknight。 - **Matrix**: 跨网关重启持久化待批准反应目标,使房间批准者可以在 OpenClaw 重新上线后仍能批准或拒绝未完成的提示。(#75586) 感谢 @amknight。 - **Channels/onboarding**: 将第三方官方 WeCom 和 Yuanbao 目录条目映射到其发布的插件 ID,使 npm 安装通过预期的插件验证。感谢 @vincentkoc。 - **Plugin SDK**: 恢复固定的 Yuanbao 频道包使用的 Mattermost 和 Matrix 兼容子路径,使外部安装在 npm 安装后可以模块加载。感谢 @vincentkoc。 - **Plugins/install**: 防止管理的 npm-root 安全扫描将早期插件 `openclaw` 对等链接视为失败,使一个外部插件安装不能毒害后续官方 npm 安装。感谢 @vincentkoc。 - **Memory LanceDB**: 允许已安装但未配置的插件元数据加载,使引导和设置流程可以提示嵌入配置而不是首先失败插件注册表。感谢 @vincentkoc。 - **CLI/plugins**: 防止 `plugins enable` 和 `plugins disable` 创建未配置的频道配置部分,使具有必需设置字段的频道插件不再在生命周期探测期间失败验证。感谢 @vincentkoc。 - **Doctor/config**: 在兼容性修复期间为省略可见回复策略的配置频道配置设置 `messages.groupChat.visibleReplies: "message_tool"`,使升级可以保留预期的仅工具组/频道回复默认值。感谢 @kagura-agent。 - **Agents/sessions**: 在软等待窗口超时后保持延迟的 `sessions_send` A2A 回复存活,同时保留终端运行超时并避免请求者会话中的陈旧目标回复。修复 #76443。感谢 @ryswork1993 和 @vincentkoc。 - **TUI/Control UI**: 修复 `/think` 命令在活动会话使用与默认不同的模型时仅显示基础思考级别,使提供程序特定级别如 DeepSeek V4 Pro 的 `xhigh` 和 `max` 现在可见和可选。修复 #76482。感谢 @amknight。 - **CLI/sessions**: 在工具投递的频道输出后保持有意空的代理回复静默,而不是 surfaced 误导性的“代理无回复”。感谢 @vincentkoc。 - **Config/doctor**: 限制每个配置路径的 `.clobbered.*` 取证快照数量并序列化快照写入,使重复的 `doctor --fix` 恢复循环不能泛滥配置目录。修复 #76454;延续 #65649。感谢 @JUSTICEESSIELP、@rsnow 和 @vincentkoc。 - **Feishu**: 当回复发送原生语音媒体时抑制重复文本,为普通音频文件保留字幕,并在 `audioAsVoice` 转码/上传回退产生通用文件时发送回退文本加附件链接。 - **TTS/plugins**: 在网关启动期间激活配置的和继承的语音提供程序插件,使 Microsoft 和本地 CLI 语音回复在角色选择后立即工作而不是在启动插件集中不可见。修复 #76481。感谢 @amknight。 - **Feishu**: 通过将 SDK 作为插件本地运行时依赖加载,保持打包 Feishu 启动不捆绑 Lark SDK 的 ESM `__dirname` 路径。修复 #76291 和 #76494。(#76392) 感谢 @zqchris。 - **Plugins/npm**: 为可发布插件构建包本地运行时 dist 文件并停止在核心包元数据中列出根包排除的插件伴随文件,使 npm 插件安装如 `@openclaw/diffs` 和 `@openclaw/discord` 不再发布仅源代码运行时负载。修复 #76426。感谢 @PrinceOfEgypt。 - **Channels/secrets**: 在插件拆分后通过外部插件秘密合约解析 SecretRef 支持的频道凭证,覆盖运行时启动、目标发现、webhook 认证、禁用账户枚举和延迟绑定的 web_search 配置。修复 #76371。(#76449) 感谢 @joshavant 和 @neeravmakwana。 - **Docker/Gateway**: 将 Docker 设置 `.env` 值传入网关和 CLI 容器并在托管服务计划中保留 exec SecretRef `passEnv` 键,使 1Password Connect 支持的 Discord 令牌在 doctor 或插件修复后继续解析。感谢 @vincentkoc。 - **Control UI/WebChat**: 在聊天历史中解释压缩边界并直接链接到会话检查点控件,使压缩前回合在刷新后不再看起来静默丢失。修复 #76415。感谢 @BunsDev。 - **Agents/compaction**: 添加可选的捆绑压缩通知钩子并在压缩后从压缩的文本记录重试一次,使自动压缩留下没有最终可见回复的回合。(#76651) 感谢 @simplyclever914。 - **Agents/incomplete-turn**: 检测和 surfaced 警告当代理在工具调用链后的最终文本因后工具助手响应从未产生而静默丢弃时,而不是用仅预工具分析文本完成回合。修复 #76477。感谢 @amknight。 - **Channels/WhatsApp**: 通过将 `@+<digits>` 和 `@<digits>` 令牌针对 WhatsApp 参与者数据解析(包括 LID 组),为组文本和媒体标题附加原生出站提及元数据。修复 #39879;延续 #56863。感谢 @kengi1437、@joe2643 和 @fridayck。 - **Channels/WhatsApp**: 要求出站提及令牌以单词边界结束,使较长字符串内的电话号码前缀不再触发隐藏原生提及。 - **Plugins/uninstall**: 删除克隆的插件库后清理空的托管 git 安装父目录并在 Docker 插件生命周期测试中覆盖 npm/git 卸载残留。感谢 @vincentkoc。 - **Plugins/install**: 当没有捆绑源可用时通过官方目录解析裸官方外部插件 ID(如 `brave`),使打包安装获取预期的作用域 npm 包而不是无关的无作用域包。修复 #76373。感谢 @bek91 和 @vincentkoc。 - **Plugins/install**: 在授予官方 npm 插件扫描器信任前要求 OpenClaw 拥有的安装来源,使直接 npm 包名称不再绕过启动代码扫描,而目录、引导和 doctor 安装保持受信任。感谢 @fede-kamel 和 @vincentkoc。 - **Network proxy**: 为通过托管 HTTP 代理路由的 Node HTTPS 请求保留目标 TLS 主机名验证,使 Discord 风格的 CONNECT 流量不再针对本地代理主机验证证书。修复 #74809。(#76442) 感谢 @jesse-merhi 和 @abnershang。 - **Gateway/sessions**: 通过将标题/预览水合限制为文本记录头/尾读取以及缓存清单模型 ID 归一化和设置回退元数据(针对活动插件快照),保持 `sessions.list` 行轻量。感谢 @vincentkoc 和 @rolandrscheel。 - **Gateway/performance**: 缓存每运行详细级别会话读取,在 `gateway --force` 中跳过冗余的 `lsof` 扫描(当没有监听器被杀死时),并使网关启动基准打印 `--help` 用法。 - **Gateway/sessions**: 保持代理运行时元数据在轻量级 `sessions.list` 行上并跳过每行文本记录使用回退、显示模型推理和插件投影,避免大型会话存储中的身份丢失和事件循环 stalls。感谢 @Marvinthebored 和 @vincentkoc。 - **Gateway/models**: 保持只读 `models.list` 回退在持久化/当前元数据、配置行、注册表兼容回退和静态认证检查上,同时保留完整目录图像附件能力检查。修复 #76382;引用 #76360 和 #75707。感谢 @trojy13、@RayWoo、@AnathemaOfficial、@Marvinthebored 和 @vincentkoc。 - **CLI/plugins**: 在 `plugins enable` 和 `plugins disable` 中的配置写入前拒绝缺失插件 ID,使拼写错误不再持久化过时的配置条目。(#73554) 感谢 @ai-hpc。 - **Agents/sessions**: 在会话文件修复期间保留已投递的尾部助手回复,使 Telegram/WebChat 历史不重写以丢弃已投递的响应。修复 #76329。感谢 @obviyus。 - **Gateway/chat history**: 保留超大文本记录回合作为显式省略消息占位符,同时避免大型 JSONL 解析 stalls。感谢 @Marvinthebored 和 @vincentkoc。 - **CLI/doctor**: 在解析内存诊断时加载配置的内存槽插件,使捆绑的 `memory-core` 不再在独立 `doctor` / `status` 运行上触发误报“无活动内存插件”。修复 #76367。感谢 @neeravmakwana。 - **Gateway**: 当 `chat.send` 或代理附件解析/暂存失败时保留堆栈诊断,改进图像发送失败分类。引用 #63432。(#75135) 感谢 @keen0206。 - **Agents/idle-timeout**: 在外部嵌入式运行重试循环中添加成本 runaway 断路器,在 5 次连续空闲超时且无完成模型进度后停止进一步尝试,使卡住的提供程序不能再跨同一运行扇出付费模型调用;完成的文本或工具调用进度重置断路器,但部分工具参数 token 滴答不重置。修复 #76293。感谢 @ThePuma312。 - **Heartbeats/Codex**: 使结构化心跳提示与实际 `heartbeat_respond` 工具可用性对齐,停止在工具存在时发送遗留 `HEARTBEAT_OK` 并保持工具禁用的承诺检查在遗留 ack 路径上。感谢 @pashpashpash 和 @vincentkoc。 - **Agent runtimes**: 当请求的 harness 不可用时诚实地失败显式插件运行时选择,而不是静默回退到嵌入式 PI 运行时。感谢 @pashpashpash。 - **Maintainer workflow**: 默认通过 GitHub 的验证提交 API 推送准备的 PR 头,并在 git 协议推送可以发布未签名提交前要求显式覆盖。感谢 @BunsDev。 - **Feishu**: 通过选定的/默认账户解析设置/状态探测,使多账户配置(具有账户范围的应用程序凭据)显示为已配置和可探测。修复 #72930。感谢 @brokemac79。 - **Gateway/responses**: 当代理在单回合中调用多个客户端工具时,从 `/v1/responses` JSON 和 SSE 响应发出每个客户端工具调用,使多工具计划、图编排调用和类似批处理流不再丢弃除最后一个外的所有调用。修复 #52288。感谢 @CharZhou 和 @bonelli。 - **Gateway/agent**: 仅当 `deliver: true` 时在网关代理请求上强制 `session.sendPolicy=deny`,使非投递烟雾检查和内部代理运行不再被 `send blocked by session policy` 拒绝,同时出站投递保持受控。修复 #73381。感谢 @wenxu007。 - **Slack/reactions**: 将缺失的 no_reaction 移除响应视为幂等成功,并通过移除辅助程序路由自身反应清理,使并发清理不再 surfaced Slack 竞争错误。修复 #50733。(#76304) 感谢 @martingarramon 和 @Hollychou924。 - **Feishu**: 在入站去重中包含媒体 `file_key` 和 `image_key` 值,使重用的消息 ID 仍处理不同的媒体附件,同时真正重试保持抑制。修复 #75057。感谢 @SymbolStar。 - **Control UI/Gateway**: 避免对本地应用的消息阶段会话更新进行完整会话列表重新加载,通过文本记录文件更新事件携带已知会话密钥,并在存在显式生成模型配置时延迟媒体提供程序列表。引用 #76236、#76203、#76188、#76107 和 #76166。感谢 @BunsDev。 - **Install/update**: 在打包 postinstall 期间修剪过时的 `plugin-runtime-deps` 状态目录,使 2026.5.2 之前版本的升级回收旧的捆绑插件依赖缓存而不触及外部插件安装。 - **Auto-reply/queue**: 将重置触发的 `/new` 和 `/reset` 回合视为跨活动运行队列处理的中断运行,使 steer/followup 模式不能将新鲜会话延迟在现有工作后。修复 #74093。(#74144) 感谢 @ruji9527 和 @yelog。 - **Cron**: 将修复的启动运行时状态持久化回 `jobs-state.json`,使具有缺失 `updatedAtMs` 的有效未来 `nextRunAtMs` 不再在网关重启后触发重复的外部健康检查修复。修复 #76461。感谢 @vincentkoc。 - **Cron**: 在 `cron.runs` 历史中保留手动 `cron.run` ID,使手动运行确认可以与完成的运行记录关联。修复 #76276。 - **CLI/devices**: 仅当确切待处理设备请求将铸造或继承管理员范围的运算符访问时,为 `openclaw devices approve <requestId>` 请求 `operator.admin`,同时保持较低范围的批准在配对范围内。 - **Memory/embedding**: 扩大嵌入重新索引重试分类器以包括瞬态套接字层错误(`fetch failed`、`ECONNRESET`、`socket hang up`、`UND_ERR_*`、`closed`),使内存重新索引在提供程序网络 hiccup 中存活而不是中途中止。相关 #56815、#44166。(#76311) 感谢 @buyitsydney。 - **Memory/sessions**: 通过索引存档内容使旋转和删除的文本记录(`.jsonl.reset.<iso>` / `.jsonl.deleted.<iso>`)可搜索,将存档命中映射回实时文本记录词干,在存档旋转时发出文本记录更新事件,并绕过单次存档突变的增量增量阈值,同时保持备份和压缩检查点不透明。引用 #56131。感谢 @buyitsydney。 - **Memory/search**: 在打包安装中保持 sqlite-vec 可选,并将缺失扩展恢复指向有效的 `agents.defaults.memorySearch.store.vector.extensionPath` 设置。感谢 @willemsej 和 @vincentkoc。 - **Gateway**: 在保持显式拒绝列表和 HTTP 安全拒绝列表的同时,使直接请求的插件工具在限制工具配置文件下可调用,防止 catalog/invoke 不匹配 surfaced 为“工具不可用”。感谢 @BunsDev。 - **Gateway/update**: 允许 Beta 二进制文件在配置仍由匹配的稳定发行版版本写入时刷新网关服务,避免 Beta 通道更新期间的错误更新配置降级块。 - **Channels**: 保持 Matrix 和 Mattermost 捆绑在核心包中而不是在这些频道切换为外部 npm 安装前广告外部安装。感谢 @vincentkoc。 - **Bonjour**: 在重复卡住公告恢复后禁用 LAN mDNS 广告,而不是重复重启 ciao 并饱和网关事件循环。 - **Channels/setup**: 将可安装频道选择器提示标记为远程 npm 安装,并隐藏已捆绑插件(已随 OpenClaw shipped)的远程安装提示。 - **CLI/update**: 在停止管理的网关服务前拒绝从活动网关进程树启动的包更新,避免自终止同通道更新使旧网关代码保持运行。修复 #75691。(#75819) 感谢 @ai-hpc。 - **CLI/plugins**: 停止将非插件 `auth` 命令根视为捆绑插件 ID,使限制性 `plugins.allow` 配置不再告诉用户添加过时的 `auth` 插件条目。 - **Doctor/plugins**: 更新其过时清单仍声明无 `channelConfigs` 频道的已配置插件安装,使 Beta 升级在 `doctor --fix` 期间修复旧的 Discord 风格包负载。 - **Doctor/plugins**: 修复其持久化安装记录指向缺失包目录的已配置外部插件安装,使升级在插件运行时验证前协调幻影 npm 元数据。感谢 @vincentkoc。 - **Active Memory**: 防止调试遥报零命中时空失败非空 `memory_search` 结果。 - **Active Memory**: 在构建嵌入式召回插件工具时保留目标代理上下文,使 `memory_search` 和 `memory_get` 在显式召回会话中保持可用。修复 #76343。感谢 @Countermarch。 - **Plugins/externalization**: 从 npm 默认修复缺失的已配置插件安装,为显式 `clawhubSpec` 元数据保留 ClawHub 下载,并覆盖代理运行时/环境选择的插件修复。感谢 @vincentkoc。 - **Plugins/install**: 允许官方目录匹配的 npm 频道插件(如 Feishu)通过受信任的安装扫描器路径,同时保持欺骗包名被阻止。感谢 @vincentkoc。 - **Tools/llm-task**: 保持仅 JSON 嵌入式模型运行不触发继承的工具允许列表(当工具有意禁用时),同时保留运行时 `toolsAllow` 失败。修复 #74019。感谢 @amknight。 - **Tools/profiles**: 使 `tools.profile: "full"` 授予所有工具包括可选插件工具(如浏览器),使完整配置文件不再静默丢弃需要显式允许列表条目的插件提供工具。修复 #76507。感谢 @amknight。 - **Feishu**: 保持超时环境解析与 HTTP 客户端包装器分离,使包安全扫描在安装期间不再报告误报环境收集命中。感谢 @vincentkoc。 - **Upgrade/config**: 在配置加载时针对活动插件集验证配置的网络搜索提供程序和静态抑制的模型/提供程序对,使过时插件状态在运行时回退前大声失败。 - **Status/update**: 当配置仍显示 `stable` 时从安装版本解析 Beta 更新通道检查,并让 `status --deep` 重用实时网关通道凭证状态而不是在仅命令路径令牌缺失时警告。 - **Doctor/plugins**: 在 `doctor --fix` 期间保留未管理的第三方插件 `node_modules`,同时仍修剪 OpenClaw 管理的运行时依赖缓存。 - **Gateway/restart**: 添加 `openclaw gateway restart --force` 和 `--wait <duration>`,在重启延迟定时器前记录活动任务运行 ID,并将超时重启报告为显式强制重启。 - **Discord**: 跨进程重启持久化斜杠命令部署哈希,使未更改的命令集跳过重新部署并避免重启循环 429。 - **Providers/LM Studio**: 将 Gemma 4 和其他本地模型的二进制 `off`/`on` 推理元数据规范化为 LM Studio 接受的 OpenAI 兼容 `reasoning_effort` 值。 - **Plugins/externalization**: 保持诊断 ClawHub 包和持久化捆绑插件重定位在启动的 npm-first 安装元数据上,并省略 Discord 来自核心包(现在其外部包已发布)。感谢 @vincentkoc。 - **Setup/TUI**: 绑定终端孵化引导运行,使挂起的提供程序请求超时而不是让首次运行孵化滞留在看门狗后。(#76241) 感谢 @joshavant。 - **Cron/CLI runtimes**: 仅当解析的模型提供程序兼容时通过配置的每代理 CLI 运行时路由隔离 cron 作业,使 OpenAI 作业覆盖不再继承不匹配的 Claude CLI 后端。感谢 @vishutdhar。 - **Plugins/Codex**: 允许官方 npm Codex 插件在无不安全安装覆盖的情况下安装,保持 `/codex` 命令所有权,并覆盖通过管理的 `.openclaw/npm` 依赖加卸载失败证明的真实 npm Docker 实时路径。 - **Gateway/status**: 当网关探测失败且 Bonjour 未找到本地网关时添加具体服务、配置、监听器所有者和日志收集后续步骤,使冻结或端口冲突报告包含根本原因分类所需的数据。引用 #49012。感谢 @vincentkoc。 - **Codex harness**: 通过原生 Codex 配置指令转发 OpenClaw 工作区引导文件(如 `SOUL.md`),同时让 `AGENTS.md` 由 Codex 项目文档发现。修复 #76273。感谢 @zknicker。 - **Parallels/Windows update smoke**: 转义生成的 PowerShell 脚本中的过时后交换导入正则,使预期的 `ERR_MODULE_NOT_FOUND` 更新交接继续到更新后健康检查。(#75315) - **Slack**: 当 `replyToMode` 为 `off` 时允许顶级 DM 中的草稿预览流式传输,同时保持 Slack 原生流式和助手线程状态在回复线程上受控。修复 #56480。(#56544) 感谢 @HangGlidersRule。 - **Control UI/chat**: 在每个消除路径上移除删除确认弹出框外部点击监听器,使 Cancel、Delete、外部点击和相同按钮切换不再留下过时的文档监听器。引用 #75590 和 #69982。感谢 @Ricardo-M-L。 - **Memory-core**: 将耗尽的文件监视器限制视为内置记忆自动同步的非致命,同时保留不相关磁盘满错误的致命处理。(#73357) 感谢 @solodmd。 - **Providers/Ollama**: 为原生 `/api/chat` 请求恢复目录上下文窗口转发为 `num_ctx`;修复具有目录条目的模型(qwen3、llama3、gemma3 等)在未配置显式 `params.num_ctx` 时的工具选择和上下文截断回归。修复 #76117。(#76181) 感谢 @openperf。 - **Plugins/install**: 将 npm 插件安装固定到验证的解析版本并拒绝 package-lock 版本或完整性漂移,使可变标签不能 raced 完整性检查接受不同产物。感谢 @Lucenx9。 - **Plugins/providers**: 为启用的外部清单合同能力提供程序保留作用域冷加载回退(在启动注册表中缺失),使 Fish Audio 等提供程序可以在请求时解析而不需要 `activation.onStartup` 以保证正确性。(#76536) 感谢 @Conan-Scott。 - **Gateway/update**: 将 `continuationMessage` 从 `update.run` 携带到成功的重启 sentinels,使会话范围的自更新可以在网关重启后恢复一个跟进回合。引用 #71178。(#74362) 感谢 @100menotu001、@HeilbronAILabs 和 @artnking。 - **Agents/fallback**: 在嵌入式回退重试后抑制重复当前回合用户消息文本记录写入,同时仍将重试提示发送到模型。(#63696) 感谢 @dashhuang。 - **Channels/Telegram**: 当可见非预览气泡(工具/块/错误)在活跃答案预览后投递时强制新鲜最终消息,使多步骤助手回复不再以最终答案在中间输出之上结束。修复 #76529。感谢 @jack-stormentswe。 - **Channels/Telegram**: 在观察到 Telegram 发送、编辑或回退前,不将论坛主题最终视为已投递,使文本记录中生成的最终回复不再从 Telegram 主题消失。修复 #76554。(#76764) 感谢 @bubucilo 和 @obviyus。 - **Plugins/update**: 保持外部化捆绑 npm 桥更新在正常插件安全扫描器路径上,而不是授予无产物来源的源链接官方信任。(#76765) 感谢 @Lucenx9。 - **Agents/reply context**: 将回复的消息标记为模型可见元数据中的当前用户消息目标,使简短回复锚定到其显式回复目标而不是附近的聊天历史。(#76817) 感谢 @obviyus。