← 返回更新日志

OpenClaw v2026.5.5

2026-05-06 · GitHub 原文
## 2026.5.5 ### 修复 - 飞书:在会话路由前补全缺失的原始主题启动线程 ID,确保首轮对话和后续回复保持在同一主题会话中。修复 #78262。感谢 @joeyzenghuan。 - LINE:拒绝缺少通配符 `allowFrom` 的 `dmPolicy: "open"` 配置,使 webhook 私聊消息在验证阶段失败,而不是被确认并在入站处理前静默拦截。修复 #78316。 - Telegram/Codex:保持仅消息工具的进度草稿可见,并按每个工具仅渲染一次原生 Codex 工具进度,避免重复显示项目/工具草稿行。修复 #75641。(#77949) - 提供商/xAI:停止向原生 Grok Responses 模型发送 OpenAI 风格的推理努力控制参数,使 `xai/grok-4.3` 在实时 Docker/Gateway 运行中不再因 `Invalid reasoning effort` 报错。 - 提供商/xAI:将内置的 xAI 思考配置文件限制为 `off`,防止实时 Gateway 运行向原生 Grok Responses 模型发送不受支持的推理级别。 - Matrix/审批:使用短退避策略最多重试 3 次审批消息投递,避免临时的 Matrix 发送失败导致待处理审批提示挂起。(#78179) 感谢 @Patrick-Erichsen。 - Discord/gateway:从实际心跳发送开始计算 ACK 超时时间,防止延迟的初始心跳在频道仍等待就绪时触发虚假重连循环。修复 #77668。(#78087) 感谢 @bryce-d-greybeard 和 @NikolaFC。 - Discord/guilds:将 `/steer` 等纯文本控制命令路由至正常的授权和提及检查流程,而不是在代理会话可见前静默丢弃。修复 #78080。感谢 @ramitrkar-hash。 - 控制面板 UI/会话:将压缩计数改为紧凑的 `N Checkpoint(s)` 展开项,并在响应式表格布局中通过现代的历史记录卡片展示扩展的会话级详情。感谢 @BunsDev。 - 控制面板 UI/性能:在历史数据负载和频道探测缓慢时保持聊天和频道标签页的响应能力,标记部分频道状态,并在事件日志中记录聊天/配置的缓慢渲染耗时。感谢 @BunsDev。 - 控制面板 UI/会话:仅对显式的控制面板 UI 会话创建触发文档化的 `/new` 命令和生命周期钩子,恢复会话内存和自定义钩子捕获,且不改变 SDK 的父会话创建逻辑。修复 #76957。感谢 @BunsDev。 - 执行审批:当 Windows 拒绝 `exec-approvals.json` 的重命名覆盖时,回退到受保护的复制操作,同时保留符号链接、硬链接和仅所有者权限的安全防护。修复 #77785。(#77907) 感谢 @Alex-Alaniz 和 @MilleniumGenAI。 - Slack:在重连日志中保留 Socket Mode SDK 错误上下文和结构化的 Slack API 字段,使启动失败不再简化为裸的 `unknown error`。 - iOS 配对:允许私有局域网和 `.local` 网关使用配置码和手动 `ws://` 连接,同时保持 Tailscale/公网路由使用 `wss://`,并在混合认证重连时优先使用显式网关密码而非过期的引导令牌。修复 #47887;延续 #65185。感谢 @draix 和 @BunsDev。 - 插件/诊断:使仅源码的 TypeScript 包警告具备可操作性,说明缺失的编译运行时输出属于发布者打包问题,并引导用户更新/重新安装或禁用/卸载插件。修复 #77835。感谢 @googlerest。 - 控制面板 UI/聊天:当同一对话轮次包含工具使用元数据时,保持持久化的助手进度文本可见,使 `chat.history` 重新加载后不再在下一条用户消息后隐藏这些回复。修复 #77374。感谢 @BunsDev。 - 终端 UI (TUI):交互式启动时跳过通用的 CLI 重生包装器,在终端丢失时干净退出,并拒绝将心跳会话恢复为已记住的聊天会话,防止首次启动时出现陈旧的心跳历史和孤立的 `openclaw-tui` 进程。感谢 @vincentkoc。 - 诊断工具/会话:将心跳中毒的默认主会话存储条目移至恢复键,并清除陈旧的 TUI 恢复指针,使 `doctor --fix` 能够修复已卡在 `agent:main:main` 心跳历史中的实例。感谢 @vincentkoc。 - 代理/上下文引擎:将隐藏的 OpenClaw 运行时上下文自定义消息排除在上下文引擎的 assemble、afterTurn 和 ingest 钩子之外,使对话重建插件仅能看到对话消息。感谢 @vincentkoc。 - 网关/关闭:在关闭期间取消延迟的就绪后维护任务,并在快速重启后抑制维护/定时任务的启动,防止产生孤立的后台定时器。感谢 @vincentkoc。 - 代理/生成媒体:将附件式消息工具操作视为已完成的聊天发送,防止在生成文件已上传时产生重复的备用媒体发布。 - 控制面板 UI/会话:在会话表格中显示每个会话的代理运行时,并允许按运行时标签进行过滤,与代理面板的运行时命名保持一致。感谢 @vincentkoc。 - Discord/流式传输:在进度草稿中显示实时推理文本,而非仅显示裸的 `Reasoning` 状态行。 - 网关/状态:避免仅凭 CPU/利用率将快速重复的健康/状态样本标记为事件循环降级,直到网关积累了持续的采样窗口。感谢 @shakkernerd。 - 插件/更新:在主机更新期间保持已安装的官方 npm 和 ClawHub 插件(如 Codex、Discord、WhatsApp 和诊断插件)同步,即使它们已被禁用或之前已精确锁定,同时保留第三方插件的锁定状态。感谢 @vincentkoc。 - 诊断工具/状态:当 `OPENCLAW_GATEWAY_TOKEN` 可能遮蔽本地 CLI 命令的其他有效 `gateway.auth.token` 源时发出警告,同时在配置指向同一环境变量令牌时避免误报。修复 #74271。感谢 @yelog。 - 网关/HTTP:避免为不相关的请求加载托管的出站图像媒体处理器,使禁用的 OpenAI 兼容路由直接返回 404,而无需等待惰性媒体边车服务。感谢 @vincentkoc。 - 网关/OpenAI 兼容:在流式聊天补全头被接受后立即发送助手角色的 SSE 块,这样冷启动的代理设置就不会让 `/v1/chat/completions` 客户端在空闲超时触发前一直收到无内容的 200 响应。 - 代理/媒体:在公告代理运行仍待处理时,避免直接使用生成的媒体补全回退,从而防止异步视频和音乐补全重复发送原始媒体消息。(#77754) - WebChat/Codex 媒体:在网关显示前,将 Codex 应用服务器生成的本地图片暂存到受管媒体中,这样 Codex 主页的图片路径不再触发 `LocalMediaAccessError`,同时保持 Codex 主页不在显示白名单中。感谢 @frankekn。 - 终端界面(TUI)/会话:将会话选择器限制在最近的数据行,并对当前会话使用精确查找式刷新,这样陈旧的数据存储就不会再导致 TUI 在恢复响应前去加载几周前的对话记录。感谢 @vincentkoc。 - 诊断工具/网关:在 `openclaw doctor --deep` 中报告最近的监督器重启交接信息,在可用时使用已安装的服务环境,以便在引导式诊断中可见服务管理的干净退出。感谢 @shakkernerd。 - 网关/状态:在 `openclaw gateway status --deep` 中显示最近的监督器重启交接信息(包含 JSON 详情),这样服务管理的干净重启会被报告为重启交接,而不是模糊的已停止服务诊断。感谢 @shakkernerd。 - 提供商/Fireworks:将 Kimi 模型暴露为仅支持关闭思考模式,并保持 K2.5/K2.6 请求设置为 `thinking: disabled`,这样手动切换模型时不会发送被 Fireworks 拒绝的 `reasoning*` 参数。参考 #74289。感谢 @frankekn。 - WhatsApp 响应性:仅在已验证的本地陈旧 TUI 客户端降低网关事件循环性能并延迟回复时将其停止。感谢 @vincentkoc。 - 插件/更新:在插件安装前修复陈旧的受管 npm 根目录 `openclaw` 对等包,这样 beta 通道的官方插件更新就不会因旧的核心 package-lock 状态而被降级。感谢 @vincentkoc。 - 插件/安装:在共享根目录的 npm 安装、更新和卸载后重新建立受管 npm 插件 `openclaw` 的对等链接,这样修改一个插件就不会导致之前安装的依赖 SDK 的插件无法解析 `openclaw/plugin-sdk/*`。 - 钩子/会话记忆:为回退记忆文件名添加冲突后缀,这样同一分钟内重复的 `/new` 或 `/reset` 捕获操作不会覆盖之前的会话存档。感谢 @vincentkoc。 - 代理/配置:从运行时路径中移除歧义性的旧版 `main` 代理目录辅助函数;模型、认证、网关、内置插件和测试辅助函数现在通过 `agents.list`/代理范围辅助函数解析默认/会话代理目录,而插件 SDK 保留一个已弃用的兼容性导出。 - CLI/状态:在 `openclaw status` 的会话行中显示所选的代理运行时/框架,使终端状态与 `/status` 运行时行保持一致。感谢 @vincentkoc。 - CLI/会话:在正常的 `sessions cleanup` 期间清理旧的不被引用的对话记录、压缩检查点和轨迹工件,这样网关重启或崩溃产生的孤儿文件就不会在 `sessions.json` 外无限累积。修复 #77608。感谢 @slideshow-dingo。 - 诊断工具/Codex:将主模型、回退、心跳/子代理/压缩覆盖、钩子、频道覆盖和陈旧会话绑定中的旧版 `openai-codex/*` 路由修复为标准的 `openai/*`;仅在 Codex 插件已安装、启用、提供 `codex` 框架且具备可用 OAuth 时选择 `agentRuntime.id: "codex"`,否则选择 `agentRuntime.id: "pi"`。感谢 @vincentkoc。 - 插件/更新:在主机更新期间保持已安装的官方 npm 和 ClawHub 插件(如 Codex、Discord、WhatsApp 和诊断插件)同步,即使它们被禁用或之前已精确锁定,同时保留第三方插件的锁定状态。感谢 @vincentkoc。 - 视频生成:在工具边界接受特定提供商的宽高比和分辨率提示,将 `720P` 标准化为 MiniMax 支持的 `768P`,并在 Gemini 视频请求中停止发送 Google `generateAudio`,以便提供商回退机制能够处理模型特定的参数差异。感谢 @vincentkoc。 - 状态:在 `/status` 中显示紧凑格式的网关进程运行时间和主机系统运行时间,使重启和主机生命周期检查在聊天中可见。感谢 @vincentkoc。 - WhatsApp 响应性:仅在已验证的本地陈旧 TUI 客户端降低网关事件循环性能并延迟回复时将其停止。感谢 @vincentkoc。 - 钩子/会话记忆:将重置记忆捕获操作移出命令回复路径,并通过 `llmSlug: true` 将模型生成的记忆文件名 slug 设为可选,这样 `/new` 和 `/reset` 就不会因为钩子维护或嵌套模型调用而阻塞 WhatsApp 和其他消息通道的重置回复。感谢 @vincentkoc。 - CLI/网关:在完整 CLI 命令执行完毕后暂停非 TTY 的 stdin,并阻止 `openclaw agent` 在网关请求/认证失败后回退到嵌入式模式,这样父级帮助命令可以干净退出,且作用域交付探测能立即暴露真实的网关错误。感谢 @vincentkoc。 - 网关/模型目录:在重新加载前缓存空的只读模型目录结果,这样当当前未发现可用模型时,TUI 和控制平面刷新循环就不会频繁冲击插件元数据读取。感谢 @vincentkoc。 - 钩子/会话记忆:为回退记忆文件名添加冲突后缀,这样同一分钟内重复的 `/new` 或 `/reset` 捕获操作不会覆盖之前的会话存档。感谢 @vincentkoc。 - 终端界面(TUI)/会话:将会话选择器限制在最近的数据行,并对当前会话使用精确查找式刷新,这样陈旧的数据存储就不会再导致 TUI 在恢复响应前去加载几周前的对话记录。感谢 @vincentkoc。 - 代理/上下文引擎:将隐藏的 OpenClaw 运行时上下文自定义消息排除在上下文引擎的 assemble、afterTurn 和 ingest 钩子之外,这样对话记录重建插件只能看到对话消息。感谢 @vincentkoc。 - TUI:交互式启动时跳过通用的 CLI 重启包装器,在终端丢失时干净退出,并拒绝将心跳会话恢复为已记住的聊天会话,从而防止首次启动时出现陈旧的心跳历史和孤立的 `openclaw-tui` 进程。感谢 @vincentkoc。 - Doctor/会话:将心跳损坏的默认主会话存储条目移至恢复键,并清除陈旧的 TUI 恢复指针,以便 `doctor --fix` 能够修复已卡在 `agent:main:main` 心跳历史中的实例。感谢 @vincentkoc。 - 网关/关闭:通过 `ShutdownResult` 报告结构化的关闭警告和 HTTP 关闭超时警告,同时保留生命周期钩子的加固。延续 #41296。感谢 @edenfunf。 - CLI/更新:使 dev-channel 预检 lint 为可选且在启用时受限,这样当 Ubuntu 主机发生 OOM 杀死或并行 oxlint 分片失败时,`openclaw update --channel dev` 不会再回退原本正常的 main 提交。感谢 @vincentkoc。 - CLI/频道:为裸 `openclaw channels` 父级帮助命令跳过配置、代理、频道选项目录、横幅配置和插件启动引导,使其在打印帮助后迅速退出,而不是加载配置的频道插件。感谢 @vincentkoc。 - 网关/关闭:在关闭期间取消延迟的就绪后维护,并在快速重启后抑制维护/定时任务的启动,防止出现孤立的后台计时器。感谢 @vincentkoc。 - CLI/状态:在 `openclaw status` 会话行中显示所选的代理运行框架,使终端状态与 `/status` 运行时行匹配。感谢 @vincentkoc。 - 会话 CLI:在 `openclaw sessions` 表格中显示所选的代理运行框架,使终端输出与 JSON/状态界面中已存在的运行时可见性匹配。感谢 @vincentkoc。 - 控制面板 UI/会话:在会话表中显示每个会话的代理运行框架,并允许按运行框架标签进行过滤,与代理面板的运行框架描述保持一致。感谢 @vincentkoc。 - Docker/网关:通过移除 `NET_RAW` 和 `NET_ADMIN` 能力并在捆绑的 `docker-compose.yml` 中启用 `no-new-privileges` 来加固网关容器。感谢 @VintageAyu。 - OpenAI/网关:正确刷新初始聊天流块,使首 token 流式传输可见,而不是延迟到后续块之后。 - 网关/媒体:为非相关的 HTTP 路由跳过媒体 sidecar 处理,使非媒体请求不承受媒体路由的行为开销。 - Discord:在进度草稿中显示推理文本,使流式回复能够展示有用的思考/进度,而不是空白草稿更新。 - 认证配置:避免因格式级拒绝而将提供商置于冷却期,这样当模型名称不受支持时,仍可尝试回退配置。 - 更新/插件:在更新期间容忍损坏的托管插件记录,以便核心包更新仍能完成并报告插件修复路径。 - 更新:在获取失败后干净地停止 dev-channel 更新,而不是继续执行后续的更新步骤。 - 代理/生成媒体:将附件式消息工具操作视为已完成的聊天发送,防止在生成的文件已上传时产生重复的回退媒体帖子。