← 返回更新日志

OpenClaw v2026.4.29-beta.1 预发布

2026-04-30 · GitHub 原文
## 2026.4.29 ### 亮点 - 消息与自动化默认启用活动运行引导,强制可见回复,提供派生子代理的路由元数据,并为心跳推送的提醒提供可选的后续承诺。感谢 @vincentkoc, @scoootscooob, @samzong, 和 @vignesh07。 - 记忆模块演进为具备人物感知能力的维基,支持来源视图、单会话活动记忆过滤器、超时部分召回以及有界的 REM 预览诊断。感谢 @vincentkoc, @quengh, @joeykrug, 和 @samzong。 - 提供商与模型覆盖范围扩展,新增 NVIDIA 接入/目录,以及更快的基于清单的模型/认证路径、Bedrock Opus 4.7 思维一致性,以及更安全的 Codex/OpenAI 兼容回放与流式行为。感谢 @eleqtrizit, @shakkernerd, @prasad-yashdeep, @woodhouse-bot, 和 @LyHug。 - 网关与打包插件的可靠性提升聚焦于慢主机启动、可复用模型目录、事件循环就绪诊断、运行时依赖修复、过期会话恢复以及按版本限定的更新缓存。感谢 @lpendeavors, @DerFlash, @vincentkoc, @pashpashpash, 和 @jhsmith409。 - 频道修复主要集中在 Slack Block Kit 限制、Telegram 代理/Webhook/轮询/发送的韧性、Discord 启动/速率限制处理、WhatsApp 送达/存活状态,以及 Microsoft Teams/Matrix/飞书 的边缘情况。感谢 @slackapi, @SymbolStar, @djgeorg3, @TinyTb, @dseravalli, @nklock, 和 @alex-xuweilong。 - 安全与运维新增 OpenGrep 扫描、更明确的 GHSA 分类策略、更安全的 exec/pairing/所有者范围处理、Docker/接入自动化,以及针对可信代理栈的 web-fetch IPv6 ULA 可选配置。感谢 @jesse-merhi, @pgondhi987, @mmaps, @jinjimz, 和 @jeffrey701。 ## 2026.4.29 ### 变更 - 代理/承诺:新增可选的推断后续承诺,支持隐藏批量提取、单代理/单频道作用域、心跳推送、CLI 管理、简单的 `commitments.enabled`/`commitments.maxPerDay` 配置,以及心跳间隔到期时间钳制,防止自动签到立即回声。(#74189) 感谢 @vignesh07。 - 消息/队列:使 `steer` 在下一个模型边界处排空所有待处理的 Pi 引导消息,将传统的单次引导保留为 `queue`,并新增专用的引导队列文档页面。感谢 @vincentkoc。 - 消息/队列:将活动运行排队默认设为 `steer`,并附带 500ms 后续回退防抖,在命令队列页面记录队列模式、优先级和丢弃策略。感谢 @vincentkoc。 - 消息:新增全局 `messages.visibleReplies`,使操作员可要求任何来源聊天的可见输出必须通过 `message(action=send)` 发送,同时 `messages.groupChat.visibleReplies` 仍可作为群组/频道覆盖配置保留。感谢 @scoootscooob。 - 网关/事件:在子代理聊天和代理广播负载中暴露 `spawnedBy` 字段,使客户端无需额外会话查找即可路由子会话事件。(#63244) 感谢 @samzong。 - 记忆/维基:新增面向代理的人物维基元数据、标准别名、人物卡片、关系图谱、隐私/来源报告、证据类型下钻,以及用于人物查找、问题路由、来源证据和原始声明的搜索模式。感谢 @vincentkoc。 - 活动记忆:新增可选的单会话 `allowedChatIds` 和 `deniedChatIds` 过滤器,使操作员仅对选定的单聊、群组或频道对话启用召回,同时跳过广泛会话。(#67977) 感谢 @quengh。 - 活动记忆:当隐藏的记忆子代理超时时,返回有界的部分召回摘要(包含默认的临时转录路径),确保有用的恢复上下文不被丢弃。(#73219) 感谢 @joeykrug。 - 网关/记忆:新增只读 `doctor.memory.remHarness` RPC,使操作员客户端无需运行变异路径即可预览有界的 REM 梦境输出。(#66673) 感谢 @samzong。 - 提供商/NVIDIA:新增 NVIDIA 提供商,支持 API 密钥接入、设置文档、静态目录元数据及字面模型引用选择器支持,使 NVIDIA 托管模型可选择并保留其提供商前缀。(#71204) 感谢 @eleqtrizit。 - 模型:屏蔽显式配置的 openai-codex/gpt-5.4-mini 内联条目,防止 `openclaw doctor --fix` 写入的过时模型配置绕过清单能力块,并在运行时针对 ChatGPT 支持的 Codex 账户切换到该模型时导致重复的助手回合失败。条件屏蔽(如 qwen 编程计划端点守卫)仍可通过显式用户配置绕过。(#74451) 感谢 @0xCyda, @hclsys, 和 @Marvae。 - 新增基于 SQLite 的插件状态存储(`api.runtime.state.openKeyedStore`),用于支持重启安全的键控注册表,具备 TTL、驱逐和自动插件隔离功能。感谢 @amknight。 - 插件 SDK:使用弃用元数据标记剩余的旧版别名导出及 diffs 工具/配置别名,并新增守卫机制,使未来的旧版别名注释必须包含 `@deprecated` 标签。感谢 @vincentkoc。 - CLI/二维码/依赖:内部化小型终端进度和二维码包装辅助函数,同时保持真实二维码编码器依赖直接引用,在不改变二维码输出行为的前提下缩减默认运行时依赖图。感谢 @vincentkoc。 - 依赖:刷新工作区运行时、插件和工具包,包括 ACP、Pi、AWS SDK、TypeBox、pnpm、oxlint、oxfmt、jsdom、pdfjs、ciao 和 tokenjuice,同时保持已修补的 ACP 行为和 lint 守卫为最新。感谢 @mariozechner。 - 网关/开发:默认通过命名 tmux 会话运行 `pnpm gateway:watch`,提供 `gateway:watch:raw` 和 `OPENCLAW_GATEWAY_WATCH_TMUX=0` 用于前台模式,使重复启动时能重新生成可检查的监听器,而不会阻塞调用代理的 Shell。感谢 @vincentkoc。 - 网关/诊断:新增可选的启动诊断时间线,在配置标志后记录网关生命周期和插件加载阶段,使慢启动诊断不再需要定制化的插桩。感谢 @shakkernerd。 - 控制面板 UI/国际化:扩展语言环境注册表,新增波斯语 (fa)、荷兰语 (nl)、越南语 (vi)、意大利语 (it)、阿拉伯语 (ar) 和泰语 (th) 条目,并附带 `fa`、`nl`、`vi` 和 `zh-TW` 的文档术语表,使文档翻译流水线与控制面板 UI 的语言选择在各个界面保持一致。感谢 @vincentkoc。 - 渠道:新增元宝渠道文档入口,使腾讯元宝机器人出现在渠道列表和侧边栏导航中。(#73443) 感谢 @loongfay。 - 渠道/元宝:将插件的 GitHub 仓库地址更新为 YuanbaoTeam/yuanbao-openclaw-plugin,并在渠道目录中添加 "yuanbao" 别名。(#74253) 感谢 @loongfay。 - Docker 配置:新增 `OPENCLAW_SKIP_ONBOARDING` 环境变量,使自动化 Docker 安装可跳过交互式引导步骤,同时仍应用网关默认配置。(#55518) 感谢 @jinjimz。 - 安全策略:针对 GHSA 定级,将超出配置接受限制后的媒体/Base64 解码及格式转换开销归类为纯性能问题,除非报告证明存在限制绕过、崩溃、资源耗尽、数据泄露或其他边界绕过情况。(#74311) - 安全/OpenGrep:新增精确的 OpenGrep 规则包、源规则编译器、来源元数据检查,以及 PR/全量扫描工作流。这些工作流在验证第一方代码和仅规则包更改的同时,会将 SARIF 上传至 GitHub Code Scanning。(#69483) 感谢 @jesse-merhi。 ### 修复 - 安全/出站:在纯文本清理过程中剥离重新生成的 HTML 标签,防止嵌套标签片段残留 CodeQL 检测到的 `<script>` 序列。感谢 @vincentkoc。 - 安全/密钥:使用填充的时序安全缓冲区比较凭证字节,而非在相等性检查前对候选密码进行哈希处理。感谢 @vincentkoc。 - 安全/QQBot:在写入 `console.*` 之前清理调试日志参数,防止启用调试日志时网关负载字段伪造额外的日志行。感谢 @vincentkoc。 - QQBot:统一命令注册表中的斜杠命令认证和 c2cOnly 门控,发送斜杠命令文件附件时传递 `allowQQBotDataDownloads`,使 clear-storage 与实际下载目录对齐,并新增 `/bot-me` 命令以显示发送者用户 ID。(#73616) 感谢 @cxyhhhhh。 - CLI/代理状态:将 `openclaw agents`、文本 `agents list` 和纯文本 `status` 保留在只读元数据路径上,使人类可读输出在打印前不再预加载插件运行时或实时渠道扫描。修复 #74195。感谢 @NianJiuZst。 - 代理/本地模型:基于有效模型窗口派生上下文窗口保护阈值,并设置 4k/8k 的安全下限,使小型本地模型不再被固定的 16k/32k 预检截断所拒绝。修复 #42999。感谢 @chengjialu8888。 - PDF 提取:从已安装包的根目录解析 PDF.js 标准字体,并向 Node 回退提取器传递文件系统路径,使内置字体的 PDF 渲染不再因 `file://` URL 查找失败而报错。修复 #51455;延续修复 #70936、#54447 和 #62175。感谢 @anyech、@JuanRdBO 和 @solomonneas。 - 媒体:将带有 `application/msword` 或 `application/x-cfb` MIME 类型的传统 Word/OLE 附件视为二进制文件,防止外观可打印的 `.doc` 文件被作为文本嵌入提示词中。修复 #54176;延续修复 #54380。感谢 @andyliu。 - 配置:在严格根配置验证中接受已文档化的 `browser.tabCleanup` 键,使配置的标签页清理功能在运行时读取前不再报错。修复 #74577。感谢 @lonexreb 和 @ezdlp。 - 定时任务:在持久化更新前验证已禁用任务的计划编辑,使无效的 cron 更改不再部分修改已存储的任务。修复 #74459。感谢 @yfge。 - CLI/定时任务:当 `openclaw cron add --message` 省略非空的 `--agent` 时发出警告(包括空代理值和会话密钥任务),使计划中的代理轮次任务明确默认代理回退机制,同时保持系统事件静默。修复 #42196;延续修复 #42245。感谢 @ethanclaw。 - 渠道/状态:将 Telegram、Slack 和 Google Chat 的只读白名单/默认目标访问器保留在仅配置路径上,使状态和渠道摘要不再解析基于 SecretRef 的运行时凭据。感谢 @eusine。 - 活跃内存:澄清已弃用的 `modelFallbackPolicy` 警告和配置帮助文档,明确 `modelFallback` 应描述为链式解析的最后手段,而非运行时故障转移。(#74602) 感谢 @jeffrey701。 - 渠道/Discord:阻止只读白名单/默认目标访问器解析基于 SecretRef 的机器人令牌,使状态和渠道摘要在令牌仅在网关运行时可用时不再失败。(#74737) 感谢 @eusine。 - 网关/会话:统一 `chat`、`agent` 和 `sessions` 服务器方法中的会话中止等待语义,使中止 RPC 在目标会话实际停止后才返回,而不是在运行任务仍在排空时提前解析。(#74751) 感谢 @BunsDev。 - 代理/输出:在提供程序重放前丢弃仅包含入站元数据的复制助理重放轮次,而非合成占位符,从而防止 Telegram 及其他渠道将 `[assistant copied inbound metadata omitted]` 作为模型输出接收。修复 #74745。感谢 @adamwdear 和 @Marvae。 - 诊断工具/内存:对 Ollama 和 LM Studio 等密钥可选的提供商抑制跳过的嵌入就绪警告,同时保留超时和未就绪的诊断信息。修复 #74608 和 #73882。感谢 @hclsys。 - 渠道/群组:为已准备的调度路径保留仅观察轮次抑制,并恢复已弃用的渠道轮次运行时别名,使被动观察者/群组流程保持静默,同时兼容仍在编译的旧版插件。感谢 @vincentkoc。 - 飞书:跳过不携带任何媒体的空文本消息(例如 `{"text":""}`),防止向会话写入空白用户轮次,从而避免下游 LLM 提供商以“消息不能为空”为由拒绝请求。(#74634) 感谢 @xdengli 和 @hclsys。 - 飞书/多维表格:在创建应用清理期间,清理字段仅包含默认空值的新建占位行,同时保留有意义的链接、附件、用户、数字、布尔值和位置值。(#73920) 延续 #40602。感谢 @boat2moon。 - macOS 应用:保留仅附加模式以及调试设置中的 launchd 切换标记仅作为标记,使得使用 `--attach-only`/`--no-launchd` 启动时不再卸载网关 LaunchAgent 或断开活动会话。(#72174) 感谢 @DolencLuka。 - 插件 SDK:恢复已弃用的 `plugin-sdk/zalouser` 命令认证门面,以便导入它的已发布 Lark/Zalo 插件能在当前主机上加载。修复 #74702。感谢 @Goron01。 - 插件/运行时依赖:当 `models.providers`、认证配置文件、智能体默认设置或子智能体模型引用配置了该提供商时,包含捆绑的提供商插件,同时将非活动的默认启用提供商插件排除在 doctor 修复之外。引用 #74307。感谢 @Skeptomenos。 - 插件/运行时:相对于插件根目录解析相对插件 `api.resolvePath` 输入,而不是主机工作目录,同时保持绝对路径和用户主目录路径由用户解析。修复 #74718。感谢 @jimdawdy-hub。 - 插件/运行时依赖:在替换活动副本之前,通过临时文件刷新镜像根块,这样刷新失败时不会删除运行中插件导入仍需要的块。感谢 @shakkernerd。 - 插件/运行时依赖:在构建暂存依赖别名时优先使用 `require` 条件导出,这样仅支持 CommonJS 的插件运行时依赖(如 `ws`)在 Jiti 下不会解析为 ESM 包装器。修复 #74547。感谢 @aderius。 - Bonjour/网关:在滑动窗口中限制广告商频繁重启,使得 mDNS 探测/名称冲突循环会禁用发现功能,而不是在资源受限的主机上无限空转。引用 #74209 和 #74242。感谢 @ndj888 和 @Sanjays2402。 - 插件/运行时依赖:在重用镜像运行时根目录之前验证暂存包入口文件,这样浏览器控制插件会在更新后修复不完整的 `ajv`/MCP SDK 安装,而不是在重启后因缺少 `ajv/dist/ajv.js` 而失败。引用 #74630。感谢 @spickeringlr。 - 心跳:在发送警报或抑制带前缀的 `HEARTBEAT_OK` 回复之前,使用选定的提供商、模型和思考上下文解析 `responsePrefix` 模板变量。修复 #43064;修复 #43065;取代 #46858。感谢 @yweiii 和 @JunJD。 - 内存/LanceDB:在 `memory_forget` 候选列表中显示完整的内存 UUID,以便智能体可以将显示的 ID 传回以进行定向删除,而不会触发完整 UUID 验证器。(#66913) 感谢 @amittell。 - 文件传输插件:为 `file.fetch` 要求规范读取路径的预检授权,当 `dir.fetch` 预检条目缺失、为绝对路径或存在遍历风险时安全拦截,并在将存档字节交给调用者之前重新检查返回的存档条目。延续 #74134。感谢 @omarshahine。 - 频道/飞书:在飞书/Lark 返回 HTTP 502 后,将文件类型的 iOS 视频资源下载重试为 `media` 类型,并在回退也失败时保留原始的 502 状态。修复 #49855;延续 #50164 和 #73986。感谢 @alex-xuweilong。 - 提供商/Amazon Bedrock:为 Bedrock 模型引用暴露完整的 Claude Opus 4.7 思考配置文件(`xhigh`、`adaptive` 和 `max`),同时保持 Opus/Sonnet 4.6 默认为自适应模式,使得 `/think` 菜单和验证与 Anthropic 传输行为匹配。修复 #74701。感谢 @prasad-yashdeep、@sparkleHazard、@Sanjays2402 和 @hclsys。 - 插件/tokenjuice:针对 tokenjuice 0.7.0 发布的 OpenClaw 主机类型编译捆绑插件,而不是使用本地兼容性垫片,这样包契约漂移会在发布前的 OpenClaw 验证中失败。感谢 @vincentkoc。 - OAuth/密钥:忽略根级 Google OAuth `client_secret_*.json` 下载,这样本地客户端密钥文件不会显示为提交候选项。(#74689) 感谢 @jeongdulee。 - 内存:将 `sqlite-vec` 镜像到默认内存插件的打包捆绑插件运行时依赖中,这样内置向量搜索在升级到 2026.4.27 后不会丢失其 SQLite 扩展。修复 #74692。感谢 @mozi1924。 - 网关/启动:限制启动期间的本地发现广告,这样卡住的发现插件不再能阻止网关达到就绪状态。修复 #73865;引用 #74630 和 #74633。感谢 @lpendeavors、@moltar-bot 和 @Saboor711。 - 网关/模型:在后台刷新过期重载时,提供上次成功的模型目录,这样模型配置更改后,网关控制平面和 OpenAI 兼容请求不再阻塞等待模型提供商重新发现。引用 #74135、#74630 和 #74633。感谢 @DerFlash、@moltar-bot 和 @Saboor711。 - CLI/状态:从打包的 OpenClaw 发行版根目录解析只读频道设置的运行时回退,这样当外部频道插件需要设置元数据时,`status --all`、`status --deep`、频道和 doctor 路径不会崩溃。修复 #74693。感谢 @giangthb。 - SDK/事件:防止每次运行的 SDK 事件流暴露重复的原始聊天投影帧,同时规范化仅聊天投影帧,并通过 `rawEvents` 保留原始访问权限。引用 #74704。感谢 @BunsDev。 - SDK:将带有生命周期元数据的网关终端 `agent.wait` 超时快照报告为 `timed_out`,同时保持裸等待截止时间非终端状态。感谢 @clawsweeper。 - Google Meet:在浏览器健康状况证明参与者已加入通话之前,阻止托管 Chrome 的介绍/测试语音,并暴露 `speechReady` 诊断信息,这样登录、准入、权限和音频桥接阻塞问题不再被误认为语音成功。引用 #72478。感谢 @DougButdorf。 - Slack/命令:在选择控件上为编码的选择值保留原生命令参数菜单(不超过 Slack 的选项限制),并将回退按钮标签截断至 Slack 的按钮文本限制,这样过长的有效选择值不再渲染无效的 Slack 块。感谢 @slackapi。 - Agents/Codex:在常规应用服务器回合清理之前,刷新已接受的防抖转向消息,以便在回合完成但防抖未触发时,已确认为队列中的入站跟进消息不会被丢弃。感谢 @vincentkoc。 - Slack/交互回复:确保渲染的按钮和选择器保持在 Slack Block Kit 的值和数量限制内,并将命令参数选择器的值与 Slack 的选项限制对齐,从而避免因代理生成的选项过长导致 Slack 拒绝整个 Block 负载。感谢 @slackapi。 - Slack/交互回复:丢弃过长的 Block Kit 按钮 URL 同时保留有效的回调值,从而避免因格式错误的链接按钮导致 Slack 拒绝整个交互回复。感谢 @slackapi。 - Slack/命令:将原生命令参数菜单的确认文本截断至 Slack 的对话框限制内,从而避免因过长的插件参数名导致回退按钮渲染出无效的 Block Kit 负载。感谢 @slackapi。 - Slack/执行审批:将原生审批元数据上下文限制在 Slack 的元素和文本限制内,从而避免因过大的审批详情导致 Slack 拒绝审批卡片。感谢 @slackapi。 - Slack/执行审批:将原生审批更新回退文本限制在 Slack 的消息限制内,同时保留已渲染的审批 Block,从而避免因命令过长导致在 `chat.update` 因 `msg_too_long` 被拒绝后,已解决或过期的审批卡片仍保持陈旧状态。感谢 @slackapi。 - Slack/命令:将原生命令参数菜单的回退行数限制在 Slack 的消息 Block 限制内,从而避免因过大的插件选项列表导致 Slack 拒绝生成的菜单。感谢 @slackapi。 - Slack/命令:丢弃编码值超过 Slack 按钮值限制的回退命令参数按钮,从而避免因单个过大的插件选项导致 Slack 拒绝整个菜单。感谢 @slackapi。 - Slack/消息:在 Slack 发送时合并消息工具的展示 Block 和交互 Block,从而在同时存在结构化消息体时避免按钮和选择器被丢弃。感谢 @slackapi。 - Slack/消息:将 Block Kit 回退文本限制在 Slack 的发送限制内,同时保留已渲染的 Block,从而避免因上下文过长导致富文本 Slack 消息因 `msg_too_long` 失败。感谢 @slackapi。 - Slack/消息:在消息编辑时将 Block Kit 回退文本限制在 Slack 的发送限制内,同时保留已渲染的 Block,从而避免因上下文过长导致 Slack 因 `msg_too_long` 拒绝 `chat.update` 调用。感谢 @slackapi。 - Channels/WhatsApp:在标记自动回复为已送达前,要求提供 Baileys 出站消息 ID,从而避免转录文本和确认反应导致失败的群回复被误显示为已发送。修复 #49225。感谢 @TinyTb。 - CLI/update:按 OpenClaw 版本和安装元数据限定打包的 Node 编译缓存范围,从而避免全局安装在包更新后重用过期的编译块。感谢 @pashpashpash。 - Channels/Voice call:当缺少 socket 远程地址元数据时,保持预认证 webhook 的并发限制处于活动状态,从而确保来自剥离 IP 代理路径的慢速请求仍共享回退桶。(#74453) 感谢 @davidangularme。 - Plugin SDK/testing:从插件测试契约运行时惰性加载 TypeScript,并为关键的 SDK 契约入口点导入和包体积添加发布检查,从而确保在发布不兼容 ESM 或体积过大的契约辅助包之前,预检即会失败。感谢 @vincentkoc。 - Channels/Microsoft Teams:在启动时将配置的 `19:[email protected]` 和旧版 `19:[email protected]` 团队/频道 ID 视为已解析,从而避免误报 `channels unresolved` 警告,同时保留用于显示名称条目的 Graph 名称查找。修复 #74683。感谢 @dseravalli。 - CLI/browser:在惰性加载浏览器子命令时保留父级标志,从而确保 `openclaw browser --json open` 和 `openclaw browser --json tabs` 在重新解析后仍能保持机器可读的输出。修复 #74574。感谢 @devintegeritsm。 - Exec/elevated:在审批跟进运行中将 `turnSourceChannel` 保留为 `messageProvider`,从而避免用户在批准异步提升权限命令后,`tools.elevated.allowFrom.<provider>` 检查因 `provider=null` 而失败。修复 #74646。感谢 @xhd2015。 - Plugins/runtime-deps:添加 `openclaw plugins deps` 检查与修复功能,使用插件安装程序共享的无脚本包管理器默认值,从而允许运维人员在修复缺失的捆绑运行时依赖时,不会破坏 JSON 输出或阻塞无关且无冲突的依赖。感谢 @vincentkoc。 - Agents/output:从面向用户的回复中移除内部的 `[tool calls omitted]` 回放占位符,同时保留可见回复的空白字符。修复 #74573。感谢 @blaspat。 - Providers/Google Vertex:通过 OpenClaw 的 REST 传输路由 `authorized_user` ADC 凭据,从而避免使用 gcloud 默认应用凭据的 Docker 安装在发送请求前于 Google SDK 中崩溃。修复 #74628。感谢 @frankhal2001-design。 - ACP/resolver:当无法解析显式 `--session` 令牌时,回退到基于线程的会话解析,同时在不存在线程绑定时保留坏令牌诊断信息,从而避免自动将当前线程 ID 填充为位置 ACP 目标的 Discord 斜杠命令返回“无法解析会话目标”错误。修复 #66299。感谢 @hclsys、@kindomLee 和 @martingarramon。 - Agents/sessions:当嵌入式超时/错误回合未返回 `agent_end` 时,触发终端生命周期后备机制,从而避免在故障转移暴露超时后,Gateway 会话仍卡在 `running` 状态。修复 #74607。感谢 @millerc79。 - Gateway/diagnostics:在警告中包含会话卡死的原因提示和恢复跳过原因,从而允许运维人员判断通道是正在等待活跃工作、排队工作还是陈旧的事务记录。感谢 @vincentkoc。 - Agents/Codex:在运行时故障后限制嵌入式运行清理、轨迹刷新和命令通道任务超时,从而确保 Discord 及其他聊天会话恢复空闲状态,而非卡在处理中。感谢 @vincentkoc。 - Heartbeat/exec:静默处理仅包含元数据的成功异步执行完成事件,这样在出现 `No session found` 后,Telegram 及其他聊天界面不再向用户请求缺失的命令日志。修复 #74595。感谢 @gkoch02。 - Web fetch:新增文档记录的 `tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange` 可选配置,并将其贯穿至缓存键和 DNS/IP 检查中,使使用 `fc00::/7` 的信任型假 IP 代理栈无需广泛私有网络访问即可正常工作。修复 #74351。感谢 @jeffrey701。 - OpenAI Codex:恢复 `/verbose full` 的持久化及应用服务器工具输出转发,并重试 Gateway E2E 临时主目录清理,确保调试运行不会因过期的验证或清理不稳定因素而回退。感谢 @vincentkoc。 - Anthropic/Meridian:保留在 `content_block_start` 中初始化的文本和思维内容(在 anthropic-messages 流中),使 `[thinking, text]` 回复不再持久化为空轮次或触发空响应回退。修复 #74410。感谢 @vyctorbrzezowski。 - Channels/Matrix:在 `openclaw matrix verify confirm-sas` 上完成交叉签名握手,使操作者的其他 Matrix 设备在代理确认后清除 `Verifying…` 循环,而不再卡住。(#74542) 感谢 @nklock。 - CLI/status:在报告有效上下文时尊重特定于频道的模型上下文窗口覆盖设置,使频道作用域会话在 `openclaw status` 中反映当前窗口。感谢 @HemantSudarshan。 - Sandbox/Docker:当沙箱模式关闭时容忍 Docker 守护进程不可用,使 doctor 和预检检查不再在未运行 Docker 守护进程的安装中失败。修复 #73671。感谢 @kaseonedge。 - Control UI/mobile:通过 Lit 管理的状态持久化移动端聊天设置,并使移动端导航通过相同的视图状态路径路由,以便在小视口上切换时聊天面板开关得以保留。感谢 @BunsDev。 - Control UI/exports:统一可调整大小分隔线、移动端布局和导出 HTML 转录模板中的侧边栏触发控件,使侧边栏开关和导出的转录侧边栏渲染时具有一致的点击区域和样式。感谢 @BunsDev。 - Control UI/chat:在聊天运行活跃时禁用页面刷新控件,防止意外刷新中断正在进行的回复。感谢 @BunsDev。 - Memory/LanceDB:从 `openclaw ltm list` 返回真实的记忆记录(支持可选的 `--limit` 和 createdAt 排序),而非空占位符,使 CLI 界面符合文档中记录的 LTM 列表示约。(#67952) 感谢 @zhangyue19921010。 - Media:在视觉流水线错误中包含每次尝试的脱敏调整大小失败信息以及已解析的模型输入能力,以便在不关闭其余路由调查的情况下诊断 ARM64 镜像失败。引用 #74552。感谢 @1yihui。 - Control UI/i18n:将 zh-CN 的 agent、debug、channel-refresh 和 exec-approval 文案通过本地化源路由,同时保留英文 `Cron Jobs` 代理标签及安全审计命令样式。延续 #39692 的修复上下文。感谢 @hepeng154833488 和 @vincentkoc。 - Auto-reply:针对干净的纯空或仅推理的直接聊天轮次,尊重显式的 `silentReply.direct: "allow"` 配置,同时保持默认直接聊天空响应守卫的保守策略。修复 #74409。感谢 @jesuskannolis。 - OpenAI Codex:当 Codex 轮次仅包含基于 systemPrompt 的指令时,发送非空的 Responses 输入项,避免因 `input: []` 导致 ChatGPT 后端返回 400 错误。修复 #73820。感谢 @woodhouse-bot。 - Ollama:在原生流边界处规范化带提供商前缀的工具调用名称,使 Kimi/Ollama 调用(如 `functions.exec`)正确分发为 `exec`,而非丢失已配置的工具。修复 #74487。感谢 @afurm 和 @carreipeia。 - Security/audit:在模型层级和小参数检查之前解析配置的模型别名,使基于别名的 GPT-5/Codex 配置不再报告错误的弱模型警告。修复 #74455。感谢 @blaspat。 - CLI/agent:将 Gateway 超时的嵌入式回退运行隔离在显式的 `gateway-fallback-*` 会话下,使已接受的 Gateway 运行不会竞争转录锁或替换路由的对话会话。修复 #62981。感谢 @HemantSudarshan。 - CLI/QR/device-pair:在颁发移动端配对引导令牌之前拒绝格式错误的公共设置 URL,同时保持对有效裸 host:port 设置 URL 的支持。感谢 @Lucenx9。 - Models/UI:从默认 Web 聊天、`/models` 和模型设置选择器中隐藏未认证的提供商,同时通过 `view: "all"`、`/models <provider> all` 和 `models list --all` 保留显式的全目录浏览路径。修复 #74423。感谢 @guarismo 和 @SymbolStar。 - Ollama:当跳过 PI 发现时,将显式的本地模型运行保留在目标提供商运行时钩子中,使一次性 Ollama 调用不再在流式传输前冷加载不相关的提供商运行时。修复 #74078。感谢 @sakalaboator。 - Slack/prompts:依赖 Slack `interactiveReplies` 指引而非通用的 `inlineButtons` 配置提示,使已启用的 Slack 按钮指令不被冲突。修复 #46647。感谢 @jeremykoerber。 - Slack/reactions:将重复的 `already_reacted` 响应视为幂等成功,使重复的代理反应添加不再显示为工具失败。修复 #69005。感谢 @shipitsteven 和 @martingarramon。 - Channels/Discord:在启动应用查找和网关元数据获取期间对 Cloudflare/Error 1015 HTML 429 REST 失败进行冷却处理,新增 `channels.discord.applicationId` 作为 app-id 查找绕过选项,在记录日志前清理 HTML 正文,并在回退到保守冷却前尊重 Retry-After 头。修复 #38853。(#74489) 感谢 @djgeorg3 和 @Garyko0730。 - Slack/tools:在共享消息工具模式中暴露 `fileId`,使 `download-file` 能够从入站占位符接收 Slack 附件 ID。修复 #45574。感谢 @chadvegas。 - Exec:拒绝无效的每次调用 `host` 值,而非静默回退到默认目标,使类似主机名的值在命令运行前即失败。修复 #74426。感谢 @scr00ge-00 和 @vyctorbrzezowski。 - Google/Gemini:当 Gemini 运行因用户内容为空或被过滤而触发时,发送非空占位符内容,避免 `contents is not specified` API 错误。感谢 @CaoYuhaoCarl。 - Heartbeat:保留 `tasks:` 块周围的非任务 `HEARTBEAT.md` 上下文,并将 `agents.defaults.heartbeat` 应用于所有代理,除非每个代理的心跳条目限制了作用域。感谢 @Sekhar03。 - Markdown:在共享的出站格式中保留宽松列表项内的段落换行,同时保持紧凑列表间距稳定。感谢 @Lucenx9。 - Build/Gateway:将重启、关闭、重生、诊断、命令队列清理和运行时清理统一路由至一个稳定的网关生命周期运行时入口,防止重新构建的包因过期的哈希块导致长期运行的网关挂起。延续 #73964。感谢 @pashpashpash。 - Memory/wiki:防止广泛的共享来源和生成的相关链接块使每个页面都成为搜索结果,限制嘈杂的反向链接,支持全词搜索(如人员路由查询),并优先使用可读的页面正文摘要而非生成的元数据。感谢 @vincentkoc。 - Cron/Gateway:在记录超时前中止并有限清理超时的隔离代理回合,防止过期的 cron 会话在超时后使 Discord 或其他聊天频道卡在 `processing` 状态。感谢 @vincentkoc。 - Agents/errors:在到达聊天界面之前抑制格式错误的流式工具调用 JSON 片段,同时保留提供商请求验证诊断信息。修复 #59076;将 #59080 保留为重复覆盖项。(#59118) 感谢 @singleGanghood。 - CLI/models:恢复无清单/静态目录覆盖的提供商(包括 Anthropic 和 Amazon Bedrock)的提供商过滤 `models list --all --provider <id>` 行,同时避免昂贵的可用性和解析器路径的兼容性回退。感谢 @shakkernerd。 - CLI/models:在 `models status`、身份验证探测和 PI 模型发现中保持清单身份验证凭据可见,确保工作区范围的提供商身份验证在列出、探测和执行之间保持一致。感谢 @shakkernerd。 - CLI/models:将 Google Vertex ADC 等本地凭据证据移至通用插件清单设置元数据中,使模型列表身份验证索引保持声明式,无需提供商特定的运行时分支。感谢 @shakkernerd。 - CLI/models:通过一个命令本地的提供商身份验证索引计算 `models list` 的 Auth 列,使行渲染不再对每个模型行重复检查 auth profile、环境变量、配置的提供商、AWS 或合成身份验证。感谢 @shakkernerd。 - CLI/models:将 OpenAI 可列出目录移至插件清单中,使 `models list --all --provider openai` 使用清单快速路径,而非加载提供商运行时规范化钩子。感谢 @shakkernerd。 - CLI/tools:将网关 `tools.*` RPC 命名空间排除在插件命令发现和托管代理启动之外,使 `openclaw tools effective` 等孤立命令快速失败,而非冷加载插件元数据。引用 #73477。感谢 @oromeis。 - CLI/status:除非设置 `--deep` 或 `--all`,否则在仅元数据的通道扫描中保持默认文本 `openclaw status --usage`,并将孤立的 `openclaw tools --help` 通过预计算根帮助快速路径路由,使延迟排查命令在打印前避免插件/运行时冷加载。引用 #73477 和 #74220。感谢 @oromeis 和 @NianJiuZst。 - Agents/diagnostics:在模型 I/O 之前追踪嵌入式运行启动和准备阶段的耗时,仅对严重缓慢的阶段发出警告,使 Docker/VPS 延迟报告能够识别是插件加载、身份验证/模型解析、工具清单、引导、MCP/LSP、资源加载还是流设置主导了运行前延迟,且无嘈杂的正常日志干扰。引用 #73428。感谢 @Dimaoggg, @quangtran88, 和 @Heyvhuang。 - Agents/subagents:按文件签名缓存持久化的子代理运行注册表读取,同时保持新鲜解析隔离,使繁忙的网关停止在控制器/列表/状态热路径上重新解析未更改的 `subagents/runs.json`。引用 #72338。感谢 @argus-as。 - Gateway/clients:在打开网关 WebSocket RPC/探测/客户端连接前等待事件循环恢复响应,并将该就绪等待时间计入调用方超时,使 Windows 延迟模块评估停滞不再导致状态、TUI、ACP、MCP、node-host 和插件客户端路径上的健康回环网关出现虚假握手超时。引用 #74279 和 #48270。感谢 @wongcode 和 @joost-heijden。 - Gateway/Windows:在回退到 `wmic` 前通过 PowerShell 读取监听器命令行,使重启健康检查能在现代 Windows 安装中识别 OpenClaw 监听器,并避免漫长的匿名端口等待。引用 #74280。感谢 @zym951223。 - Plugins/runtime-deps:在捆绑依赖安装锁中记录进程启动时间并过期回收的 PID 锁,使 Docker 网关重启能从过期的 `.openclaw-runtime-deps.lock` 目录中恢复,无需等待重复的五分钟超时。修复 #74346。(#74361) 感谢 @jhsmith409。 - Plugins/runtime-deps:在首次成功后对打包的捆绑运行时发行版镜像准备进行记忆化缓存,同时保持源码检出镜像可刷新,使受限的 Docker/VPS 安装避免在聊天回合前重复执行根目录扫描。引用 #73428, #73421, #73532, 和 #73477。感谢 @Dimaoggg, @oromeis, @oadiazp, @jmfraga, @bstanbury, @antoniusfelix, 和 @jkobject。 - Channels/Discord:将匹配有效 Discord DM 白名单的纯数字出站目标视为用户 DM,同时保留账户特定的旧版 `dm.allowFrom` 优先于继承的根 `allowFrom`。(#74303) 感谢 @Squirbie。 - Channels/Discord/Slack:在运行时、设置、白名单编辑和医生修复中共享一个 DM 策略/白名单解析器,使旧版 `dm.policy` / `dm.allowFrom` 兼容性迁移到标准的 `dmPolicy` / `allowFrom`,且不会产生分歧的访问检查。感谢 @Squirbie。 - 控制面板 UI:使聊天侧边栏分割线可聚焦、支持键盘调整大小、具备 ARIA 描述,并基于指针事件,从而实现无需鼠标即可调整侧边栏大小。感谢 @BunsDev。 - 智能体/用量:将 PI 嵌入式运行的遥测数据归属到解析出的模型提供商,而非 PI 框架标签,从而使 OpenRouter 及其他提供商支持的对话轮次在会话用量和追踪中报告正确的提供商。感谢 @vincentkoc。 - 智能体/归属:在原生 OpenAI 和 Codex 流量(包括 SDK 传输、实时语音与 TTS、设备码认证、WHAM 使用及远程嵌入)中发送 OpenClaw 归属标头,防止 PI 默认值泄露到提供商请求中。感谢 @vincentkoc。 - 智能体/认证:保持从主智能体继承的 OAuth 认证配置为只读透传,而非将刷新令牌复制到子智能体中;同时针对所属存储刷新 Codex 应用服务器令牌,使多智能体集群避免复用刷新令牌导致的失败。修复 #74055。感谢 @ClarityInvest。 - 频道/Telegram:在构建仅支持 HTTP/1 的 Telegram Bot API 传输层时,遵循 `ALL_PROXY` / `all_proxy` 及服务级 `OPENCLAW_PROXY_URL` 设置,使依赖这些代理设置的 Windows 及服务安装不再回退到直连出站。修复 #74014;引用 #74086。感谢 @SymbolStar。 - 频道/Telegram:将原始的主机/网络不可达 Bot API 连接失败视为非致命错误,并将带标签的轮询未捕获异常路由至 Telegram 重启路径,使临时连通性故障不再导致 Gateway 崩溃或长轮询卡死。修复 #60515;引用 #74540。感谢 @HemantSudarshan、@thacid22 和 @ewimsatt。 - 频道/Telegram:当 `deleteWebhook` 遭遇临时网络故障但 `getWebhookInfo` 确认未配置 Webhook 时,继续执行轮询,从而在 Webhook 已被移除后避免启动时无限重试清理。引用 #74086;延续 #47384。感谢 @clovericbot。 - 频道/Telegram:当 Telegram 返回 `QUOTE_TEXT_INVALID` 时,重试不带 `reply_parameters.quote` 的原生引用回复,从而防止过时或截断的引用片段导致整条回复丢失。修复 #74581。感谢 @moeedahmed。 - 频道/Telegram:当 grammY 包装了预连接失败时,对入站最终回复应用严格的安全发送重试机制,同时保留模糊的纯网络信封为单次发送,以避免重复可见消息。修复 #74203。感谢 @nanli2000cn。 - 频道/Telegram:当运行中的长轮询器在启动宽限期后仍未完成 `getUpdates` 或其传输活动已陈旧时,在频道状态和诊断工具中显示轮询存活警告,使静默的轮询失败不再显示为正常。引用 #74299。感谢 @lolaopenclaw。 - 频道/Telegram:发布 Webhook 运行时状态,并在 `setWebhook` 于启动宽限期后仍未完成时发出警告,使 Webhook 模式账户在注册仍在失败或重试时不再显示为健康状态。引用 #74299。感谢 @lolaopenclaw 和 @martingarramon。 - 频道/Telegram:为原生命令菜单 `deleteMyCommands` 和 `setMyCommands` Bot API 调用设置超时限制,并允许与其他启动控制调用相同的超时触发传输回退重试,从而防止 Windows/WSL 网络停滞导致命令同步在正常运行的提供商后挂起。引用 #74086。感谢 @SymbolStar。 - ACP/命令:在 OpenClaw 桥接中接受转发的 ACP 超时配置控制,将不支持的丢弃-关闭控制视为可恢复的清理操作,并恢复原生的 `/verbose full` 及无参状态行为,使 Discord 命令菜单和嵌套 ACP 轮次不再在支持的会话控制上失败。感谢 @vincentkoc。 - Codex 框架:中断并释放在 OpenClaw 动态工具响应后保持静默且未发送 `turn/completed` 的原生应用服务器轮次,使 Discord 及其他聊天通道不再卡在 `processing` 状态。感谢 @vincentkoc。 - Codex 框架:将 OpenClaw 动态工具响应限制为 30 秒,并在应用服务器桥接可能导致轮次卡在 `processing` 时,以明确的工具结果关闭失败。感谢 @vincentkoc。 - 终端 UI/状态:当最终事件到达且活动运行已清除、无跟踪运行时,清除陈旧的 `streaming` 页脚状态,同时保留并发运行所有权及非活动本地 `/btw` 终端处理。修复 #64825;延续 #64842、#64843、#64847 和 #64862。感谢 @briandevans 和 @Yanhu007。 - 频道/Discord:当 Discord 无法解析机器人自身身份时关闭启动失败,并在仅配置了提及模式时保持提及门控激活,使提供商不再在缺失 bot id 的情况下继续运行。修复 #42219;延续 #46856 和 #49218。感谢 @education-01 和 @BenediktSchackenberg。 - 频道/Discord:在标点符号和码点安全回退边界处拆分长中日韩(CJK)回复,使 Discord 分块保持可读且不损坏辅助平面字符。修复 #38597;修复 #71384。感谢 @p3nchan。 - 终端 UI:在活动工具/生命周期保活期间保持流式监控存活,在断开连接时暂停它,并在陈旧的重连运行后重新加载历史记录,使长运行聊天不再切换为假空闲或挂起在陈旧流式状态。修复 #69081。感谢 @EenvoudJasper。 - 浏览器/网关:忽略来自 `Page.handleJavaScriptDialog` 的 Playwright 对话框关闭竞态条件,使浏览器自动化不再因对话框在 Playwright 接受前消失而导致网关崩溃。(#40067) 感谢 @randyjtw。 - 定时任务/网关:将错过的孤立智能体轮次追赶任务推迟到频道启动窗口之外,使超时的定时任务无法在重启后提供商连接期间耗尽 Discord 或 Telegram 的资源。感谢 @vincentkoc。 - 心跳/定时任务:在定时任务活跃或排队时推迟心跳轮次,新增可选的 `heartbeat.skipWhenBusy` 以应对子智能体/嵌套通道压力,并重试繁忙跳过而不推进计划,从而防止本地 Ollama 主机并发运行心跳和定时任务提示。修复 #50773。感谢 @scottgl9。 - 智能体/思考:尊重包含 `xhigh` 的配置模型 `compat.supportedReasoningEfforts` 条目,以便自定义 OpenAI 兼容提供商引用在命令菜单、Gateway 会话、智能体 CLI 和 `llm-task` 中一致地暴露并验证 `/think xhigh`。延续 #48904。感谢 @Milchstrassse 和 @wufunc。 - Vercel AI Gateway:为可信的 OpenAI/Codex 上游引用暴露提供商拥有的 `/think xhigh`,并为 Anthropic 上游引用提供 Claude 自适应思考,同时保持不受信任的命名空间引用处于基础级别。延续 #41561。感谢 @Zcg2021。 - 插件/运行时依赖:在 Gateway 启动期间清理过时的 `openclaw-unknown-*` 捆绑运行时依赖根目录,同时保留最新或锁定的根目录,以防止旧的暂存碎片在重启间不断累积。感谢 @vincentkoc。 - 插件/运行时依赖:在 `MIRRODED_CORE_RUNTIME_DEP_NAMES` 中新增十个根包运行时依赖(`@agentclientprotocol/sdk`、`@lydell/node-pty`、`croner`、`dotenv`、`jiti`、`json5`、`jszip`、`markdown-it`、`tar`、`web-push`),使它们与 `semver` 和 `tslog` 一同镜像到运行时依赖树中,防止在没有任何启用的扩展拥有该依赖时,核心发行版代码(例如 `qmd-manager`、`cron/schedule`、`infra/archive`、`infra/push-web`、`infra/backup-create`、`process/supervisor/adapters/pty`)出现 `Cannot find package 'X'` 错误。新增静态漂移守卫测试,扫描 `src/` 中根包依赖的值导入,若镜像白名单或扩展拥有集中缺少某项,则 CI 失败。引用 #74199。感谢 @maxpuppet。 - Ollama:将调用方中止信号与 guarded-fetch 超时结合用于原生 `/api/chat` 流,以便 `/stop` 和早期取消仍能中断同样携带提供商超时预算的本地 Ollama 请求。引用 #74133。感谢 @obviyus。 - 医生/TTS:在运行 `openclaw doctor --fix` 期间,将遗留的 `messages.tts.enabled`、智能体 TTS、频道 TTS 和语音呼叫插件 TTS 开关迁移至 `auto` 模式,以符合文档记录的 TTS 配置契约。感谢 @vincentkoc。 - CLI/日志:当隐式回环 Gateway 连接在 `logs.tail` 之前或期间关闭或超时时,回退到配置的 Gateway 文件日志,以便在诊断本地模型 Gateway 断开连接时 `openclaw logs` 仍能正常工作。引用 #74078。感谢 @sakalaboator。 - MCP/插件:使用聊天内容强制转换而非默认的对象字符串化来处理非数组插件工具结果,以便 MCP 调用方能从插件工具接收到有用的 JSON/文本内容。感谢 @vincentkoc。 - 活跃内存/QMD:通过 `memory.qmd.update.startup` 将 Gateway 启动时的 QMD 刷新设为可选,保持常规内存访问为惰性,保留交互式文件监听,并使监听器的依赖/构建忽略项与 QMD 扫描器对齐,从而冷启动 Gateway 时默认不再导入或初始化 QMD。感谢 @codexGW。 - 频道/Discord:通过共享频道生命周期队列移除 Discord 拥有的排队运行超时回复,同时保留消息顺序和兼容性超时常量,以便长时间的 Discord 回合仍由会话/工具/运行时生命周期管理,而非频道回退错误。感谢 @codexGW。 - 智能体/工具:将 `process.poll` 等待时间限制为 30 秒,在工具模式中声明该上限,并在等待期间响应中止信号,以便长时间命令轮询在取消后不会阻塞智能体响应。感谢 @vincentkoc。 - 插件 SDK:新增已追踪的 Discord 组件消息辅助函数和 Telegram 账户解析兼容性外观,以便使用这些子路径的现有插件能正常解析,同时新插件仍遵循通用频道 SDK 契约。感谢 @vincentkoc。 - 共享标签:在组/频道 slug 规范化过程中保留 Unicode 组合标记和 NFC 等效的带重音文本,使非拉丁语标签不再丢失有意义的字符。修复 #58932;延续 #58942 和 #58995。感谢 @fengqing-git、@Starhappysh 和 @koen666。 - 频道/Telegram:发送常规 Telegram 视频时包含探测到的视频宽高,以便竖屏片段以正确方向渲染,而非被客户端拉伸。(#18915) 感谢 @storyarcade。 - 文档/Hetzner:明确 SSH 隧道访问需在运行 `ssh -L` 前配置 `AllowTcpForwarding local`,以便加固的 VPS sshd 配置不会阻止回环 Gateway 访问。修复 #54557;延续 #54564;引用 #54954。感谢 @satishkc7、@blackstrype 和 @Aftabbs。 - 智能体/配置:在收缩内部配置写入期间保留用户编写的 `agents.defaults.params` 和按模型配置的 `agents.defaults.models[].params`,以便 `transport: "sse"` 和 `openaiWsWarmup: false` 等 OpenAI 传输覆盖配置不会从 `openclaw.json` 中被剥离。修复 #73607;引用 #73428。感谢 @quangtran88。 - 智能体/模型配置:通过标准模型键解析按模型的额外参数,同时保留遗留的双前缀回退条目,以便带提供商前缀的模型 ID(如 `openrouter/auto`)保留其配置的运行时参数。(#44319) 感谢 @HenryXiaoYang。 - Gateway/关闭:通过 `ShutdownResult` 报告结构化的关闭警告和 HTTP 关闭超时警告,同时保留生命周期钩子的加固处理。延续 #41296。感谢 @edenfunf。 - 控制面板 UI:在选项渲染后,使智能体概览和配置表单的选择下拉菜单保持在其配置的值上,同时保留继承的智能体模型占位符。修复 #40352;延续 #52948。感谢 @xiaoquanidea。 - 智能体/执行:启动 zsh、bash 和 fish 主机执行 shell 时抑制启动文件,同时保留现有的 PATH 回退机制,以便守护进程环境不会被 shell 启动文件覆盖。延续 #40200;修复 #40179。感谢 @NewdlDewdl。 - 插件/QA:在插件测试套件运行前预构建私有 QA 频道运行时,以便包装器的 CPU/RSS 测量值不会被私有 QA 发行版重建工作污染。感谢 @vincentkoc。 - 插件/QA:新增 Kitchen Sink 插件测试套件,用于安装外部包,并检查命令清单、MCP 工具、频道状态、提供商轮次、Gateway RSS、CPU 及致命日志异常。感谢 @vincentkoc。 - 插件/配置:在单次配置规范化流程中复用内置插件别名扫描,使 Kitchen Sink 风格的插件配置不再因在 Agent 轮次前反复重新扫描内置元数据而占用 Gateway CPU。感谢 @vincentkoc。 - 插件/频道:在运行时的频道注册因缺失必需的配置辅助函数而污染频道状态前,直接拒绝格式错误的注册请求。感谢 @vincentkoc。 - MCP/插件:通过 plugin-tools MCP 桥接器序列化原始插件工具返回值,使 Kitchen Sink 风格的工具不再暴露 `undefined` 内容。感谢 @vincentkoc。 - Gateway/重载:将默认重启延迟和 SIGUSR1 重启排空时间限制为五分钟,同时保留显式 `deferralTimeoutMs: 0` 的无限等待,防止过期的活跃工作记录永久阻塞配置重载。感谢 @vincentkoc。 - 活跃内存:将 prompt-build 钩子注册为配置的召回超时时间加上初始化缓冲期,而非 150 秒的最大预算,从而防止默认内存召回延迟轮次启动长达数分钟。感谢 @vincentkoc。 - Gateway/就绪状态:在本地或经过身份验证的 `/readyz` 响应中包含 `eventLoop` 诊断块,提供事件循环延迟(p99 和最大值)、事件循环利用率、CPU 核心比率及 `degraded` 标志,以便运维人员查看缓慢启动或失控轮次何时阻塞事件循环。感谢 @vincentkoc。 - Gateway/Agent:在已接受的 RPC 帧有机会刷新后再调度已接受的 Agent 运行,从而降低预轮次提示词/上下文工作饿死即时 `agent.wait` 调用者的可能性。感谢 @vincentkoc。 - CLI/更新:在尽力清理 CLI 进程期间容忍过期的内存运行时导入失败,使 `openclaw update` 在终结器运行前替换哈希运行时块时,不再在退出时抛出 `Cannot find module` 噪音。感谢 @vincentkoc。 - CLI/频道日志:复用滚动日志文件解析器,使 `openclaw channels logs` 在跨日期边界时回退到当前日期的活动日志,而不会读取无关的自定义日志文件。修复 #42875;延续修复 #42904 和 #43043。感谢 @ethanclaw 和 @wdskuki。 - CLI/更新:在 npm、ClawHub 或市场更新检查前的更新后插件同步阶段,跳过配置中已禁用的受跟踪插件,保留其安装记录且不导致更新失败。修复 #73880。感谢 @islandpreneur007。 - 控制面板 UI:修复浏览器时区启用夏令时(DST)时“峰值错误时段”显示错误的小时速率问题。通过将小时消息计数存储为 UTC 日期键,并使用支持夏令时的 `Date.getHours()` 进行本地转换来解决。同时提取 `accumulateMessageCounts` 辅助函数以减少重复的每日/每小时聚合逻辑。(#49396) 感谢 @konanok。 - iMessage:规范化已知的发送消息回显文本键中 `attributedBody` 前缀损坏标记,使带有 U+FFFD/U+FFFE/U+FFFF/FEFF 前缀的延迟反射回显被丢弃,且不会破坏内部文本。修复 #59973;延续修复 #59980 和 #62191。感谢 @neeravmakwana 和 @maguilar631697。 - 安全/审计:将危险节点命令 ID 识别为有效的 `gateway.nodes.denyCommands` 条目,使审计功能仅对真实拼写错误或不受支持的模式发出警告。(#56923) 感谢 @chziyue。 - 定时任务:将带有 Agent 轮次覆盖的隐式文本负载视为 Agent 轮次,从而保留定时文本提示词中的模型覆盖设置,而非将其作为系统事件修剪。修复 #28905。(#64060) 感谢 @liaoandi。 - Telegram/执行审批:停止将通用 Telegram 聊天白名单和 `defaultTo` 路由视为原生执行审批者;Telegram 现在使用显式的 `execApprovals.approvers` 或来自 `commands.ownerAllowFrom` 的所有者身份,以匹配首次配对的所有者引导路径。感谢 @pashpashpash。 - 插件/提供商:将 Gateway 启动时的主模型发现限制在仅含元数据的提供商条目上,并在存在显式插件条目时仍复用活跃的非语音能力提供商,从而避免启动和媒体能力检查期间不必要的提供商注册表加载。修复 #73729、#73835 和 #73793;延续修复 #73853 和 #73794。感谢 @sg1416-zg、@brokemac79 和 @poolside-ventures。 - 聊天命令:将敏感群组命令 `/diagnostics` 和 `/export-trajectory` 的审批及结果路由至私有所有者路由,优先使用同平台私信,回退至首个配置的所有者路由,从而使 Discord 群组调用在 Telegram 为主要所有者界面时能正确路由至 Telegram。感谢 @pashpashpash。 - Gateway/钩子:使成功执行但配置为 `deliver:false` 的 Agent 钩子保持静默,为被抑制的成功通知记录钩子审计记录,并在尝试钩子投递后抑制回退摘要,同时仍暴露失败的钩子运行。修复 #55761;基于 #36332 和 #49234 改进。感谢 @EffortlessSteven、@cioclawcode 和 @BrennerSpear。 - 插件 SDK/Discord:恢复已弃用的 `openclaw/plugin-sdk/discord` 兼容适配层及已发布 `@openclaw/[email protected]` 包的遗留兼容组策略警告导出,涵盖其 config、account、directory、status 和 thread-binding 导入,同时使新插件保持在通用 SDK 子路径上。修复 #73685;取代 #73703。感谢 @rderickson9 和 @SymbolStar。 - 频道/Discord:当多个已启用账户解析为同一机器人令牌时,抑制重复的 Gateway 监控器,优先使用配置令牌而非默认环境变量回退,并将跳过的重复项报告为已禁用。取代 #73608。感谢 @kagura-agent。 - CLI/健康检查:基于检查的凭证元数据和运行时状态构建频道健康摘要,使 `openclaw health --json` 报告的 Discord `running`、`connected` 和 `tokenSource` 与频道状态保持一致。修复 #44354。感谢 @ferenc-acs。 - 控制 UI/语音通话:解码 Google Live 二进制 WebSocket JSON 帧,并在中断或关闭时停止排队中的浏览器音频,使浏览器语音通话退出 `Connecting Talk...` 状态,且打断(barge-in)不再播放过期音频。修复了 #73601 和 #73460;取代了 #73466。感谢 @Spolen23 和 @WadydX。 - 渠道/Discord:在 Discord 频道重新配置给其他智能体后,忽略过期的路由型对话绑定,同时保留显式焦点和子智能体绑定。修复了 #73626。感谢 @ramitrkar-hash。 - 智能体/引导初始化:将待处理的 `BOOTSTRAP.md` 内容通过首次运行用户提示传递,同时将其排除在特权系统上下文之外;当无法访问工作区文件时,显示有限的引导提示。修复了 #73622。感谢 @mark1010。 - ACP/任务:无论持久运行时模式如何,都将父级拥有的 ACP 会话归类为后台工作;当无活动绑定时关闭终端中过期的 ACP 会话,使委托的 ACP 输出通过父级任务通知器报告,而非表现为正常的前台聊天会话。引用了 #73609。感谢 @joerod26。 - 任务:保持终端镜像的 TaskFlow 时间戳固定于任务完成时间,并允许维护程序修复过期镜像,使 ACP 终端投递更新不再导致不一致的流程审计。引用了 #73609。感谢 @joerod26。 - 网关/会话:增加保守的卡死会话恢复机制,仅在活动嵌入式运行、回复操作和通道任务保持序列化时释放过期会话通道,使排队中的后续请求得以排空,而不会中止合法的长轮询。引用了 #73581、#73655、#73652、#73705、#73647、#73602、#73592 和 #73601。感谢 @WS-Q0758、@bryangauvin、@spenceryang1996-dot、@bmilne1981、@mattmcintyre、@Vksh07 和 @Spolen23。 - 插件:按文件签名缓存未更改的插件清单加载,减少在突发启动和运行时注册表路径中重复的 JSON/JSON5 解析与清单规范化。引用了 #73532 和 #73647;延续了 #73678。感谢 @TheDutchRuler。 - 插件/运行时依赖:缓存未更改的捆绑运行时镜像分发文件实例化决策,并在所有者写入失败时关闭文件锁句柄,减少重复的启动块扫描并避免文件句柄 GC 恢复停滞。引用了 #73532。感谢 @oadiazp 和 @bstanbury。 - 插件/运行时依赖:对拥有的运行时暂存目录的临时清理失败进行重试和延迟处理,使 CLI 启动在捆绑依赖成功替换后不再中止。引用了 #73903。感谢 @bobfreeman1989。 - 插件/运行时依赖:按文件签名缓存捆绑运行时依赖的 JSON/包文件,减少在捆绑频道启动期间重复的暂存运行时元数据读取。引用了 #73647 和 #73705。感谢 @mattmcintyre 和 @bmilne1981。 - 插件/运行时依赖:将捆绑插件依赖的暂存工作委托给使用持久运行时状态完成 npm/pnpm 安装计划,从网关启动中移除保留清单和源代码签出缓存的协调。引用了 #73532。感谢 @oadiazp、@bstanbury 和 @jmfraga。 - 插件/运行时依赖:用显式的镜像根依赖元数据替换网关启动时的根块依赖推断,减少暂存运行时扫描,同时保留每个插件的按需安装。引用了 #73532。感谢 @oadiazp 和 @bstanbury。 - 插件/运行时依赖:在仓库工作区外部运行 pnpm 暂存安装,并为精确的捆绑运行时依赖实例化禁用 pnpm 发布版本限制,使捆绑插件依赖修复能将包写入生成的暂存区,而不阻塞全新的打包依赖。引用了 #73532。感谢 @oadiazp 和 @bstanbury。 - CLI/TUI:将 `chat.history` 排除在模型目录发现之外,使初始的网关支持 TUI 历史记录加载不会因低核主机上缓慢的提供商/插件模型扫描而阻塞。引用了 #73524。感谢 @harshcatsystems-collab。 - 渠道/WhatsApp:在频道状态中标记最近重新连接的关联账户,即使当前套接字健康,使频繁抖动的 WhatsApp Web 会话在短暂重连后不再显示为正常状态。引用了 #73602。感谢 @Vksh07。 - 渠道/WhatsApp:记录共享调度器投递失败信息,包含回复类型、消息 ID、聊天 ID 和连接 ID,使“仅输入未发送”报告能够识别 WhatsApp 发送路径是否拒绝了生成的回复。引用了 #74269。感谢 @tomcosta-git。 - 飞书:在流式卡片已关闭后抑制独立的延迟 `final` 文本投递,同时保持媒体附件可投递,使延迟终态不再重新打开重复的飞书卡片。修复了 #71977。(#72294)感谢 @MonkeyLeeT。 - 网关:在配置、模式和文档中暴露 `gateway.handshakeTimeoutMs`,同时保留 `OPENCLAW_HANDSHAKE_TIMEOUT_MS` 的优先级,使负载较高或低配主机无需修补分发文件即可调整本地 WebSocket 预认证握手超时。取代了 #51282;引用了 #73592 和 #73652。感谢 @henry-the-frog。 - 网关/TUI/状态:对齐本地客户端、探测器和回退 RPC 之间基于配置和环境的 WebSocket 握手预算,同时保留显式状态超时和配对设备认证回退,使慢速本地网关不会因较短的客户端看门狗而被标记为不可达。引用了 #73524、#73535、#73592 和 #73602。感谢 @harshcatsystems-collab、@DJBlackhawk 和 @Vksh07。 - 网关/启动:在 sidecar 启动窗口期间返回可重试的 `UNAVAILABLE`,并让 CLI/TUI/状态客户端在现有超时预算内继续重试,使早期连接不再表现为终端握手失败。修复了 #73652。感谢 @spenceryang1996-dot。 - 网关/代理:为本地网关控制平面 WebSocket(目标为 `localhost` 及回环 IP)绕过继承的代理环境变量,使 Windows/WSL 代理设置无法拦截本地 CLI/TUI 网关连接。取代了 #73474;引用了 #73602。感谢 @DhtIsCoding。 - Doctor/网关:使用轻量级的 `status` RPC(不含频道摘要工作)来检测医生网关的存活状态,从而避免因健康快照过慢而错误触发服务重启修复。修复 #64400;替代 #64511。感谢 @CHE10X 和 @EronFan。 - 智能体/认证:在模型认证状态检查和启动预热期间,将外部 CLI 凭据发现的范围限制为已配置的提供商,从而防止仅使用 opencode 及其他单提供商网关因探测无关的 Claude CLI Keychain 而阻塞。修复 #73908。感谢 @Ailuras。 - 智能体/模型选择:在解析提供商/模型之前先解析斜杠形式的别名,并使别名解析后的主模型仍受临时提供商冷却期限制,从而防止定时任务和持久化会话重试已冷却的原始别名。修复 #73573 和 #73657。感谢 @akai-shuuichi 和 @hashslingers。 - 智能体/Claude CLI:在无需提示的 Claude 凭据读取中复用已缓存的 macOS Keychain 凭据,从而确保医生/运行时检查不会遗漏最新的交互式 Claude 认证。修复 #73682。感谢 @RyanSandoval。 - 智能体/Claude CLI 医生:将工作区和项目目录检查的范围限制为实际使用 Claude CLI 运行时的智能体,从而防止非默认的 Claude 智能体让默认智能体看起来像是由 Claude 支持的。修复 #73903。感谢 @bobfreeman1989。 - 网关/会话:在会话行、`sessions.patch` 和本地 `openclaw sessions --json` 中暴露有效的智能体运行时元数据,同时保持由 Claude CLI 支持的行位于标准模型提供商下,从而不再混淆运行时后端与模型身份。修复 #73090。感谢 @vishutdhar。 - 网关/认证状态:将外部 CLI 凭据覆盖的范围限制为已配置的提供商、运行时或配置文件,并使状态读取避开新的 Keychain 提示,从而防止单提供商网关配置在启动时探测无关的 Claude/Codex/MiniMax 认证。修复 #73908。感谢 @Ailuras。 - 智能体/运行时状态:在 `agents.list`、控制 UI 智能体面板和 `/agents` 中暴露有效的智能体运行时元数据,并避免将过期或累积的 CLI 令牌总量渲染为实时上下文使用情况。修复 #73660、#73578 和 #45268。感谢 @spartman、@DashLabsDev 和 @xyooz。 - 智能体/对话记录:在保留有效文本、图片和签名的同时移除空的助手文本块,从而防止类 Anthropic 提供商拒绝已清理的对话轮次。修复 #73640。感谢 @jowhee327。 - 网关/会话:在隐藏的生命周期事件中保留会话键,从而确保频道路由的运行仍能持久化终端会话状态,并避免在 Codex 轮次完成后将会话状态遗留为运行中。感谢 @cathrynlavery。 - 提供商/Bedrock:针对 Claude Opus 4.7 的 Bedrock 模型 ID、命名及应用推理配置文件(包括带点的 `opus-4.7` 引用)省略已弃用的 `temperature` 参数,并对嵌套验证响应进行分类以支持故障转移。修复 #73663。感谢 @bstanbury。 - 网关:将预认证/连接挑战超时时间提升至 15 秒,从而让较慢主机上的冷启动 CLI 在网关关闭连接前有更多时间处理 WebSocket 挑战。修复 #51469;参考 #73592 和 #62060。感谢 @GothicFox 和 @jackychen-png。 - CLI/状态:当回环详细探测超时或报告未知能力时,回退到有界本地 `status` RPC,从而避免可达的本地网关因读取诊断过慢而被标记为不可达。修复 #73535;参考 #48360、#62762、#51357 和 #42019。感谢 @RacecarGuy、@justinschille、@DJBlackhawk、@tianyaqpzm 和 @0xrsydn。 - CLI/网关:在 `gateway probe` 期间复用已缓存的配对设备认证,并将连接后的诊断失败报告为降级可达性,从而避免在回环认证或读取超时后,健康的本地网关被标记为不可达。修复 #48360。感谢 @RacecarGuy。 - 频道/Discord:为 Discord 网关 WebSocket 握手设置 30 秒超时,从而在 TLS/网络转换停滞时触发错误,使 Carbon 能继续重连循环,而不是让机器人保持沉默直到重启。参考 #50046。感谢 @codexGW。 - Mattermost/WebSocket:发送协议 ping/pong 保活消息,并在 pong 停止到达时终止陈旧会话,从而在 TCP 静默断开时触发重连,而不是让监控处于空闲状态。修复 #41837;延续 #57621;参考 #50138、#44160 和 #51104。感谢 @JasonWang1124。 - 频道/Telegram:当面向用户的助手错误回复已覆盖该轮次时,抑制独立的失败编辑/写入警告负载,同时让未解决的变更失败在看似成功或已抑制错误的回复背后保持可见。修复 #39631;参考 #73750;延续 #39636 和 #39717;将 #39406 留给可配置的投递策略。感谢 @Bartok9 和 @Bortlesboat。 - 控制 UI/智能体:通过 `agents.list[].default` 持久化“设为默认”操作,而不是写入不受支持的 `agents.defaultId` 字段,从而确保保存的默认智能体更改能顺利通过配置验证。修复 #65565;延续 #72585。感谢 @luyao618。 - NVIDIA/NIM:持久化 `NVIDIA_API_KEY` 提供商标记,并将捆绑的 NVIDIA Chat Completions 模型标记为字符串内容兼容,从而确保 NIM 模型能从 `models.json` 加载,且 OpenAI 兼容的子智能体调用发送纯文本内容。修复 #73013 和 #50107;参考 #73014。感谢 @bautrey、@iot2edge、@ifearghal 和 @futhgar。 - 频道/Discord:允许纯文本配置移除 `GuildVoiceStates` 网关意图,并暴露有界的 `/gateway/bot` 元数据超时及限流回退日志,从而降低空闲 CPU 占用和警告泛滥。修复 #73709 和 #73585。感谢 @sanchezm86 和 @trac3r00。 - 智能体/会话:在 `sessions_send` 和 A2A 回复提示到达模型之前,使用跨会话 `isUser=false` 信封进行标记,从而防止外部会话输出被当作裸活动用户文本处理。修复 #73702;参考 #73698、#73609、#73595 和 #73622。感谢 @alvelda。 - Channels/Telegram:当账户级公开 DM 设置与受限的顶层 `allowFrom` 冲突时,默认拒绝访问;在 `dmPolicy="open"` 生效为公开访问前,必须包含有效的通配符。修复 #73756;参考 #73698。感谢 @Hilo-Hilo 和 @xace1825。 - Channels/security:将开放 DM 白名单语义移至共享策略辅助函数,并统一 Discord、Slack、Mattermost、Matrix、飞书、LINE、IRC、Google Chat、Zalo、Zalo User、QQ Bot 和 Synology Chat 的行为,使 `dmPolicy="open"` 仅在存在有效通配符时才视为公开访问,否则仍尊重发送者白名单。参考 #73756 和 #73698。感谢 @Hilo-Hilo 和 @xace1825。 - ACP/tasks:清理任务记录已消失的孤立父级 ACP 会话,保留已绑定的持久化会话,但清除未绑定的陈旧 ACPX 元数据,防止旧子会话无声地重新生成到聊天中。修复 #73609。感谢 @joerod26。 - Outbound/security:在最终渠道交付边界剥离已知的内部运行时脚手架标记(如 `<system-reminder>` 和 `<previous_response>`),并在 Discord 输出中保留定向标签剥离逻辑,防止降级后的工具回复向用户泄露这些标记。修复 #73595。感谢 @gabrielexito-stack 和 @martingarramon。 - Security/Telegram:在只读审计/诊断模式中加载 Telegram 安全适配器,即使群组已禁用也审计格式错误的 Telegram DM `allowFrom` 条目,并防止白名单 DM 审计统计陈旧的配对存储发送者,确保公开/共享 DM 风险检查保持准确。参考 #73698。感谢 @xace1825。 - Plugins:移除隐藏的 manifest、provider-owner、bootstrap 和 channel 元数据缓存,使插件安装、manifest 编辑和 bundled-root 更改在下次读取元数据时可见,同时保留实际插件代码的运行时/模块加载器缓存。感谢 @shakkernerd。 - CLI/plugins:使用插件元数据快照进行安装槽位选择,并添加可选的插件生命周期时序追踪,使插件安装避免仅为元数据决策而运行时加载插件注册表。感谢 @shakkernerd。 - fix(plugins):将内置插件目录解析限制在受信任的软件包根目录下。(#73275) 感谢 @pgondhi987。 - fix(security):防止通过服务环境变量和回收站辅助函数注入工作区 PATH。(#73264) 感谢 @pgondhi987。 - Active Memory:允许 `allowedChatTypes` 包含显式的 portal/webchat 会话,并在不透明会话 ID 遮蔽聊天类型之前,对 `agent:...:explicit:...` 会话键进行分类。修复 #65775。(#66285) 感谢 @Lidang-Jiang。 - Active Memory:允许隐藏的召回子代理同时使用 `memory_recall` 和传统的 `memory_search`/`memory_get` 内存工具契约,使内置 `memory-lancedb` 召回功能正常工作且不破坏默认的 `memory-core` 路径。修复 #73502。(#73584) 感谢 @Takhoffman。 - fix(device-pairing):在修复时验证 callerScopes 与已解析的 token scopes 是否匹配 [AI]。(#72925) 感谢 @pgondhi987。 - Active Memory 文档:记录 `cacheTtlMs` 的 1000-120000 ms 范围及 15000 ms 默认值,防止安装代码片段导致用户超出 schema 限制。修复 #65708。(#65737) 感谢 @WuKongAI-CMU。 - fix(agents):在 byProvider 工具策略查找中对提供程序别名进行规范化处理 [AI]。(#72917) 感谢 @pgondhi987。 - fix(security):阻止从工作区 .env 注入 npm_execpath [AI辅助]。(#73262) 感谢 @pgondhi987。 - Tools/web_fetch:在提取前使用声明的 HTTP、XML 或 HTML meta 字符集将响应体从原始字节解码,使 Shift_JIS 及其他传统字符集页面不再返回乱码。修复 #72916。感谢 @amknight。 - Active Memory:在构建调试遥测数据时跳过无有效负载的 `memory_search` 转录工具结果,使较新的空条目不再掩盖最新的有用调试负载。(#68773) 感谢 @SimbaKingjoe。 - Active Memory:防止召回设置时间消耗配置的模型超时时间,同时为 hook runner 提供插件的明确有界预算,使缓慢的嵌入式运行设置不再导致立即召回超时。修复 #72606。(#72620) 感谢 @hyspacex。 - Channels/Discord:限制消息读取/搜索的 REST 调用,将这些操作路由至 Gateway 执行,并在 `SessionKey` 为空时回退使用 `CommandTargetSessionKey` 作为入站 hook 会话键,使 Discord 读取不挂起且 hook 仍能触发。修复 #73431。(#73521) 感谢 @amknight。 - Plugins/media:自动启用由 `agents.defaults.imageGenerationModel`、`videoGenerationModel` 和 `musicGenerationModel` 主/备用引用所指向的提供程序插件,使配置的 Google 和 MiniMax 媒体插件不会因受限的插件白名单而保持禁用。感谢 @vincentkoc。 - Memory-core/dreaming:启动后若 cron 服务尚不可达,则重试托管 dreaming cron 注册,使定时 Memory Dreaming Promotion 扫描无需等待心跳流量即可恢复。修复 #72841。感谢 @amknight。 - Acpx/runtime:在 `AcpxRuntime.ensureSession` 包装器边界验证运行时会话模式,使传入 `persistent` 或 `oneshot` 以外值的调用者获得明确的 `ACP_INVALID_RUNTIME_OPTION` 错误,而非静默通过编码句柄回绕为默认 `persistent` 模式并在后续抛出 `SessionResumeRequiredError`。调查上下文:#73071。(#73548) 感谢 @amknight。 - CLI/infer:在缺少提供程序 API 密钥时保留 web-search 回退机制,保留所选提供程序的结构性验证错误,并允许每次请求的图像描述提示词覆盖配置的媒体入口提示词。(#63263) 感谢 @Spolen23。 - Chat commands:在构建 `/think` 参数菜单时包含配置的模型目录推理元数据,使 Ollama Cloud 及其他提供程序拥有的推理模型显示支持的级别而非仅显示 `off`。修复 #73515;取代 #73568。感谢 @danielzinhu99 和 @neeravmakwana。 - 频道/Telegram:关闭预览流式传输时,抑制通用的工具进度提示,使非流式 Telegram 对话仅返回最终回复,同时审批、媒体和错误仍正常路由。引用 #72363 和 #72482。感谢 @neeravmakwana 和 @SweetSophia。 - CLI/模型探测:为 `infer model run` 添加可重复的图像 `--file` 输入,用于本地和网关多模态模型冒烟测试,使 Ollama Qwen VL 和 Gemini 等视觉模型可通过原始模型探测接口进行测试。修复 #63700。感谢 @cedricjanssens。 - CLI/模型探测:为 `infer model run --gateway --model <provider/model>` 请求可信操作符作用域,使网关原始模型冒烟测试可使用一次性提供商/模型覆盖,而不会在提供商身份验证解析前被拒绝。修复 #73759。感谢 @chrislro。 - CLI/图像描述:通过 `infer image describe` 和 `describe-many` 传递 `--prompt` 和 `--timeout-ms`,使自定义视觉指令和慢速本地模型预算能到达 Ollama、OpenAI、Google 和 OpenRouter 等媒体理解提供商。引用 #63700。感谢 @cedricjanssens。 - 模型选择:清除存储的会话覆盖时,包含被拒绝的提供商/模型引用和允许列表恢复提示,使本地模型选择(如 Gemma GGUF 变体)不会因通用消息而回退到默认值。引用 #71069。感谢 @CyberRaccoonTeam。 - OpenAI 兼容提供商:在 OpenAI SDK 流解析器看到之前丢弃仅含事件或数据为空的格式错误 SSE 帧,使将 `event:` 与 `data:` 分离的代理不再因 `Unexpected end of JSON input` 导致流式传输崩溃。修复 #52802。感谢 @LyHug。 - 网关/OpenAI 兼容流式传输:在到达 SSE 客户端之前,剥离跨流式模型增量分割的 `<final>` 标签,使 `/v1/chat/completions` 在最终答案包装器跨越块边界时不再输出标签残留或丢失内容。修复 #63325。感谢 @tzwickl。 - Ollama:当 `/api/tags` 省略时,通过 `/api/show` 解析显式选择的已登录 `:cloud` 模型,使 `gemini-3-flash-preview:cloud` 和 `deepseek-v4-pro:cloud` 等可用模型不会在原生 `/api/chat` 传输运行前动态解析失败。修复 #73909。感谢 @chtse53。 - Discord/exec 审批:当无原生 Discord 审批运行时保留本地 `/approve` 提示,并在原生审批投递无目标时发送手动回退通知,使失败的 DM 卡片不再导致审批回合静默或依赖模型编写的 shell 命令。修复 #73954;延续 #74027。感谢 @guarismo 和 @brokemac79。 - 本地模型提示词缓存:将稳定的项目上下文置于易变的频道/会话提示词指导之上,并停止在消息工具描述中嵌入当前频道名称,使 Ollama、MLX、llama.cpp 及其他前缀缓存后端避免在频道轮次间进行不必要的完整提示词重新处理。修复 #40256;取代 #40296。感谢 @rhclaw 和 @sriram369。 - 网关/OpenAI 兼容 API:针对 `models` 值非数组的运行提供商防护提供商策略查找,使 `/v1/chat/completions` 不再因 `provider?.models?.some is not a function` 而失败。修复 #66744;延续 #66761。感谢 @MightyMoud、@MukundaKatta。 - WhatsApp/Web:将明确的 Baileys 套接字计时参数传入每个 WhatsApp Web 套接字,并暴露 `web.whatsapp.*` 保活、连接和查询超时设置,使不稳定网络可避免重复的 408 断开和握手超时循环。修复 #56365。(#73580) 感谢 @velvet-shark。 - WhatsApp/Web:当 408 重连后持续接收传输帧但停止投递应用消息时,恢复最近活跃的监听器,同时保持群组元数据回退不通过 Baileys 发送。修复 #63855 和 #66920;引用 #7433、#67986、#70856、#60007 和 #72621。感谢 @legonhilltech-jpg、@octopuslabs-fl、@Kanorin-chan 和 @stuswan。 - 频道/Telegram:在目标会话上持久化原生命令元数据,使主题、助手和 ACP 绑定斜杠命令能将其会话元数据附加到路由对话中。(#57548) 感谢 @GaosCode。 - 频道/原生命令:在群组聊天中保持已验证的原生斜杠命令回复可见,同时保留用于命令授权显式所有者允许列表。(#73672) 感谢 @obviyus。 - 配对/医生:当不存在命令所有者时,从首个已批准的 DM 配对中引导 `commands.ownerAllowFrom`,并由医生解释缺失的所有者,使特权斜杠命令在入职后不会意外不可用。感谢 @pashpashpash。 - Telegram/exec:从 `commands.ownerAllowFrom` 推断原生执行审批者,并在可解析所有者时自动启用 Telegram 审批客户端,使仅所有者命令(如 `/diagnostics`)可在 Telegram 中审批,无需重复的按频道审批者配置。感谢 @pashpashpash。 - 自动回复/会话:在静默回复会话重置(压缩失败、角色顺序冲突)时,将用户/助手轮次的尾部内容带入新轮替的对话记录中,使直接聊天连续性在重新绑定后得以保留。修复 #70853。(#70898) 感谢 @neeravmakwana。 - 技能:从配置的技能根目录加载分组技能目录(如 `skills/<group>/<skill>/SKILL.md`),同时为大型目录限制分组发现范围。修复 #56915。(#72534) 感谢 @ottodeng、@MoerAI 和 @i010542。 - 配置:在环境变量引用检查前跳过格式错误的非字符串 `env.vars` 条目,使配置加载不再因数字或布尔值等 JSON 值而崩溃。(#42402) 感谢 @MiltonHeYan。 - Docker Compose:将缺失的配置和工作区绑定挂载默认设为 `${HOME:-/tmp}/.openclaw`,使手动 compose 运行不会创建无效的空源卷规格。(#64485) 感谢 @jlapenna。 - 代理/上下文引擎:当子代理清理重新解析上下文引擎时,保留子代理配置的 `agentDir`,使 `onSubagentEnded` 钩子能继续在正确的每代理状态下运行。(#67243) 感谢 @jarimustonen。 - Channels/WhatsApp:将配对验证回复限制为真实入站用户内容,防止来自已读回执、输入指示器、在线状态更新及其他非消息类 Baileys 数据插入/更新操作的未请求提示。修复 #73797。(#73823) 感谢 @hclsys。 - Configure/Ollama:在仅配置云端或云端+本地设置后,显示已配置的 Ollama 模型白名单,并跳过缓慢的逐模型云端元数据获取。(#73995) 感谢 @obviyus。 - Channels/WhatsApp:当机器人的 E.164 号码位于 `allowFrom` 中时,重新检测显式群聊 `@mentions`,因此共享号码设置不再跳过直接提及机器人的群聊消息。修复 #49317。(#73453) 感谢 @juan-flores077。 - WhatsApp/reliability:将真实的传输存活状态发布到 WhatsApp 频道状态中,并在传输静默停滞时强制更早重连,从而使安静且健康的会话保持连接,同时在僵死的套接字恢复后、触发远程 408 超时之前完成恢复。(#72656) 感谢 @Sathvik-1007。 - Core/channels:在保留现有行为的前提下,收紧对选定运行时、媒体和插件的边缘情况处理。感谢 @jesse-merhi。 - Channels/WhatsApp:在所有 WhatsApp 可见的出站路径上剥离泄露的复数工具调用 XML 包装器,并将频道错误负载排除在 WhatsApp 聊天之外。(#71830) 感谢 @rubencu。 - Agents/embedded-runner:在边界感知的嵌入式流回退机制中注入已解析的 OAuth Bearer(并转发运行中止信号),从而使通过 `openai-codex-responses` 及其他边界感知传输路由的模型不再因 `401 Unauthorized: Missing bearer or basic authentication in header` 而失败。修复 #73559。(#73588) 感谢 @openperf。 - Telegram/gateway:限制出站 Bot API 调用并缓存内置插件别名查找,从而防止缓慢的 Telegram 发送或 WSL2 文件系统扫描导致网关回复僵死。(#74210) 感谢 @obviyus。 - Configure/GitHub Copilot:在配置过程中复用现有的 Copilot 认证,并在模型选择器中显示提供者的清单模型目录。(#74276) 感谢 @obviyus。 - Configure/models:将模型选择器的范围限制在所选的清单提供者内,并在目录查找前启用其内置插件,因此选择 GitHub Copilot 不再回退到 Ollama 或跳过目录。(#74322) 感谢 @obviyus。 - Auto-reply/subagents:拒绝来自末端子代理的 `/focus` 命令,并将回退目标解析范围限制在请求子代理的子节点内,从而防止子代理在控制边界之外绑定会话。(#73613) 感谢 @drobison00。 - Gateway/startup:为没有真实工作区写入权限的沙箱派生会话跳过继承的工作区启动内存,从而 `/new` 不再将主机工作区内存预加载到隔离的子运行中。(#73611) 感谢 @drobison00。 - Agents/tool policy:在应用组范围工具策略或持久化网关组元数据之前,根据会话或派生上下文验证调用者组 ID,从而防止伪造的组 ID 解锁权限更宽松的工具。(#73720) 感谢 @mmaps。 - Commands:将带频道前缀的所有者白名单条目限制在匹配的提供者范围内,从而防止 webchat 命令上下文继承外部频道所有者。感谢 @zsxsoft。 - Auth/device pairing:将引导移交令牌的签发、兑换及已批准配对基线限制在文档记录的按角色范围白名单内,从而防止引导批准持续授予 `operator.admin`、`operator.pairing` 或 `node.exec` 范围权限。感谢 @eleqtrizit。 - Providers/GitHub Copilot:支持 GUI/RPC 向导的设备代码认证流程,从而使非 TTY 客户端(网关 RPC 桥接、GUI 向导)的入职流程得以完成,而非返回空配置。危险状态处理现在能区分 `access_denied` 和 `expired_token` 与传输错误。(#73290) 感谢 @indierawk2k2。 - Installer/Linux:在将不可写的 npm 全局前缀切换至 `~/.npm-global` 前发出警告,随后指导用户使用 `npm i -g openclaw@latest`(不带 `sudo`)运行未来的全局更新,以便 npm 继续使用重定向的用户前缀。修复 #44365;延续 #50479。感谢 @Sayeem3051。 - Gateway/plugins:在 Windows 上为内置插件模块启用原生的 `require()` 快速路径,使插件加载使用 `require()` 而非 Jiti 的转换管道,从而在典型 6 插件设置下将启动时间从约 39 秒缩短至约 2 秒。修复 #68656。(#74173) 感谢 @galiniliev。