← 返回更新日志

OpenClaw v2026.5.9-beta.1 预发布

2026-05-09 · GitHub 原文
### 更新内容 - 聊天命令:新增 `/think default` 和 `/fast default` 以清除会话覆盖设置并继承已配置/提供商的默认值。(#79385) 感谢 @VACInc。 - 依赖项:刷新工作区依赖锁定版本和锁文件,包括 `@openai/codex` `0.130.0`、`acpx` `0.7.0`、AWS SDK `3.1044.0`、OpenTelemetry `0.217.0`、`typebox` `1.1.38`、`vite` `8.0.11`、`oxfmt` `0.48.0` 和 `oxlint` `1.63.0`,并更新 Codex 测试框架的模型快照以适配新的内置应用服务器目录。 - 插件/安装:新增受保护的插件安装覆盖机制,使入门和修复测试能够通过环境变量将特定插件路由至注册表规范或本地 `npm pack` 产物。 - 测试/Docker:新增 Codex 按需安装和实时插件工具依赖的 E2E 测试通道,用于验证打包的入门流程和 npm-pack 插件。 - 插件/ACPX:在 `agents.<name>` 配置中接受可选的 `args` 数组,以便在启动 ACP 代理进程时保留包含空格的路径和标志值。感谢 @TheArchitectit 和 @BunsDev。 - 代理:将当前的提供商/模型标识注入系统提示词中(包括已配置的提示词覆盖和 CLI 钩子提示词替换),使代理能够根据实际运行时选择来回答关于模型身份的问题。 - 插件/CLI:新增可选的内置 `oc-path` 插件,提供 `openclaw path` 命令,用于精准访问 `oc://` 协议的 markdown、JSONC 和 JSONL 工作区文件。 - 插件/SDK:为文本、图像、视频和音乐提供商新增统一的模型目录注册功能,包括 `providerCatalogEntry` 清单、共享媒体列表帮助、实时目录缓存以及按模型的视频能力叠加层。 - 插件 SDK:新增仅控件交互渲染的展示辅助函数及可选的空回退文本,使丰富的频道渲染器能够共享 `MessagePresentation` 语义,而无需重复实现原生卡片或组件。 - CLI:使解析器、启动、配置、护栏、频道、代理、任务、会话和 MCP 失败时的错误信息能够说明具体情况,并指引下一步的恢复命令。 - GitHub Copilot:从 `${baseUrl}/models` 刷新模型目录,以便在运行时显示按账户的权限和准确的上下文窗口;当发现功能禁用或 API 不可达时,静态清单目录(现已包含 `gpt-5.5`)仍作为回退方案。 - 活跃记忆:支持自定义记忆插件使用具体的 `plugins.entries.active-memory.config.toolsAllow` 召回工具名称,同时保留内置 memory-core 对 `memory_search`/`memory_get` 的默认设置,并为 `plugins.slots.memory: "memory-lancedb"` 自动保留 `memory_recall`。 - Telegram:在轮询和临时发送客户端之间共享同一 bot token 的 grammY API 限流器,使可见的草稿预览和 CLI 发送共用一个配额门控。感谢 @anagnorisis2peripeteia。 - Telegram/飞书:在决定是否对频道推理预览进行流式传输或保持隐藏时,遵循配置的按代理和全局 `reasoningDefault` 值,解决 #73182 中关于预览默认行为的问题。感谢 @anagnorisis2peripeteia。 - Docker:在 `tini` 下运行运行时镜像,以便长生命周期容器能够正确回收孤儿子进程并转发信号。(#77885) 感谢 @VintageAyu。 - 日志/脱敏:在共享日志和格式化错误输出中脱敏带引号的 HTTP 客户端密钥字段以及 auth/cookie 请求头。相关 #71211 和 #65623。(#75033) 感谢 @liaoandi。 - 网关/SDK:文档化并稳定 `tasks.list`、`tasks.get` 和 `tasks.cancel` 的任务账本 RPC 接口,包括为可选任务摘要生成的 Swift 模型类型。感谢 @BunsDev。 - Google/Gemini:在写入模型配置前,将已停用的 `google/gemini-3-pro-preview` 和 `google-gemini-cli/gemini-3-pro-preview` 选择标准化为 `google/gemini-3.1-pro-preview`。 - Google/Gemini:从已配置的提供商目录行中输出标准的 `google/gemini-3.1-pro-preview` ID,使模型列表和选择路径能够测试 Gemini 3.1 而非已停用的 Gemini 3 Pro。 - Google/Gemini:将嵌套的代理提供商目录 ID(如 `google/gemini-3-pro-preview`)标准化为 `google/gemini-3.1-pro-preview`,使 Kilo 风格的配置目录能够测试 Gemini 3.1 而非已停用的 Gemini 3 Pro ID。 - Google/Gemini:标准化提供商入门模型别名映射,使设置流程在 `google/gemini-3.1-pro-preview` 下保留设置,而不是重新生成已停用的 Gemini 3 Pro 配置键。 - Google/Gemini:在 Google 动态模型解析内部标准化已停用的 Gemini 3 Pro Preview ID,使运行时克隆也使用 `google/gemini-3.1-pro-preview`。 - Amazon Bedrock:支持 Bedrock 模型的 `serviceTier` 参数,可通过 `agents.defaults.params.serviceTier` 或 `agents.defaults.models` 中的按模型配置进行设置。有效值:`default`、`flex`、`priority`、`reserved`。(#64512) 感谢 @mobilinkd。 - 控制面板 UI:从 `tools.exec.security` 读取快速设置执行策略徽章,而非非架构的 `agents.defaults.exec.security` 路径,以便准确渲染配置的 `full`/`deny` 值。修复 #78311。感谢 @FriedBack。 - 控制面板 UI/使用量:为轮换的逻辑会话新增基于转录本的历史 lineage 汇总,包含当前实例与历史 lineage 范围控制及长期预设,使使用量历史在重启和更新后仍可见。修复 #50701。感谢 @dev-gideon-llc 和 @BunsDev。 - 代理/故障转移:通过持久化配额恢复转换、恢复配置的通道并发数、保留非配额失败原因,并通过诊断 OTLP 导出模型故障转移事件,增强状态感知的通道挂起机制。感谢 @BunsDev。 - 控制面板 UI/Windows:为原生主机新增 SPA 侧的 WebView2 桥接,使草稿文本能够更新聊天编辑器,并将就绪握手信号接入应用生命周期。(#69633) 感谢 @AlexAlves87。 - Channels/streaming:使进度草稿标签随其他进度行滚动消失,将结构化工具行渲染为紧凑的 emoji/标题/详情格式,从提供商原生参数结构中显示网络搜索查询,并在存在补丁摘要前跳过空的 Discord apply-patch 启动。(#79146) - Runtime/performance:在自动选择提供商、解析支持的思考级别、选择节点最后可见时间戳以及提取 Codex 使用限制消息时,避免对完整数组进行排序。感谢 @shakkernerd。 - Plugins/doctor:在选择 ClawHub 搜索/归档结果和有界梦境医生条目时,避免对完整数组进行排序。感谢 @shakkernerd。 - Agents/compaction:在不排序完整历史记录的情况下,将贡献者诊断信息限制为有界的顶部三项选择。感谢 @shakkernerd。 - Sessions/UI:在选择 ACPX 租约、Google Meet 日历事件和最新聊天会话时,避免对完整数组进行排序。感谢 @shakkernerd。 - Plugin SDK:将直接的 `deliverOutboundPayloads` 和旧版回复分发桥接标记为已弃用的兼容性基础层,为 `sendDurableMessageBatch` 增加明确的持久化发送结果,将捆绑的发送/回合路径从已弃用 API 迁移出去,并通过 `check:deprecated-api-usage` 强制执行分离。 - Telegram:在统一出站适配器中保留频道特定的 10 选项投票上限,以便在发送前拒绝超限投票。(#78762) 感谢 @obviyus。 - Telegram/streaming:当渲染的预览文本超过 Telegram 的消息限制时,在新消息中继续显示超限草稿预览,而不是停止。(#74508) 感谢 @anagnorisis2peripeteia。 - Slack:当启用 Slack 回复线程时,将隐式对话频道中处理过的顶级频道回合路由到线程作用域的会话中,使根回合和后续的线程回复保持在同一个 OpenClaw 会话内。(#78522) 感谢 @zeroth-blip。 - Telegram:在重复的粘性回退成功后重新探测主获取传输层,以便临时 IPv4 或固定 IP 回退提升能够无需重启网关即可恢复。修复 #77088。(#77157) 感谢 @MkDev11。 - Runtime/install:将支持的 Node 22 最低版本提升至 `22.16+`,以便原生 SQLite 查询处理能够依赖 `node:sqlite` 语句元数据 API,同时继续推荐 Node 24。(#78921) - Discord/voice:使重复的同公会自动加入条目解析为最后配置的频道,以便在语音频道间移动代理时不会持续加入过时的频道。 - Discord/voice:新增实时 `/vc` 模式,使 Discord 语音频道可作为 STT/TTS 运行、作为与 OpenClaw 代理大脑交互的实时语音缓冲区,或与 `openclaw_agent_consult` 进行双向实时会话。 - Discord/voice:为语音频道加入、实时模型/语音选择、转录、咨询路由/回答和播放启动添加有界的实时网关日志;允许 OpenAI 实时 Discord 会话针对回声较大的房间禁用输入触发的响应中断,同时为新增和已激活的发言者保留显式的 Discord 打断功能;并允许语音回合定位到现有的 Discord 频道代理会话。 - Discord/voice:新增 `voice.realtime.minBargeInAudioEndMs` 配置项,并将播放清理交由实时提供商管理,这样在 `audioEndMs=0` 时扬声器回声不再切断 OpenAI 实时模型音频,而低回声房间仍可通过设置为 `0` 选择立即打断。 - Discord/voice:将 `agent-proxy` 设为默认语音模式,使实时语音作为路由后的 OpenClaw 代理会话的麦克风/扬声器扩展,`stt-tts` 仍作为显式备用选项可用。 - Discord/voice:在监督代理仍在工作时保持 OpenAI 实时双向咨询静音,接受 Codex 风格的 `conversation.item.done` 函数调用事件,并通过网关中继保留持续的 tool 结果,以便 OpenAI 实时桥接在说出最终答案前可靠地路由咨询。 - Discord/voice:在详细语音日志中包含有界的一行 STT 转录预览,以便实时语音调试能显示代理回复前发言者的内容。 - Codex app-server:将托管的 Codex 运行环境和 Codex CLI 冒烟测试包固定至 `@openai/[email protected]`,默认将 OpenClaw 集成动态工具延迟至 Codex 工具搜索之后,并接受当前 Codex 服务层级值,使旧版 `fast` 设置能在稳定运行环境升级后作为 `priority` 保留。 - Codex app-server:在动态 `message` 工具规范中为仅消息工具的直接聊天回合添加注解,以便可见回复通过 `message(action="send")` 发送,而不是保持私有。(#79704) - Agents/PI:通过 PI 原生支持 WebSocket 的传输层路由显式的 OpenAI Codex Responses 运行,并移除 OpenClaw 自定义的 OpenAI Responses WebSocket 栈,同时保留身份验证注入、运行中止信号和提示词缓存边界剥离功能。 - Models/config:为配置的 OpenAI 兼容 Qwen 模型允许 `compat.thinkingFormat` 取值为 `qwen` 和 `qwen-chat-template`,在目录规范化过程中保留这些值,并将 `/think` 级别映射至 `enable_thinking` 或 `chat_template_kwargs.enable_thinking`。修复 #79677。(#79777) 感谢 @indulgeback。 - Codex app-server:当 Codex 系统要求不允许 YOLO 审批、审阅者或沙箱值时(包括主机作用域的远程沙箱条目),将隐式本地 stdio app-server 权限默认设为 guardian,避免在仅允许审阅审批或更窄沙箱的托管主机上出现回合启动失败。 - Plugins/install:从托管根目录运行托管的 npm-root install、uninstall、prune 和 repair 命令,无需冗余的 `--prefix .`,避免在原生 Windows WhatsApp 插件安装时 npm 10.9.3 Arborist 崩溃。修复 #78514。(#78902) 感谢 @melihselamett-stack。 - Discord/voice:将 ElevenLabs TTS 直接流式传输至 Discord 播放,并将 ElevenLabs 延迟优化作为文档记录的查询参数发送,以便语音回复能更早开始。 - Discord/语音:当其他用户开始说话时保持 TTS 播放继续运行,在播放期间忽略新的音频捕获以避免反馈循环,并将预期的接收流中止降级为详细诊断日志。 - iMessage:当 `imsg status --json` 报告所需桥接能力时,通过 `imsg rpc` 暴露原生私有 API 消息操作,支持表情回应、编辑、撤回、回复、富文本发送、附件及群组管理。 - Gateway/tasks:清理残留的 CLI 运行上下文任务,这些任务在子会话行仍存在但实时运行上下文已消失的情况下未被处理;并将默认的有界重载延迟超时应用于频道热重载,防止残留任务记录永久阻塞 Discord/Slack/Telegram 的重载。 - Gateway/sessions:在跳过写入器锁内的持久化 fsync 的同时保持会话存储索引写入的原子性,减少慢速文件系统上的 cron 和频道轮询饥饿问题,并解决 #73655 中会话存储相关的问题。感谢 @mmartoccia。 - Discord/语音:使 `openclaw channels capabilities --channel discord --target channel:<id>` 和 `channels status --probe` 能够审计语音频道权限(包括自动加入目标),以便在 `/vc join` 之前就能发现缺失的 Connect/Speak/Read Message History 权限。 - Gateway/restart:在 `gateway.restart.request` RPC 上暴露 `skipDeferral`,并新增 `openclaw gateway restart --safe --skip-deferral` 命令,以便在固定任务运行阻止 OpenClaw 感知重启排空时,操作员可绕过安全重启延迟门控。将 #71637 中新增的内部 `scheduleGatewaySigusr1Restart({ skipDeferral })` 语义公开,以补充 `gateway.reload.deferralTimeoutMs`。引用 #76162。感谢 @solomonneas。 - Discord/streaming:默认将 Discord 回复设为进度草稿预览,使工具/工作活动显示在一条编辑过的 Discord 消息中,除非将 `channels.discord.streaming.mode` 设置为 `off`。 - OpenAI/realtime:将实时语音默认设为 `gpt-realtime-2`,为后端 OpenAI 桥接使用 GA Realtime WebSocket 会话结构,并在实时 Talk 冒烟测试中覆盖后端、WebRTC、Google Live 和 Gateway 中继路径。(#79130) - Update/Windows:在 Windows 上使用 `stdio:"pipe"` 派生核心更新后的子进程,避免继承 PowerShell/CMD 控制台句柄,防止 `openclaw update` 完成后终端挂起。修复 #78445。(#78483) 感谢 @Beandon13。 - Plugins/install:新增 `npm-pack:<path.tgz>` 安装方式,使本地 npm pack 制品能够走与注册表 npm 插件相同的托管 npm-root 安装、锁文件验证、依赖扫描和安装记录路径。 - Channels/plugins:在原始包管理器升级导致飞书或 WhatsApp 未安装后,将已配置的外部官方频道显示为缺失插件状态行,并发送包含确切安装/医生修复命令的错误提示。修复 #78702 和 #78593。感谢 @MarkMa84 和 @mkupiainen。 - Matrix:将 Matrix 频道移回官方外部 ClawHub/npm 插件,使核心安装不再需要 Matrix SDK 运行时依赖。 - Matrix:为语义化展示回复附加 `com.openclaw.presentation` 元数据,使支持 OpenClaw 的 Matrix 客户端能够渲染富文本按钮、选择框、上下文行和分割线,而默认客户端则保留纯文本回退。(#73312) 感谢 @kakahu2015。 - Codex app-server:在当前轮次活动后禁用短期的工具完成看门狗,暴露 `appServer.turnCompletionIdleTimeoutMs`,并在空闲超时诊断中包含原始助手项上下文,使仅状态类的工具后停滞不再被误判为空闲。修复 #77984。感谢 @roseware-dev 和 @rubencu。 - Plugin skills/Windows:在 Windows 上将插件提供的技能目录发布为目录联接(junctions),使没有开发者模式的普通用户也能注册插件技能,避免符号链接 EPERM 失败。修复 #77958。(#77971) 感谢 @hclsys 和 @jarro。 - Shell env/Windows:隐藏登录 shell 环境探测子窗口,使网关启动和 shell 环境刷新时不在 Windows 上闪烁控制台。修复 #78159。(#78266) 感谢 @BradGroux。 - MS Teams:通过记录 JWKS 获取网络失败和为传输层回复失败添加 Bot Connector 发送提示,暴露被阻止的 Bot Framework 出站流量。修复 #77674。(#78081) 感谢 @Beandon13。 - Gateway/sessions:在构建会话列表行时快速处理已限定的模型引用,使 `openclaw sessions` 和控制台 UI 会话列表在大型存储中避免重量级的模型解析。(#77902) 感谢 @ragesaq。 - Contributor PRs:提醒外部贡献者从真实行为证明中脱敏隐私信息,如 IP 地址、API 密钥、电话号码和非公开端点。感谢 @pashpashpash。 - ACP bridge:在解析网关执行审批前,将活跃 ACP 轮次的网关执行审批提示中继到 ACP 客户端的 `session/request_permission` 处理器。感谢 @amknight。 - Codex/plugins:在同一个 Codex 测试线程中启用迁移的源码安装 `openai-curated` Codex 插件,通过显式 `codexPlugins` 配置、缓存的应用就绪状态和失败即关闭的破坏性操作策略进行管控。感谢 @kevinslin。 - Codex/plugins:使用 Codex 应用级 `destructive_enabled` 配置强制执行原生插件破坏性操作策略,替代 OpenClaw 维护的按工具黑名单,默认保持插件应用 `open_world_enabled` 开启,并使现有插件应用线程绑定失效以重建旧生成的应用配置。感谢 @kevinslin。 - PR triage:当 Barnacle 找到结构化的真实行为证明时,为外部拉取请求标记 `proof: supplied`;保持过期负面证明标签在 CRLF 编辑的 PR 正文中同步;并将更强的 `proof: sufficient` 判定权交由 ClawSweeper 负责。 - ACPX/Codex:在启动隔离的 Codex ACP 会话时保留受信任的 Codex 项目声明,避免在无头运行中出现交互式信任提示。感谢 @Stedyclaw。 - ACPX/Codex:在启动和 ACP 会话关闭后回收过期的 OpenClaw 拥有的 ACPX/Codex ACP 进程树,防止孤立的辅助进程拖慢 Gateway。感谢 @91wan。 - ACP 桥接:实现稳定的会话列表、恢复和关闭处理程序,使 ACP 客户端能够分页获取 Gateway 会话、无需重放即可重新绑定现有会话,并干净地关闭桥接会话。感谢 @amknight。 - ACP 桥接:在加载时重放完整的基于账本的 ACP 会话,包括用户提示、工具更新、会话元数据和用量快照,同时让旧会话保留在现有的转录回退机制中。感谢 @amknight。 - ACP 会话:允许父级代理检查并与其自身生成的跨代理 ACP 会话通信,而无需启用广泛的代理间可见性。感谢 @barronlroth。 - Talk/voice:围绕共享的 Talk 会话控制器统一实时中继、转录中继、托管房间交接、语音通话、Google Meet、VoiceClaw 和原生客户端,并添加由 Gateway 管理的 `talk.session.*` RPC 接口。 - Diagnostics/Talk:通过 OpenTelemetry 和 Prometheus 导出有界的 Talk 生命周期/音频指标和会话恢复指标,且不暴露转录文本、音频载荷、房间 ID、回合 ID 或会话 ID。 - Logging/Talk:将共享的 Talk 生命周期事件路由到有界的文件和 OTLP 日志记录中,同时将转录文本、音频载荷、回合 ID、通话 ID 和提供商项目 ID 排除在日志之外。 - Voice Call/realtime:添加可选的 OpenClaw 代理语音上下文胶囊和咨询频率指导,使 Gemini/OpenAI 实时通话听起来像配置的代理,而无需在每次普通回合中咨询完整代理。感谢 @scoootscooob。 - Telegram/streaming:防止草稿预览轮播在压缩重放与下一条代理消息之间出现可见的工具或媒体输出后,重复使用预工具代理预览。感谢 @vincentkoc。 - Telegram/performance:跳过非论坛主题缓存设置,将状态反应变体工作推迟到需要反应时,并在消息上下文组装期间复用 ack 反应门控。感谢 @vincentkoc。 - CLI/migrate:为交互式 Codex 技能迁移添加批量开启/关闭和跳过控制,默认不勾选冲突的技能副本。(#77597) 感谢 @kevinslin。 - CLI/migrate:在截断的计划项目前显示原生 Codex 插件名称,并在交互式 Codex 迁移中显式提示插件激活,而不是静默保留所有计划插件。感谢 @kevinslin。 - CLI/migrate:在交互式插件选择器中不勾选已配置的目标 Codex 插件,并显示 `plugin exists` 冲突提示,同时默认保持新插件激活为选中状态。感谢 @kevinslin。 - CLI/migrate:当交互式 Codex 迁移未选择任何技能副本和原生插件激活时,干净地返回而不要求应用确认。感谢 @kevinslin。 - Cron CLI:添加 `openclaw cron list --agent <id>`,规范化请求的代理 ID,并将未存储代理 ID 的作业归入配置的默认代理下,同时在未提供代理时保持 `cron list` 不筛选。修复 #77118。感谢 @zhanggttry。 - Slack/performance:减少 Slack 回复热路径上的消息准备、流接收者查找和线程上下文分配开销。感谢 @vincentkoc。 - Control UI/chat:从实时流和转录显示中剥离不可信的发送者元数据,保留画布预览锚点,并阻止操作员 UI 客户端将其内部客户端 ID 注入为发送者身份。修复 #78739。感谢 @tmimmanuel, @guguangxin-eng, @hclsys, 和 @BunsDev。 - Control UI/chat:将连续重复的文本消息折叠为一个带计数的消息气泡,使纯文本重复消息保持紧凑,同时不隐藏附近上下文。 - Control UI/chat and Sessions:将继承的思维默认值与显式覆盖项分开标记,同时保留提供商提供的选项标签。修复 #77581。感谢 @BunsDev 和 @Beandon13。 - Agents/runtime:添加预置的运行时基础契约,以便在后续的回复路径迁移中携带提供商、模型、工具、TTS 和出站运行时事实。感谢 @mcaxtr。 - Control UI/WhatsApp:为未绑定的 WhatsApp 账号保留“显示二维码”选项,将已绑定账号切换为明确的“重新绑定”操作,并仅在二维码活跃时显示“等待扫描”。感谢 @BunsDev。 - Gateway/performance:在仪表盘和频道代理回合间复用兼容的插件元数据快照,使自动启用的运行时配置不会在调用提供商前重复扫描插件元数据。感谢 @shakkernerd。 - Gateway/performance:在仪表盘和频道代理回合期间复用当前插件元数据用于提供商激活、认证/环境变量候选查找和捆绑设置,同时保持无配置的秘密目标缓存无作用域,并在插件发现根目录不同时拒绝过期的无作用域复用。感谢 @shakkernerd。 - Gateway/performance:避免在一次运行时配置传递中两次解析插件自动启用元数据,减少重复的仪表盘回合元数据扫描。感谢 @shakkernerd。 - Auth/providers:将 `config` 和 `workspaceDir` 查找上下文传递至提供商 ID 解析,以便在未提供显式别名映射时正确解析工作区范围的认证别名。感谢 @shakkernerd。 - Gateway/diagnostics:在 `pnpm gateway:watch` 中添加启动阶段跨度、活跃工作标签、过期终端桥接标记和可选的同步 I/O 追踪,以便从日志和稳定性诊断中更容易地归因缓慢的 Gateway 回合。 - QA/Mantis:添加一个可选的 Discord 线程附件前后场景,该场景会创建真实线程,使用 `filePath` 调用 `message.thread-reply`,并捕获基线/候选截图证据。 - Discord:使用消息工具回复线程时保留 `filePath` 和 `path` 附件。 - QA/Mantis:新增基于 Crabbox 的 MP4 录制、截图捕获及可选的图像理解断言的可视化桌面任务,并在 Mantis 前后报告中保留视频产物。 - QA/WhatsApp:新增 `pnpm openclaw qa whatsapp` 命令,用于使用 QA 凭证池中的两个预链接 WhatsApp Web 会话进行实时 DM 金丝雀测试及配对门控覆盖。 - CI/Crabbox:默认自有 AWS 回退策略改为启用 broker hints 的 `standard` 多区域容量,将 `beast` 保留给显式的 CPU 密集型维护者通道。 - Plugins/install:使用遗留 peer 解析机制运行托管的 npm-root 安装、回滚、修复和卸载操作,确保移除一个插件不会将过期的注册表 `openclaw` 包重新注入共享根目录。感谢 @vincentkoc。 - Plugin SDK:新增 `openclaw/plugin-sdk/channel-message` 生命周期辅助函数,涵盖 `defineChannelMessageAdapter`、`deliverInboundReplyWithMessageSendContext`、发送/接收/实时/状态契约、持久化最终交付能力派生、能力证明辅助函数及标准化消息回执。 - Plugin SDK:新增 `createChannelMessageAdapterFromOutbound`,使频道插件能够从已验证的出站适配器派生持久化消息适配器,无需重复编写发送/回执桥接代码。 - Plugin SDK:新增 `actions.prepareSendPayload(...)`,使频道插件能将消息工具发送转换为持久化载荷,而核心层负责队列、钩子、重试、恢复和确认机制。 - Plugin SDK:将遗留的 `channel-reply-pipeline` 子路径改为共享回复核心的兼容性包装器,同时将根目录兼容性弃用引导至 `plugin-sdk/channel-message`。 - Plugin SDK:将 Discord、Slack、Mattermost 和 Matrix 的实时预览终态化迁移至 `plugin-sdk/channel-message`,并将消息回执附加到 Telegram 终态预览及 Teams 原生流终态,使预览编辑和流终态在消息生命周期中体现,而非仅作为草稿辅助函数。 - Telegram:在成功分派更新后持久化轮询重启水位线,而非在处理器入口处,使失败更新可重试,同时安全地合并已完成的偏移量。 - Plugin SDK/fs-safe:通过 `plugin-sdk/security-runtime` 暴露可复用的原子替换、同级临时写入及跨设备移动回退辅助函数,并将 OpenClaw 重复的安全文件系统写入路径迁移至共享的 `@openclaw/fs-safe` 包。 - Plugin SDK/fs-safe:在最终发布前,将浏览器、媒体、频道及 QA 外部输出生产者路由至分阶段 fs-safe 写入流程。(#78768) - Plugin SDK/fs-safe:将公共临时工作区辅助函数重命名为 `tempWorkspace`、`withTempWorkspace`、`tempWorkspaceSync` 和 `withTempWorkspaceSync`,以在包发布前对齐更简洁的 `@openclaw/fs-safe` API。 - Core/performance:通过直接有界扫描优化回复载荷路由、心跳过滤、工具显示、核心工具组装、频道目录、任务状态及 Slack 审批格式化辅助链。感谢 @vincentkoc。 - Control UI/performance:通过解耦缓慢的历史/架构/状态工作、缩减客户端历史窗口以及记录超预算的聊天/配置渲染,保持聊天、配置和频道刷新的响应速度。Refs #77060, #45698, #47979, #44107。感谢 @BunsDev。 - Gateway/diagnostics:在 `pnpm gateway:watch` 中新增启动阶段跨度、活跃工作标签、过期终端桥接标记及可选的同步 I/O 追踪,以便从日志和稳定性诊断中更轻松地归因缓慢的 Gateway 轮次。 - QA/Mantis:新增基于 Crabbox 的 MP4 录制、截图捕获及可选的图像理解断言的可视化桌面任务,并在 Mantis 前后报告中保留视频产物。 - QA/Mantis:在 Slack 桌面冒烟测试期间复用 Crabbox 桌面/浏览器捕获工具及 pnpm 存储缓存,减少截图和视频捕获前的单场景准备工作。 - QA/Mantis:新增 Slack 桌面水合模式及分阶段计时报告,使预热预水合的 VNC 租约可跳过源码安装/构建,同时冷运行仍能验证完整源码检出。 - QA/Mantis:通过 desktop-browser Crabbox 和 artifact-copy 子命令传递运行时环境变量,使嵌入的 Mantis 调用者可提供 Crabbox 凭证而无需修改父进程。感谢 @vincentkoc。 - QA/Mantis:即使远程 Slack QA 失败,也返回复制的 Slack 桌面截图路径,以便 CLI 仍能打印失败截图产物。感谢 @vincentkoc。 - QA/Mantis:接受来自桌面冒烟预热的 Blacksmith Testbox `tbx_...` 租约 ID,使提供程序覆盖在 inspect/run 前不会失败。感谢 @vincentkoc。 - Plugins/SDK:新增有界的 `before_agent_finalize` 重试指令,使工作流插件可请求额外一次模型遍历。感谢 @100yenadmin。 - Plugin SDK:新增插件拥有的 `SessionEntry` 槽位投影及作用域受限的信任策略会话扩展读取。(#75609; 替换 #73384/#74483 的部分内容) 感谢 @100yenadmin。 - Plugins/SDK:向 `before_tool_call` 和信任策略钩子暴露主机派生的工具目标路径,使工作流插件无需重新解析工具信封即可推演已知文件目标。(#75605) 感谢 @100yenadmin。 - Control UI/WebChat:在高压警告状态前,基于最新会话令牌数据显示持久的紧凑上下文使用指示器,同时保留现有的压缩提示阈值。Fixes #46398; refs #45048, #50071, and #73744。感谢 @walterwkchoy, @AxelrodAI, @Brissux, @vincentkoc, 和 @BunsDev。 - Contributor PRs:要求外部拉取请求必须包含来自真实 OpenClaw 环境的修复后实际行为证明,终端截图、控制台输出、脱敏运行时日志、链接产物及复制的实时输出均视为有效证据,而单元测试、模拟、代码检查、类型检查、快照及 CI 仅作为补充。 - 插件/目录:添加固定版本为 `2.4.1` 的 `@tencent-weixin/openclaw-weixin` 外部入口,以便在初始化和运行 `openclaw channels add` 时默认安装腾讯微信(个人微信)频道。(#77269) 感谢 @pumpkinxing1。 - 开发者工具:添加已纳入版本控制的 VS Code Gateway 调试配置,以及可选的 `OUTPUT_SOURCE_MAPS=1` 源映射构建路径,用于在 TypeScript 源码中设置断点。(#45710) 感谢 @SwissArmyBud。 - 托管代理:新增 `proxy.loopbackMode` 用于控制 Gateway 的回环控制面流量,允许运维人员保留默认的 Gateway 回环旁路、强制将回环 Gateway 流量经代理转发,或将其拦截。(#77018) 感谢 @jesse-merhi。 - Telegram/原生命令:在 `/think` 级别选择器上方显示当前思考级别,以便用户在更改前查看当前设置。(#78278) 感谢 @obviyus。 - 插件/钩子:新增 `before_agent_run` 放行/拦截门控,可在向模型提交前拦截用户提示词,同时为用户保留脱敏的对话记录条目;并明确原始对话钩子需配置 `hooks.allowConversationAccess=true`。(#75035) 感谢 @jesse-merhi。 - 配置/Nix:将启动时派生的插件启用状态、Gateway 认证令牌、控制 UI 来源及所有者显示密钥仅保留在运行时,不再重写 `openclaw.json`;在 Nix 模式下,配置写入器、修改型 `openclaw update`、插件生命周期修改器及 doctor 修复/令牌生成都将拒绝操作,并优先提供 nix-openclaw 引导建议。(#78047) 感谢 @joshp123。 - 插件 SDK:新增通用的 `api.runtime.llm.complete` 主机补全辅助函数,具备运行时派生的调用者归属、配置门控的模型/代理覆盖、会话绑定的上下文引擎访问、请求级配置、审计元数据及标准化的用量归属。(#64294) 感谢 @DaevMithran。 - 控制 UI/执行审批:在审批提示中高亮显示可能需要额外审查的已解析 shell 命令片段。(#77153) 感谢 @jesse-merhi。 - 频道/iMessage:通过将在入站群组对话中转发为 `GroupSystemPrompt` 来支持 `channels.imessage.groups.<chat_id>.systemPrompt`(及 `groups["*"]` 通配符),其解析语义与 WhatsApp 完全一致(即在特定群组中将键定义为空字符串可抑制通配符回退)。使 iMessage 达到与 Discord、Telegram、IRC、Slack、GoogleChat 及已停用的 BlueBubbles 频道相同的按群组 `systemPrompt` 模式支持。修复 #78285。(#79383) 感谢 @omarshahine。 - iMessage:新增可选的入站消息追赶(catchup)功能,在下次启动时重放 Gateway 离线期间(崩溃、重启、Mac 休眠)接收的消息。通过 `channels.imessage.catchup.enabled: true` 启用;提供 `maxAgeMinutes`、`perRunLimit`、`firstRunLookbackMinutes` 和 `maxFailureRetries` 可调参数。在 OpenClaw 状态目录(`<openclawStateDir>/imessage/catchup/`)下持久化每账户游标,通过实时分发路径重放每一行数据,使白名单/群组策略/去重逻辑在重放和实时消息上行为一致;在达到 `maxFailureRetries` 后强制跳过卡住的 GUID 以防止游标停滞。延长持久化回声缓存的保留窗口,避免在重放时将间隙前的代理自身出站行重新作为入站消息喂入。包含重新生成的 `src/config/bundled-channel-config-metadata.generated.ts`,以便运行时 AJV 架构接受新的 `channels.imessage.catchup` 配置块。修复 #78649。(#79387) 感谢 @omarshahine。 - 频道/元宝:在官方外部频道目录中将内置的 `openclaw-plugin-yuanbao` npm 规范从 `2.11.0` 升级至 `2.13.0` 并刷新固定完整性哈希,以便全新安装和目录驱动的重新安装能获取新版元宝频道插件。(#79620) 感谢 @loongfay。 - 提供商/Mistral:在内置目录中添加支持推理的 `mistral-medium-3-5`。感谢 @sliekens。 - 文档/Mistral:补充 Medium 3.5 配置说明、本地推理冒烟测试用法、可调节推理参数,以及 `reasoning_effort="high"` 配合 `temperature: 0` 时 Mistral 返回 HTTP 400 的注意事项。 ### 破坏性变更 - 频道/iMessage:移除内置的 BlueBubbles 频道支持,并弃用 OpenClaw 中基于 BlueBubbles 的 iMessage 配置。现有的 `channels.bluebubbles` 配置必须迁移至 `channels.imessage`,使用已登录 Mac 上的 `imsg` 或 SSH 包装器;非 macOS 默认 `imsg` 配置现将提示远程 Mac 包装器引导信息。 ### 修复 - Agents/CLI:处理恢复的 CLI JSONL 输出,并限制 supervisor 输出缓冲,使恢复运行的输出保持可读,同时防止嘈杂的子进程输出无限增长。 - Agents/sandbox:在 sandbox-root 逃逸错误中包含容器工作区路径提示,同时保留缩短的主机工作区根路径。修复 #79712。感谢 @haumanto 和 @hclsys。 - 图像生成:在 OpenAI、Google、MiniMax、OpenRouter 和 Vydra 提供商请求中遵循配置的 web-fetch SSRF 策略,使 RFC2544 假 IP 代理的可选配置能正确传递到生成调用。修复 #79716。(#79765) 感谢 @hclsys。 - QQBot:通过环境代理路由网关 WebSocket 连接,使配置了 `https_proxy`、`HTTPS_PROXY` 或 `HTTP_PROXY` 的部署能够访问 QQ 网关。(#72961) 感谢 @xialonglee。 - Agents/subagents:将 `sessions_spawn` 的 `model: "default"` 视为默认模型回退,并忽略仅 ACP 的流目标用于原生子代理生成。修复 #72078。(#72101) 感谢 @xialonglee。 - Agents/failover:停止在认证配置文件或模型回退中重试助手预填充格式拒绝,直接暴露确定的提供商错误,而不是重新排队该通道。修复 #79688。(#79728) 感谢 @hclsys。 - Google/Gemini:通过 Google 提供商模板路径修复缺失的 Gemini 3 Flash 目录行,使支持图像的多媒体理解模型保持 `input: ["text", "image"]`,而不是回退到纯文本元数据。修复 #79750。(#79759) 感谢 @fenglanhua 和 @hclsys。 - Memory/QMD:当 QMD 报告路径/模式冲突但 `collection list` 缺乏可验证元数据时,提供手动清理过期集合的警告提示,避免仅通过 stderr 进行不安全重新绑定。引用 #71783。(#72297) 感谢 @MonkeyLeeT。 - Models/auth:使 `openclaw models status --check` 和仪表板认证健康检查遵循有效的认证配置文件顺序,同时保留过期配置文件的可见性。(#79685) 感谢 @nimbleenigma。 - Agents/failover:将裸 `stream_read_error` 流式传输失败归类为临时超时,从而触发配置的模型回退,而不是暴露原始传输错误。修复 #79689。(#79692) 感谢 @hekunwang。 - Agents/failover:在耗尽的回退摘要出现之前,持久化过载的认证配置文件冷却标记,使立即回退重试能够尊重已记录的冷却状态。 - Docs/Subagents:更正列出的子代理引导上下文文件,包含 `SOUL.md`、`IDENTITY.md` 和 `USER.md`。(#79470) 感谢 @lastguru-net。 - Backup:防止实时备份归档复制当前代理会话记录、cron 运行日志和交付队列,同时保留工作区锁/临时文件,并在跳过易失性文件时保持 `--json` 输出可解析。修复 #72249。(#72251) 感谢 @abnershang。 - Backup:将临时清单放置在所有备份资产之外,以便当 `TMPDIR` 解析到源路径内部(例如 `~/.openclaw/tmp`)时,`backup create --verify` 仍能通过,避免原本会触发 `Expected exactly one backup manifest entry, found 2` 的重复根清单问题。修复 #75007。感谢 @YaanFPV。 - OpenAI/Codex:在 OpenAI 初始化期间从 npm 安装 Codex 运行时插件,并为隐式 OpenAI 模型路由自动加载,同时保留手动 PI 运行时覆盖。修复 #79358。 - OpenAI/realtime voice:在实时响应仍处于活动状态时推迟 `response.create`,在 `response.done`/`response.cancelled` 后重试,并使 GA 输入转录/降噪默认值与 Codex 实时参考保持一致,以便 Discord/语音通话咨询结果能够恢复说话,而不是触发活动响应竞争条件。 - OpenAI/realtime voice:避免重复的插话取消请求,在 Discord 语音日志中记录实时模型中断/截断事件,并将 OpenAI 的无活动响应取消回复视为已完成取消,从而防止 Discord 语音会话在快速中断后挂起待处理语音。 - Agents/runtime:剥离 Claude 系列 OpenAI Responses 路由的尾部助手预填充,在回退前持久化提示词/助手配置文件冷却标记,并在沙盒逃逸诊断中显示配置的容器根目录。修复 #79688 和 #79712。感谢 @stainlu 和 @mushuiyu886。 - Gateway:除非持续负载有延迟的伴随证据,否则在快速健康/就绪/状态探测期间避免误报事件循环健康降级,同时保持硬延迟检测的即时性。(#77028) 感谢 @rubencu。 - Markdown:使块引用跨度不附加到段落末尾分隔符上。修复 #79646。 - Plugin SDK/LM Studio:从 LM Studio 流中恢复 Harmony 纯文本工具调用。修复 #78326。 - Control UI:在 `session_status(model=...)` 更改会话模型后刷新模型缓存。修复 #79613。 - Agents/context-engine:与回合后终结器共享循环钩子检查点,以防止消息被重放。修复 #79630。 - Codex app-server:在长时间运行的回合中保持原生钩子中继存活,以便在配置的运行窗口结束前保持 shell 和文件审批的可访问性。(#77533) 感谢 @rubencu。 - Gateway/macOS:清除被忽略的 SIGUSR1 重启状态,当刷新的 LaunchAgent 已提供预期版本时跳过冗余的包更新重启,并为 launchd 提供 10 秒节流加 20 秒关闭窗口,使更新重启不会遗留旧网关或干扰主管恢复。修复 #79577;引用 #78699 和 #60885。感谢 @BunsDev。 - Status/Codex:将 Codex-harness 的 `openai/*` 使用量路由至 OpenAI Codex 配额提供商,并将 CLI 状态使用量范围限定到默认代理认证存储,以便 `/status` 和 `openclaw status --usage` 再次显示 Codex 配额窗口。修复 #79312。感谢 @keshavbotagent。 - Gateway/agent:将会话键代理 ID 传入内联图像附件验证,以便在每个代理的新会话中,第一张图像使用代理的视觉能力模型覆盖,而不是纯文本系统默认值。修复 #79407。感谢 @pandadev66。 - 网关/维护:基于稳定的超额计数清理去重溢出,并防止活跃代理重试在缓存驱逐后启动重复运行。(#73841) 感谢 @thesomewhatyou。 - 控制面板 UI/子代理:从请求者记录中屏蔽内部 `subagent_announce` 交接提示,并隐藏传统的跨会话包装器行,使已完成的子代理结果不再在 WebChat 历史中暴露运行时上下文。(#79618) 感谢 @joshavant。 - Discord:保留 Discord 出站消息的用户名目标解析。(#79076) 感谢 @vincentkoc。 - 网关/会话:网关会话重置时轮换生成的转录路径,以补充每日轮转的转录持久化机制。(#79076) 感谢 @vincentkoc。 - 依赖项:将传递性 `fast-uri` 生产依赖固定为 `3.1.2`,使生产依赖审计不再解析存在漏洞的 `<=3.1.1` 范围。感谢 @shakkernerd。 - 插件/安装:当 OpenClaw 无法修复所需的插件本地 `node_modules/openclaw` 对等链接时,使管理的 npm 插件安装失败,从而防止该对等链接故障模式导致 `@openclaw/codex` 安装不可用。引用 #79462。感谢 @ai-hpc。 - 定时任务/代理:在 `isSameToolMutationAction` 中识别同一目标的 `edit`↔`write` 恢复机制,因此对某路径成功执行 `write` 会清除该路径上之前失败的 `edit`。当代理在 `edit` 和 `write` 之间自愈时,停止 cron 报告致命故障,同时保留同工具指纹匹配、阻止不同目标写入,并排除那些实际调用参数无法生成稳定 `path` 指纹片段的工具(包括 `apply_patch`)。修复 #79024。感谢 @RenzoMXD。 - 网关/Tailscale:新增可选配置 `gateway.tailscale.preserveFunnel`,当 `tailscale.mode = "serve"` 且外部配置的 Tailscale Funnel 路由已覆盖网关端口时,OpenClaw 在启动时跳过重新应用 `tailscale serve`,并跳过该次运行的 `resetOnExit` 清理,使操作员管理的 Funnel 暴露状态在网关重启期间保持存活。修复 #57241。感谢 @RenzoMXD。 - CLI/路由:当 `openclaw <name>` 不匹配 CLI 子命令时,优先检查插件工具清单,使 `lcm_recent` 等名称获得代理工具诊断提示,而非误导性建议将工具名添加到 `plugins.allow`。修复 #77214。感谢 @100yenadmin。 - QA实验室/对齐:在 `openclaw-release-checks.yml` 和 `qa-live-transports-convex.yml` 中,将实时 mock-openai 对齐基线从 `claude-opus-4-6`/`claude-sonnet-4-6` 提升至 `claude-opus-4-7`/`claude-sonnet-4-7`,候选替代版本从 `gpt-5.4-alt` 提升至 `gpt-5.5-alt`,以匹配 main 分支其他位置已使用的 Opus 4.7 / GPT-5.5 默认值。延续 #74290 的版本提升部分。感谢 @100yenadmin。 - QA实验室/场景:将 `approval-turn-tool-followthrough` 的逐回合回退超时时间从 20s/30s 提高至 60s,使冷启动 mock 网关对齐运行不会在审批回合链上出现不稳定。延续 #74290 的超时提升部分。感谢 @100yenadmin。 - 代理/压缩:当 Pi 返回空或无操作的压缩摘要时,在手动执行 `/compact` 后保留最近的上下文尾部,防止空白检查点替换活跃上下文。 - 原生命令:在工作区和代理回复引导之前处理斜杠命令,使 Telegram `/status` 及其他纯命令型原生回复无需等待完整的代理回合设置。 - 插件/Nix:在 `OPENCLAW_NIX_MODE=1` 下允许加载位于 `/nix/store` 下的外部配置插件根目录,同时保持对外部插件硬链接拒绝的原有行为不变。感谢 @joshp123。 - Nextcloud Talk:在设置中包含必需的机器人 `response` 功能,在发送被拒时说明缺少 `--feature response` 的原因,并在医生诊断/状态检查中暴露缺失的响应能力。修复 #78935。(#79657) 感谢 @joshavant。 - fix(discord):限制用户白名单名称解析 [AI]。(#79002) 感谢 @pgondhi987。 - fix(msteams):限制启动时用户白名单解析 [AI]。(#79003) 感谢 @pgondhi987。 - 基础设施/获取超时:从 music-generate 参考获取和 Matrix 受保护重定向传输中,将 `operation` 和 `url` 上下文传递给 `buildTimeoutAbortSignal`,使 `fetch timeout reached; aborting operation` 警告携带可操作的结构化字段而非裸文本行。修复 #79195。感谢 @pandadev66。 - 强化 macOS Shell 包装器白名单解析 [AI]。(#78518) 感谢 @pgondhi987。 - macOS/配置:在直接替换前拒绝陈旧或具有破坏性的应用回退配置写入,并将被拒载荷保留为私有审计工件,从而防止 `gateway.mode`、元数据和认证被静默覆盖。修复 #64973 和 #74890。感谢 @BunsDev。 - 网关/macOS:在生成的 LaunchAgent 服务 PATH 和服务审计期望中包含 Apple Silicon Homebrew 的 bin 和 sbin 目录,使 `openclaw gateway restart` 能保持 Homebrew Node 安装路径可达。修复 #79232。感谢 @BunsDev 和 @TurboTheTurtle。 - 医生诊断/OpenAI:停止将已迁移的 `openai-codex/*` 路由固定到 Codex 运行时,使混合提供商代理继续为 MiniMax、Anthropic 及其他非 OpenAI 模型切换保留自动 PI 路由。 - 网关/macOS:`openclaw gateway stop` 现在默认使用 `launchctl bootout` 而非无条件调用 `launchctl disable`,以便在意外崩溃后 KeepAlive 自动恢复仍能生效;若需手动停止后重启仍保持禁用,请使用新的 `--disable` 标志。修复 #77934。感谢 @bmoran1022。 - 网关/macOS:`repairLaunchAgentBootstrap` 不再启动已运行的 LaunchAgent,防止在对健康网关执行修复时引发不必要的服务重启和会话断开。修复 #77428。感谢 @ramitrkar-hash。 - 网关/macOS:`openclaw gateway stop --disable` 现在即使在前一次 bootout 导致服务未加载的情况下,也会持久化 LaunchAgent 禁用状态位,确保显式保持禁用的路径可靠。(#78412) 感谢 @wdeveloper16。 - CLI/status:保持 `openclaw status --json` 精简,不启用基于清单的频道发现,以便配置的频道检查不会反复重新扫描插件元数据。修复 #79129。 - 控制面板 UI/聊天:从聊天模型目录中隐藏已停用和非公开的 Google Gemini 模型 ID,并将裸 `gemini-3-pro` 别名路由至 Gemini 3.1 Pro Preview,而非已停用的 Gemini 3 Pro Preview。感谢 @BunsDev。 - CLI/infer:规范化 `infer model run --model` 中仅大小写不同的目录模型引用,使混合大小写的 provider/model 字符串解析为规范目录项,而非报错 `Unknown model`。(#78940) 感谢 @ai-hpc。 - CLI/infer:允许显式本地 `infer model run --model <provider/model>` 探测在 provider 写入配置前使用精确的内置静态目录行,将缺失凭据显示为认证错误而非 `Unknown model`。 - CLI/install:默认拒绝以 root 身份运行会修改状态的 OpenClaw CLI,保留显式 `OPENCLAW_ALLOW_ROOT=1` 逃生通道以支持有意的 root/容器使用,并更新 DigitalOcean 安装指南以非 root 用户运行 OpenClaw。修复 #67478。感谢 @Jerry-Xin 和 @natechicago。 - 自动回复/媒体:在暂存沙箱媒体时从 `PATH` 解析 `scp`,使非标准 OpenSSH 安装也能复制远程附件。 - 智能体/PI:将 PI 原生的 OpenAI 兼容默认流通过 OpenClaw 边界感知传输层路由,使本地兼容的模型运行保留 API 密钥注入和传输策略。 - 网关/媒体:对托管的出站图像字节要求经过认证的 owner 或 admin 上下文,而非信任请求者会话头。 - 诊断工具/gateway:当守护进程安装计划已选择受支持的 Node 运行时版本时,避免重复的 Node 运行时警告。 - 网关/nodes:忽略来自在线节点的非字符串格式能力条目,而非在列出节点目录时抛出异常。 - 网关/pairing:在批准设备作用域升级时保留故意缩小的 role-token 作用域,而非重新授予整个已批准的基础范围。 - Telegram/ACP:通过将仅最终输出的 ACP 内容作为最终文本发送(而非瞬态 Telegram 预览块),使绑定聊天的 ACP 回复保持持久化。感谢 @shakkernerd。 - Telegram:将回复消息填充为持久化的最近优先回复链,使智能体能够看到观察到的父级文本、媒体引用、标题、发送者、时间戳和嵌套回复,而非仅靠浅层回复 ID 猜测。 - 网关/watch:在 `pnpm gateway:watch:raw` 中默认禁用 `OPENCLAW_TRACE_SYNC_IO`,使监听模式除非显式请求,否则避免产生嘈杂的 Node 同步 I/O 堆栈跟踪。 - Codex app-server:在强制终止托管的 app-server 前关闭 stdio stdin,以匹配 Codex 单客户端关闭行为,并避免成功运行后出现未妥善处理的 CLI 退出。 - CLI/Codex:在短生命周期 CLI 关闭期间释放已注册的智能体 harness,使成功的 Codex 支持 `agent --local` 运行不会遗留 app-server 子进程。 - 智能体/Codex:为一次性 OpenAI 模型覆盖自动启用 Codex harness 插件,使 `openclaw agent --local --model openai/...` 不会因未注册的 `codex` harness 而失败。 - 网关/live tests:对显式带 provider 限定的实时模型过滤器避免完整模型注册表枚举,防止 `.profile` OpenAI 网关配置文件运行在 provider 分发前挂起。 - 网关/status:显示 CLI 和网关运行时版本,当版本不一致时警告过时的 PATH/全局包装器,并将过时包装器检查添加到新版配置警告中。引用 #79091。感谢 @RamaAditya49 和 @sallyom。 - Google/Gemini:使用精简的首次响应负载重试停滞的 Gemini 3 预览直接 API 密钥流,并在直接 Google 和 Gemini CLI 提供商间共享 Gemini 工具模式清理逻辑,使使用编码工具的主会话能在 LLM 空闲看门狗触发前恢复。(#79668) 感谢 @joshavant。 - 提供商:保留非 OK 状态的 `text/event-stream` 响应体,使提供商 HTTP 错误保留其 JSON 详情,而非降级为通用流式传输失败。修复 #78180。 - 网关/auth:使显式 `trusted-proxy` 模式在身份检查失败时安全关闭,而非接受本地密码回退凭据。修复 #78684。 - 活跃内存:将 Google Chat `spaces/...` 对话 ID 视为作用域目标而非可运行频道名称,使回忆运行不再因捆绑插件 dirName 验证失败而报错。修复 #78918。 - 活跃内存:使 `/active-memory status` 遵循配置的智能体白名单,而非对禁用回忆功能的智能体进行报告。修复 #78986。 - Mistral:规范化结构化 OpenAI 兼容补全内容块,使思考对象不再以 `[object Object]` 形式持久化为可见回复文本。修复 #78846。 - 工具/会话状态:为 `session_status({"sessionKey":"current"})` 渲染活跃的心跳/运行模型,而非回退到持久化会话默认值。修复 #77493。 - 诊断工具/secrets:允许安全的继承 exec SecretRef `passEnv` 名称(如 `HOME`),同时仍阻止危险的环境钩子。修复 #78216。 - 聊天命令:使 `/model default` 重置会话模型覆盖,而非将其视为字面模型名称。修复 #78182。 - 定时任务:使被拒绝的 `payload.model` 错误显示配置的 `agents.defaults.models` 白名单,而非重复回显被拒绝的模型。修复 #79058。 - 智能体/子智能体:当 announce-summary 模型运行因回退冷却耗尽而失败时,重试父级唤醒公告,而非在首次遇到临时提供商过载时丢弃唤醒。引用 #78581。 - 提供商/network:在为模型提供商请求启用可信环境代理模式前,优先遵守 IPv4 CIDR 和八位通配符 `NO_PROXY` 条目(如 `100.64.0.0/10` 和 `100.64.*`)。修复 #79030。 - 技能(Skills):将技能监听器的目录遍历深度限制为与技能发现相同的深度,以防止在配置的根技能下的大型非技能目录树在启动时耗尽文件描述符。修复 #75501。感谢 @wzq-xzwj。 - 文档/Docker:为 Docker Desktop 在共享网络 `openclaw-cli` 边车容器中的 DNS 故障记录一种本地 Compose 覆盖配置方案,在保持默认 Compose 配置安全加固的同时,允许用户选择启用以解除 `openclaw plugins install` 的阻塞。修复 #79018。感谢 @Jason-Vaughan。 - 安装程序:当 npm 在父级 Shell 的 PATH 范围外安装 `openclaw` 时,后续命令将打印已解析的二进制文件路径,而不是让用户在一个会报 `command not found` 的 Shell 中运行 `openclaw`。修复 #72382。感谢 @jbob762。 - 插件/运行时:在捆绑插件间共享 MIME 和 JSON Schema 辅助函数,同时保留标准的媒体 MIME 推断、浏览器 URL 通配符语义、迁移主目录路径解析、QA 请求限制响应以及无扩展名文本文件预览功能。 - 智能体/内存刷新:在触发刷新的压缩操作后持久化递增前的压缩计数器,使连续符合条件的压缩周期执行 memoryFlush 而非交替执行。修复 #12590。参考 #12760、#26145 和 #46513。感谢 @Kaspre、@lailoo、@drvoss、@Br1an67 和 @dial481。 - 计算插件回调授权动态化 [AI]。(#78866) 感谢 @pgondhi987。 - 网关/认证:允许配置为 `gateway.auth.mode: "none"` 的回环后端 RPC 客户端仅对本地非浏览器后端连接跳过设备身份验证,恢复子智能体生成和网关工具功能,同时不开放远程或浏览器来源的绕过漏洞。修复 #75780。感谢 @yozakura-ava。 - 画布(Canvas)插件:在 `openclaw doctor --fix` 将其迁移至 `plugins.entries.canvas.config.host` 之前,保持旧版根级 `canvasHost` 配置有效;将 Canvas/A2UI 客户端迁移至网关协议 v4 插件接口,并刷新生成的 A2UI 包哈希值,以确保正常构建保持整洁。 - 飞书(feishu):为动态智能体遵循配置写入策略 [AI]。(#78520) 感谢 @pgondhi987。 - 修复(skill-workshop):遵循工具建议的待审批状态 [AI]。(#78516) 感谢 @pgondhi987。 - BytePlus:将目录中的 Kimi K2.5 和 Kimi K2 Thinking 标记为具备推理能力,将其输出上限提升至 32k tokens,并补充 Kimi 缓存读取定价信息。修复 #54149。 - 控制面板 UI/聊天:在发送下一条聊天消息前,等待正在进行的模型下拉菜单补丁生效,使即时发送使用选定的会话模型,而非与之前的覆盖配置产生竞态条件。修复 #54240。 - 原生聊天:为 iOS/macOS 选择器解码网关提供的思考(thinking)元数据,使 `adaptive`、`xhigh` 和 `max` 等特定提供商级别正常显示,同时避免泄露不受支持的默认模型选项。感谢 @BunsDev。 - 智能体/压缩:将摘要输出的保留令牌数限制为所选模型的 `maxTokens`,以防止 1M 上下文的 Anthropic 压缩操作请求超出 API 允许的输出量。修复 #54383。 - 控制面板 UI/登录:将原始的连接失败提示替换为结构化的、可操作的登录指导,涵盖认证、配对、不安全 HTTP、来源、协议和传输失败等情况。感谢 @BunsDev。 - 智能体/工具:当选定节点已知处于断开状态时,在 `system.run` 之前拦截 `exec host=node` 并返回可操作的重新连接提示,而非直接抛出原始节点调用失败错误。感谢 @BunsDev。 - 智能体/模型:接受旧版 `anthropic-cli/*` 模型引用作为 Claude CLI 运行时引用,避免模型解析失败并提示 `Unknown model`。感谢 @BunsDev。 - 智能体/工具:将限制性配置文件的工具段警告范围限定在配置中仍缺少 `alsoAllow` 工具的部分,使已重新允许的 filesystem 工具不会让仅执行(exec-only)的修复看起来比实际更宽泛。感谢 @BunsDev。 - 智能体/工具:当智能体配置文件未自行配置全局 `tools.exec` 或 `tools.fs` 段时,避免向纯消息型智能体发出相关继承警告。感谢 @BunsDev。 - Codex 动态工具:以与 Pi 工具策略相同的方式规范化运行时 `toolsAllow` 条目,使 `bash` 和 `apply-patch` 等别名仍能正确暴露预期的 OpenClaw 工具。感谢 @BunsDev。 - 记忆/梦境:从叙事型子智能体转录中读取 OpenAI 风格的 `output_text` 助手部分,防止轻量阶段的“梦境日记”条目因被视为空而被丢弃。感谢 @BunsDev。 - OpenAI 兼容提供商:在分发至仅聊天端点前,通过剥离工具负载字段来遵循 `compat.supportsTools=false` 配置。修复 #74664。 - OpenAI 兼容提供商:对原生 OpenAI 传输负载应用模型声明的 unsupported tool-schema 关键字剥离,并将 Fireworks Kimi K2.5 标记为拒绝 `not` 模式。修复 #75467。 - OpenAI 兼容网关:即使提示文本中不包含图片文件引用,也对通过请求内容提供的图片进行清理,防止超大附件负载绕过调整大小/丢弃流水线。修复 #59913。 - 认证配置:规范化从 `auth-profiles.json` 加载的内联 API 密钥和令牌,使被掩码或富文本格式的凭证在构建 HTTP 头部时作为认证错误失败,而非导致程序崩溃。修复 #77624。 - llm-task:在嵌入式分发前解析配置的模型别名,使 `model="gemini-flash"` 及其他别名路由至预期提供商,而非智能体默认提供商。修复 #54166。 - 媒体生成:通过已注册的提供商模型元数据解析包含斜杠的仅模型覆盖项(如 `fal-ai/flux/dev`),防止 FAL 图像/视频模型被错误解析为提供商 `fal-ai`。修复 #77444。 - CLI 后端:在认证配置 ID 轮换时保持带版本号的 OAuth 身份匹配可复用,使 Claude CLI 会话在相同账户的 OAuth 刷新或配置别名更改期间不会重置并丢失连续性。修复 #78541。 - Amazon Bedrock:在发起 Bedrock 模型、发现和嵌入请求前刷新共享的 AWS 配置文件/配置文件凭证,使长期运行的网关进程无需重启即可获取续期的配置文件凭证。修复 #77551。 - Amazon Bedrock:将命名的 `aws-sdk` 认证配置文件视为配置路由元数据而非已存储的凭据,并让 `doctor --fix` 将旧版标记从 `auth-profiles.json` 中移出。修复 #69708。 - Anthropic:在本地拒绝带有大写提供商前缀的前向兼容模型 ID,而不是将格式错误的动态 ID 发送到上游。修复 #73715。 - OpenAI/embeddings:在单次和批量 embedding 请求中传递配置的输出维度,以便内存 embedding 索引可以请求更小的向量。修复 #55126。 - CLI/infer:在模型运行请求前将 HEIC/HEIF 图像文件标准化为 JPEG,以避免因提供商拒绝 Apple 图像容器格式而失败。修复 #50081。 - CLI/infer:当可选图像处理工具无法在模型运行请求前解码 HEIC/HEIF 输入文件时,回退使用 macOS `sips`。参考 #50081。 - OpenRouter:保持默认 `openrouter/auto` 模型引用为标准格式,同时防止 TUI 和控制 UI 目录选择器显示或提交 `openrouter/openrouter/auto`。修复 #62655。 - Status/Claude CLI:当不存在本地认证配置文件时,对正常运行的 Claude CLI OAuth 运行时会话显示 `oauth (claude-cli)` 而非 `unknown`。修复 #78632。感谢 @gorkem2020。 - Memory search:当向量评分不可用或低于配置的最小分数时,保留仅基于关键词的混合 FTS 匹配结果,确保精确的词法命中不会因加权最小分数过滤而被丢弃。 - Exec approvals/node:允许受信任的后端节点调用在原始请求连接变更后完成无设备 Control UI 审批,同时保持对 node、command、cwd、env 和 allow-once 重放绑定的强制执行。修复 #78569。感谢 @naturedogdog。 - Agents/subagents:将后台完成交付保留在请求者-代理移交/队列重试路径上,而不是直接原始发送子结果,并从队列出站重试中剥离子结果包装器或 OpenClaw 运行时上下文脚手架。修复 #78531。感谢 @EthanSK。 - Sandbox:当 JavaScript 评估权限变更时重新创建缓存的浏览器桥接,跟踪失败的修剪移除操作以便重试,并实现跨设备目录移动时的“先复制后提交”机制,避免在失败时部分清空源目录。 - CLI/completion:为 `openclaw completion --install` 写入的 shell 配置文件 source 行添加文件存在性检查(bash/zsh 使用 `[ -f ... ] && source ...`,fish 使用 `test -f ...; and source ...`),以便卸载 OpenClaw 后新登录的 shell 不再因缺少补全缓存而报错。(#78659) 感谢 @sjf。 - Telegram:当 Telegram 拒绝主题 ID 时,使私有主题发送直接失败,而不是将其作为普通私聊重试,从而保持私有主题 `message_thread_id` 路由的完整性。修复 #79455。(#78575) 感谢 @tmimmanuel。 - Discord/groups:指示群聊代理在消息是发给其他人时保持沉默,仅在被邀请或需要纠正关键事实时才回复。(#78615) - Discord/groups:告知 Discord 频道代理将裸 URL 包装为 `<https://example.com>` 格式,以防止链接预览展开为未经请求的嵌入内容。(#78614) - Agents/fallback:在会话写入锁超时时快速失败,而不是尝试回退模型来处理本地文件争用。修复 #66646。感谢 @sallyom。 - Browser/SSRF:当只读操作(快照/截图/交互)被 SSRF 防护拒绝时,停止关闭用户拥有的 Chrome 标签页——现在仅 OpenClaw 发起的导航在策略拒绝时才会关闭。感谢 @scotthuang。 - Agents/Gateway:对实时执行命令输出事件进行节流和上限控制,防止嘈杂的工具运行淹没 Gateway WebSocket 客户端或导致 RPC 处理饥饿。(#78645) 感谢 @joshavant。 - Memory Wiki:在刷新生成的 Related 块时跳过空内容和仅含空白符的源页面,防止空白页面被重写为仅含 Related 的存根。修复 #78121。感谢 @amknight。 - Telegram:防止仅依赖消息工具的 Codex 轮次发送通用的静默回复回退文本,以便在入站去重后私有最终回复保持私有。感谢 @rubencu。 - Telegram/sessions:即使缺少运行器追踪记录,也将已交付的嵌入最终回复补全到会话 JSONL 中,确保工具调用后的 Telegram 回复不会从持久化记录中消失。修复 #77814。(#78426) 感谢 @obviyus, @ChushulSuri 和 @DougButdorf。 - Cron/heartbeat:允许受限的 cron 触发任务重新读取自身状态和当前作业列表元数据,防止心跳 STATUS 新鲜度检查过期,同时保留仅自删除的修改限制。修复 #78208。感谢 @amknight。 - Channels/cron:忽略指向已完成隔离 cron 运行会话的陈旧运行时对话绑定,以便后续私聊回退到正常路由,而不是重用已关闭的 cron 任务提示。修复 #78074。感谢 @amknight。 - ACP:在后台任务进度摘要中保留流式分块边界,防止 CJK 文本、路径、URL 和标识符被错误地用合成空格分割。修复 #78312。感谢 @amknight。 - Agents/DeepSeek:屏蔽提供商私有的 DSML 传输语法(tool-use-error、tool-call、function-call 阴影块),防止其泄露到助手可见文本中;原生 `delta.tool_calls` 仍作为唯一的权威工具调用来源。(#78331) 感谢 @samzong。 - Agents/subagents:当派生的目标代理使用 `systemPromptOverride` 时,保留委托的任务提示,以便 `sessions_spawn(mode: "run")` 的子运行仍能查看其分配的任务。修复 #77950。感谢 @amknight。 - Node/Windows:当西班牙语本地化的 `schtasks` 报告 `Acceso denegado` 时,回退使用启动文件夹启动器,以匹配现有的访问拒绝回退路径。修复 #77993。感谢 @jackonedev。 - Agents/compaction:将可见的自定义消息、bash 和分支摘要条目视为真实的对话锚点,以便安全模式不会为包含实质性工具工作的 cron 和分轮次会话写入空白的回退摘要。修复 #78300。感谢 @amknight。 - 网络/运行时:在无代理超时引导期间避免导入 Undici 的包调度器,以便带有显式 Content-Length 的外部渠道插件 fetch 请求保持正常工作。修复 #78007。感谢 @shakkernerd。 - 智能体/TTS:当块流式传输关闭时,直接发送携带媒体的块回复,以便附加在最终文本回复上的智能体 `tts` 工具音频能够送达,而不是在最终 Telegram/媒体送达前被消耗。感谢 @Conan-Scott。 - 网关/性能:在热只读状态、渠道、认证、技能和嵌入式智能体设置路径中复用当前兼容的插件元数据快照,避免在网关活动期间重复进行同步插件元数据扫描。修复 #77983。感谢 @shakkernerd。 - 插件:通过解析后的运行时工具名称分派由描述符支持的缓存工具(针对未命名工厂),修复共享清单契约暴露了同级工具但在执行时失败的多工具插件。修复 #78671。感谢 @zanni098。 - 插件/更新:在任何 npm 更新修改共享托管 npm 树后,修复所有已记录 npm 插件的插件本地 `openclaw` 对等链接,以便定向或批量更新不会导致 Codex、Discord 或 Brave 的 SDK 导入被裁剪。(#77787) 感谢 @ProspectOre。 - Codex 运行环境:在原生 `openai/*` Codex 运行时运行和 `/status` 上下文报告中尊重 `models.providers.openai-codex.models[].contextTokens` 配置,以便基于订阅的 Codex 智能体使用配置的 OAuth 上下文上限,而不会超出运行时模型窗口。修复 #77858。感谢 @lilesjtu。 - 会话清理:新增 `openclaw sessions cleanup --fix-dm-scope` 命令,以便将 `session.dmScope` 返回给 `main` 的操作员可以进行干运行并退役过期的直接 DM 会话行,同时将对话记录保留为已删除的归档。修复 #47561 和 #45554。感谢 @BunsDev。 - 诊断工具/Codex:将遗留的 `openai-codex/*` 路由修复为标准的 `openai/*`,默认保持 Codex 上的 OpenAI 智能体回合,忽略过期的全智能体/会话运行时固定,保留显式的提供程序/模型运行时策略,并将遗留运行时模型引用迁移到模型范围的运行时条目。感谢 @vincentkoc。 - 视频生成:为缓慢的 fal/MiniMax 队列支持作业等待最长 20 分钟,停止转发不受支持的 Google Veo 生成音频选项,并将 MiniMax `720P` 请求标准化为其支持的 `768P` 分辨率,附带常规的覆盖警告/详情,而不是回退失败。 - 渠道/持久化送达:在使用持久发送时保留渠道特定的最终回复语义,包括 Telegram 选中的引用和静默错误回复,以及 WhatsApp 消息发送取消。 - 渠道/消息生命周期:从消息回执构建遗留渠道送达结果,并将回执添加至 BlueBubbles、飞书、Google Chat、iMessage、IRC、LINE、Nextcloud Talk、QQ 机器人、Signal、群晖 Chat、Tlon、Twitch、WhatsApp、Zalo 和 Zalo Personal 的发送结果以及所有者路径回复送达中,同时添加至 Discord、Matrix、Mattermost、Slack 和 Teams 的发送结果中,并保留现有的消息 ID 兼容性。 - iMessage:在发送前通过 iMessage 出站清理器运行持久化最终回复,以匹配直接自动回复送达,并防止助手内部结构通过队列送达泄露。 - CLI/插件:处理 `plugins uninstall` 确认提示期间 stdin 关闭的情况,并退出状态码 1 并提供可操作的 `--force` 指导,而不是因未解决的顶层 await 导致 Node 退出码 13 崩溃。修复 #73562。(#73566) 感谢 @ai-hpc。 - 控制 UI/会话:默认隐藏磁盘发现的未注册智能体会话,并在聊天刷新前从恢复的未配置智能体会话键回退,防止已删除智能体的存储重新打开错误的 workspace。修复 #41685。感谢 @BunsDev。 - Slack:防止健康监控恢复停止在渠道停止超时后污染手动停止状态,允许 Socket Mode 账户在事件循环停滞后重新连接,而不是保持死锁状态直到网关重启。修复 #77651。感谢 @Gusty3055。 - Codex 应用服务器:在测量活跃回合存活状态时忽略账户和速率限制通知,并在可见的消息工具送达后抑制重复的通用超时回复,以便丢失的完成信号不再在已送达回复后保持 Telegram/Discord 回合活跃。(#79667) 感谢 @joshavant。 - 控制 UI/网关:为浏览器 WebSocket 会话保留已验证的受信任代理操作员作用域,以便 nginx/Authelia 部署能够加载聊天历史、模型、会话、节点和日志,而不是因缺少 operator.read 而失败。修复 #78508。(#79643) 感谢 @joshavant。 - Cloudflare AI 网关:当运行时认证创建自定义会话流时,保留边界感知的 Anthropic Messages 传输,保持网关运行期间上游 x-api-key 标头完整。(#79673) 感谢 @joshavant。 - Webhooks/Gmail/Windows:在设置和 watcher 生成前解析 `gcloud`、`gog` 和 `tailscale` 的 PATH/PATHEXT 垫片,为长期运行的 `gog serve` 进程使用 Windows 安全的 `.cmd` 包装器。(#74881, 修复 #54470) 感谢 @Angfr95。 - 控制 UI/聊天:在 `HEARTBEAT_OK` 确认历史、流、增量和最终事件进入对话视图前将其抑制,以便重复的心跳空操作回合不会堆积嘈杂的对话气泡。感谢 @BunsDev。 - 智能体/技能:对单技能和多技能提示选择均要求精确的 `<location>` 技能路径,以便智能体不会猜测或硬编码技能文件路径。(#74161) 感谢 @lanzhi-lee。 - 智能体/技能:从沙箱工作区副本重建沙箱非只读运行技能提示,以便 `<available_skills>` 不再指向仅存在于主机的 `~/.openclaw/skills` 路径。修复 #50590。感谢 @kidroca 和 @sallyom。 - 代理/媒体:告知异步音乐和视频完成代理正常最终回复是否为私密状态;当完成代理仍仅写入私密最终回复时,直接将完成回退消息发送至仅消息工具群组/频道路由,以防止生成的媒体内容在交付协议后消失。 - CLI/更新:将损坏或无法加载的托管插件报告为更新后警告,而不是禁用它们或将成功的 OpenClaw 包更新变为失败结果。感谢 @vincentkoc 和 @Patrick-Erichsen。 - 更新/重启:使用服务环境探测托管 Gateway 重启,并添加一个 Docker 产品通道以测试候选拥有的 `openclaw update --yes --json` 重启流程,从而确保基于 SecretRef 的本地 Gateway 认证不会在模拟重启检查中回退。感谢 @vincentkoc。 - Gateway/会话:在构建会话列表行时缓存所选模型覆盖的解析结果,使 `openclaw sessions` 和控制 UI 的会话列表在模型密集型存储中保持响应。(#77650) 感谢 @ragesaq。 - Gateway/诊断:使卡住的会话恢复以结果为导向并受生成保护,添加 `diagnostics.stuckSessionAbortMs`,并输出结构化的恢复请求/完成事件,使过期或跳过的恢复不再表现为成功中止。 - 消息传递:在发送前将组装好的频道轮次最终回复入队,以减少在助手完成和频道交付之间 Gateway 重启时的响应丢失。引用 #77000。 - 代理/重放历史:在向提供商发送转录内容前,丢弃内容为空或仅包含流错误哨兵的尾部助手轮次,从而使预填充严格型提供商(如 github-copilot/claude-opus-4.6)在会话最后一轮在生成内容前出错时,不再以 `400 The conversation must end with a user message` 拒绝请求。引用 #77228。(#77287) 感谢 @openperf。 - 代理/会话文件修复:在磁盘修复过程中丢弃角色缺失、`null` 或为空的 `type: "message"` 条目,从而使累积了空角色 JSONL 损坏的会话(如 #77228 中的 935+ 个损坏条目)得到彻底清理,而不是带入修复后的文件中。引用 #77228。(#77288) 感谢 @openperf。 - 医生/设备配对:当该角色不再被 Gateway 配对记录批准时,停止为过期的本地缓存设备认证建议 `openclaw devices rotate --role <role>`,从而避免“医生”工具引导用户执行必须被拒绝的命令。(#77688) 感谢 @Conan-Scott。 - Ollama/思考:通过公共提供商策略工件也暴露轻量级 Ollama 提供商思考配置文件,从而使具备推理能力的 Ollama 模型(如 `ollama/deepseek-v4-pro:cloud`)在完整插件运行时激活前也能保持 `/think max` 可用。(#77617, 修复 #77612) 感谢 @rriggs 和 @yfge。 - Codex/应用服务器:稳定跨重新镜像轮次的转录镜像去重,使重新排序的快照不再丢弃推理条目或重复助手回复。引用 #77012。(#77046) 感谢 @openperf。 - 代理/认证配置文件:不将请求形状(`format`)拒绝记录为认证配置文件健康故障,从而使单个会话的转录形状错误(如预填充严格型 400 "conversation must end with a user message")不再触发配置文件级别的冷却,进而阻止共享同一认证配置文件的其他所有健康会话。引用 #77228。(#77280) 感谢 @openperf。 - CLI/更新:当 `git fetch` 失败时立即停止开发通道源更新,从而防止标签冲突在 Gateway 仍运行旧版本时,使预检、变基或构建步骤继续针对过期引用运行。(#77845) 感谢 @obviyus。 - 配置/恢复:在 POSIX 主机上因可疑读取进行备份恢复后,将 `openclaw.json` 的权限通过 chmod 恢复为仅所有者(`0600`),从而防止之前全局可读的配置模式延续到刚恢复的含凭据配置中。(#77488) 感谢 @drobison00。 - 记忆/梦境:在 `daily-ingestion.json` 中持久化每个每日笔记的最后梦境摄入日历日,从而使未更改的笔记仍能在每个梦境日重新摄入一次,以生成向深层阈值推进的信号。修复 #76225。(#76359) 感谢 @neeravmakwana。 - 代理/嵌入:当静默的 text_end 块未生成块回复时,保持 message_end 安全交付处于激活状态,修复 Telegram/论坛回复丢失问题。修复 #77833。(#77840) 感谢 @neeravmakwana。 - 安装/后安装:当 `EACCES`/`EPERM` 阻止删除属于其他用户的共享 `/tmp/node-compile-cache` 条目时,跳过嘈杂的编译缓存修剪警告。修复 #76353。(#76362) 感谢 @RayWoo 和 @neeravmakwana。 - 代理/消息传递:当关闭详细失败输出时,将 CLI 子进程看门狗/轮次超时消息展示给聊天用户,而不是将其折叠为通用的外部运行失败描述。修复 #77007。(#77015) 感谢 @neeravmakwana。 - 代理/会话:在嵌入式 Pi 运行后,仅当 Pi 尚未持久化等效的尾部助手条目时,才将助手可见的回复文本追加到会话 JSONL 中,且不重新镜像 Pi 拥有的用户提示。修复 #77823。(#77839) 感谢 @neeravmakwana。 - 插件/CLI:在列出频道目录条目时加载安装记录账本,从而使通过 npm 安装的第三方频道插件通过 `openclaw channels login`/`channels add` 解析,而不是以 `Unsupported channel` 失败。(#77269) 感谢 @pumpkinxing1。 - 记忆维基/安全:在共享内存的 `wiki_search` 和 `wiki_get` 上强制执行会话可见性,使沙盒子代理无法读取兄弟或父会话的转录内容。修复 GHSA-72fw-cqh5-f324。感谢 @zsxsoft。 - 执行审批:在 Linux、macOS 以及 Windows 上强制执行白名单 `argPattern` 参数限制,从而使类似 `{ pattern: "python3", argPattern: "^safe\.py$" }` 的条目在非 Windows 主机上不再静默降级为仅路径匹配。(#75143) 感谢 @eleqtrizit。 - Agents/compaction:每当 OpenClaw 实际拥有安全压缩(safeguard compaction)时(包括由提供商支持的安全模式),均禁用 Pi 自动压缩,从而使 Pi 和 OpenClaw 不再争夺长会话压缩。修复 #73003。(#73839) 感谢 @bradhallett。 - Telegram/streaming:通过停止编辑中的流式消息来结束文本回复,而不是发送第二个答案气泡,从而防止 Telegram 客户端重复流式最终响应。(#77947) 感谢 @obviyus。 - web_search/Brave:修复当 Brave 作为外部插件安装且显式配置了 `tools.web.search.provider: "brave"` 时的提供商选择问题——启动时冗余的提供商重新解析可能发生竞态条件并返回空列表,导致出现虚假的 `WEB_SEARCH_PROVIDER_INVALID_AUTODETECT` 警告,并将显式配置的提供商视为缺失。修复 #77676。感谢 @openperf。 - Doctor/plugins:在运行 `openclaw doctor --fix` 期间,从 load-path 渠道插件中探测 doctor 契约,以便在验证之前运行插件拥有的旧版配置修复。(#77477) 感谢 @jalehman。 - Dependencies:将传递依赖 `basic-ftp` 升级至 5.3.1,使运行时锁文件不再包含生产依赖审计中标记为有漏洞的 5.3.0 版本。(#78637) 感谢 @sallyom。 - Hooks/cron:记录返回的 `/hooks/agent` 隔离运行错误和失败的 cron 任务,并附带 cron 诊断摘要,使被拒绝的 `payload.model` 值可见,而不是看起来像已接受但缺失的运行记录。修复 #78597。(#78655) 感谢 @kevinslin。 - Managed proxy/security:在边界检查中对原始 socket 调用点和代理运行时变更进行分类,确保新的直接出站流量或未管理的代理状态变更必须经过显式审查才能生效。(#77126) 感谢 @jesse-merhi。 - Channels/iMessage:在默认日志级别下暴露静默的群组白名单丢弃行为。当设置 `channels.imessage.groupPolicy: "allowlist"` 但未配置 `channels.imessage.groups` 块时,在监控启动时为每个账户输出一次 `warn` 警告;当运行时网关丢弃特定群组时,为每个 `chat_id` 输出一次 `warn` 警告,并指明需要添加的确切 `channels.imessage.groups[...]` 键以允许该群组。修复 #78749。(#79190) 感谢 @omarshahine。 - WhatsApp:阻止由 Gateway 发起的出站回显在 `openclaw channels status` 中推进入站活动,使出站自发送不再被误认为已处理的入站消息。修复 #79056。(#79057) 感谢 @ai-hpc 和 @bittoby。 - Gateway/nodes:当较旧的同一节点 WebSocket 在重连后关闭时,保留活动的节点注册表会话并触发所有权处理。(#78351) 感谢 @samzong。 - Browser/downloads:在暂存最终文件之前,将显式和托管浏览器下载输出目录通过 `fs-safe` 验证,从而在写入前拒绝符号链接的输出根目录。(#78780) 感谢 @jesse-merhi。 - Agents/PI:在中止的嵌入式运行清理期间跳过空闲等待,使停止或超时的运行任务能够清除待处理的工具状态并迅速释放会话锁。(#74919) 感谢 @medns。 - Agents/current-time:将 UTC 拆分为独立的 `Reference UTC:` 提示行,使本地 `Current time:` 始终锚定在用户的时区。(#42654) 感谢 @chencheng-li。 - Agents/reasoning:保持嵌入式推理增量(deltas)为原始格式以实现正确的同流式传输,同时在渠道边缘保留格式化的 Telegram、飞书、Discord 和心跳推送。(#78397) 感谢 @medns。 - Agents/failover:在速率限制失败时延迟冷却标记之前轮换认证配置文件,从而防止文件锁争用阻塞配置文件故障转移。修复 #57281。(#57283) 感谢 @jeremyknows。 - Gateway/sessions:当配置了 `session.dmScope: "main"` 时,将针对代理主会话的裸 webchat `/new` 请求(使用 `emitCommandHooks=true` 调用 `sessions.create`)路由至就地重置,而不是创建平行的 `dashboard:` 子会话,以匹配 Telegram/Discord 上的 `/new` 行为。修复 #77434。(#71170) 感谢 @statxc。 - Scripts/UI/Windows:通过共享的 cmd.exe 转义路径(禁用 shell 模式)启动 `.cmd` 和 `.bat` UI 运行器,在保持参数边界的同时避免 Node.js v24 的 DEP0190 警告。(#62910) 感谢 @nandanadileep。 - Agents/CLI runner:为预处理的 CLI 运行禁用 supervisor 的 stdout/stderr 捕获,同时保留有界诊断信息和增量 JSONL 输出解析,防止长 CLI 输出驻留内存。(#79617) 感谢 @samzong。 - Telegram:将同时在 `conversationId` 和 `parentConversationId` 中携带聊天 ID 的 DM 绑定视为直接对话而非主题,从而避免 Telegram DM 的反向投递被错误路由到主题形状的靶标。(#79700) 感谢 @TSHOGX。