← 返回更新日志

OpenClaw v2026.7.33

2026-09-18 · GitHub 原文
## 2026.7.33 这是 2026 年 7 月的扩展稳定版,涵盖 Gateway、官方 npm 插件以及对应的 Docker 镜像。 ### 亮点 - **安全与凭据保护:**强化 Gateway 和官方插件中的命令解析、浏览器来源检查、插件 Git 安装、诊断信息、服务凭据和 Webhook 日志记录。 - **消息与会话完整性:**在重试、钩子、恢复以及频道生命周期转换期间,保留排队、导入、流式传输和工具结果消息。 - **Gateway 可靠性:**关闭失败的 HTTP 和 Responses 流,限制高开销读取和历史查询,并在报告完成前处理完关闭任务。感谢 @RomneyDa。 - **频道投递:**修复 Discord、Matrix、Telegram、Slack、WhatsApp、LINE、飞书、Zalo 和会议插件中可能导致消息丢失、损坏或阻塞的边缘情况。 - **提供商与媒体健壮性:**限制提供商请求和诊断,拒绝格式错误的负载,并保留有效的工具 schema 和响应生命周期。感谢 @RomneyDa。 ### 变更 - **扩展稳定版发布工具:**沿用当前 Docker 频道分类器、发布器、验证策略和测试,以便 `v2026.7.33` 仅移动 `extended-stable*` 别名。感谢 @RomneyDa。 ### 修复 - **安全边界:**拒绝包含转义换行符的命令词、精确来源不匹配、注入的 Git 选项参数、继承的密钥响应标识符、不安全的浏览器变更,以及格式错误或过大的节点负载。 - **投递与记录恢复:**确保重试延迟准确,保留导入的消息和被插件阻止的工具结果,保留已分离的准入请求,并避免静默丢弃频道操作或恢复任务。感谢 @RomneyDa。 - **资源与生命周期安全:**限制目录、历史、媒体、stderr、API 和提供商等待时间;停止已取消的并行工具;排空频道关闭操作;并在关闭后拒绝排队的工作线程请求。感谢 @RomneyDa。 - **文本与 schema 正确性:**在所有面向用户的截断路径中保留 UTF-16 边界,保留根工具 schema 属性,拒绝非有限 schema 值,并报告精确的 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** 修复:使用 schema 提示对诊断配置字段进行脱敏 [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):片段截断时会拆分 emoji。感谢 @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):对 MCP 元数据文本截断使用 `truncateUtf16Safe`。感谢 @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):当代理停止时取消待处理的 bundle 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):拒绝非有限工具 schema 数字。相关 #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 homeserver 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` 工具 schema 时保留根属性。相关 #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。