← 返回更新日志

OpenClaw v2026.5.12-beta.7 预发布

2026-05-14 · GitHub 原文
### 变更 - Amazon Bedrock: 将 Bedrock 和 Bedrock Mantle 提供程序包外部化,因此核心安装不再拉取 AWS SDK 依赖项,除非安装了这些提供程序。 - 插件: 将 Slack、OpenShell 沙箱和 Anthropic Vertex 外部化,使得它们的运行时依赖仅在安装这些插件时才会被安装。 - 控制 UI/WebChat: 添加了一个持久的自动滚动模式选择器,以便用户可以保持当前的近底部行为、始终跟随流式输出,或关闭自动流式滚动并手动使用“新消息”按钮。修复了 #7648 和 #81287。感谢 @BunsDev。 - ACP: 添加了 `acp.fallbacks`,以便当主要后端不可用时,ACP 轮次可以在输出任何内容之前尝试配置的备用运行时后端。(#69542)感谢 @kaseonedge。 ### 修复 - Telegram: 通过在主事件循环停滞期间将入口迁移到具有持久本地假脱机的隔离工作线程,保持 Bot API 轮询活跃。修复了 #81132。(#81746)感谢 @joshavant。 - CLI/插件: 在轻量级路径上保留裸插件和父命令的帮助信息,避免在渲染帮助之前发现插件注册表。 - 网关/会话历史: 携带单调的转录消息序列,通过实时更新并在陈旧序列输入可能导致附加错误增量状态时刷新 SSE 历史记录。(#81474)感谢 @samzong。 - 安全/沙箱: 在沙箱阻止的主目录根中包含 Windows `USERPROFILE`,以便即使 `HOME` 指向不同的 shell 主目录,也能拒绝包含凭据的绑定(例如 Windows 用户配置文件下的 `.codex`、`.openclaw` 或 `.ssh`)。(#63074)感谢 @luoyanglang。 - 模型配置/认证: 停止从宽泛的 `^[A-Z_][A-Z0-9_]*$` 字符串推断提供程序环境变量标记,并仅通过结构化环境 SecretRef(`secrets.providers[id]` / `secrets.defaults`)解析配置支持的提供程序 `apiKey` 值,这样不相关的环境变量就不会意外地成为提供程序凭据。感谢 @sallyom。 - 媒体获取: 对无主体的媒体响应(HEAD 探测和 204 样式的空主体)跳过分配和缓冲响应主体,避免在无负载的流上浪费堆内存。感谢 @shakkernerd。 - CLI/引导: 在引导向导中转发特定于提供程序的认证标志(例如 `--openai-api-key`),以便它们通过 `ctx.opts` 到达提供程序认证方法,让 `--openai-api-key "$OPENAI_API_KEY"` 在非交互式框架中跳过冗余的“使用现有环境变量?”提示。(#81669)感谢 @sjf。 - CLI/迁移: 从 Codex 迁移项消息和 `REASON_CODE_MESSAGES` 字符串中删除尾随句点,使计划/结果行读起来像标签而不是句子片段。(#81705)感谢 @sjf。 - Slack: 将格式错误的私有文件重定向 `Location` 头视为不可跟随的重定向,而不是导致 Slack 媒体下载失败。 - 插件: 在提供程序发现期间从 `setup.providers[].envVars` 凭据中发现提供程序插件,同时保留已弃用的 `providerAuthEnvVars` 回退。(#81542)感谢 @JARVIS-Glasses。 - 文档/Codex 框架: 澄清每个代理的 `CODEX_HOME` 隔离 `~/.codex`,而继承的 `HOME` 有意保持 `.agents` 发现和子进程用户主目录状态可用。 - 认证: 在重试锁定写入之前回收死所有者陈旧的线程锁,这样崩溃的 OAuth 刷新就不会卡住 `auth-profiles.json`,直到手动清理。 - CLI 表格: 在多行单元格之后保留换行连续行的静音/颜色样式,使 `openclaw plugins list` 描述保持可读性。 - 进程执行: 在 Windows 上折叠不区分大小写的重复子环境键,以便调用者提供的覆盖项(如 `PATH`)不会被主机的 `Path` 遮蔽。 - 网关/诊断: 在启动宽限窗口期间抑制冷启动存活警告,同时仍然采样存活指标。修复了 #79915。(#81699)感谢 @joshavant。 - Codex 框架: 保持基于 `oauthRef` 的 Codex OAuth 配置文件可用,并阻止高置信度的应用服务器 OAuth 刷新失效,避免重试-垃圾邮件原始令牌刷新错误,而无需将权利或使用限制负载转化为重新认证提示。 - 浏览器 CLI: 为浏览器控制命令显式请求现有的 `operator.admin` 网关范围,避免不必要的范围升级批准循环。修复了 #81555。(#81716)感谢 @joshavant。 - 网关/诊断: 在启动宽限窗口期间抑制冷启动存活警告,同时仍然采样存活指标。修复了 #79915。(#81699)感谢 @joshavant。 - 插件 SDK: 恢复已弃用的 `openclaw/plugin-sdk/memory-core` 包子路径作为 `memory-host-core` 的别名,以便仍在导入它的已发布内存伴侣插件可以在当前主机上解析。 - 控制 UI/国际化: 使用已安装的工作空间 Pi 运行时进行语言环境刷新,更新回退包锁定,在可用时优先选择 Anthropic CI 提供程序,并跳过无效的提供程序凭据而不是导致主流程失败。 - Codex 框架: 将本机应用服务器令牌刷新注销和重新登录失败分类为认证刷新错误,以便用户获得重新认证指导,而不是原始的运行时失败。 - Codex 启动: 在插件自动启用、启动规划和医生安装修复期间,将可选择的已配置 OpenAI 代理模型视为 Codex 运行时要求,以便以 Anthropic 为主的配置仍然可以干净地切换到 OpenAI/Codex。 - 代理: 在将工具返回的媒体合并到最终回复时,保留源回复传递元数据,保持仅消息-工具的回复可传递和可镜像。感谢 @pashpashpash 和 @vincentkoc。 - 回复: 将富呈现、交互式控件和渠道本机负载数据视为后续、心跳、cron、ACP 和块流式传递路径中的出站内容,防止仅卡片/按钮的回复作为空内容被丢弃。 - WebChat/TUI: 将 Codex `tools.message` 源回复路由到活动的内部 UI 轮次,并将其镜像到会话历史,这样仅消息-工具的框架回复(包括富呈现和仅按钮回复)不再消失,而 WebChat 和 TUI 仍然是不可定位的出站渠道。(#81586)感谢 @pashpashpash。 - 回复: 即使在启用块流式合并时也传递仅富内容的块回复,防止卡片和按钮负载被文本合并器丢弃。感谢 @pashpashpash。 - macOS/伴侣: 在锁定首次使用的直接 `wss://` 网关证书之前要求系统 TLS 信任,并尊重 `gateway.remote.tlsFingerprint` 作为远程节点模式会话的显式锁定,这样当 macOS 无法信任证书时,新端点将安全失败,除非已带外配置。修复了 #50642。感谢 @BunsDev。 - 更新: 在更新时修复和重启写入之前快照配置,通过医生清理保留插件安装记录,并防止更新时的配置大小下降阻塞更新,同时将用户指向更新前的备份。修复了 #80077。(#80257)感谢 @Jerry-Xin 和 @vincentkoc。 - 会话/状态: 在 `openclaw sessions` 和状态输出中将 ACP 生成子会话分类为 `kind: "spawn-child"` 而不是 `"direct"`;将重复的会话类型分类器提取到共享辅助函数(`src/sessions/classify-session-kind.ts`)中,以便两个表面保持同步。修复了目录 #19。(#79544) - 会话/网关: 在 `openclaw sessions --json`、`openclaw status` 和网关会话 RPC 响应中为 ACP 控制平面会话行报告 `agentRuntime.id: "acpx"`(或存储的后端 id)和 `source: "session-key"`,而不是不正确的 `"auto"` / `"pi"` 隐式回退。修复了目录 #18。(#79550) - Telegram: 在轮换到真实答案之前删除仅工具进度的草稿气泡,防止流式回复中出现孤立进度消息。 - Codex 应用服务器: 默认情况下保持每个代理的 `CODEX_HOME` 隔离,而不重写 `HOME`,以便 Codex 运行的子进程仍然可以找到正常的用户主目录配置、令牌和 CLI 状态,除非启动显式覆盖 `HOME`。感谢 @pashpashpash。 - iMessage: 停止为仅媒体的本机图像发送发送可见的 `<media:image>` 占位符文本,同时保留防止自我回显重复回复的内部回显键。(#81209)感谢 @homer-byte。 - 代理/会话: 在首次 `sessions_send` 或网关发送之前创建已配置的代理主会话,以便当目标代理尚未启动时,代理间消息不再失败。 - 网关: 传递 Talk 会话范围给解析器 [AI]。(#81379)感谢 @pgondhi987。 - 网关协议: 要求 v4 客户端和流显式聊天 `deltaText`/`replace` 帧,以便 SDK 客户端可以在没有本地差异比较的情况下消费助手更新。(#80725)感谢 @samzong。 - GitHub Copilot: 在图像理解请求上交换 OAuth 令牌以获取 Copilot API 令牌,并通过聊天完成路由 Gemini 图像负载,修复 Copilot Gemini 图像描述。(#80393, #80442)感谢 @afunnyhy。 - 网关: 隐藏待处理的节点配对命令、功能和权限,直到批准,并在配对更改时刷新实时批准的表面。(#80741)感谢 @samzong。 - 插件/飞书/WhatsApp/Line: 在读取下载流时强制实施入站媒体大小上限,避免完全缓冲过大的附件。(#81044, #81050)感谢 @samzong。 - 插件/安装: 将安装时代码安全检查限制为插件拥有的运行时入口点,同时保留依赖项清单拒绝列表检查,这样具有大型依赖项树的受信任包不再因第三方运行时内部而被阻止或警告。 - 配置: 集中序列化和重试语义配置变更,以便并发命令可以基于安全更改进行变基,而不是互相覆盖或手动编写命令本地的重试循环。(#76601) - 要求批准设置代码设备配对 [AI]。(#81292)感谢 @pgondhi987。 - 插件/安装: 当后续插件安装或更新重新计算共享依赖项树时,在管理的 npm 根目录中保留第三方对等依赖项。感谢 @shakkernerd。 - 插件/内存: 在重复解析期间优先选择 npm 安装的 memory-lancedb 插件而不是捆绑的回退,使 Active Memory 的 `memory_recall` 工具在托管安装后保持可见。修复了 #81193。感谢 @julio-arcila。 - 插件/卸载: 在其所属的 npm 插件被移除后,修剪托管的第三方对等依赖项,而不阻止对等修剪失败的插件清理。 - Docker: 固定设置时容器路径,以便陈旧的宿主 `.env` OpenClaw 路径不会泄漏到 Linux 容器中。修复了 #80381。(#81105)感谢 @brokemac79。 - 渠道/企业微信: 刷新官方引导安装到 `@wecom/[email protected]`,并更新现有的托管 npm 安装,而不是因包目录而失败。修复了 #79884。(#80390)感谢 @brokemac79。 - Anthropic: 在会话轮换后,从受限的 OpenClaw 转录历史中重新为 Claude CLI 新会话重试提供种子数据,防止对话健忘症。修复了 #80905。(#80934)感谢 @bitloi。 - 要求显式浏览器设备配对 [AI]。(#81289)感谢 @pgondhi987。 - 要求在代理范围访问前进行控制 UI 配对 [AI]。(#81288)感谢 @pgondhi987。 - 安装程序: 对于 git 安装,尊重 `--version` 并从签入的锁定文件安装,防止最近的依赖项固定触发 pnpm 在标签安装期间的最短发布年龄门槛。 - 代理: 通过进程内代理调度器传递同进程子代理完成交接,而不是打开一个网关 RPC 回环。 - 强化可信代理源验证 [AI]。(#81290)感谢 @pgondhi987。 - 代理: 在提供程序提交之前,为数组工具参数添加宽松的项模式,防止 OpenAI 兼容的模式验证拒绝那些省略 `items` 的插件工具。修复了 #81175。(#81217)感谢 @JARVIS-Glasses。 - 代理: 通过配置文件轮换和配置的模型回退升级 LLM 空闲看门狗超时,而不是在静默模型流之后让代理轮次卡住。修复了 #76877。(#80449)感谢 @jimdawdy-hub。 - Discord 语音: 将 OpenAI Realtime 启动认证失败视为致命的,抑制重复的实时错误日志,并阻止 autoJoin 在凭据修复之前重试同一个损坏的语音频道。 - ACPX: 停止将不受支持的超时配置选项转发给 Claude ACP,同时保留 OpenClaw 自己的轮次超时。(#80812)感谢 @sxxtony。 - 会话转录: 在集中式 JSONL 追加路径中编辑敏感消息内容,以便 CLI 轮次、网关转录注入、转录镜像和受保护的工具结果使用相同的配置编辑行为。修复了 #73565。参考 #73563。(#79645)感谢 @Ziy1-Tan。 - 渠道/iMessage: 当用户粘贴 URL 时,忽略 Apple 链接预览插件负载附件,在保留 URL 文本的同时避免幻影媒体上下文。(#79374)感谢 @homer-byte。 - Telegram: 仅通过 `getUpdates` 存活检测来检测轮询停滞,这样出站 API 调用就不会掩盖死亡的入站轮询;在传输重建后记录轮询周期开始。修复了 #78473。 - 修复: 在安装期间扫描插件运行时入口 [AI]。(#80998)感谢 @pgondhi987。 - 修复(plugins): 扫描已安装的依赖项运行时代码 [AI]。(#81066)感谢 @pgondhi987。 - 为委派会话继承工具限制 [AI]。(#80979)感谢 @pgondhi987。 - Telegram: 丢弃无法关联到当前机器人令牌的旧版长轮询更新偏移量,这样令牌轮换不再使机器人静默跳过新消息。(#80671)感谢 @sxxtony。 - browser: 强制实施导航检查以进行操作交互 [AI]。(#81070)感谢 @pgondhi987。 - 验证节点执行事件来源 [AI]。(#81071)感谢 @pgondhi987。 - 网关: 使活动的回复运行对卡住的会话诊断可见,并清除无活动工作的恢复状态,防止压缩或工具失败后出现陈旧的排队通道。(#80677)(#81302) - Codex 应用服务器: 轮换不兼容的上下文引擎管理的本机线程,以便 Lossless 管理的会话不会恢复陈旧的隐藏 Codex 历史记录。(#81223)感谢 @jalehman。 - Codex cron: 在工作空间引导或内存审查之前执行预定的命令式自动化负载,在 Codex 框架迁移后保留现有的隔离 cron 作业。(#81510)感谢 @jalehman。 - 插件 LLM 补全: 对于规范的 OpenAI 模型引用,遵守 Codex 代理运行时策略,以便上下文引擎摘要器可以使用 Codex OAuth,而不是要求直接的 `OPENAI_API_KEY` 认证。(#81511)感谢 @jalehman。 - 网关/OpenAI HTTP: 对于无效的采样参数和提供程序验证失败,返回 OpenAI 兼容的 400 错误,而不是将它们折叠为 500 错误。(#81275)感谢 @Lellansin。 - Telegram: 将插件和技能命令描述本地化发布到本机命令菜单,同时过滤不受支持的语言环境代码并保留 Telegram 命令限制。(#81351)感谢 @jzakirov。 - 限制钩子 CLI 工具权限 [AI]。(#81065)感谢 @pgondhi987。 - 要求管理员范围进行节点设备令牌管理 [AI]。(#81067)感谢 @pgondhi987。 - 限制聊天发送者白名单匹配 [AI]。(#80898)感谢 @pgondhi987。 - 更新: 在更新交接后的重启健康探测期间抑制虚假的更新配置警告,同时保持未来版本变更防护完好。(#78652) - 会话: 在写入转录之前编辑持久化的工具结果详细元数据,这样诊断秘密不会在工具输出编辑后幸存。(#80444)感谢 @nimbleenigma。 - Codex 运行时: 允许官方安装的 `@openclaw/codex` 包使用其私有任务运行时和 MCP 投影 SDK 辅助函数,修复迁移后的 OpenAI/Codex 测试运行期间的 `MODULE_NOT_FOUND` 错误。 - Codex 迁移: 使 Enter 键在继续之前激活高亮显示的复选框行,这样即使计划项开始被预选中,“暂时跳过”和批量选择行也能正常工作。 - Codex 框架: 当 OpenAI 认证存在于代理的认证配置文件存储中而不是环境变量中时,保持认证配置文件支持的媒体工具(如 `image_generate`)可用。 - WhatsApp/安装: 允许 Baileys 固定的 libsignal git 子依赖项在 pnpm 11 下工作,以便源码安装和本地检查可以完成。 - 要求为沙箱浏览器 CDP 中继进行认证 [AI]。(#81002)感谢 @pgondhi987。 - 修复: 检测携带的执行命令形式 [AI]。(#81000)感谢 @pgondhi987。 - 拒绝截断的执行批准命令 [AI]。(#81001)感谢 @pgondhi987。 - 强制实施内联 shell 包装器负载匹配 [AI]。(#80978)感谢 @pgondhi987。 - 修复(node-pairing): 替换已更改的待处理请求 [AI]。(#80894)感谢 @pgondhi987。 - 对 Google Chat webhook 请求进行速率限制 [AI]。(#80974)感谢 @pgondhi987。 - Docker: 挂载认证配置文件密钥目录,以便 OAuth 支持的认证配置文件在容器重建后得以保留。(#80991) - 引导: 接受 Codex 认证配置文件以进行规范的 OpenAI 模型检查,避免虚假的缺失认证警告。(#80913)感谢 @rubencu。 - 修复(feishu): 规范化 webhook 速率限制客户端密钥 [AI]。(#80975)感谢 @pgondhi987。 - 修复(auth): 防止引导配对范围更改 [AI]。(#80976)感谢 @pgondhi987。 - 验证控制 UI 回环重试端点 [AI]。(#80900)感谢 @pgondhi987。 - 强化导出的 Markdown 链接渲染 [AI]。(#80902)感谢 @pgondhi987。 - 修复(gateway): 尊重广域 DNS-SD 的最小发现模式 [AI]。(#80903)感谢 @pgondhi987。 - slack: 强制实施反应通知策略 [AI]。(#80907)感谢 @pgondhi987。 - 按调用者上下文强制实施网关命令范围 [AI]。(#80891)感谢 @pgondhi987。 - Telegram/群组: 在单一帐户设置中,将显式的空 `accounts.<id>.groups: {}` 映射视为与未定义相同,以便根 `channels.telegram.groups` 白名单仍然适用,而不是在默认的 `groupPolicy: "allowlist"` 下静默丢弃每个群组更新。多帐户语义不变,因此每个帐户的显式空组仍然可以禁用单个帐户而不影响兄弟帐户;完全阻止任何帐户所有群组的显式方法仍然是 `groupPolicy: "disabled"`。修复了 #79427。(#81030)感谢 @kinjitakabe。 - Codex (应用服务器): 将用户配置的 `mcp.servers` 投射到新的 Codex 线程配置中,匹配 codex-cli 运行时现有的 `-c mcp_servers=...` 行为,以便应用服务器运行时代理看到与 CLI 运行时已暴露的相同的用户 MCP 服务器。插件策划的应用程序通过单独的 `apps` 配置补丁保持附加。修复了 #80814。感谢 @kinjitakabe。 - 强制实施 Slack 插件批准按钮授权 [AI]。(#80899)感谢 @pgondhi987。 - 识别 PowerShell -ec 内联命令 [AI]。(#80893)感谢 @pgondhi987。 - 修复(qqbot): 授权批准按钮回调 [AI]。(#80892)感谢 @pgondhi987。 - Telegram: 在流式和持久回复中渲染受支持的 HTML 标签,而不是显示字面标记。(#80977) - 擦除可流式 MCP 重定向头 [AI]。(#80906)感谢 @pgondhi987。 - 修复(memory-wiki): 要求管理员范围进行摄取 [AI]。(#80897)感谢 @pgondhi987。 - memory-wiki: 要求写入范围进行 Obsidian 搜索 [AI]。(#80904)感谢 @pgondhi987。 - WhatsApp/安装: 允许 Baileys 固定的 libsignal git 子依赖项在 pnpm 11 下工作,以便源码安装和本地检查可以完成。 - WhatsApp: 将渠道外部化为核心 npm 运行时包之外的 ClawHub/npm 插件,并将 Baileys 升级到 `7.0.0-rc11`,以便 libsignal 从注册表而不是 GitHub tarball 解析。 - WhatsApp: 将可选的音频解码依赖项保留在外部插件本地,这样核心 npm 安装不再拉取仅 WhatsApp 的媒体辅助函数。 - 构建: 跳过对从构建条目中排除的捆绑插件的复制元数据,防止更新/状态重建宣传缺失的 QQ Bot 运行时文件。(#80925) - 控制 UI/会话: 在会话选择器下拉菜单中使用可视的 `└─ ` 前缀将子代理会话嵌套在其父会话下,使父子关系清晰。修复了 #77628。(#78623)感谢 @chinar-amrutkar。 - 自动回复: 当配置的模型后端失败且回退未产生可见回复时,显示可见错误,同时保留有意的静默轮次和仅副作用的传递。(#80917)感谢 @dutifulbob。 - 代理/执行: 跳过子代理会话执行完成的冗余心跳唤醒,防止在父会话上触发虚假的 LLM 调用。修复了 #66748。(#66749)感谢 @ggzeng。 - 提供程序流: 使 OpenAI 兼容的 SSE 和 JSON 回退流在分割块上继续排空,并以受限的第一个事件诊断而非停滞来处理失败的 Azure Responses 流。参考 #80926。(#80927)感谢 @galiniliev 和 @CaptainTimon。 - 代理: 将带有支持请求 ID 的通用提供程序内部错误重写为用户友好的瞬时错误文本。(#49401)感谢 @y471823206。 - WhatsApp: 在关闭套接字之前完成处理待处理的去抖入站消息。(#81246)感谢 @mcaxtr。 - CLI/承诺: 将 `--json` 输出写入标准输出而不是诊断日志,以便自动化可以解析承诺列表和关闭结果。(#81215)感谢 @giodl73-repo。 - 更新: 允许 pnpm GitHub 源的 OpenClaw 更新批准 OpenClaw 包构建,以便源码安装完成其 prepare/prepack 生命周期。(#81294)感谢 @fuller-stack-dev。 - Telegram: 在可见回复和持久镜像中保留受支持的 HTML 标签,以便格式化消息正确渲染,而不是降级为转义文本。(#80977)感谢 @obviyus。 - 插件/运行时: 将已弃用的运行时配置加载/写入警告归因于触发它们的插件 ID 和源,以便日志和插件医生运行是可操作的。参考 #81394。(#81425)感谢 @BKF-Gitty。 - 代理/cron: 即使某个 cron 负载的显式 `timeoutSeconds` 在数值上等于 `agents.defaults.timeoutSeconds`,也要尊重它用于 LLM 空闲看门狗,保留每运行显式超时意图,并防止停滞的流式回复被截断为隐式的 120 秒上限。(#79426)感谢 @legolaz8451。 - Codex 应用服务器: 在动态工具完成簿记期间,保持短的工具后完成看门狗处于待命状态,以便嵌入的 Codex 运行快速失败并在 Codex 在工具结果后静默时释放其会话通道。(#81697)感谢 @mbelinky。 ### 变更 - 网关/OpenAI HTTP: 在入站 `/v1/chat/completions` 请求上尊重 `max_completion_tokens` 和 `max_tokens`,以便客户端提供的令牌上限通过 `streamParams.maxTokens` 到达上游提供程序,当两者都发送时 `max_completion_tokens` 优先。感谢 @Lellansin。 - 模型/OpenAI CLI 认证: 使 `openclaw models auth login --provider openai` 默认启动 ChatGPT/Codex 帐户登录,而 `--method api-key` 仍然是显式的 OpenAI API 密钥设置路径。 - Google/Gemini: 在显式 SDK OAuth 认证结果配置补丁中规范化已退役的 Gemini 3 Pro Preview ID,以便提供程序辅助函数为 Gemini 3.1 测试发出 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 在 SDK OAuth 认证结果默认配置补丁中规范化已退役的 Gemini 3 Pro Preview ID,以便辅助函数构建的提供程序认证流为 Gemini 3.1 测试发出 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 在写入配置之前,规范化由直接 `openclaw models auth login --set-default` 提供程序认证流程返回的已退役 Gemini 3 Pro Preview ID,以便 Gemini 测试目标为 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 在每个代理配置默认值和认证补丁中规范化已退役的 Gemini 3 Pro Preview ID,以便代理特定的发出配置保持目标为 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 当 API 密钥引导仅重新应用代理默认值时,在提供程序目录行中规范化已退役的 Gemini 3 Pro Preview ID,以便发出的配置继续测试 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 在代理覆盖和提供程序目录行的 `config set` 变更输出中规范化已退役的 Gemini 3 Pro Preview ID,以便当前配置发出 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 在 Google 前向兼容模型解析期间,规范化提供程序限定的已退役 Gemini 3 Pro Preview 引用,以便发出的配置为 Gemini 3.1 测试使用 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 规范化代理前缀的已退役 Gemini 3 Pro Preview 目录行,以便发出的配置为 Gemini 3.1 测试使用 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 在写入配置之前,在每个代理模型覆盖中规范化已退役的 Gemini 3 Pro Preview ID,以便代理特定的配置为 Gemini 3.1 测试发出 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 在写入期间,在子代理、心跳、压缩和子代理工具模型配置中规范化已退役的 Gemini 3 Pro Preview ID,以便当前配置继续发出 `google/gemini-3.1-pro-preview`。 - 文档/子代理: 在子代理和配置参考中记录 `agents.defaults.subagents.announceTimeoutMs`。(#75509)感谢 @akrimm702。 - 定时任务: 添加直接 `cron.get`、`openclaw cron get <id>` 和代理工具 `get` 支持,用于按 ID 检查一个已存储的定时任务。(#75117)感谢 @samzong。 - 代理/工具: 添加具有规范渠道范围发送者键的每发送者工具策略,以便操作员可以在全局、代理、群组、核心、捆绑和插件工具表面上按请求者身份限制危险工具。(#66933)感谢 @JerranC。 - ACP: 通过 ACP 会话列表和会话信息快照暴露网关会话谱系元数据,以便客户端可以在没有私有网关侧信道的情况下渲染子代理图。(#73458)感谢 @samzong。 - 渠道/iMessage: 添加 `openclaw channels status --channel <name>` 过滤并记录 BlueBubbles 到 imsg 的切换路径,以便操作员可以在不启动两个渠道监视器的情况下探测 iMessage。(#80706)感谢 @omarshahine。 - CI: 为插件预发布添加一个非阻塞的 `plugin-inspector-advisory` 工件,以便发布运行捕获捆绑的插件兼容性分类,而不更改阻塞门。 - 运行时/Fly: 从其运行时环境变量中检测 Fly Machines 作为容器环境,以便网关绑定和 Bonjour 默认值与远程容器启动匹配。(#80209)感谢 @liorb-mountapps。 - 提供程序/fal: 将 GPT Image 2 和 Nano Banana 2 参考图像编辑请求路由到 `/edit` 并附带 `image_urls` 数组,使用 `aspect_ratio` 和 `resolution` 参数强制实施 NB2 编辑几何形状,将 Fal 编辑模式输入图像上限提升到 GPT Image 2 的 10 个和 Nano Banana 2 的 14 个,并允许在编辑模式下使用宽高比提示。(#77295)感谢 @leoge007。 - 控制 UI: 当应用模块从未注册时显示一个纯 HTML 恢复面板,为空白仪表板页面提供重试路径和浏览器扩展故障排除链接。修复了 #44107。感谢 @BunsDev。 - 文档: 将广泛的工具导航重命名为能力,将自动化和代理协调保留为部分,并将工具概述集中在工具、技能和插件上。https://docs.openclaw.ai/tools - 构建: 启用额外的低变动 oxlint 规则,用于 promise、TypeScript 和运行时脚枪检查。 - 构建: 启用更严格的 Vitest 检查规则,用于聚焦、禁用、条件、钩子、匹配器和期望风险。 - 构建: 在共享格式化程序配置中固定显式的 oxfmt 默认值,以保持跨升级的格式化行为稳定。 - TypeScript: 启用更严格的编译器检查,用于隐式返回、副作用导入、覆盖和未使用的生产代码。 - 日志记录: 添加有针对性的模型传输、负载、SSE 和代码模式诊断,并处理编辑后的 URL。 - 代理: 允许 `session.agentToAgent.maxPingPongTurns` 高达 20,同时将默认值保持在 5,以支持更长的代理间回复链。修复了 #52382。(#52400)感谢 @thirumaleshp。 - 代理: 添加每代理 `tools.message.crossContext` 覆盖,以便沙箱/公共代理可以将消息发送限制在当前对话中,而无需更改全局机器人策略。 - 代理: 添加每代理 `tools.message.actions.allow` 覆盖,以便沙箱/公共代理可以暴露和强制实施仅发送的消息工具。 - 代理: 从压缩命令进度预览中省略沙箱工作空间标记,同时保持内部沙箱诊断不变。 - 代理: 将进度草稿命令预览行加宽 50%,以便 Discord 内联工具更新保留更有用的命令上下文。 - Codex 应用服务器: 在受限轮次中断后,使超时的应用服务器客户端退役,这样 Discord 代理在尝试超时后就不会重用占用 CPU 的 Codex 进程。 - Codex 应用服务器: 将迁移的本机插件破坏性操作策略默认设置为启用,同时保留显式的全局和每插件 false 覆盖。 - 构建: 将工作空间包管理升级到 pnpm 11,并保持 Docker、安装、更新和发布工作流在 pnpm 11 配置表面上。(#79414)感谢 @altaywtf。 - 构建: 使 Telegram QA 工作流和 git 源码安装与 pnpm 11 工作空间构建白名单表面保持一致。(#80588)感谢 @altaywtf。 - 模型: 在 OpenAI 兼容请求之前,为按需本地模型服务器添加提供程序级别的 `localService` 启动,包括一次性模型探测。 - 代理: 修剪默认系统提示指导和仅发送消息工具模式,以减少提示令牌,同时保留 GPT-5 个性指导。 - 上下文: 添加 `/context map` 以发送当前会话上下文贡献者的树图图像。(#79867) - Slack: 为机器人 `chat.postMessage` 回复添加 `unfurlLinks` 和 `unfurlMedia` 配置,包括每帐户覆盖,这样 Slack 链接和媒体预览可以在没有工作空间范围设置的情况下被抑制。修复了 #48435。(#80145)感谢 @esegev1 和 @HemantSudarshan。 - Slack: 为文本和 Block Kit 线程回复添加显式 `replyBroadcast` 支持,以便代理可以选择加入 Slack 的父频道 `reply_broadcast` 行为。(#64365)感谢 @tony88331。 - Slack: 在入站提示上下文中保留提及目标/源元数据,以便代理可以区分直接机器人提及和提及他人的隐式线程唤醒。修复了 #79025。(#75356)感谢 @tmimmanuel。 - Slack: 规范化本机 DM 频道 ID 的出站传递镜像路由到对等用户会话,以便对 `D...` 目标的 `message.send` 调用不会将同一个 Slack DM 线程分割成一个频道会话。修复了 #80091。(#80111)感谢 @bek91。 - 插件 SDK: 弃用存在至少一个月且没有捆绑扩展生产导入的公共子路径,保留旧的 barrel/test/zod 子路径包导出以进行向后兼容,并在 SDK 表面报告中跟踪这两个集合。 - 插件 SDK: 弃用当前仅被一个或两个捆绑插件所有者使用的公共子路径,在保持它们可导入的同时,将新插件代码引导至集中的共享 SDK 接缝或插件拥有的 API。 - 插件 SDK: 在将 Chutes、GitHub Copilot 和 OpenAI Codex 认证流程移回提供程序拥有的模块后,移除特定所有者的 `provider-auth-login` 公共子路径。 - 插件 SDK: 在将捆绑调用者移回提供程序拥有的模块后,从公共导出中移除特定于提供程序的模型、流和 xAI 兼容性辅助函数。 - 插件 SDK: 向本机插件工具工厂暴露运行时提供的活动模型元数据,用于诊断和插件拥有的策略决策。修复了 #77857。感谢 @jamiezigelbaum。 - QA/Mantis: 添加 Telegram 实时 PR 证据自动化,使用 Convex 租赁的凭据、Crabbox 转录捕获、运动 GIF 预览和内联 PR 评论。 - QA/Mantis: 添加一个 Telegram 桌面场景构建器,它租赁 Crabbox,安装本机 Telegram Desktop,使用租赁的机器人凭据配置 OpenClaw Telegram 网关,并记录 VNC 截图/视频工件。 - Discord/语音: 为说话者轮次、播放重置、插话检测和音频中断分析添加实时语音诊断。 - Talk: 添加 `talk.realtime.instructions`,以便操作员可以在保留 OpenClaw 内置代理咨询指导的同时附加实时语音风格指令。(#79081)感谢 @VACInc。 - Discord/语音: 默认测试和源码安装使用纯 JS `opusscript` 解码器,忽略可选的本地 `@discordjs/opus` 构建,避免在专用语音性能通道之外进行缓慢的本地附加组件编译。 - Discord/语音: 为实时语音性能通道添加一个可选的本地 `@discordjs/opus` 安装脚本和解码器偏好,而不让不相关的 Docker/测试为本地附加组件构建付费。 - Discord/语音: 添加 `voice.allowedChannels` 以将语音加入和机器人语音状态移动限制到已配置的频道,同时在未设置时保持开放的语音行为。 - 网关/技能: 添加一个可选的私有技能存档上传安装路径,由 `skills.install.allowUploadedArchives` 控制,这样受信任的网关客户端只有在操作员显式启用代码安装表面时才能暂存和安装基于 zip 的技能。(#74430)感谢 @samzong。 - Codex 应用服务器: 仅对框架线程启用 Codex 本机代码模式,以便延迟的 OpenClaw 动态工具通过 Codex 自己的可搜索代码执行表面运行,而不是通过 PI 风格的包装器。 - 依赖项: 刷新工作空间固定和补丁目标,包括 ACPX `@agentclientprotocol/claude-agent-acp` `0.33.1`、Codex ACP `0.14.0`、Baileys `7.0.0-rc10`、Google GenAI `2.0.1`、OpenAI `6.37.0`、AWS SDK `3.1045.0`、Kysely `0.29.0`、Tlon skill `0.3.6`、Aimock `1.19.5` 和 tsdown `0.22.0`。 - 依赖项: 刷新 Anthropic SDK、Smithy 共享 ini 加载、Playwright、YAML、Aimock、TypeScript 原生预览、Vitest、Oxlint/Oxfmt、Vite 和 pnpm 11.1.0 的工作空间固定。 - 依赖项: 跨捆绑包硬锁定非对等直接依赖项规范,并添加一个已更改检查守卫,以便运行时安装解析维护者测试的确切版本。 - 依赖项: 将嵌入的 Pi 包移至 `@earendil-works` 命名空间,刷新 Twitch Twurple 包,并将 `@openclaw/fs-safe` 从 GitHub 发布固定移至已发布的 npm 包。 - 构建: 通过 Crabbox 路由 Testbox 更改检查委派,并移除 OpenClaw 特定的 Blacksmith Testbox 辅助脚本。 - 代理/压缩: 跨嵌入压缩和轮次后运行时上下文保留有范围的后台执行/进程会话引用,而不暴露来自无关范围的会话。修复了 #79284。(#79307)感谢 @TurboTheTurtle。 - 代理/进程: 告诉代理在发送交互式输入之前使用 `process log` 检查后台会话,并使用来自 `log`/`poll` 的 `waitingForInput`/`stdinWritable` 提示。 - CLI/引导: 改进设置、引导、配置和频道命令的路径查找,使终端流程解释下一个有用的命令,而不是依赖简洁的设置标签。 - 代理/Codex: 移除可配置的 Codex 动态工具配置文件,以便 Codex 应用服务器始终拥有工作空间、编辑、补丁、执行、进程和计划工具,而 OpenClaw 集成工具保持可用。 - macOS 应用: 将 Peekaboo 桥接依赖项更新到 Peekaboo 3.0.0。 - 依赖项: 刷新工作空间固定,并将 WhatsApp 插件从 `@whiskeysockets/baileys` 移至 `baileys`,同时保持 `7.0.0-rc10` 运行时。 - 插件 SDK: 添加捆绑插件会话操作、`sendSessionAttachment` 和基于 Cron 的 `scheduleSessionTurn`/标签清理,位于分组的会话命名空间下。替换了 #75578/#75581/#75588 以及 #73384/#74483 的一部分。感谢 @100yenadmin。 - 插件 SDK/媒体理解: 添加 `extractStructuredWithModel(...)` 加上可选的提供程序端 `extractStructured(...)` 接缝,以便受信任的插件可以通过提供程序拥有的运行时(如 Codex)运行受限的图像优先结构化提取,并带有可选的补充文本上下文。 - 执行批准: 添加 `tools.exec.commandHighlighting`,以便可以在全局或每个代理上启用解析器派生的批准提示命令高亮。(#79348)感谢 @jesse-merhi。 - Codex 应用服务器: 将本机 Codex 子代理生成生命周期事件镜像到任务注册表,以便应用服务器子代理出现在任务/状态表面,而无需依赖转录文本。(#79512)感谢 @mbelinky。 ### 修复 - CLI/媒体: 默认使用全块字符渲染终端二维码,这样捆绑的 `qrcode` 终端渲染器不会在紧凑的半块模式下发出病理密集的 ANSI 最后一行,从而破坏某些终端的扫描。修复了 #77820。感谢 @KrasimirKralev。 - 代理/压缩: 从排队的工作空间而不是运行进程的当前工作目录读取压缩后的 AGENTS.md 刷新上下文,这样 CLI 支持的后续轮次在压缩后会重新注入正确的工作空间启动规则。修复了 #70541。(#75532)感谢 @vyctorbrzezowski。 - 代理/读取工具: 将超过 EOF 的正偏移量视为空范围,而不是暴露上游读取错误,这样过时的分页游标不会导致工具调用崩溃,而无关的读取失败仍然会大声失败。修复了 #62466。(#75536)感谢 @vyctorbrzezowski。 - Google/Gemini: 规范化留在 Google API 密钥引导模型白名单和回退中的已退役 Gemini 3 Pro Preview 引用,以便设置发出的配置继续测试 `google/gemini-3.1-pro-preview` 而不是 `google/gemini-3-pro-preview`。 - Telegram/上下文: 将选定的主题上下文绑定到活动会话,以便来自 `/new` 或 `/reset` 之前的消息不会重放到后续轮次中。(#80848)感谢 @VACInc。 - Google/Gemini: 在解析确切配置的代理提供程序引用时规范化已退役的嵌套 Gemini 3 Pro Preview ID,以便 `kilocode/google/gemini-3-pro-preview` 解析为 `kilocode/google/gemini-3.1-pro-preview` 用于 Gemini 3.1 测试。 - CLI: 从消毒的输出字段中剥离通用的 OSC 终端转义负载,防止剪贴板/标题转义主体泄漏到承诺表和其他终端安全文本中。感谢 @shakkernerd。 - Codex 应用服务器: 通过稳定的连接器 ID 匹配连接器支持的插件批准诱导,以便启用的破坏性操作不再仅因显示名称匹配而被拒绝。 - 构建: 用 Node 原生类型剥离替换选定的构建实用程序 `tsx` 预加载,这样 Node 26 构建路径不再发出 `DEP0205` 模块加载器弃用警告。(#78584)感谢 @keshavbotagent。 - 媒体生成: 当工具调用省略 `timeoutMs` 时,尊重已配置的音乐和视频生成超时,匹配图像生成行为。(#80687) - CLI/更新/状态: 将测试渠道插件回退和模型定价刷新失败标记为警告,使混合测试/最新插件队列保持可见,而不使核心更新或网关可达性看起来失败。修复了 #80689。感谢 @BKF-Gitty。 - 医生/插件: 在 `doctor --fix` 期间重新链接托管的 npm 插件 `openclaw` 对等依赖项,同时拒绝跟随插件包外部的包本地 `node_modules` 符号链接。(#77412)感谢 @TheCrazyLex。 - iMessage: 将入站点按回作为反应系统事件而不是普通消息路由,默认为机器人撰写消息通知,同时允许 `reactionNotifications: "off" | "own" | "all"` 覆盖。修复了 #60274;参考 #39031 和 #39322。感谢 @hyperclaw。 - 控制 UI/性能: 将 Nodes 轮询范围限定到活动的 Nodes 选项卡,对陈旧的会话列表协调进行去抖,并限制聊天侧会话刷新,以便长时间运行的仪表板避免后台重新加载抖动。感谢 @BunsDev。 - 插件/渠道: 解释将捆绑渠道入口文件作为设置运行时加载器不匹配而不是通用缺失注册失败。感谢 @chinar-amrutkar。 - 插件/会话结束: 为在网关进程停止时仍处于活动状态的每个会话触发一个类型化的 `session_end` 插件钩子,原因可能是 `shutdown`(或预期重启时的 `restart`)。以前 SIGTERM/SIGINT/重启路径关闭网关时没有枚举活动会话,导致下游 `session_end` 插件(例如 claude-mem)的幽灵行在重启间累积。新的关闭终结器排干一个由 `session_start` 填充并由替换/重置/删除/压缩发射器遗忘的内存跟踪器,因此之前已完成的会话永远不会被双重触发。排干被限制在 2 秒的总预算内,因此一个缓慢的插件不能阻塞进程退出。向 `PluginHookSessionEndReason` 添加了 `"shutdown"` 和 `"restart"`。修复了 #57790。感谢 @pandadev66。 - Codex 应用服务器: 当 OpenClaw 沙箱处于活动状态时,将 Codex 代码模式沙箱限制为工作空间写入,防止 Docker 网关套接字访问成为危险的全访问 Codex 轮次。 - TUI: 在网关断开连接并限制关闭排干后,对 Ctrl+C/SIGINT 立即退出,这样终端拆除不会导致会话搁浅。修复了 #75379。(#75381)感谢 @udaymanish6。 - Matrix: 将出站 Markdown 表格默认为项目符号列表而不是围栏代码块。修复了 #78990。(#80890)感谢 @kinjitakabe。 - Bonjour/网关: 将活动的 ciao 探测和新的名称冲突重命名视为进行中,以便 mDNS 看门狗等待探测解决后再重试,防止在 Windows、WSL 和其他多播不友好主机上快速重新通告循环。(#74778)参考 #74242。感谢 @fuller-stack-dev。 - 提供程序/MiniMax: 当消息转换将轮次过滤为空负载时,发送最小的 Anthropic 兼容用户回退,这样 MiniMax M2.7 在工具密集型会话后不再返回 `chat content is empty`。修复了 #74589。感谢 @neeravmakwana 和 @DerekEXS。 - 工具/媒体: 在预构建内置媒体生成和 PDF 工具时,保留来自 `tools.alsoAllow` 仅策略的隐式允许所有语义,以便配置的媒体工具变为活动状态,而无需强制使用 `tools.allow: ["*", ...]`。修复了 #77841。感谢 @trialanderrorstudios。 - Codex/Telegram: 将代码模式工具进度与最终回复分开,使用原生工具标签渲染桥接的工具调用,并修复持久化缺失的工具结果以实现更安全的后续轮次。(#80663)感谢 @jalehman。 - 内存/搜索: 当元 `sqlite-vec` 包在全局安装中丢失时,直接加载平台特定的 `sqlite-vec-<platform>-<arch>` 变体,这样在 `npm install -g openclaw@latest` 升级中,如果可选的依赖项只在磁盘上留下平台变体,向量召回仍然可以工作。修复了 #77838。感谢 @corevibe555 和 @Simon2256928。 - 定时任务: 保持长时间的手动定时任务在任务注册表中处于活动状态直到完成,防止在持久恢复协调之前出现瞬态 `lost` 标记。修复了 #78233。(#78243)感谢 @Feelw00。 - 医生/GitHub CLI: 当 GitHub 技能可用但 `gh` 认证位于与代理进程不同的操作员 HOME 下时,显示 `GH_CONFIG_DIR` 提示,而不对已禁用或过滤的技能发出警告。修复了 #78063。(#78095)感谢 @tmimmanuel。 - 网关: 在传递仍在进行中时,对并发的 `send`、`poll` 和 `message.action` 请求进行去重,防止为相同的幂等键做重复的出站工作。(#68341)感谢 @thesomewhatyou。 - 定时任务: 通过丢弃继承的显式心跳目标(当强制使用 `target: "last"` 时),使主会话 `systemEvent` 心跳唤醒保持在其绑定的会话路由上,无论是直接唤醒还是排队唤醒路径。修复了 #73900。感谢 @richardmqq。 - Telegram: 对视频媒体尊重强制文档传递,这样 `--force-document` 将 MP4 作为文档而不是类型化视频发送。修复了 #80389。(#80405)感谢 @jbetala7。 - 网关: 当 APNs 注册丢失时,清除推测的节点唤醒状态,防止未注册或输入错误的节点 ID 保留唤醒节流条目。修复了 #68847。(#68848)感谢 @Feelw00。 - 自动回复: 使延迟的后续队列排干终结器不会删除在 `/stop` 后注册的替换队列,防止立即的后续消息成为孤儿。修复了 #68838。(#68839)感谢 @Feelw00。 - 飞书: 将手动 App ID/App Secret 设置为默认的渠道绑定路径,同时保留二维码扫描创建作为可选的尽力而为流程,并记录针对不响应 QR 码的国内飞书移动客户端的回退方法。修复了 #80591。感谢 @wei-wei-zhao。 - 内存: 通过压缩最旧的自动推广部分来限制做梦推广写入到 `MEMORY.md`,同时保留用户撰写的笔记,使活动内存低于引导预算。修复了 #73691。(#74088)感谢 @YB0y。 - Telegram: 在本机 `/status` 和 `/think` 菜单中显示已解决的思考默认值,同时保留显式的会话覆盖。(#80341)感谢 @VACInc。 - 渠道: 针对活动回退快照缓存所选渠道注册表查询,以便固定为空的注册表在活动注册表交换后刷新本机命令和别名路由。(#80333)感谢 @samzong。 - Codex 应用服务器: 重用本机 Codex CLI OAuth 用于隔离的应用服务器框架登录、刷新和应用清单缓存键,这样经过 ChatGPT 认证的 Codex 运行不再退回到未经认证的 OpenAI API 调用。(#79877)感谢 @jeffjhunter。 - 网关: 将 `sessions.resolve` sessionId 和标签存储加载限定到请求的代理,这样大的无关代理存储不会被解析为作用域查询。修复了 #51264。(#79474)感谢 @samzong。 - 网关: 跨符合条件的 WebSocket 和节点订阅者共享序列化流式事件信封,同时保留每个客户端的序列号。(#80299)感谢 @samzong。 - 网关: 合并重复的 `openclaw doctor` 服务配置面板,同时保留已拒绝修复的 `--force` 提示。修复了 #80287。(#78688)感谢 @YB0y。 - 浏览器: 在浏览器状态中报告 Chrome MCP 现有会话页面就绪状态,而不让状态探测超过客户端超时。修复了 #80268。(#80280)感谢 @ai-hpc。 - WhatsApp: 通过 WhatsApp 重新连接策略路由开启阶段的 Baileys 428 connectionClosed,并使开后 428 关闭可重试,这样瞬态设置套接字关闭会通过 WhatsApp 诊断重试,而不是作为裸 `channel exited` 错误逃逸。修复了 #75736;缓解了 #77443。感谢 @dataCenter430。 - 代理: 为嵌入运行禁用 Pi 的默认文件系统资源发现,同时保持 OpenClaw 内联扩展工厂活动,避免首次 WhatsApp 触发的代理启动期间出现 Windows 事件循环停滞。修复了 #77443。感谢 @dataCenter430。 - 提供程序/自托管: 从 `/props.default_generation_settings.n_ctx` 读取模型范围的 llama.cpp 运行时上下文,同时保留顶级的 `n_ctx` 作为回退,这样会话预算反映加载的上下文窗口。修复了 #73664。(#74057)感谢 @brokemac79。 - 内存: 在读取 Markdown 文件之前,拒绝已配置的额外内存路径中的符号链接目录组件。(#80331)感谢 @samzong。 - 会话/转录: 将整个文件 `readFile` 扫描替换为共享流式辅助函数(`streamSessionTranscriptLines` 和 `streamSessionTranscriptLinesReverse`),用于幂等性查找、最新/末尾助手文本读取、传递镜像去重和压缩分叉加载,这样长时间运行的会话不再将完整转录物实例化到内存中。前向扫描使用 `readline` 配合受限的 `createReadStream`;反向扫描从文件末尾读取受限块并解码完整的 JSONL 行(最新的优先),无需固定的尾部上限。合成 200 MiB 的转录物:峰值 RSS 增量从 +252 MiB 下降到 +27 MiB,同时保留格式错误行容忍度和幂等性键返回语义。修复了 #54296。感谢 @jack-stormentswe。 - 浏览器/CDP: 从原始 CDP 和持久 Playwright 选项卡选择中过滤浏览器内部目标,这样导航会打开真实的页面选项卡。修复了 #55734。感谢 @Demine4。 - WhatsApp: 在处理新的入站 DM 之前,将对热重载的 `dmPolicy` 和 `allowFrom` 设置应用于活动的 Web 监听器。修复了 #80538。感谢 @Ampaskopi129。 - 插件: 让 `openclaw doctor --fix` 修复其包入口点在本地状态移动后未能通过包目录边界验证的托管插件安装。修复了 #80592。感谢 @wei-wei-zhao。 - 语音通话: 将语音发起的执行批准后续作为内部非交付轮次恢复,而不是将其作为 `unknown channel: voice` 拒绝。修复了 #80540。感谢 @patrickmch。 - 控制 UI: 在活动聊天运行期间点击停止时保留编辑器草稿,防止移动设备上意外丢失提示。修复了 #80586。感谢 @KCALLC。 - 基础设施/重试: 当可以满足服务器提供的 Retry-After 下限时,保持抖动重试延迟处于或高于该下限。修复了 #68541。(#68543)感谢 @Feelw00。 - 文档: 澄清 `/model provider/model` 是一个确切的会话路由,而重复的裸模型 ID 在非会话覆盖路径上仅使用已配置的回退顺序。参考 #80562。感谢 @gaodaabao。 - 编辑持久化的秘密形状负载 [AI]。(#79006)感谢 @pgondhi987。 - 代理: 在紧凑工具摘要中将 `.openclaw/sandboxes` 执行工作目录标记为沙箱运行,而不是显示完整路径。 - OpenAI Codex: 显示浏览器 OAuth 和设备代码登录失败,而不是将失败的登录视为空的成功认证结果。参考 #80363。 - CLI 代理: 将仅运行时的当前轮次发送者/回复上下文携带到 CLI 模型提示中,同时保持提示构建钩子输入和转录文本干净。 - 控制 UI: 使工作空间文件存在性检查不会将 `fs-safe` stat 辅助函数失败视为缺失文件,从而为现有的 Windows 工作空间文件恢复代理文件状态。修复了 #79953。感谢 @lovelefeng-glitch。 - Microsoft Foundry: 当 Azure 订阅提示返回一个不在已启用订阅列表中的 ID 时,报告一个显式错误,而不是从不安全的订阅断言继续。(#62742)感谢 @oliviareid-svg。 - 修复(matrix): 关闭基于名称的白名单解析 [AI]。(#79007)感谢 @pgondhi987。 - Slack: 在新线程会话中包含机器人自己的根/父消息,以便线程内回复到达代理时带有用户正在回复的父文本,而不是仅有 `reply_to_id` 元数据。修复了 #79338。感谢 @sxxtony。 - Docker: 使镜像构建保持在源 pnpm 工作空间策略上,这样 pnpm 11 可以在没有仅 Docker 工作空间重写的情况下修剪生产依赖项。 - 代理/压缩: 恢复嵌入压缩开始、完成和不完整结果的信息级网关日志。(#71961)感谢 @rubencu。 - Telegram: 通过共享的渠道上下文路径构建感知回复的入站轮次,以便代理看到当前消息内联的当前回复目标。 - Telegram: 恢复混合了 JSON 数组和行分隔条目的旧版消息缓存文件,以便重新启动的网关保留回复窗口上下文。(#80567) - Telegram: 在消息编辑时更新回复上下文缓存,这样流式机器人回复在后续代理上下文中以其最终文本而不是初稿出现。 - 技能/Windows: 在主目录前缀压缩后,将压缩的技能提示位置规范化为正斜杠,这样 Windows 技能路径仍然可以被模型文件工具读取。(#52200)感谢 @chienchandler。 - 控制 UI/Windows: 更新 `@openclaw/fs-safe`,以便代理工作空间文件存在性检查在 Windows 上正确回退,防止现有的 AGENTS.md、SOUL.md、TOOLS.md、IDENTITY.md、USER.md、HEARTBEAT.md 和 MEMORY.md 文件显示为缺失。修复了 #79953。感谢 @lovelefeng-glitch。 - 内存: 跳过无法管理网关 cron 的普通 cron 和心跳钩子上下文的托管做梦 cron 协调警告。(#77027)感谢 @rubencu。 - 定时任务: 将 Codex 应用服务器轮次接受、CLI 进程生成和工具启动视为执行里程碑,防止隔离运行在已经开始工作后触发早期启动看门狗。 - Codex 应用服务器: 将当前轮次 `<turn_aborted>` 原始标记视为终止标记,这样被中断的原生工具轮次会释放 Discord 代理会话,而不是等待外部超时。 - 元宝: 将 `openclaw-plugin-yuanbao` 升级到 2.13.1,以支持群聊的 `sourceReplyDeliveryMode: "automatic"`。(#79814)感谢 @loongfay。 - 内存: 使 `memory_search` 结果 `corpus` 标签与命中源保持一致,这样会话转录命中显示为 `sessions`,内存文件命中保持 `memory`。修复了 #72885。(#71898, #72886)感谢 @rubencu。 - Codex 应用服务器: 将原生插件应用工具批准默认设置为自动,这样在禁用破坏性操作时,非破坏性的读取工具可以运行。 - 插件: 允许全局扩展目录中未追踪的本地源插件加载 TypeScript 包条目,同时保持托管安装对编译的运行时输出严格。修复了 #80503。感谢 @Kaspre。 - Google/Gemini: 在将清单目录行转换为发出的提供程序配置时规范化已退役的嵌套 Gemini 3 Pro Preview ID,以便使用 `google/gemini-3.1-pro-preview` 而不是 `google/gemini-3-pro-preview` 进行测试。 - Google/Gemini: 在已保存的模型白名单和回退链中规范化已退役的嵌套 Gemini 3 Pro Preview ID,以便像 `openrouter/google/gemini-3-pro-preview` 这样的代理路由被持久化为 Gemini 3.1 Pro Preview。 - Google/Gemini: 在已配置的代理/提供程序认证模型目录中规范化已退役的嵌套 Gemini 3 Pro Preview ID,以便重新生成的配置继续测试 `google/gemini-3.1-pro-preview` 而不是 `google/gemini-3-pro-preview`。 - Google/Gemini: 在引导提供程序目录预设时规范化已退役的嵌套 Gemini 3 Pro Preview ID,以便设置发出的代理配置测试 `google/gemini-3.1-pro-preview` 而不是 `google/gemini-3-pro-preview`。 - Google/Gemini: 在通用配置写入期间,在提供程序目录行中规范化已退役的 Gemini 3 Pro Preview ID,以便不相关的配置更改继续测试 `google/gemini-3.1-pro-preview`。 - 模型: 对于具有重复模型 ID 的覆盖选择,将已配置的回退链保持在已配置的主模型之前,防止回退跳转到错误的提供程序。修复了 #80562。 - 本机应用: 通告网关协议兼容性范围,以便聊天和节点会话可以在添加性 v4 客户端更新后连接到 v3 网关。 - 网关/代理: 在包更新后保持陈旧的 `sessions_send` ACP 管理器和 `web_fetch` 运行时块可导入,防止实时网关在重启前损坏。修复了 #78804。感谢 @Gomesy72。 - 网关/安装: 在 `openclaw gateway install` 中保留服务环境值源元数据,以便 systemd 重新安装路径将环境文件支持的秘密保留在内联单元元数据之外。参考 #77406, #77427。感谢 @stainlu 和 @brokemac79。 - 自动回复/重置: 在裸 `/new` 和 `/reset` 模型提示中包含入站发送者上下文,同时将启动指令排除在转录提示之外,这样代理在第一个重置轮次上就能看到发送者身份。修复了 #77360。感谢 @srb11e。 - 网关: 避免在附加后启动期间进行同步重启哨兵状态探测,防止 Windows 或重定向状态目录阻塞频道轮次。修复了 #79264。感谢 @liyi58。 - 代理/认证: 通过一次锁定存储写入更新成功的模型认证配置文件状态,减少重复 `auth-profiles.json` 保存带来的后模型回复延迟。感谢 @mcaxtr。 - 代理/图像: 即使 `agents.defaults.imageModel` 未设置,也尊重显式 `image` 工具模型覆盖,为已配置的多模态提供程序恢复一次性的视觉调用。修复了 #79341。感谢 @haumanto。 - 医生/更新: 在非交互式更新模式服务修复期间,保持实时 systemd 网关单元不变,这样更新时的医生不会静默覆盖操作员拥有的单元指令。参考 #80462。 - 更新: 在验证确切的 npm 包安装目标时接受可选的引导 `v` 前缀,这样 `openclaw update --tag v2026...` 在安装匹配的裸包版本后不会回滚。参考 #74069;#80480。感谢 @Kaspre。 - 医生: 将 `plugins.deny` 中缺失的插件 ID 视为过时的配置警告而不是致命验证错误,并在过时插件清理期间移除它们,这样更新修复不会为仅拒绝的过时插件引用恢复最后已知的良好配置。参考 #77802。感谢 @Kaspre。 - Codex 应用服务器: 通过上下文引擎提示投影保留提示本地的当前轮次上下文,这样被回复的 Telegram 消息对 Codex 模型输入保持可见。 - Telegram: 通过网关消息操作传递代理范围的媒体根目录,这样来自活动代理的工作空间本地媒体不会被拒绝为跨代理访问。感谢 @frankekn。 - CLI/网关: 使 `gateway status --deep` 能够感知插件,以便已配置的插件清单警告(包括缺失的渠道配置元数据)在安装和更新冒烟检查期间保持可见。 - 医生/状态: 澄清网关令牌源冲突警告,并在托管网关服务凭据上下文中抑制它们。 - 飞书: 接受 Schema 2 卡片回调,其操作员身份嵌套在 `operator.user_id` 下,这样卡片按钮可以分发,而不是被作为格式错误丢弃。修复了 #71670。(#71787)感谢 @rubencu。 - 飞书: 当正常的群组引用回复目标一条已撤回或缺失的消息时,回退到顶层的群组发送,防止回复静默消失,同时保留本机主题安全性。修复了 #79349。感谢 @arlen8411。 - 医生: 当已配置的默认代理不是 `main` 时,停止将实时兼容代理目录标记为孤立。修复了 #74313。(#74438)感谢 @carlos4s。 - 认证/Claude CLI: 将更新的托管外部 CLI OAuth 凭据持久化回 `auth-profiles.json`,防止过时的 `anthropic:claude-cli` 配置文件重复引导并淹没调试日志。修复了 #80129。感谢 @Caulderein。 - 上下文: 仅从实际运行上下文渲染 `/context map`,并持久化 Codex 应用服务器运行报告,而不将延迟的工具搜索模式计为提示加载的工具模式。 - Codex 应用服务器: 向诊断报告 Codex 原生工具执行,这样长时间运行的原生 `bash`、web、file 和 MCP 工具对于看门狗来说不再看起来像是陈旧的嵌入运行。(#80217) - Codex 应用服务器: 在订阅使用限制失败后刷新 Codex 帐户速率限制,这样 Discord 和其他渠道回复可以显示下一次重置时间,而不是说 Codex 没有返回任何内容。感谢 @pashpashpash。 - 代理/认证: 让 Codex 支持的 OpenAI 代理轮次使用 `auth.order.openai` 条目来获取 Codex 兼容的 OAuth 和 API 密钥配置文件,同时保持现有的 `openai-codex` 配置文件顺序有效。 - Codex 应用服务器: 为本机钩子中继未涵盖的本机工具补全发出异步 `after_tool_call` 观察,以便可观察性插件可以记录 Codex 原生工具。(#80372)感谢 @VACInc。 - 任务: 通过请求者会话路由群组和频道任务完成,以便父代理可以发送可见摘要,而不是在通用的任务状态行处停止。修复了 #77251。(#77365)感谢 @funmerlin。 - Telegram: 在渲染的回复中保留手动缩进的项目符号块与后续编号部分之间的空行。修复了 #76998。感谢 @evgyur。 - 代理/沙箱: 允许只读沙箱会话读取 `/agent` 工作空间挂载点,同时保持写/编辑/应用补丁仅受工作空间保护,为 `workspaceAccess: "ro"` 恢复 `read /agent/...`。修复了 #39497。感谢 @stainlu 和 @teosborne。 - Slack: 通过草稿预览发送传递已配置的代理身份,这样部分流式回复在初始 Slack 消息上保持自定义用户名/头像。修复了 #38235。(#38237)感谢 @lacymorrow。 - Slack: 支持 `allowBots: "mentions"` 用于提及接收机器人的机器人撰写的消息,匹配记录在案的 Discord 风格模式,而不接受每条机器人消息。修复了 #43587。(#43588)感谢 @raw34。 - Slack: 当入站 DM 文件事件省略了附件 URL 或附件 URL 过时时,使用 `files.info` 刷新私有文件 URL,防止文件附件在媒体水化之前被丢弃。修复了 #50129。(#50200)感谢 @smartchainark。 - Slack: 添加范围限定的消息工具格式化提示,以便代理对纯文本发送使用 Markdown,对 Block Kit 字段使用直接的 mrkdwn。修复了 #34609。(#50979)感谢 @carrotRakko。 - Slack: 单独描述 `download-file` 文件 ID 与消息时间戳,并在代理传递 `messageId` 而不是 `fileId` 时返回有针对性的恢复错误。(#74155)感谢 @jarvis-ai-gregmoser。 - Slack: 为 `requireMention=false` 频道保留已处理的房间消息,这样始终在线的 Slack 房间在轮次之间保持最近的对话上下文。(#38658)感谢 @syedamaann。 - Slack: 为直接出站发送编译交互式回复指令,而不绕过 `interactiveReplies` 能力门,为 Slack CLI 和 cron 传递保留 Block Kit。(#78220)感谢 @kazamak。 - Slack: 将 DM 最后路由更新范围限定到活动非主 DM 会话,包括线程化 DM 轮次,这样隔离的 Slack DM 会话不会覆盖共享的主路由。(#73085)感谢 @clawSean。 - Slack/ACP: 当没有运行时绑定时,通过已配置的 ACP 绑定路由 Slack 频道和 DM 消息,将绑定的线程回复固定到持久的 ACP 会话,并丢弃不可用的已配置目标,而不是回退到 `main`。(#73101)感谢 @Raasl。 - Slack: 将未解析的线程回复标记为不明确并跳过它们,而不是将它们视为根频道消息,保持线程延续在基于 SDK 的参与存储上。(#75630)感谢 @soichiyo。 - Slack: 让同频道消息工具发送可以选择退出继承的线程上下文,使用 `topLevel: true` 或 `threadId: null`,允许代理从 Slack 线程内部发布新的父频道消息。修复了 #79807。感谢 @vexclawx31。 - Slack: 优先选择完整的富文本块内容而不是截断的套接字模式消息预览,这样长的入站 Slack 消息完整到达代理。修复了 #79027。感谢 @BobAccentWebDev。 - Slack: 在设置、探测、流式和回复日志中包含结构化的 Slack API 错误详细信息,同时保留令牌编辑。(#53966)感谢 @deucemask。 - 网关/代理: 当活动运行排队失败时保留结构化原因,并弃用旧式的布尔排队辅助函数,这样引导和子代理唤醒诊断可以区分已完成、非流式和压缩运行。修复了 #80156。感谢 @markus-lassfolk。 - 系统事件: 在队列中对键控事件进行去重,同时保留无键事件、传递路由和信任边界事件的身份。(#73040)感谢 @statxc。 - 代理/UI: 通过隐藏冗余的 shell 工具名称来压缩执行和工具进度行,用简短的上下文标记替换已知的工作空间路径,并为紧凑的命令行保留 Discord 追踪擦除。 - ACPX: 默认运行并等待嵌入的 ACP 后端启动探测,这样网关 `ready` 信号不再在 acpx 运行时变得可用或报告探测失败之前触发;设置 `OPENCLAW_ACPX_RUNTIME_STARTUP_PROBE=0` 以恢复延迟启动。修复了 #79596。感谢 @bzelones。 - 网关/状态: 将模型定价引导和刷新失败显示为降级的健康/状态警告,同时保持网关存活健康。修复了 #79599。感谢 @bzelones。 - OpenAI 兼容模型: 默认从重放的聊天补全历史中剥离先前的助手推理字段,防止 oMLX/vLLM Qwen 后续轮次因过时的 `reasoning` 负载而拒绝或停滞。修复了 #46637。感谢 @zipzagster 和 @lexhoefsloot。 - CLI/引导: 为非 Azure 自定义提供程序提供一个安全的生成上下文窗口,并修复旧的 4k 向导条目,而不覆盖显式的有效小模型限制,防止首次轮次压缩循环。修复了 #79428。(#79911)感谢 @Jefsky。 - OpenAI 兼容模型: 添加 `compat.strictMessageKeys` 以将聊天补全重放消息剥离为 `role` 和 `content`,适用于拒绝 OpenAI 风格工具和元数据键的严格提供程序。修复了 #50374。感谢 @choutos。 - Bedrock Mantle: 添加 `plugins.entries.amazon-bedrock-mantle.config.discovery.enabled=false` 以抑制自动 Mantle 发现和 IAM 承载令牌生成,同时保持插件启用。修复了 #67288。感谢 @kanekoh。 - Ollama: 停止原生 `/api/chat` 请求将目录 `contextWindow` 或 `maxTokens` 复制到 `options.num_ctx` 中,除非显式配置了 `params.num_ctx`,避免本地大上下文模型上的病态提示摄取延迟。修复了 #62267。感谢 @BenSHPD。 - Ollama: 为通过本地 Ollama 主机路由的 `*:cloud` 模型保持模型空闲看门狗启用,这样云支持的工具循环停滞会可见地故障转移,而不是继承本地模型的无空闲行为。修复了 #79350。感谢 @geek111。 - 语音/Ollama: 为经典嵌入式语音回复尊重路由的语音代理 `tools.allow`,包括空的白名单,这样无工具的 Ollama 代理不会收到工具模式。修复了 #79506。感谢 @donkeykong91。 - 代理/医生: 当频道路由的代理无法调用 `message` 工具时发出警告,以便操作员可以在显式渠道操作(如附件或线程回复)失败之前修复工具策略不匹配。参考 #80128。感谢 @jeffjhunterai。 - 网关: 在第一次进程内重启循环启动后从磁盘重新读取配置,防止 SIGUSR1 重启重用过时的启动快照并丢弃启动后写入的配置。修复了 #79947。感谢 @TheLevti。 - Codex 应用服务器: 将来自 Codex `savedPath` 事件的原生图像生成输出作为回复媒体传递,这样空白文本的图像生成轮次仍然会附加生成的文件。感谢 @keshavbotagent。 - 网络/SSRF: 当双栈主机也发布 AAAA 记录时,保持固定的自动 DNS 查找在 IPv4 上,并将 `EADDRNOTAVAIL` 视为瞬态网关网络故障而不是致命崩溃。修复了 #80078。感谢 @takamasa-aiso。 - 控制 UI: 在会话表中显示紧凑的单行活动/空闲/终端运行状态徽章,并将活动分钟过滤器重命名为其更新以来的含义。修复了 #78307。感谢 @BunsDev。 - 控制 UI: 按代理限定聊天会话列表刷新范围,并跳过仅限磁盘的代理存储发现以获取仅配置的列表,防止大 Windows 存储上首次消息后会话切换停滞。修复了 #79675。感谢 @lovelefeng-glitch, @BunsDev。 - 控制 UI: 允许 Appearance tweakcn 主题导入通过服务的 CSP,这样浏览器本地自定义主题链接不再因 `connect-src` 违规而失败。修复了 #78504。感谢 @BunsDev。 - 控制 UI/配置: 移除当插件启用开关在保存前被还原时表单自动添加的插件白名单条目,这样还原可见开关会清除脏状态,而不会持久化意外的白名单更改。(#78329)感谢 @samzong。 - 网关/移动: 在交接重新连接时重用引导发出的设备令牌范围,并分别显示设备令牌范围不匹配与令牌不匹配,同时保留完整的共享令牌仪表板/原生会话。修复了 #79292。感谢 @BunsDev。 - 媒体/主机读取: 在共享的主机本地媒体验证器中,除了 ZIP 和文档附件之外,允许缓冲区验证的 gzip、tar 和 7z 存档。 - 插件/安装: 在 npm 的 `Invalid comparator: npm:` 失败后,在没有 npm 别名覆盖的情况下重试托管的 npm 插件安装,这样较旧的 npm 版本可以安装官方插件,而不是中止。(#80539)感谢 @rubencu。 - 插件/医生: 当插件诊断指向已删除的源路径时,使持久化的插件注册表快照失效,这样 `openclaw doctor` 在本地扩展被托管的 npm 插件替换后停止重复过时的警告。修复了 #80087。(#80134)感谢 @hclsys。 - 医生/OpenAI Codex: 在自动修复旧的 `openai-codex/*` 模型引用到规范的 `openai/*` 时,通过添加提供程序/模型范围的 Codex 运行时策略来保留 Codex 认证意图,防止修复后的配置退回到直接的 OpenAI API 密钥认证。修复了 #78533 和 #78570。感谢 @superck110 和 @Azmodump。 - CLI/代理: 从 `sendDurableMessageBatch` 在 `deliverAgentCommandResult` 和 `openclaw agent --json --deliver` 中显示持久消息传递状态,将抑制的钩子结果保留为终端无重试结果,同时为自动化暴露部分和失败的发送。取代了 #53961 和 #57755。感谢 @Kaspre。 - 代理: 在提供程序流设置仍然挂起时应用 LLM 空闲看门狗,防止无声的流前模型挂起等待完整的代理超时。 - 定时任务: 让隔离的自我清理运行检查自己的作业运行历史,同时阻止其他 cron 作业和变更操作。修复了 #80019。感谢 @hclsys。 - 定时任务: 在没有模型调用开始时,报告隔离的代理轮次设置和预模型停滞,并带有特定阶段的超时错误,而不是等待完整的作业预算。修复了 #74803。感谢 @jeffsteinbok-openclaw 和 @dgkim311。 - CLI/插件: 将插件 CLI 元数据之外任意的未知子命令视为正常的未知命令,而不是建议 `plugins.allow`,同时为真实的插件命令根保留白名单指导。修复了 #80109。(#80123)感谢 @kagura-agent。 - CLI/配置: 持久化等于运行时默认值的显式 `config set` 和 `config patch` 值,而不是报告成功却丢弃它们。修复了 #79856。(#80106)感谢 @abodanty 和 @hclsys。 - OpenAI/实时语音: 接受 Codex 兼容的旧版音频和转录事件别名,这样提供程序协议漂移不会丢弃助手音频或字幕。 - Discord/语音: 防止默认代理代理实时会话在强制的 OpenClaw 咨询答案之前自动说话填充内容,在实时响应完成时结束 Discord 播放,并排队后续精确语音答案直到播放空闲,以避免句子中途替换。 - 网关: 为格式错误的编码会话终止 HTTP 路径返回确定性的 `400 invalid_request_error` 响应,而不是让路由形状的请求漏到后续网关处理程序。(#72439)感谢 @rubencu。 - 控制 UI: 从 `/__openclaw__/` SPA 路由提供根 PWA 和收藏夹图标资源,这样选项卡图标、安装元数据和服务工作线程在内部导航后不会出现 404。修复了 #80072。感谢 @CodeNovice2017。 - 执行/安全二进制文件: 在不区分大小写的文件系统上,使用路径特定的大小写折叠来比较受信任的安全二进制文件目录,这样 Windows 和默认的 macOS 路径在不削弱区分大小写挂载的情况下匹配。(#42131)感谢 @hkochar。 - OpenAI/实时语音: 尊重本地禁用的输入音频中断,这样在操作员设置 `interruptResponseOnInputAudio: false` 后,服务器 VAD 语音开始事件不会清除 Discord 播放。 - Telegram: 使无响应的 DM 轮次保持安静,而不是将它们重写为可见的静默回复聊天。修复了 #78188。(#78228)感谢 @Beandon13。 - Telegram: 在原始回调回退之前处理托管的 select 按钮回调,同时保留包含分隔符的选项值,如 `env|prod`。(#79816)感谢 @moeedahmed。 - OpenAI 兼容模型: 处理返回到流式请求的 JSON 聊天补全主体,保留推理字段和可见文本,而不是完成一个空的代理轮次。修复了 #77870。 - Discord/模型: 在加载路由、模型和偏好数据之前延迟模型选择器组件交互,防止网关负载下的“此交互失败”超时。修复了 #77283。感谢 @colin-chang。 - xAI: 为具有推理能力的 Grok 模型暴露 `/think low|medium|high`,并在原生响应负载上保留 `reasoning.effort`,同时为无推理路由保留仅关闭行为。修复了 #79210。感谢 @colinmcintosh。 - CLI/媒体: 让显式的图像描述模型引用使用捆绑的静态提供程序目录和通用模型支持的图像钩子,这样 `openclaw infer image describe --model zai/glm-4.6v` 可以像直接模型运行一样工作,并且 Anthropic 认证探测避免使用过时的 Claude 3 Haiku 目录条目。 - 模型/Anthropic: 当配置了 Anthropic 默认模型时,将 `anthropic/claude-haiku-4-5` 添加到 Anthropic API 密钥代理白名单默认值中,这样 cron 模型覆盖可以选择当前的 Haiku 别名。修复了 #78000。 - 代理/压缩: 在 CLI 转录压缩解析默认引擎之前初始化内置上下文引擎,防止 CLI 会话持久化期间干净进程 `legacy` 引擎注册失败。修复了 #79446。感谢 @TurboTheTurtle。 - 代理/Anthropic 兼容: 为显式声明 `supportsReasoningEffort: false` 的自定义 Anthropic 兼容模型剥离重放的 thinking 块,防止 Kimi 兼容提供程序重新发送不支持的 `thinking` 内容。修复了 #47452。 - Kimi: 通过提供所需的思考预算和为隐藏推理加上最终文本留出足够的输出空间,保持 Anthropic 兼容的 thinking 流有效。(#80481)感谢 @InTheCloudDan。 - 浏览器: 为现有会话的 Chrome MCP 状态和非深度医生探测等待更长时间,这样缓慢的首次附加不会虚假报告离线,同时保持原始 CDP 状态探测简短。(#77473)感谢 @rubencu。 - 网关/日志记录: 在前台网关快速路径解析之前安装控制台捕获,并抑制已知的 libsignal 会话转储,即使在详细模式下也是如此,防止原始终端日志打印 WhatsApp 会话密钥材料。(#76306)感谢 @rubencu。 - 执行批准: 将 `exec.approval.list` 保留在轻量级策略摘要路径上,这样列出待处理批准不再加载丰富的 tree-sitter 命令解释器。(#76943)感谢 @rubencu。 - 代理: 当 `exec`/`bash` 工具调用在助手声称成功后失败时,显示简洁的默认可见警告,同时保持原始 stderr 隐藏,除非启用了详细详细。修复了 #60497。(#80003)感谢 @jbetala7。 - 渠道/iMessage: 在非敏感的健康快照中保留编辑过的失败探测详细信息,这样完全磁盘访问失败不再在状态输出中显示为已配置/正常。修复了 #79795。 - 代理: 在分派之前停止空白的模型发出的工具调用,同时保留基于 ID 的工具名称恢复,防止 Kimi/NVIDIA 空白名称重试循环,而不创建可调用的 `_blank` 哨兵。修复了 #34129。(#56391)感谢 @smartchainark。 - 代理/Telegram: 传递规范的最终助手答案,而不是重放累积的预工具文本块,防止重复的 Telegram 回复和看起来原始的仅工具输出片段泄漏到聊天传递中。修复了 #79621 和 #79986。感谢 @nonzeroclaw 和 @dudaefj。 - 自动回复/TUI: 通过发出回退进度并在恢复有机会完成之前推迟终端 TUI 错误,在主模型生命周期错误后保持回退超时恢复可传递。修复了 #80000。(#80009)感谢 @TurboTheTurtle。 - 心跳: 当已配置的默认模型更改时,清除过时的自动回退模型覆盖,这样心跳运行会遵循更新的 `agents.defaults.model.primary`,而无需手动重置。修复了 #74284。感谢 @brtkwr 和 @bitloi。 - CLI/代理: 让 `openclaw agent --model` 使用后端/管理员网关范围,而不让缓存的设备令牌范围静默降级请求范围。(#78837)感谢 @VACInc。 - CLI/帮助: 使帮助和版本调用保持无配置状态,同时改进共享端口、渠道、插件、任务、会话、消息、配对和认证恢复文本。 - CLI/配置: 用有效的 JSON 示例和纯字符串逃生舱口解释严格的 JSON 解析失败。 - CLI/密钥: 将离线的网关重新加载失败转化为可操作的恢复文本。 - CLI/渠道: 用下一个命令解释缺失或不明确的渠道选择。 - CLI/渠道: 延迟引导的渠道状态收集,直到选择了渠道,保持 `openclaw channels add` 第一个屏幕更简洁。 - CLI/渠道: 在取消时干净地退出引导渠道设置,而不是打印内部向导错误。 - 插件/CLI: 将禁用的 Matrix 和 LanceDB 内存命令根路由到插件启用指导,而不是通用的未知命令错误。 - 浏览器/Docker: 从 `PLAYWRIGHT_BROWSERS_PATH` 和 Linux 上默认的 Playwright 缓存中检测 Playwright 管理的 Chromium,这样持久化 `/home/node/.cache/ms-playwright` 的 Docker 安装不再需要 `browser.executablePath`。 - Ollama: 即使 Ollama Cloud `/api/show` 省略了 `thinking` 能力,也使 DeepSeek V4 云模型保持可思考能力,这样 `/think high` 不再拒绝 `ollama/deepseek-v4-*:cloud`。 - ACPX/Claude ACP: 当同一会话期间自主任务通知结果到达时,保持前台提示等待自己的结果,并重新定位 Claude Agent ACP `0.33.1` 的补丁。 - WhatsApp: 在 `7.0.0-rc10` 中阻止 Baileys 媒体上传将非 Dispatcher 代理传递给 undici,并修补捆绑的 Baileys 声明,以便最新的 tsdown 构建保持无警告。 - 构建: 通过将已知的第三方声明边缘外部化并将相对渠道配置模块增强替换为显式内置渠道字段,使 tsdown `0.22.0` 保持无警告。 - ACP 会话: 将规范的运行时选项映射到后端通告的 ACP 配置键(如 Claude 的 `effort`),同时保留持久化的 OpenClaw 状态作为规范。(#79926)感谢 @InTheCloudDan。 - 模型/Discord: 在 `agents.defaults.models` 中支持 `provider/*` 条目,这样 `/model`、`/models` 和模型选择器可以显示选定提供程序的动态发现模型,而无需精确的模型白名单。修复了 #79485。感谢 @rendrag-git。 - 网关/监视: 在从源码检出启动网关之前,重建或重新暂存缺失的捆绑插件 dist 和运行时后构建输出,防止不完整的监视模式运行时树。(#70805)感谢 @rubencu。 - CLI/更新: 允许在自我更新期间来自先前网关协议的重启健康探测,并使插件试运行报告确切的 npm 目标版本而不是 `unknown`,同时保持未更改的状态。 - OpenAI/Codex: 在规范 `openai/*` 迁移后,将持久化的 `openai-codex` OAuth 配置文件元数据转发到 Codex 插件框架尝试中,这样仅 OAuth 的安装继续使用原生 Codex 认证,而不是退回到直接的 OpenAI API 密钥认证。修复了 #79978。 - OpenAI/Codex: 将网关缺失密钥恢复和向导文档指向规范的 `openai/gpt-5.5` 加上 Codex OAuth 路由,并修复轨迹导出错误,使其建议有效的 `openclaw sessions` 命令。 - Google/Gemini: 在配置加载和不相关的配置写入期间规范化已退役的 `google/gemini-3-pro-preview` 主要、回退和模型映射引用,以便保存的配置继续以 Gemini 3.1 Pro Preview 为目标。 - Google/Gemini: 在发出的 Google 提供程序模型配置中规范化已退役的 Gemini 3 Pro Preview ID,以便重新生成的 models.json 行测试 `google/gemini-3.1-pro-preview`。 - Google/Gemini: 为显式的 OpenAI 兼容 Google 和 Gemini CLI 提供程序配置规范化已退役的 Gemini 3 Pro Preview ID,以便发出的配置以 `google/gemini-3.1-pro-preview` 为目标。 - Google/Gemini: 规范化从现有合并的 models.json 提供程序中保留的已退役 Gemini 3 Pro Preview ID,以便配置发出保持以 `google/gemini-3.1-pro-preview` 为目标。 - Google/Gemini: 在提供程序认证配置补丁中规范化已退役的 Gemini 3 Pro Preview ID,以便设置发出的提供程序目录测试 `google/gemini-3.1-pro-preview`。 - GitHub Copilot: 使用与运行时请求相同的 `vscode-chat` 集成身份生成短期 Copilot API 令牌,并刷新缺少该身份的旧缓存令牌,这样具有图像能力的 Copilot 模型不再继承 `copilot-language-server` 范围。修复了 #79946, #80074。感谢 @TurboTheTurtle。 - 插件/医生: 当 `openclaw doctor --fix` 移除遮蔽捆绑插件的 npm 包时,删除过时的托管 npm 安装记录,这样重建的注册表不再复活已移除的包元数据。 - 医生: 当每个代理的模型配置省略了 `fallbacks` 键且 `agents.defaults.model.fallbacks` 非空时发出警告。涵盖了字符串形式(`"model": "..."`)和部分对象形式(`"model": { "primary": "..." }`)——两者都在运行时静默覆盖默认链。使用 `"fallbacks": []` 明确选择退出回退,或添加 `"fallbacks": [...]` 以继承或覆盖。修复了 #79369。感谢 @Kaspre。 - Discord/语音: 重用或抑制延迟的实时咨询工具调用,而不窃取更新的说话者上下文或两次说出强制的回退答案。 - Discord/语音: 跳过可能不完整的实时强制咨询转录片段和不可操作的结束语,这样过时的部分语音不会在下一个轮次中排入延迟的答案。 - Discord/语音: 防止实时强制咨询清除活动的精确语音播放,这样背靠背的语音答案排队而不是互相打断。 - Discord/语音: 从发出的 Discord PCM 合成实时播放时间戳,这样 OpenAI 实时插话截断不再看到 `audioEndMs=0` 并跳过合法的中断。 - 插件 SDK: 当禁用捆绑插件回退时,保持激活的链接插件运行时外观可加载。感谢 @shakkernerd。 - 飞书: 当活动会话是 group_topic 或 group_topic_sender 时,在主题内自动线程化 `message(action="send")` 回复,并通过文本、卡片和媒体出站适配器传播 `replyInThread`,这样话题范围限定的会话不再在群组根目录下发布。修复了 #74903。(#77151)感谢 @ai-hpc。 - WhatsApp: 将路由上下文传递到语音笔记转录回显预检中,以便回显的转录可以传递到原始聊天。修复了 #79778。(#79788)感谢 @hclsys。 - 定时任务/故障转移: 将结构化的 OpenAI 兼容 `server_error` 负载分类为 `server_error`,在 cron 状态中暴露该原因,并让一次性 cron 重试策略尊重 `retryOn: ["server_error"]`,而无需原始 `5xx` 文本。(#45594)感谢 @clovericbot。 - Slack: 在交互式回复按钮/选择点击后唤醒已解析的线程会话,并通过排队的交互事件携带 Slack 传递上下文,这样点击继续可见的对话。修复了 #79676 和 #61502。(#79836)感谢 @velvet-shark, @tianxiaochannel-oss88, 和 @Saicheg。 - WhatsApp/流式: 当文本结束块回复在工具调用周期中重复先前的序言时,只发送新的后缀,防止累积的 WhatsApp 序言消息。修复了 #78946。(#79120)感谢 @brokemac79 和 @papawattu。 - 测试/安全审计: 在每次测试的 OpenClaw 主目录临时目录下沙箱化 `audit-exec-surface.test.ts`,将 `OPENCLAW_HOME`(在 `resolveRawHomeDir` 中优先于 `HOME`/`USERPROFILE`)与 `HOME` 和 `USERPROFILE` 一起重定向,这样其 `saveExecApprovals(...)` 调用永远不会触及运行套件的主机上真实的 `~/.openclaw/exec-approvals.json`。同级的 exec-approvals 测试已经使用了临时目录模式;这个文件没有,因此针对贡献者本地检出运行 `pnpm test` 会静默地将其真实的批准截断为 `{ "version": 1, "agents": {} }`。(#79885)感谢 @omarshahine。 - ACP/网关: 通过生命周期边界保留 `AcpRuntimeError` 原因链(code/method/JSON-RPC detail),以便网关日志、telegram 回复和工具结果文本显示实际的上游失败,而不是不透明的 `Internal error`/`[object Object]`,在链到达日志或回复表面之前应用编辑。 - 渠道/iMessage: 当安装的 imsg 构建通告该能力时(通过 `imsg send-rich --help` 探测一次并缓存在私有 API 状态上),将 `action: "reply"` 附件通过 `imsg send-rich --file` 连接。回复现在通过共享的出站解析器水化 `media`/`mediaUrl`/`fileUrl`/`mediaUrls[0]`/`filePath`/`path`/base64 `buffer`+`filename`,通过现有的 `withTempFile` 辅助函数暂存缓冲区,以有针对性的错误拒绝 `http(s)://` URL 附件,将调用者指向 `send` 的完整附件解析器管道,并在较旧的 imsg 构建上回退到显式的 `imsg#114 not landed yet` 错误。依赖于上游 `openclaw/imsg#114` 能力落地在可安装的版本中;在此之前,新路径保持门控,用户看到与 `#79822` 引入的相同的显式回退。(#79864)感谢 @omarshahine。 - Telegram: 在追加真正的部分流式增量时保留首次预览去抖,这样编辑过的草稿预览不再在提供程序发出增量输出时重复早期文本。(#80045)感谢 @TurboTheTurtle。 - 代理/Anthropic: 为 Claude Opus/Sonnet 4 模型报告 1M 会话上下文,即使本地模型配置仍然通告 200k,匹配模型发现并防止过早的状态/UI 溢出。修复了 #66766。 - 模型/OpenRouter: 在 `/model status` 中隐藏缺失认证的直接提供程序行,当它们仅被嵌套的 OpenRouter 模型 ID(如 `openrouter/google/...`)重复时,同时保留显式配置的直接提供程序。修复了 #62317。 - 模型: 当另一个提供程序拥有相同的裸模型别名时,保留显式选择的提供程序/模型,如 `opencode-go/deepseek-v4-pro`。修复了 #79325。 - 模型/配置: 当模型仅存在于 `agents.defaults.models` 中时,解释缺失的 `models.providers.<provider>.models[]` 注册,而不是返回一个裸的未知模型错误。修复了 #80089。 - MCP/工具: 为以数字开头的捆绑 MCP 服务器/工具片段添加前缀,使生成的工具名称对 Moonshot/Kimi 和其他严格提供程序有效。修复了 #79179。 - 模型/OpenRouter: 将 `403 API key budget limit exceeded` 视为计费问题,这样模型回退会前进而不是重试已耗尽的 primary。修复了 #60191。感谢 @omgitsgela。 - 模型/OpenRouter: 修复丢失了外部 `openrouter/` 提供程序包装器的过时会话覆盖,这样会话返回到已配置的 OpenRouter 模型,而不是作为未知的直接提供程序模型失败。修复了 #78161。感谢 @hjamal7-bit。 - Google/Gemini: 将 API 密钥引导默认恢复为 `google/gemini-3.1-pro-preview`,这样新鲜的 Gemini 测试配置使用 Gemini 3.1 Pro Preview。 - Telegram: 在模型选择器中为嵌套的 OpenRouter 模型 ID 显示完整的提供程序/模型标签,这样 `openrouter/openai/gpt-5.4-mini` 不再显示为 `openai/gpt-5.4-mini`。修复了 #67792。(#72752)感谢 @iot2edge。 - 模型/OpenRouter: 保留实时的 `supported_parameters` 工具支持元数据,这样非工具的 Perplexity Sonar 模型不再接收代理工具负载并无必要地回退。修复了 #64175。感谢 @Catfish-75。 - 模型/OpenRouter: 将 MoonshotAI Kimi K2.5 添加到捆绑的 OpenRouter 目录中,以便引导/模型选择器无需等待实时发现即可提供它。修复了 #14601。 - 模型/OpenRouter: 使 keyRef/tokenRef 支持的认证配置文件对只读 PI 模型发现可见,这样 OpenRouter 模型在模型选择器中保持可用,而无需存储明文密钥。修复了 #58106。感谢 @ThalynLabs。 - 模型/列表: 在默认配置视图中包含显式配置的提供程序行和只读认证支持的目录行,而无需加载 PI 的完整注册表,使控制 UI 选择器与可用的模型认证保持一致。参考 #79381。感谢 @ismael-81。 - 安全/审计: 在报告小模型 web/浏览器暴露时尊重 `tools.byProvider["provider/model"].deny`,这样每模型 OpenRouter 缓解措施清除 `models.small_params` 暴露信号。修复了 #80118。 - 模型/Moonshot: 接受直接的 `moonshotai/...` 和 `moonshot-ai/...` 引用作为规范 `moonshot/...` 的别名,这样复制的 OpenRouter Kimi ID 不再作为未知的直接模型失败。修复了 #73876。(#74946)感谢 @jeffrey701。 - Kimi Code: 在捆绑目录、引导和文档中使用 Kimi 稳定的 `kimi-for-coding` API 模型 ID,同时规范化旧的 `kimi-code` 和 `k2p5` 引用。修复了 #79965。 - Telegram: 将缓存的回复目标和附近的群组聊天渲染为一个选定的对话上下文窗口,这样过时的回复不再将 JSON 回复链与本地聊天上下文分开。 - Volcengine/Kimi: 为直接和编码规划模型剥离提供程序不支持的工具模式长度和项目约束关键字,这样托管的 Kimi 运行不会因 `minLength` 而拒绝消息工具。修复了 #38817。 - DeepSeek: 为不拥有的 OpenAI 兼容代理提供程序回填 V4 `reasoning_content` 重放字段,防止捆绑的 DeepSeek 和 OpenRouter 路由之外的后续请求失败。修复了 #79608。 - iMessage: 当操作因 imsg 私有 API 桥未附加而被阻止时发出 WARN 日志,这样操作员可以在 `~/.openclaw/logs/openclaw.log` 中看到静默丢弃,而不是必须读取每会话轨迹 JSONL `tool.result` 负载。通常在网关重启后从 Messages.app 中取消注入 dylib 时发生。(#80035)感谢 @omarshahine。 - Codex: 在模式验证之前交叉填充缺失的 `thread.id` 和 `thread.sessionId`,这样省略 `sessionId` 的实时 Codex 应用服务器响应不再导致 `thread/start` 或 `thread/resume` 失败。修复了 #80124。(#80137)感谢 @kagura-agent。 - 代理/Pi: 等待嵌入的中止清理稳定后再释放会话写入锁,防止后续轮次与之前的提示拆除竞争。(#80239)感谢 @samzong。 - WhatsApp: 将 OpenClaw 看门狗触发的 Web 重新连接从运行时错误降级为恢复警告,并在下次健康连接后清除已恢复的重新连接状态。(#77026)感谢 @rubencu。 - ACPX/Windows: 在 Windows 上隐藏 MCP 代理目标子进程窗口,这样 ACP 支持的代理不会因终端窗口处理而闪烁或失败。修复了 #60672。(#60678)感谢 @KChow-ctrl。 - 代理: 当相同的调用不断返回相同的结果时,在关键阈值中止通用的重复无进展工具循环。(#80668)感谢 @frankekn。 - 执行批准: 为那些命令语言尚不具备原生高亮支持的非 POSIX Windows 和 shell 包装器批准命令省略生成的命令高亮。(#80566)感谢 @jesse-merhi。 - Telegram: 将详细的工具进度和结果草稿与最终的助手答案分开,这样工具输出不再混入最终的 Telegram 消息。(#80294)感谢 @jalehman。 - 插件 SDK/Windows: 为根 `openclaw/plugin-sdk` dist 别名启用原生 require 快速路径,而不是强制使用 Jiti 转换。(#80878)感谢 @medns。