← 返回更新日志

OpenClaw v2026.7.35

2026-09-21 · GitHub 原文
这是一个仅面向网关的 `extended-stable` 版本,相当于我们目前的 LTS。此版本基于 2026 年 7 月底的 OpenClaw,并加入了关键安全更新、可靠性和性能修复,以及新模型支持等功能。此版本发布时,OpenClaw 的最新版本是 [2026.9.5](https://github.com/openclaw/openclaw/releases#release-v2026.9.5) ## 2026.7.35 ### 修复 - **Doctor 插件注册表:** 当 Doctor 创建或修复注册表状态时,保留完整的内置插件清单,以确保默认的 Browser、Canvas、配对、文件传输、手机控制、Talk 语音和 Bonjour 插件在重启后仍然可用。状态迁移发现机制现在还能从 2026.7.34 写入的不完整注册表中恢复,同时保留外部插件的安装记录。从 #136045 回移。感谢 @wangmiao0668000666。 ### 完整贡献记录 此次 extended-stable 后续版本是在上一轮 2026.7.34 审计游标之后,对完整的 1,418 个提交进行审计后选定的。在全新安装或从 2026.6.35 升级期间,没有发现其他需要回移到 7 月版本线的缺陷。 ## 7 月 extended-stable 累积说明 OpenClaw 2026.7.33 和 2026.7.34 是不稳定的 extended-stable 构建,因此有意未作为 GitHub Release 发布。由于 2026.7.35 是 7 月维护版本线的第一个 GitHub Release,所以下面包含了这两个版本的完整变更日志。 ## 2026.7.33 ### 亮点 - **安全性和凭据安全:** 在 Gateway 和官方插件中加强命令解析、浏览器来源检查、插件 Git 安装、诊断、服务凭据和 Webhook 日志记录。 - **消息和会话完整性:** 在重试、钩子、恢复和频道生命周期转换期间,保留排队、导入、流式传输和工具结果消息。 - **Gateway 可靠性:** 关闭失败的 HTTP 和 Responses 流,限制高开销读取和历史记录查询,并在报告关闭完成之前完成关闭任务。感谢 @RomneyDa。 - **频道投递:** 修复 Discord、Matrix、Telegram、Slack、WhatsApp、LINE、飞书、Zalo 和会议插件中可能导致消息丢失、损坏或停滞的边缘情况。 - **提供商和媒体稳健性:** 限制提供商请求和诊断,拒绝格式错误的载荷,并保留有效的工具架构和响应生命周期。感谢 @RomneyDa。 ### 变更 - **Extended-stable 发布工具:** 引入当前的 Docker 频道分类器、提升工具、验证策略和测试,使 `v2026.7.33` 只能移动 `extended-stable*` 别名。感谢 @RomneyDa。 ### 修复 - **安全边界:** 拒绝包含转义换行符的命令单词、来源不完全匹配、注入的 Git 选项参数、继承的秘密响应标识符、不安全的浏览器变更,以及格式错误或过大的节点载荷。 - **投递和记录恢复:** 保持重试延迟准确,保留导入的消息和被插件阻止的工具结果,保留已分离的准入信息,并避免静默丢弃频道操作或恢复任务。感谢 @RomneyDa。 - **资源和生命周期安全:** 限制目录、历史记录、媒体、stderr、API 和提供商等待;停止已取消的并行工具;排空频道关闭任务;并在关闭后拒绝排队的工作进程请求。感谢 @RomneyDa。 - **文本和架构正确性:** 在面向用户的截断路径中保留 UTF-16 边界,保留工具根架构属性,拒绝非有限架构值,并报告准确的 UTF-8 写入大小。 - **官方插件:** 修复通过 npm 发布的插件清单中的消息解析、代理路径、请求超时、媒体处理、隐私安全日志记录和运行时别名。 ### 完整贡献记录 此审计记录涵盖完整的 v2026.7.1-2..42625327f91254cfe66cbeb6d7a1812780b1a694 历史:共合并 126 个 PR。生成清单还将直接提交作为编辑输入;以上分组说明优先体现对用户的影响。 #### 拉取请求 - **PR #102438** 修复:身份验证记录不再还原已轮换的 OpenAI OAuth 凭据。相关:#102430。感谢 @obviyus。 - **PR #102125** 修复(gateway):在发送响应头后发生故障时,正确结束插件 HTTP 响应。感谢 @mushuiyu886。 - **PR #102451** 修复(memory-host):关闭时拒绝排队的工作进程请求。感谢 @QiuYuang。 - **PR #102276** 修复(agent-core):阻止已取消的并行工具启动。相关:#102252。感谢 @harjothkhara 和 @yetval。 - **PR #101739** 修复(secrets):拒绝继承的 exec 响应 ID。感谢 @Alix-007。 - **PR #102089** 修复(twilio):在 Webhook 诊断中隐去 turnToken。感谢 @Alix-007。 - **PR #102403** 修复(backup):以仅所有者可访问的 0o600 权限写入备份归档。感谢 @yetval。 - **PR #102398** 修复(plugins):终止 git clone 参数,防止 `git:` 规范注入选项。感谢 @yetval。 - **PR #38290** Gateway:在浏览器允许列表中允许扩展来源。相关:#46520。感谢 @brunowowk 和 @mosidevv。 - **PR #102013** 修复(gateway):限制 sessions.usage 的全代理会话发现并发数。感谢 @masatohoshino。 - **PR #102825** 修复(gateway):以线性方式解析图片数据 URL。相关:#102393。感谢 @wangyan2026 和 @yetval。 - **PR #102426** 修复:使用架构提示隐去诊断配置字段 [AI]。感谢 @pgondhi987。 - **PR #101000** 修复(plugins):限制非流式响应中的托管目录源读取。感谢 @hugenshen 和 @cursoragent。 - **PR #104625** 修复(gateway):降低启动关闭传输竞态问题的严重级别。 - **PR #104540** 修复(sessions):防止持久化工具详细信息中的 Unicode 损坏。感谢 @zhangguiping-xydt。 - **PR #104734** 修复(models):从 `models status --json` 中隐去合成身份验证凭据。相关:#104713。感谢 @ObliviateRickLin 和 @davefano。 - **PR #104811** 修复(gateway):在关闭和重新加载期间保持频道停止状态。感谢 @ShiroKSH。 - **PR #102881** 修复(gateway):在 HTTP 上接受 `auth.mode=none` 之前,拒绝不允许的浏览器 Origin(#102834)。感谢 @wangyan2026 和 @yetval。 - **PR #101469** 修复(hooks):在钩子安装验证期间限制 HOOK.md 的读取。感谢 @cxbAsDev。 - **PR #103562** 修复(discord):重试回复会话初始化冲突,以防止消息静默丢失。相关:#102381。感谢 @cxbAsDev 和 @zuofengboss。 - **PR #113700** 修复:在正确的重试延迟后恢复出站消息。 - **PR #113703** 修复:保留彼此独立的已导入 CLI 会话消息。 - **PR #113697** 修复:当插件阻止结果时,修复工具调用记录。 - **PR #114134** 修复:对包含转义换行符的 Shell 单词要求审批 [AI]。感谢 @pgondhi987。 - **PR #102331** 修复(google-meet):将 Meet 会话保留在加入该会话的代理上。感谢 @steipete-oai。 - **PR #101630** 修复(mattermost):在代码点边界处截断入站预览。感谢 @hugenshen 和 @cursoragent。 - **PR #101736** 修复(agents):确保控制元数据截断符合 UTF-16 安全要求。感谢 @chengzhichao-xydt 和 @Alix-007。 - **PR #101617** 修复(discord):防止重启后残留过期的 Gateway 错误监听器。感谢 @zhangguiping-xydt。 - **PR #102246** 修复(discord):确保 Gateway 关闭原因符合 UTF-16 安全要求。感谢 @mushuiyu886。 - **PR #102332** 修复(agents):确保截断不会破坏代理项。感谢 @QiuYuang。 - **PR #101815** 修复(discord):将编码后的视频 URL 与说明文字分离。感谢 @VectorPeak。 - **PR #102090** 修复(gateway):确保会话标题和预览文本截断符合 UTF-16 安全要求。感谢 @wm0018。 - **PR #101976** 修复(acp):确保后台任务摘要在截断边界处符合 UTF-16 安全要求。感谢 @MoerAI。 - **PR #102378** 修复(acp):确保会话更新文本截断不会破坏代理项。感谢 @zw-xysk。 - **PR #102085** 修复(agents):确保 `chunkString` 和 `buildResumeMessage` 截断符合 UTF-16 安全要求。感谢 @wm0018。 - **PR #102105** 修复(google-meet):处理节点主机中的 stdout/stderr 流错误。感谢 @wangmiao0668000666。 - **PR #102157** 修复(google-meet):限制 Calendar v3 `events.list` 请求的截止时间。感谢 @wangmiao0668000666。 - **PR #102395** 修复(matrix):确保 HTTP 错误和工具进度截断符合 UTF-16 安全要求。感谢 @wangmiao0668000666。 - **PR #102266** 修复(security):确保频道元数据和安装策略截断不会破坏代理项。感谢 @zw-xysk。 - **PR #101781** 修复(telegram):确保私信主题自动重命名中的用户消息符合 UTF-16 安全要求。感谢 @hugenshen 和 @cursoragent。 - **PR #101934** 修复:确保重启/诊断输出中的任务标题截断符合 UTF-16 安全要求。感谢 @wm0018。 - **PR #102407** 修复(channels):确保入站日志预览截断符合 UTF-16 安全要求。感谢 @miorbnli。 - **PR #102466** 修复(agents):确保工具结果上下文保护截断符合 UTF-16 安全要求。感谢 @chengzhichao-xydt。 - **PR #102464** 修复(tool-policy-audit):使用 `truncateUtf16Safe` 截断审计字段。感谢 @lsr911。 - **PR #102467** 修复(native-hook-relay):使用 `truncateUtf16Safe` 截断钩子显示文本。感谢 @lsr911。 - **PR #102470** 修复(gateway):确保聊天历史记录显示文本截断不会破坏代理项。感谢 @zw-xysk。 - **PR #102483** 修复(auto-reply、infra):确保启动上下文和心跳事件文本符合 UTF-16 安全要求。感谢 @wings1029。 - **PR #102478** 修复(memory):解决代码片段在截断时拆分表情符号的问题。感谢 @qingminglong。 - **PR #101649** 修复(zalouser):身份验证完成后清除探测超时。感谢 @Alix-007。 - **PR #101506** 修复(browser):限制 Chrome 启动时的 stderr 诊断信息。感谢 @mikasa0818。 - **PR #102484** 修复(gateway):确保实时聊天助手缓冲区尾部截断符合 UTF-16 安全要求。感谢 @wings1029。 - **PR #102477** 修复(talk):对面向 LLM 提示词的文本使用 `truncateUtf16Safe` 进行截断。感谢 @xydt-tanshanshan。 - **PR #102496** 修复(agents):确保提供商错误详细信息截断符合 UTF-16 安全要求。感谢 @chengzhichao-xydt。 - **PR #102500** 修复(mcp-runtime):使用 `truncateUtf16Safe` 截断 MCP 元数据文本。感谢 @lsr911。 - **PR #102515** 修复(compaction):对压缩后的上下文文本使用 `truncateUtf16Safe`。感谢 @lsr911。 - **PR #102525** 修复(discord):使用 `truncateUtf16Safe` 截断部署错误正文。感谢 @lsr911。 - **PR #102527** 修复(oc-path):使用 `truncateUtf16Safe` 截断错误消息中的路径。感谢 @lsr911。 - **PR #102536** 修复(nodes):恢复 Mac 应用允许列表执行。相关:#102528。 - **PR #102149** 修复(google-meet):限制 Meet v2 和 Drive `files.export` 请求的截止时间。感谢 @wangmiao0668000666。 - **PR #102524** 修复(memory-core):使用 `truncateUtf16Safe` 截断日记上下文。感谢 @lsr911。 - **PR #102389** 修复(web-fetch):将恰好达到限制大小的响应正文报告为完整,而非已截断 [AI 辅助]。相关:#101837。感谢 @Supsumintong 和 @qingminglong。 - **PR #101832** 修复:在执行限制后继续禁用 Gemini 思考功能。相关:#101785。感谢 @MonkeyLeeT 和 @aniruddhaadak80。 - **PR #104049** 修复:安装程序在命令失败后删除临时文件。 - **PR #97828** 修复(telegram):在 `forceNewMessage` 轮换之前清除推理预览(#80862)。感谢 @ly-wang19 和 @kyle20026。 - **PR #102859** 修复(nextcloud-talk):为房间信息查询添加超时。感谢 @Alix-007 和 @Leon-SK668。 - **PR #102862** 修复(minimax):为 OAuth HTTP 请求添加超时。感谢 @Alix-007 和 @Leon-SK668。 - **PR #103547** 修复(voice-call):通过子系统日志记录器隐去事件日志中的电话号码。感谢 @xialonglee。 - **PR #103555** 修复(voice-call):将 Webhook 日志统一到注入的插件日志记录器上,并明确记录文本的隐私边界。感谢 @xialonglee。 - **PR #104229** 修复:实时更新程序构建完整的运行时资源。 - **PR #104306** 修复:按需启动本地嵌入服务。相关:#104214。感谢 @vincentkoc。 - **PR #102965** 修复(inworld):为语音列表请求添加超时。感谢 @chengzhichao-xydt。 - **PR #103752** 修复(google-meet):验证 Chrome 节点策略参数。感谢 @Leon-SK668。 - **PR #103728** 修复(memory):跳过空白搜索提供商的引导启动。感谢 @Leon-SK668 和 @vincentkoc。 - **PR #104426** 修复(commitments):按代理隔离提取批次。相关:#104425。 - **PR #103731** 修复(plugins):遵循空文档提取器作用域。感谢 @Leon-SK668 和 @vincentkoc。 - **PR #104263** 修复(gateway):当数值限制极大时,对历史记录设置上限。感谢 @qingminglong。 - **PR #104156** 修复(agents):按照字节限制截断多字节中间件详细信息。感谢 @qingminglong。 - **PR #104173** 修复(onboard):安装服务前等待 Gateway 警告。感谢 @qingminglong。 - **PR #104110** 修复(agents):代理停止时取消待处理的捆绑包 LSP 请求。感谢 @zhangguiping-xydt 和 @vincentkoc。 - **PR #104404** 修复(agents):在上下文剪枝中保留 UTF-16 边界。感谢 @mushuiyu886 和 @vincentkoc。 - **PR #104440** 修复(browser):在 act 路由中拒绝十六进制点击坐标。感谢 @qingminglong。 - **PR #104260** 修复(voice-call):对受限子进程输出尾部使用 `sliceUtf16Safe`。感谢 @hugenshen。 - **PR #104151** 修复(file-transfer):确保受限的 stderr 尾部符合 UTF-16 安全要求。感谢 @hugenshen。 - **PR #104148** 修复(agents):确保 scp stderr 尾部符合 UTF-16 安全要求。感谢 @hugenshen。 - **PR #104414** 修复(nodes):当 Base64 无效时拒绝格式错误的媒体载荷。感谢 @qingminglong。 - **PR #104556** 修复(file-transfer):在分派给节点之前拒绝过大的内联文件写入。感谢 @qingminglong。 - **PR #102974** 修复(google):以流式方式处理 Gemini 批处理 JSONL 输出,而非使用 `res.text()`。感谢 @hugenshen。 - **PR #104610** 修复(gateway):降低预期的启动套接字中止事件的严重级别。 - **PR #104301** 修复(utils):对长 URL 超时日志使用 UTF-16 安全截断。感谢 @whiteyzy。 - **PR #103445** 修复(slack):交互后保留不相关的操作行。感谢 @zw-xysk 和 @cursoragent。 - **PR #104677** 修复(browser):在解析 JSON 之前运行变更保护。感谢 @Leon-SK668。 - **PR #104423** 修复(agents):在引导上下文中保留 UTF-16 边界。感谢 @mushuiyu886。 - **PR #104560** 修复(write):在成功消息中报告实际的 UTF-8 字节数。感谢 @wings1029。 - **PR #104454** 修复(attempt-execution):使用 `truncateUtf16Safe` 截断摘要文本。感谢 @chenyangjun-xy。 - **PR #104715** 修复(browser):将配置文件代理策略应用于标签页列表的信息隐去。感谢 @Leon-SK668。 - **PR #104470** 修复(ai):拒绝工具架构中的非有限数值。相关:#104469。感谢 @VectorPeak。 - **PR #104498** 修复(feishu):避免记录原始的重复卡片操作令牌。感谢 @VectorPeak。 - **PR #113259** 修复(gateway):拒绝不完整的使用情况日期范围。感谢 @lzw112。 - **PR #112855** 修复:Doctor 保留由标题完全匹配的 Gateway 进程持有的锁。相关:#112854。感谢 @fr-meyer。 - **PR #113609** 修复(gateway):为已禁用的 OpenAI API 路由返回 404。 - **PR #113683** 修复:通过托管代理路由技能验证。 - **PR #113685** 修复:保留子进程信号退出代码。 - **PR #113106** 修复(xiaomi):拒绝 TTS 响应中格式错误的 Base64 音频。感谢 @zenglingbiao。 - **PR #113109** 修复(volcengine):拒绝 TTS 响应中格式错误的 Base64 音频。感谢 @zenglingbiao。 - **PR #113790** 修复:识别安装在登录配置文件中的 Bash 补全。 - **PR #113897** 修复(models):确保空模型列表仍可被机器读取。 - **PR #114051** 修复(agents):防止会话在并发负载下停滞。 - **PR #114061** 修复(gateway):防止嵌套仪表板路由中缺少资源。 - **PR #114280** 修复(gateway):防止账户停止失败导致其他同级账户陷入停滞。感谢 @yangxiansheng。 - **PR #114325** 修复:准确报告不可用的系统 Node 版本。感谢 @RomneyDa。 - **PR #93516** 修复(matrix):支持 Matrix 主服务器 URL 的反向代理路径。相关:#102885。感谢 @Papilionidae。 - **PR #114450** 修复(zalo):当可选媒体为空时仍投递文本。相关:#105078。感谢 @VectorPeak。 - **PR #114512** 修复(cron):避免执行通道繁忙时误报代理超时。感谢 @hugin-bot。 - **PR #112352** 修复(model):在模型变更触发思考模式重新映射之前报告该变更。感谢 @kesava500。 - **PR #114540** 修复(cron):防止本地模型预检发生套接字泄漏。感谢 @hugenshen。 - **PR #114500** 修复(auto-reply):规范化以换行符分隔的静默令牌。相关:#103735。感谢 @Maless88。 - **PR #97024** 修复(session-delivery):传播非 ENOENT 的重试持久化失败。感谢 @0xghost42。 - **PR #114076** 修复:调试代理遵循响应背压(问题 #105701)。感谢 @qingminglong 和 @aniruddhaadak80。 - **PR #128799** 修复(ai):展平根级 `anyOf` 工具架构时保留根属性。相关:#128743。感谢 @LiuwqGit、@Patrick-Erichsen 和 @schaba21。 - **PR #131546** 修复(copilot):管理 BYOK 响应流生命周期。相关:#131544。 - **PR #131195** 修复(line):修复 `/card` 因数据内部的逗号而拆分操作、列表项或收据条目的问题。相关:#129349。感谢 @edenfunf 和 @obviyus。 - **PR #131783** 修复(agents):在 `ls` 列表中保持悬空符号链接可见。 - **PR #132014** 修复(line):将回传数据携带的选择内容提供给代理。相关:#132000。感谢 @edenfunf 和 @obviyus。 - **PR #102636** 修复(handoff):对于没有子代理的单一代理,跳过编排器框架。相关:#102628。感谢 @Gary-Jia-new、@altaywtf 和 @Joakim-Emanuelson。 - **PR #132545** 修复(plugins):在构建后的运行时中保留已编译的插件别名。 - **PR #102160** 修复(agents):运行生命周期可靠性——有界释放、基于证据的存活状态和看门狗语义。相关:#85826、#96168。感谢 @obviyus、@kiagentkronos-cell 和 @alvelda。 ## 2026.7.34 ### 亮点 - **当前模型系列:** 在 extended stable 随附的提供商目录和运行时策略中,新增对 GPT-6 Astra、GPT Image 2.5 Flare/Sunburst、Muse Spark 1.3、Claude Opus 5、Gemini 3.6/3.7 Flash、Grok 4.6、Kimi K3、GLM 5.3、Qwen 3.8、DeepSeek V4 Flash Vision Experimental 和 Nemotron 3.5 Lightning 的支持。Fable 5.1 仍被推迟,因为其前缀绑定的推理契约需要更新的仅追加重放生命周期。 - **GPT-5.6 兼容性:** 在 OpenAI 直连和 Codex OAuth 路由、推理控制、定价、上下文和视觉元数据中,保留并验证完整的 GPT-5.6 Sol、Terra 和 Luna 系列。 ### 修复 - **安装程序恢复:** 当安装修复尝试也失败时,保留原始 npm 恢复诊断信息,使运维人员看到可采取行动的软件包管理器错误,而不是次生的清理失败。 ### 完整贡献记录 此 extended-stable 候选版本是在 `v2026.7.33` 之后,对完整的 11,198 个提交进行审计后选定的。它将经批准的提供商和安装程序变更部分适配到 7.33 SDK 和配置界面,而没有引入后续的架构重构。 ### 发布验证 - npm 软件包:https://www.npmjs.com/package/openclaw/v/2026.7.35 - 注册表 tarball:https://registry.npmjs.org/openclaw/-/openclaw-2026.7.35.tgz - 完整性:`sha512-2ZzpVrK4sOzKLRyS5S6rHjkXQS11FHe361FQSvUy8CBBG0TkzZUisBCmCZ0PLfK8Hpym2ZPHHpknZQaD4WONGQ==` - 发布 SHA:`aa94808cb05668cdf1c10bc8f034a8176deba483` - 完整发布验证:https://github.com/openclaw/openclaw/actions/runs/35574936025/attempts/2 - 插件 npm 发布:https://github.com/openclaw/openclaw/actions/runs/35595949221 - OpenClaw npm 发布:https://github.com/openclaw/openclaw/actions/runs/35597355437 — npm 已接受发布;任务失败的唯一原因是,在传播完成之前,受限的注册表回读操作已超时。 - Docker 发布恢复:https://github.com/openclaw/openclaw/actions/runs/35598889849 - 手动最终确认:在独立验证 npm 签名和来源、`extended-stable` 选择器、全部 70 个插件的回读结果、Docker 摘要和证明,以及 npm/OCM/Gateway/容器冒烟测试后,经所有者批准。