← 返回更新日志

OpenClaw v2026.4.22

2026-04-23 · GitHub 原文
## 2026.4.22 ### 变更 - **Providers/xAI**:新增图像生成、文本转语音及语音转文本支持,包括 `grok-imagine-image` / `grok-imagine-image-pro`、参考图像编辑、六种实时 xAI 语音、MP3/WAV/PCM/G.711 TTS 格式、`grok-stt` 音频转录,以及用于语音通话流媒体的 xAI 实时转录功能。(#68694) 感谢 @KateWilkins。 - **Providers/STT**:为 Deepgram、ElevenLabs 和 Mistral 新增语音通话流媒体转录功能,与现有的 OpenAI 和 xAI 实时 STT 路径并行;ElevenLabs 还获得了用于入站媒体的 Scribe v2 批量音频转录功能。 - **TUI**:新增本地嵌入式模式,可在无网关的情况下运行终端聊天,同时保持插件审批 gates 的强制执行。(#66767) 感谢 @fuller-stack-dev。 - **Onboarding**:在设置过程中自动安装缺失的提供商和频道插件,使首次运行配置无需手动插件恢复即可完成。 - **OpenAI/Responses**:当启用网络搜索且未固定托管搜索提供商时,对直接的 OpenAI Responses 模型自动使用 OpenAI 原生的 `web_search` 工具;显式指定的提供商(如 Brave)则保留托管的 `web_search` 工具。 - **Models/commands**:新增 `/models add <provider> <modelId>` 命令,使您能在聊天中注册模型并立即使用,无需重启网关;保留 `/models` 作为简单的提供商浏览器,同时添加更清晰的添加指南和易于复制的命令示例。(#70211) 感谢 @Takhoffman。 - **WhatsApp**:新增通过 `replyToMode` 配置 WhatsApp 对话的原生回复引用功能。感谢 @mcaxtr。 - **WhatsApp/groups+direct**:将每个群组和每个直接对话的 `systemPrompt` 配置转发到入站上下文 `GroupSystemPrompt` 中,以便在每一轮对话中注入配置的每聊天行为指令。支持 `"*"` 通配符回退,以及在 `channels.whatsapp.accounts.<id>.{groups,direct}` 下的账户范围覆盖;账户映射完全替换根映射(无深度合并),与现有的 `requireMention` 模式匹配。关闭 #7011。(#59553) 感谢 @Bluetegu。 - **Agents/sessions**:为标签、代理和搜索添加邮箱风格的 `sessions_list` 过滤器,以及按可见范围派生的标题和最后一条消息预览。(#69839) 感谢 @dangoZhang。 - **Control UI/settings+chat**:为操作员添加浏览器本地个人身份(名称加本地安全头像),通过助手和代理表面共享的聊天/头像路径路由用户身份渲染,并收紧快速设置、代理回退芯片和窄屏聊天布局,使个性化不再浪费空间或裁剪控件。(#70362) 感谢 @BunsDev。 - **Gateway/diagnostics**:默认启用无负载稳定性记录,并添加支持就绪的诊断导出功能,包含清理后的日志、状态、健康、配置和稳定性快照,用于错误报告。(#70324) 感谢 @gumadeiras。 - **Providers/Tencent**:添加捆绑的腾讯云提供商插件,包含 TokenHub 引导、文档、`hy3-preview` 模型目录条目和分层 Hy3 定价元数据。(#68460) 感谢 @JuniperSling。 - **Providers/Amazon Bedrock Mantle**:通过 Mantle 的 Anthropic Messages 路由添加 Claude Opus 4.7,采用提供商拥有的 bearer-auth 流式传输,因此该模型实际可调用,且无需将 AWS bearer 令牌视为 Anthropic API 密钥。感谢 @wirjo。 - **Providers/GPT-5**:将 GPT-5 提示覆盖层移至共享提供商运行时,使兼容的 GPT-5 模型通过 OpenAI、OpenRouter、OpenCode、Codex 和其他 GPT 提供商获得相同的行为和心跳指导;添加 `agents.defaults.promptOverlays.gpt5.personality` 作为全局友好风格切换,同时保留 OpenAI 插件设置作为回退。 - **Providers/OpenAI Codex**:从引导和提供商发现中移除 Codex CLI 认证导入路径,使 OpenClaw 不再将 `~/.codex` OAuth 材料复制到代理认证存储中;改用浏览器登录或设备配对。(#70390) 感谢 @pashpashpash。 - **CLI/Claude**:默认 `claude-cli` 运行以预热 stdio 会话,包括省略传输字段的自定义配置,并在网关重启或空闲退出后从存储的 Claude 会话恢复。(#69679) 感谢 @obviyus。 - **Pi/models**:将捆绑的 pi 包更新至 `0.68.1`,并让 OpenCode Go 目录来自 pi 而非插件维护的模型别名,添加刷新后的 `opencode-go/kimi-k2.6`、Qwen、GLM、MiMo 和 MiniMax 条目。 - **Tokenjuice**:为 tokenjuice 添加捆绑的原生 OpenClaw 支持,作为一个可选插件,可在 Pi 嵌入式运行中压缩嘈杂的 `exec` 和 `bash` 工具结果。(#69946) 感谢 @vincentkoc。 - **ACPX**:添加显式的 `openClawToolsMcpBridge` 选项,为选定的内置工具注入核心 OpenClaw MCP 服务器,从 `cron` 开始。 - **CLI/doctor plugins**:延迟加载 doctor 插件路径,并优先使用已安装插件的 `dist/*` 运行时条目而非源代码相邻的 JavaScript 回退,在保持冷 doctor 启动于内置插件制品的同时,将测量的 `doctor --non-interactive` 运行时间减少了约 74%。(#69840) 感谢 @gumadeiras。 - **CLI/debugging**:添加一个可选临时调试计时辅助工具,用于本地 CLI 性能调查,具有可读的 stderr 输出、JSONL 捕获,以及在修复前移除探针的文档。(#70469) 感谢 @shakkernerd。 - **Docs/i18n**:为文档站点添加泰语翻译支持。 - **Providers/OpenAI-compatible**:将 vLLM、SGLang、llama.cpp、LM Studio、LocalAI、Jan、TabbyAPI 和 text-generation-webui 等已知本地后端标记为流式使用兼容,因此它们的令牌核算不再降级为未知/过时总计。(#68711) 感谢 @gaineyllc。 - **Providers/OpenAI-compatible**:从 llama.cpp 风格的 `timings.prompt_n` / `timings.predicted_n` 元数据中恢复流式令牌使用情况,并在累积前清理使用计数,修复兼容服务器未发出 OpenAI 形状的 `usage` 对象时的未知或过时总计问题。(#41056) 感谢 @xaeon2026。 - **Plugins/startup**:在支持的运行时上,为内置捆绑插件 dist 模块优先使用原生 Jiti 加载,在保持源代码 TypeScript 在转换路径上的同时,将测量的捆绑插件加载时间削减 82-90%。(#69925) 感谢 @aauren。 - **Plugin SDK/STT**:在捆绑的 STT 提供商间共享实时转录 WebSocket 传输和多部分批量转录表单辅助工具,减少提供商插件样板代码,同时保留代理捕获、重连、音频排队、关闭刷新、上传文件名规范化和就绪握手。 - **Plugin SDK/Pi embedded runs**:添加捆绑插件嵌入式扩展工厂接缝,使原生插件能通过异步运行时钩子(如 `tool_result` 处理)扩展 Pi 嵌入式运行,而非回退到较旧的同步持久化路径。(#69946) 感谢 @vincentkoc。 - **Codex harness/hooks**:将原生 Codex 应用服务器回合通过 `before_prompt_build` 路由,并为原生压缩项目发出 `before_compaction` / `after_compaction`,使提示和压缩钩子不再与 Pi 偏离。感谢 @vincentkoc。 - **Codex harness/plugins**:添加捆绑插件 Codex 应用服务器扩展接缝,用于异步 `tool_result` 中间件,为 Codex 工具运行触发 `after_tool_call`,并将镜像的 Codex 转录写入通过 `before_message_write` 路由,使工具集成不再与 Pi 偏离。感谢 @vincentkoc。 - **Codex harness/hooks**:为原生 Codex 应用服务器回合触发 `llm_input`、`llm_output` 和 `agent_end`,使生命周期钩子不再与 Pi 偏离。感谢 @vincentkoc。 - **QA/Telegram**:在实时 Telegram QA 报告和摘要中记录每个场景的回复 RTT(往返时间),从金丝雀响应开始。(#70550) 感谢 @obviyus。 - **Status**:为 `/status` 添加显式的 `Runner:` 字段,使会话现在能报告它们运行在嵌入式 Pi、CLI 支持的提供商,还是 ACP harness 代理/后端(如 `codex (acp/acpx)` 或 `gemini (acp/acpx)`)上。(#70595) ### 修复 - **Thinking defaults/status**:当未设置显式配置默认值时,将推理能力模型的隐式默认思考级别从遗留的 `off`/`low` 回退行为提升到安全的提供商支持的 `medium` 等效值;在运行时目录加载为空时保留已配置模型的推理元数据;并使 `/status` 报告与运行时相同的已解析默认值。 - **Gateway/model pricing**:在启动时异步获取 OpenRouter 和 LiteLLM 定价,并将目录获取超时延长至 30 秒,减少慢速上游响应期间的嘈杂超时警告。 - **Agents/sessions**:使每日重置和空闲维护簿记不再 bumped 会话活动或修剪新鲜活跃路由,因此活跃对话不再显得更新或为仅维护更新而消失。 - **Plugins/install**:在启用新安装的插件 ID 前将其添加到现有的 `plugins.allow` 列表中,以便允许列表配置在重启后加载已安装的插件。 - **Status**:当启用快速模式(包括配置/默认派生的快速模式)时在 `/status` 中显示 `Fast`,禁用时则省略。 - **OpenAI/image generation**:检测 Azure OpenAI 风格的图像端点,使用 Azure `api-key` 认证和部署范围的图像 URL,遵守 `AZURE_OPENAI_API_VERSION`,并记录 Azure 设置路径,使图像生成和编辑能针对 Azure 托管的 OpenAI 资源工作。(#70570) 感谢 @zhanggpcsu。 - **Telegram/forum topics**:缓存具有边界过期的恢复的论坛元数据,因此超级组更新不再需要在主题路由前重复 `getChat` 查找。 - **Onboarding/WeCom**:在外部频道目录中显示官方 WeCom 频道插件及其原生企业微信显示名称和简介。 - **Models/auth**:合并来自 `openclaw models auth login` 的提供商拥有的默认模型添加,而非替换 `agents.defaults.models`,因此重新认证 OAuth 提供商(如 OpenAI Codex)不再擦除其他提供商的别名和每模型参数。必须重命名的迁移(Anthropic -> Claude CLI)通过 `replaceDefaultModels` 选择加入。修复 #69414。(#70435) 感谢 @neeravmakwana。 - **Media understanding/audio**:在自动检测的本地 Whisper CLI 之前优先使用配置的或密钥支持的 STT 提供商,因此安装的本地转录工具不再在 `tools.media.audio` 自动模式下遮蔽 Groq/OpenAI 等 API 提供商。修复 #68727。 - **Providers/OpenAI**:锁定 OpenAI API 密钥、Codex 浏览器登录和 Codex 设备配对的认证选择器措辞,使设置选择不再暗示混合的 Codex/API-key 认证路径。(#67848) 感谢 @tmlxrd。 - **Agents/BTW**:将 `/btw` 侧边问题通过提供商流注册与会话工作区一起路由,因此 Ollama 提供商 URL 构建和工作区范围的钩子正确应用。修复 #68336。(#70413) 感谢 @suboss87。 - **Agents/sessions**:使会话转录写入锁默认不可重入,因此相同进程的转录写入器会竞争,除非助手明确选择加入嵌套锁所有权。 - **ACPX/probe**:暴露可选的 `probeAgent` 插件配置字段,使嵌入式 ACP 运行时健康探测能针对配置的代理(例如 `opencode` 或 `claude`)而非硬编码 `codex`,并停止在默认探测代理仅未安装或未认证时将整个 ACP 运行时后端标记为不可用。(#68409) 感谢 @lyfuci。 - **Memory search**:在保留多模型索引的完整后过滤结果限制的同时,使用 sqlite-vec KNN 进行向量召回。修复 #69666。(#69680) 感谢 @aalekh-sarvam。 - **Providers/OpenAI Codex**:阻止陈旧的每代理 `openai-codex:default` OAuth 配置文件遮蔽较新的主代理身份范围配置文件,并让 `openclaw doctor` 提供匹配的清理。(#70393) 感谢 @pashpashpash。 - **ACPX**:即使命令被 `env` 包装、具有桥接标志或从持久会话状态恢复,也将 OpenClaw ACP 桥接命令通过无 MCP 运行时路径路由,因此记录的 `acpx openclaw` 设置不再在每会话 MCP 注入时失败。(#68741) 感谢 @alexlomt。 - **Codex harness**:将 Codex 标记的 MCP 工具批准征求通过 OpenClaw 插件批准路由,包括当前空模式的应用服务器请求,同时保持通用用户输入提示失败关闭。(#68807) 感谢 @kesslerio。 - **WhatsApp/outbound**:在实时出站发送飞行时持有内存中的活跃交付声明,因此并发重新连接排水不再重新驱动相同的待处理队列条目,并在 30 分钟入站静默看门狗在交付中途触发后导致 cron 发送重复 7-12 倍。由于声明故意是进程局部的,死进程遗留的新队列条目崩溃重播得以保留。修复 #70386。(#70428) 感谢 @neeravmakwana。 - **Matrix/commands**:将 Matrix DM 允许列表状态保留在房间控制命令授权之外,因此受信任的 DM 发送者不会意外获得房间命令访问权限。 - **Providers/SDK retry**:限制 Stainless 基础的 Anthropic/OpenAI 模型 SDK 中的长 `Retry-After` 休眠,因此 60s+ 重试窗口立即暴露给 OpenClaw 故障转移,而不是阻塞运行。(#68474) 感谢 @jetd1。 - **Agents/TTS**:在 TTS 工具结果中保留口语文本,同时解除转录内容中的回复指令,因此未来回合记住语音回复,而不将口语 `MEDIA:` 或语音标签视为交付元数据。(#68869) 感谢 @zqchris。 - **Providers/OpenAI**:强化语音通话实时转录以对抗 OpenAI 实时会话更新漂移,转发语言和提示提示,并添加实时 STT 覆盖。 - **Agents/Pi embedded runs**:当助手已通过消息工具交付用户可见内容且回合干净结束(`stopReason=stop`)时,抑制“⚠️ 代理无法生成响应”警告。真实失败模式(工具错误、提供商 `stopReason=error`、中断的工具使用)仍显示现有的“验证后重试”警告。修复 #70396。(#70425) 感谢 @neeravmakwana。 - **Gateway/Linux**:将网关管理的监督器、PTY、MCP stdio 和浏览器子进程包装在微小的 `/bin/sh` 垫片中,在 Linux 上提升子进程自己的 `oom_score_adj`,因此在 cgroup 内存压力下内核优先选择临时工作者而非长寿命网关。使用 `OPENCLAW_CHILD_OOM_SCORE_ADJ=0` 退出。修复 #70404。(#70419) 感谢 @neeravmakwana。 - **Providers/Moonshot**:停止在 OpenAI 兼容传输上严格清理 Kimi 的原生 tool_call ID(形如 `functions.<name>:<index>`),因此通过 Kimi K2.6 的多轮代理流在服务层无法匹配被篡改 ID 与原始工具定义后不再在 2-3 轮工具调用后中断。向共享 `openai-compatible` 重放家族助手添加 `sanitizeToolCallIds` 退出选项,并将 Moonshot 连接至它。修复 #62319。(#70030) 感谢 @LeoDu0314。 - **Dependencies/security**:覆盖传递的 `uuid` 至 `14.0.0`,清除依赖项中的运行时咨询。 - **Codex harness**:在决定是否重用原生应用服务器线程时忽略动态工具描述,同时指纹工具模式,因此频道特定的副本更改不再重置其他方面兼容的 Codex 对话。(#69976) 感谢 @chen-zhang-cs-code。 - **Codex harness**:在 `models list/status` 中公开 Codex 应用服务器模型目录,避免应用服务器发现超时导致的启动挂起,并接受当前 Codex 回合完成通知,因此 Docker 实时网关回合可靠完成。 - **Codex harness**:在原生线程和回合请求前丢弃无效的遗留应用服务器 `serviceTier` 值(如 `"priority"`),同时保持支持的 Codex 层级限制为 `"fast"` 和 `"flex"`。修复 #64815。 - **Codex harness**:在应用服务器批准提示中显示边界、清理的权限目标样本,因此原生权限请求保持其特定主机、根和路径可见,而不泄露家庭用户名或 URL 凭据。(#70340) 感谢 @Lucenx9。 - **Docs/Codex harness**:将原生压缩文档缩小到当前开始/完成信号,而不承诺可读摘要或保留条目审计列表(尚未)。(#69612) 感谢 @91wan。 - **Providers/Amazon Bedrock**:对发现的模型使用已知的上下文窗口元数据,同时保持未知模型回退保守,因此对于较新的 Bedrock 模型,压缩和溢出处理改进而不夸大未列出的模型限制。感谢 @wirjo。 - **Providers/Amazon Bedrock Mantle**:在运行时刷新 IAM 支持的 bearer 令牌,而非将发现时间令牌烘焙到提供商配置中,因此长寿命 Mantle 会话在初始令牌过期后继续工作。感谢 @wirjo。 - **Config/includes**:为孤立的 OpenClaw 拥有变更写入通过单文件顶级包含,因此 `plugins install` 和 `plugins update` 更新包含的 `plugins.json5` 文件而非扁平化模块化 `$include` 配置。修复 #41050 和 #66048。 - **Config/reload**:从源作者配置而非运行时具体化快照规划网关重载,因此插件更新写入不再触发来自派生的提供商/插件配置路径的虚假重启。修复 #68732。 - **Plugins/update**:当已安装版本和记录的工件身份已匹配注册表目标时跳过 npm 插件重新安装/配置重写,让裸 npm 包名称解析回跟踪的安装记录,并指向已安装的 `plugins install` 尝试至 `plugins update` / `--force` 而非钩子包回退。修复 #46955、#67957 和 #68073。 - **Agents/MCP**:在保留 `minimal` 配置文件和 `tools.deny: ["bundle-mcp"]` 退出行为的同时,保持 `mcp.servers` 和捆绑 MCP 工具在 Pi 嵌入式 `coding` 和 `messaging` 会话中可用。修复 #68875 和 #68818。 - **Plugins/startup**:在自动启用配置插件时容忍暂时的捆绑频道目录/元数据漂移,因此 CLI 和网关启动不再在频道 ID 已知但其显示元数据不可用时崩溃。 - **CLI/Claude**:报告 CLI 支持的回复运行作为流式传输,而 Claude/Codex CLI 回合仍在飞行中,因此 WebChat 保持可见响应状态直到后端完成。修复 #70125。 - **Slack/streaming**:对于 SDK 刷新其本地缓冲区前被拒绝的 Slack Connect 流,回退到正常 Slack 回复,因此短回复不再消失或在 Slack 确认交付前报告成功。修复 #70295。(#70370) 感谢 @mvanhorn。 - **Codex harness**:当配置的 bearer 令牌改变时旋转共享应用服务器 websocket 客户端,因此认证令牌刷新使用新的 `Authorization` 头重新连接而非重用陈旧的套接字。(#70328) 感谢 @Lucenx9。 - **Channels/sandbox**:为共享主对话的外部直接消息派生运行时策略键,因此沙盒/工具策略不再将频道起源的 DM 视为本地主会话运行。 - **Config/models**:合并提供商范围的模型允许列表更新,并保护模型/提供商映射写入免受意外完全替换,添加 `config set --merge` 用于加法更新和 `--replace` 用于有意覆盖。修复 #65920、#68392 和 #68653。 - **Agents/Pi auth**:为 IMDS 和任务角色设置保留 AWS SDK 认证的 Bedrock 运行,在 sentinel 回退上清除陈旧的刷新计时器,并记录意外的运行时认证准备失败而非静默留下提供商未认证。感谢 @wirjo。 - **Config/gateway**:在关键覆盖签名(如缺失元数据、缺失 `gateway.mode` 或急剧大小下降)上恢复最后已知良好配置,防止有效备份存在时网关崩溃循环。修复 #70336。 - **Config/gateway**:恢复在网关启动或 `openclaw doctor --fix` 期间意外以非 JSON 输出为前缀的配置,保留被覆盖文件作为备份,同时保持正常配置读取只读。 - **Agents/GitHub Copilot**:在 Copilot 提供商包装器中规范化连接绑定的 Responses 项目 ID,因此重放的历史记录在上游连接改变后不再失败。(#69362) 感谢 @Menci。 - **Pi embedded runs**:将真实内置工具传入 Pi 会话创建,然后在自定义工具注册后缩小活跃工具名称,因此运行器和压缩路径干净编译,并在不将字符串数组传入 `createAgentSession` 的情况下保持 OpenClaw 管理的自定义工具允许列表。感谢 @vincentkoc。 - **Agents/OpenAI websocket**:将原生 OpenAI websocket 元数据和会话头决策通过共享端点分类器路由,因此本地模拟和自定义 `models.providers.openai.baseUrl` 端点在嵌入式运行器-和 websocket 传输代码中一致地保持在原生 OpenAI 路径之外。感谢 @vincentkoc。 - **Cron/MCP**:通过一个共享清理路径为隔离的 cron 运行结束、持久 cron 会话轮换和直接 cron `deleteAfterRun` 回退清理退休捆绑 MCP 运行时。修复 #69145、#68623 和 #68827。 - **MCP/gateway**:在传输关闭时拆除 stdio MCP 进程树,并在会话删除/重置时处置捆绑 MCP 运行时,防止孤立的包装器/服务器进程累积。修复 #68809 和 #69465。 - **Agents/MCP**:在完成一次性子代理清理和嵌套 `sessions_send` 步骤后退休捆绑 MCP 运行时,同时保持持久子代理会话温暖。 - **Config**:在 CLI/审计输出中用真实换行符渲染验证警告,而非字面 `\n` 序列。修复 #70140。 - **Cron/doctor**:通过 `openclaw doctor` 修复格式错误的持久 cron 作业 ID,包括遗留 `jobId`、非字符串 `id` 和缺失 `id` 行,因此 `cron list` 不再需要显示层强制转换来修复损坏的存储数据。修复 #70128。 - **Discord**:仅在线程绑定 API 边界标准化前缀频道目标,因此 `sessions_spawn({ runtime: "acp", thread: true })` 能创建 Discord 频道的子线程而不破坏当前频道 ACP 绑定。(#68034) 感谢 @Zetarcos。 - **Discord**:强化入站线程元数据处理以对抗部分 Carbon 频道获取器,因此非命令线程消息和排队作业在 `name`、`parentId`、`parent` 或 `ownerId` 需要获取原始数据时不再崩溃。 - **Discord**:让 `message` 工具反应解析 `user:<id>` DM 目标,并在回复阶段激活回退期间保留 `channels.discord.guilds.<guild>.channels.<channel>.requireMention: false`。修复 #70165 和 #69441。 - **Plugins/startup**:在创建插件加载器前预标准化和缓存 Jiti 别名映射,因此模块作用域加载器文件名不再重新引入每插件别名标准化启动成本。修复 #70186。 - **ACP/Codex**:使用隔离的 `CODEX_HOME` 运行捆绑的 Codex ACP harness,并避免写入不完整的 ChatGPT 认证桥接文件,因此 Codex ACP 会话不再覆盖用户的真实 Codex CLI 认证。修复 #70234。感谢 @Lonobers88。 - **Gateway/client**:使长运行 RPC(如 ACP `agent.wait` 调用)自行控制超时,而非在挂起工作时因错过应用级心跳而关闭 websocket。 - **Telegram/webhooks**:将 grammY webhook 回调超时降低至 5 秒,因此 Telegram 获得早期 200 响应而非将长时间运行的更新作为读取超时重试。(#70146) 感谢 @friday-james。 - **Telegram/polling**:在 `getUpdates` 409 冲突后重建轮询 HTTP 传输,因此重试使用新鲜 TCP 连接而非循环于 Telegram 终止的保持活动套接字。(#69873) 感谢 @hclsys。 - **Media delivery**:从 webchat 历史中剥离持久化的 base64 音频负载,在本地根检查前解析存储的 `media://inbound/*` 附件,当 TTS 发出相同媒体两次时抑制重复的 Telegram 语音/音频发送,并支持已包含提供商前缀的自定义图像模型 ID。 - **Slack/files**:当调用者提供 `cfg` 而无显式令牌或预构建客户端时,从运行时配置解析 `downloadFile` 机器人令牌,在操作运行时路径外保留仅 cfg 的文件下载。(#70160) 感谢 @martingarramon。 - **Slack/HTTP**:通过 Slack 监控设置使用的相同处理程序注册表调度注册的请求 URL webhooks,因此 HTTP 模式 Slack 事件在成功路由注册后不再 404。(#70275) 感谢 @FroeMic。 - **Slack/runtime bindings**:将聚焦的 Slack 线程回复通过其绑定的 ACP 会话路由,而非针对默认代理 shell 准备回复。修复 #67739。感谢 @Frankla20。 - **CLI/Claude**:通过将认证周期键控在稳定账户身份而非可变 OAuth 令牌材料上,在 OAuth 刷新令牌轮换期间保持存储的 Claude CLI 会话。(#70452) 感谢 @obviyus。 - **CLI/Claude**:在恢复前验证存储的 Claude CLI 会话 ID 具有可读的项目转录,用 `reason=transcript-missing` 清除幻影绑定而非在 `--resume` 下静默新鲜开始。修复 #70177。 - **CLI sessions**:通过原子会话存储合并路径持久 CLI 会话清除,因此过期的 Claude/Codex CLI 绑定在重试前实际移除,而无陈旧会话 ID。(#70298) 感谢 @HFConsultant。 - **ACP/sessions_spawn**:尊重 ACP 子会话的显式 `model` 覆盖,而非静默回退到目标代理默认模型。(#70210) 感谢 @felix-miao。 - **Diffs/viewer**:在每次请求时从实时运行时配置重新读取远程查看器访问策略,因此切换 `plugins.entries.diffs.config.security.allowRemoteViewer` 立即关闭代理查看器访问,而非等待重启。感谢 @vincentkoc。 - **Diffs/tooling**:从实时运行时配置重新读取 `viewerBaseUrl`、呈现默认和查看器访问策略,并在实时 `diffs` 插件条目消失时失败关闭而非恢复启动查看器设置。感谢 @vincentkoc。 - **Memory/LanceDB**:停止从启动快照重新复活移除的实时 `memory-lancedb` 钩子配置,因此删除或禁用插件条目在无需重启的情况下关闭自动召回和自动捕获。感谢 @vincentkoc。 - **Memory/LanceDB**:在那些设置最初禁用时保持自动召回和自动捕获钩子连接,因此在实时配置中开启它们即可开始召回和捕获,无需等待重启。感谢 @vincentkoc。 - **Skill Workshop**:在插件在启动时禁用期间保持工具加 `before_prompt_build` / `agent_end` 钩子连接,因此在实时配置中重新打开插件即可开始指导和捕获,无需等待重启。感谢 @vincentkoc。 - **Active Memory**:停止从启动快照重新复活移除的实时 `active-memory` 配置,因此移除插件条目立即关闭钩子,而非等待重启。感谢 @vincentkoc。 - **GitHub Copilot**:从实时运行时快照重新读取插件发现配置,因此切换 `plugins.entries.github-copilot.config.discovery.enabled` 无需重启即可生效。感谢 @vincentkoc。 - **Ollama**:从实时运行时快照重新读取插件发现配置,因此切换 `plugins.entries.ollama.config.discovery.enabled` 无需重启即可生效。感谢 @vincentkoc。 - **OpenAI**:从实时运行时配置重新读取插件提示覆盖人格,因此当 `plugins.entries.openai.config.personality` 改变时,GPT-5 系统提示贡献无需重启即可更新。感谢 @vincentkoc。 - **Amazon Bedrock**:重新读取实时发现和防护栏插件配置,因此切换 `plugins.entries.amazon-bedrock.config.discovery` 或 `plugins.entries.amazon-bedrock.config.guardrail` 无需重启即可生效。感谢 @vincentkoc。 - **Codex**:从实时运行时快照重新读取插件发现配置,因此切换 `plugins.entries.codex.config.discovery` 无需重启即可生效。感谢 @vincentkoc。 - **Agents/subagents**:当会话仍有待处理的生成子项时,从父回合删除裸 `NO_REPLY`,因此 Telegram DM 等直接对话表面在等待子完成事件时不再将 sentinel 重写为可见回退 chatter。(#69942) 感谢 @neeravmakwana。 - **Plugins/install**:在从打包安装修复插件激活时保持捆绑插件依赖脱离 npm install,包括飞书/Lark、浏览器和直接捆绑频道设置条目加载。 - **CLI/channels**:在只读发现期间跳过并缓存捆绑频道插件、设置和秘密加载失败,因此一个损坏的未使用捆绑频道无法崩溃 `openclaw status` 或引导秘密扫描。 - **Memory/LanceDB**:在 LanceDB 加载失败后重试初始化,并清晰报告不支持的 Intel macOS 原生运行时,而非缓存失败或重复尝试无法工作的安装。 - **CLI/Claude**:在决定是否重用 CLI 会话时仅哈希静态额外系统提示部分,因此每消息入站元数据不再在每轮重置 Claude CLI 对话。(#70122) 感谢 @zijunl。 - **Hooks/Slack**:标准化共享消息钩子路由字段(`threadId` / `replyToId`)并停止 Slack 出站交付在频道适配器内重新运行 `message_sending`,因此像线程所有权这样的插件为每个回复做出一个出站路由决策。感谢 @vincentkoc。 - **Auto-reply/media**:在流式块交付和最终负载过滤间共享一个运行范围回复媒体上下文,因此本地 `MEDIA:` 附件暂存一次且可靠抑制重复媒体发送。(#68111) 感谢 @ayeshakhalid192007-dev。 - **Plugins/gateway hooks**:在类型化的 `gateway_start` 钩子上公开启动配置、工作区目录和实时 cron getter,并将内存核心管理的 dreaming 移出内部 `gateway:startup` 桥接,因此 cron 协调保持在公共插件钩子路径上。感谢 @vincentkoc。 - **Plugins/config**:当解析的运行时快照激活时从源配置快照读取插件信任决策,因此 `plugins.allow` 保持强制执行且 `doctor`/网关启动不再警告允许列表为空(当它已配置时)。修复 #70161。也修复 #70141。 - **Agents/openai-completions**:为自托管 OpenAI 兼容后端(如 Kimi/SGLang)启用格式错误的流式工具调用参数修复,因此碎片化的工具调用参数不再以空或不可用对象到达工具。修复 #69672。(#70294) 感谢 @MonkeyLeeT。 - **Gateway/restart**:在网关重启后恢复代理回合时保留组和频道聊天上下文,因此继续回复保持与原始对话相同的提示、路由和工具状态行为。 - **Gateway/pairing**:共享密钥环回 CLI 客户端现在静默自动批准 `metadata-upgrade` 配对(平台/设备系列刷新),而非以 `1008 pairing required` 断开连接。这匹配 #69431 添加的范围升级和角色升级行为,并解除当配对设备记录具有过时平台字符串(例如设备密钥跨主机复制、安装在不同 OS 间迁移或 OpenClaw 版本间平台字符串格式改变)时的非交互式 CLI 自动化。浏览器/控制 UI 客户端保留元数据更改的现有需批准流程。 - **Gateway/pairing**:在配对本地性检查前将任何转发头证据(`Forwarded`、`X-Forwarded-*` 或 `X-Real-IP`)视为代理的 WebSocket 流量,因此反向代理拓扑无法使用环回共享密钥助手自动配对路径。 - **Agents/OpenAI**:在嵌入式运行中将精确的 `NO_REPLY` 助手输出视为故意静默回复,因此带有签名推理和静默最终无的 GPT-5.4 回合不再表面虚假的不完整回合错误。 - **Auto-reply/streaming**:通过块边界和阶段感知的 `final_answer` 交付保留流式回复指令,因此分割的 `MEDIA:<path>` 行、语音标签和回复目标到达频道交付而非泄漏为文本或被丢弃。(#70243) 感谢 @zqchris。 - **Anthropic/Claude Opus 4.7**:将 Opus 4.7 和 `claude-cli` Opus 4.7 变体标准化为解析的运行时元数据和活跃代理状态/上下文报告中的 1M 上下文窗口,因此它们不再继承过时的 200k 回退。感谢 @BunsDev。 - **Gateway/pairing webchat**:将 `/pair qr` 回复渲染为结构化媒体而非原始 markdown 文本,在媒体回复上保留内联回复线程和静默控制处理,避免将敏感 QR 图像持久化到转录历史,并保持本地 webchat 媒体嵌入在内部仅信任标记后。(#70047) 感谢 @BunsDev。 - **Codex harness**:默认应用服务器运行未链接的本地执行,因此 OpenAI 心跳能使用网络和 shell 工具而不停滞于原生 Codex 批准或工作区写入沙盒之后。 - **Codex harness**:对未知原生应用服务器批准方法失败关闭,而非将不支持的未来批准形状路由通过 OpenClaw 批准授予。(#70356) 感谢 @Lucenx9。 - **Codex harness**:将 GPT-5 行为和心跳提示覆盖层应用于原生 Codex 应用服务器运行,因此 `codex/gpt-5.x` 会话获得与 OpenAI GPT-5 运行相同的贯彻、工具使用和主动心跳指导。 - **Codex harness**:为 Codex 应用服务器批准添加显式 Guardian 模式,加上 Docker 实时探针用于批准和回问 Guardian 决策,同时保持默认应用服务器运行未链接用于无人值守本地心跳。遗留的 `OPENCLAW_CODEX_APP_SERVER_GUARDIAN` 快捷方式移除;使用插件配置 `appServer.mode: "guardian"` 或 `OPENCLAW_CODEX_APP_SERVER_MODE=guardian`。感谢 @pashpashpash。 - **OpenAI/Responses**:当 `models.providers.openai.baseUrl` 指向本地模拟或其他非公共端点时,保持嵌入式 OpenAI Responses 运行在 HTTP 上,因此模拟/自定义端点不再漂移到硬编码公共 websocket 传输。(#69815) 感谢 @vincentkoc。 - **Channels/config**:在频道发送/动作/客户端辅助工具上要求解析的运行时配置并阻止运行时辅助 `loadConfig()` 调用,因此 SecretRefs 在启动/边界解析而非在发送期间重新读取。 - **Discord**:通过公会和调节动作辅助传递解析的运行时配置,因此线程起源的 Discord 命令能运行频道、成员、角色和公会动作,而无需回退到运行时配置读取。(#70215) 感谢 @szponeczek。 - **CLI/channels**:当加载的部分频道插件省略时保留捆绑设置推广元数据,因此添加非默认账户仍将遗留单账户字段(如 Telegram `streaming`)移动到 `accounts.default`。 - **Telegram**:保持发送消息所有权缓存隔离于每个配置的会话存储,因此自有消息反应过滤在自定义 `session.store` 路径下保持正确。 - **Security/update**:当精确固定的 npm 插件或钩子包更新检测到完整性漂移时失败关闭,并在 `openclaw update --json` 中暴露中止的插件漂移详情。 - **Ollama**:将 OpenClaw 思考控制作为顶级 `think` 转发到原生 `/api/chat` 请求,因此 `/think off` 和 `openclaw agent --thinking off` 在 qwen3 等模型上抑制思考,而非空闲直到看门狗触发。修复 #69902。(#69967) 感谢 @WZH8898。 - **Memory-core/dreaming**:当 dreaming 启用但驱动托管 cron 的心跳未为默认代理触发时,在 `openclaw memory status` 中显示 `Dreaming status: blocked` 行,并添加故障排除部分到 dreaming 文档,涵盖两个常见原因(每代理 `heartbeat` 块排除 `main`,以及 `heartbeat.every` 设置为 `0`/空/无效),因此 #69843 中描述的静默失败在状态表面变得可见。修复 #69939。(#69941) 感谢 @Sanjays2402。 - **Cron/run-log**:当匹配 cron 目标时在解析的交付频道下报告通用 `message` 工具发送,同时保留交付跟踪的账户特定不匹配检查。(#69940) 感谢 @davehappyminion。 - **Doctor/channels**:跨只读、加载、设置和运行时插件发现合并配置频道 doctor 钩子,因此部分适配器不再隐藏运行时仅兼容修复或允许列表警告,保留禁用频道退出,并在它们能掩盖有效回退前忽略格式错误的钩子值。(#69919) 感谢 @gumadeiras。 - **Models/CLI**:在 `models list --all` 中显示捆绑的提供商拥有的静态目录行,认证前包括 Moonshot、OpenRouter 和 Vercel AI Gateway 的 Kimi K2.6 行,同时保持仅本地和工作区插件目录路径隔离。(#69909) 感谢 @shakkernerd。 - **Models/CLI**:澄清 `models list --provider` 期望提供商 ID 并在加载模型发现前拒绝显示标签。(#70504) 感谢 @shakkernerd。 - **Configure**:为 `openclaw configure` 和绑定提示仅网关探测跳过通用 CLI 启动引导,因此在网关不可用时引导 TUI 更快到达第一个提示。(#69984) 感谢 @obviyus。 - **Agents/harness**:直接公开选定的插件 harness 失败,而非通过嵌入式 PI 重放相同回合,防止误导性的次要 PI 认证错误并避免重复副作用。 - **OpenAI Codex**:添加 ChatGPT 设备码认证选项 beside 浏览器 OAuth,因此无头或回调敌对环境可在不依赖 localhost 浏览器回调的情况下登录。(#69557) 感谢 @vincentkoc。 - **CLI sessions**:在保持显式重置行为的同时,通过隐式每日过期保持提供商拥有的 CLI 会话,并在网关代理请求间保留 Claude CLI 绑定元数据。(#70106) 感谢 @obviyus。 - **fix(config)**:接受 truncateAfterCompaction (#68395)。感谢 @MonkeyLeeT - **CLI/Claude**:在 OAuth 访问令牌刷新期间保持 Claude CLI 会话绑定稳定,因此网关重启继续相同的 Claude 对话而非铸造新鲜对话。(#70132) 感谢 @obviyus。 - **QQBot**:向网关常量添加 `INTERACTION` intent (`1 << 26`) 并将其包含在 `FULL_INTENTS` 掩码中,因此接收交互事件。(#70143) 感谢 @cxyhhhhh。 - **Gateway/restart**:在网关重启后恢复一枪继续指令,因此代理可在重启后恢复并回复原始聊天。(#63406) 感谢 @VACInc。 - **Gateway/restart**:原子化写入重启 sentinel 文件,因此中断写入无法留下截断的 sentinel。(#70225) 感谢 @obviyus。 - **Pairing**:当删除配对设备时移除该设备的陈旧待处理请求,因此旧修复批准无法从左角状态重新创建移除的设备。 - **Security/dotenv**:阻止 Matrix、Mattermost、IRC 和 Synology 端点设置的工作区 `.env` 覆盖,因此克隆工作区无法通过本地端点配置重定向捆绑连接器流量。(#70240) 感谢 @drobison00。 - **Telegram**:要求相同的 `/models` 授权用于组模型选择器回调,因此未授权参与者不再能通过内联按钮浏览或更改会话模型。(#70235) 感谢 @drobison00。 - **Agents/Pi**:在嵌入式 OpenAI/OpenAI Codex GPT-5 运行和压缩会话中保持过滤的工具名称允许列表活跃,因此捆绑和客户端工具在 Pi `0.68.1` 会话工具允许列表更改后仍执行,而非停在仅计划回复而无工具调用。(#70281) 感谢 @jalehman。 - **Agents/Pi**:跨提供商尊重不完整回合重试守卫的显式 `strict-agentic` 执行合同,因此手动选择本地或兼容模型获得相同重试行为,无需依赖 OpenAI 模型推理。(#66750) 感谢 @ziomancer。 - **OpenShell/sandbox**:将验证的文件读取固定到已打开的描述符,在无 fd-path readlink 的平台上为符号链接父级走祖先链,并重新检查文件身份,因此父符号链接交换无法将沙盒内读取重定向到允许挂载根之外的主机文件。(#69798) 感谢 @drobison00。 - **Gateway/Control UI**:当 `gateway.auth` 启用时,在服务 `/__openclaw/control-ui-config.json` 前要求认证的控制 UI 读取访问,因此未认证调用者不再能读取引导元数据。(#70247) 感谢 @drobison00。 - **Gateway/restart**:默认会话范围重启 sentinel 为一枪代理继续,因此聊天发起的网关重启自动确认成功引导。(#70269) 感谢 @obviyus。 - **Build/npm publish**:当根 `dist/*` 文件导入捆绑插件运行时依赖而未在根包清单中镜像它们时,后发布验证失败,因此 Slack 风格插件依赖无法再次在错误模块解析路径上静默 shipped。(#60112) 感谢 @medns。