← 返回更新日志

OpenClaw v2026.5.16-beta.6 预发布

2026-05-18 · GitHub 原文
### 变更 - Mac 应用:重新设计设置页面,采用一致的卡片布局、缓存导航、更清晰的权限/语音/技能/定时任务/执行/调试面板,以及原生侧边栏周围更稳定的间距。 - 技能:将仓库本地的 Codex 结账审查技能和辅助工具重命名为 `autoreview`,同时保留 Codex 优先的回退行为。 - 技能:新增 meme 生成技能,支持策划模板搜索、本地 SVG/PNG 渲染、Imgflip 托管渲染以及 Know Your Meme 来源链接。 - 浏览器:在快照中展示待处理和最近处理的模态对话框,当某个操作打开模态框时返回 `blockedByDialog`,并允许使用 `browser dialog --dialog-id` 来回答待处理的对话框。 - 代理/工具:在媒体、消息、会话、定时任务、网关、Web、图片/PDF、TTS、节点和计划工具中,缩短内置工具描述和模式提示,同时保留路由护栏。 - 技能:新增节点检查器调试、融合图表生成以及可废弃的 spike 工作流技能。 - CLI/插件:新增 `defineToolPlugin` 以及 `openclaw plugins build`、`validate` 和 `init` 命令,用于创建带有生成清单元数据、可选工具声明和上下文工厂的类型化简单工具插件。 - 代理/技能:收紧捆绑的技能提示和元数据,引用技能描述,刷新当前 CLI/API 指南,并更新嵌入式 sherpa-onnx 运行时下载。 - 技能:更新 Obsidian 技能,使其针对官方 `obsidian` CLI,并要求其注册的二进制文件,而不是第三方 `obsidian-cli`。 - 技能:新增 Python 调试技能,支持 pdb、breakpoint()、事后检查以及 debugpy 远程附加。 - 插件/消息:为频道渲染器添加表示能力限制,在原生渲染前适配富消息控件,并将旧版 `interactive`/Slack 指令生产者 API 标记为已弃用。 - 代理:支持 HTTPS 管理的正向代理端点以及限定了作用域的 `proxy.tls.caFile` CA 信任,用于代理端点 TLS。(#79171)感谢 @jesse-merhi。 - QA 实验室:新增首小时 20 轮和可选的 100 轮运行时一致性场景,并提供标准 QA 门禁和浸泡 QA 门禁的分层元数据。修复 #80338;关联 #80337。感谢 @100yenadmin。 - QA 实验室:新增 `openclaw qa suite --runtime-parity-tier`,并将标准 Codex 对比 Pi 层级连接到发布检查中,与可选/仅直播/浸泡通道分开。修复 #80337。感谢 @100yenadmin。 - QA 实验室:新增仅直播的 Codex Pi 形读取词汇金丝雀,以便运行时一致性能够捕获原生工作区读取提示兼容性漂移。(#80323)感谢 @100yenadmin。 - QA 实验室:新增仅直播的测试平台自检场景,用于插件钩子崩溃、清单合约错误以及 WebChat 直接回复自消息路由。(#80323)感谢 @100yenadmin。 - QA 实验室:新增运行时工具夹具场景和覆盖率报告,涵盖 Codex 原生工作区工具、OpenClaw 动态工具以及可选的插件支持工具。修复 #80173。感谢 @100yenadmin。 - QA 实验室:通过 `openclaw qa coverage --tools` 公开运行时工具夹具覆盖率,并提供可选的套件摘要评估,用于一致性门禁工件。感谢 @100yenadmin。 - QA 实验室:新增个人代理批准/拒绝场景,以便基准包能够验证被拒绝的本地读取能干净地停止,而不会留下工具进度或夹具泄漏。(#83150)感谢 @iFiras-Max1。 ### 修复 - Mac 应用:当远程网关断开连接时,保持应用级菜单命令和仪表盘故障状态可访问,并将设置侧边栏切换按钮保留在标题栏前部区域。 - 网关/WebChat:从聊天历史和实时消息事件中隐藏内部运行时上下文和其他 `display: false` 的转录消息。修复 #83216。感谢 @EmpireCreator。 - Mac 应用:将会话设置面板与标准设置页面的边距和行间距对齐。 - OpenAI/Codex:在配置验证期间不再拒绝可用的 `openai-codex` GPT-5.1、GPT-5.2 和 GPT-5.3 模型引用,同时继续抑制已移除的 Spark 别名。修复 #83303。 - Codex 应用服务器:在最终快照省略聚合输出时,保留流式原生命令输出到镜像转录和轨迹导出中。(#83200)感谢 @rozmiarD。 - Codex 应用服务器:当聊天或发送者策略拒绝工具时,关闭失败,禁用受限轮次的原生代码、应用、环境和用户 MCP 表面。(#82374)感谢 @VACInc。 - Codex 应用服务器:当规模过大的投影历史被截断时,保留最近的上下文引擎消息,以免长频道会话中的短后续消息回退到过时的早期轮次。(#83127)感谢 @VACInc。 - 飞书:从会话线程设置中返回绑定的子代理投递来源,以便飞书子代理完成结果路由回相同的 DM 或话题。(#83190)感谢 @100menotu001。 - CLI/更新:根据平台定制更新后的网关恢复提示,显示 systemd、LaunchAgent、计划任务或通用服务管理器指南,而不是仅适用于 macOS 的恢复文本。(#83096)感谢 @rubencu。 - 插件:对旧版 `before_agent_start` 钩子应用默认 15 秒超时,以便挂起的插件处理程序不再阻塞代理启动。修复 #48534。(#83136)感谢 @therahul-yo。 - 飞书:刷新入站会话投递上下文,用于 DM、群组和广播轮次,以便后续回复不会继承过时的 WebChat 路由。修复 #78274。 - 代理/子代理:要求在报告生成接受之前进行初始子代理注册表保存,当注册表写入失败时返回生成错误,而不是丢失未追踪的运行。(#83146)感谢 @yetval。 - QA 实验室/QA 通道:将经过编辑的代理工具启动追踪附加到出站 `QaBusMessage` 记录,以便场景能够断言实际工具使用情况,而不仅仅依赖回复文本。修复 #67637。感谢 @100yenadmin。 - QA 实验室:当缺少助手消息使用量时,使直播运行时一致性报告失败,防止将 `0 vs 0` 的直播令牌行报告为通过的证据。修复 #80411。感谢 @100yenadmin。 - QA 实验室:当没有可移植的 Codex 认证时,在启动隔离工作线程之前使 Codex 支持的 OpenAI 直播运行时配对运行失败,同时为隔离的 QA 代理暂存 API 密钥回退和配置的 Codex 密钥。修复 #80412。感谢 @100yenadmin。 - QA 实验室:刷新一致性门禁、模拟前沿夹具、模型场景和工作流工件通道,以将 GPT-5.5 与 Claude Opus 4.7 进行比较。修复 #74262。感谢 @100yenadmin。 - QA 实验室:使模拟一致性调度程序能够感知提供者,用于来源发现和子代理场景,以便 OpenAI 和 Anthropic 通道不再共享相同的预制计划。修复 #64879。感谢 @100yenadmin。 - QA 实验室:停止从未经身份验证的引导有效负载返回控制 UI Bearer 令牌,并将 Docker 测试平台端口绑定到仅环回的主机地址。(#66355)感谢 @pgondhi987。 - Mac 应用:避免在渲染定时作业设置面板时发生 SwiftUI 元数据崩溃。 - 代理/子代理:保留运行模式“保持”的子代理注册表条目,使其超过会话清理 TTL,以便在清理完成后仍能看到被保持的子代理运行。修复 #83132。(#83168)感谢 @yetval。 - 代理/OpenAI 流:在突发响应块之间使用 `setTimeout(0)` 而非 `setImmediate` 进行让步,以便中止定时器在让步期间能够触发,使热流上的取消超时保持响应。关联 #82462。 - 代理/Codex:使基于旧版 `oauthRef` 的 OAuth 配置文件保持可用,同时 `openclaw doctor --fix` 将其迁移回内联凭据,而不创建新的边车凭据。(#83312)感谢 @joshavant。 - CLI/配置:将 SecretRef 诊断信息发送到 stderr,以便 JSON 命令的 stdout 保持可解析。 - CLI/插件:将捆绑的内存 CLI 作为包条目发布,以便通过包安装的 `openclaw memory` 命令能够正确注册。 - CLI/更新:在包交换期间推迟医生时的插件包安装,并从更新的安装注册表中播种核心后修复,防止重复安装失败。 - 飞书:将 SecretRef 顶级凭据检测为已配置的默认账户,而不是将对象支持的应用密钥视为缺失。 - 网关/重启:保持普通的非托管 SIGUSR1/配置重启在进程内进行,而不是分离生成孤儿子进程,保留自定义监控程序 PID 跟踪,同时将更新重启保留在全新进程路径上。修复 #65668。 - CLI/补全:在设置和医生补全安装期间,解析具体的 PowerShell 配置文件路径并重新加载命令。修复 #44296。(#83059)感谢 @yu-xin-c。 - Telegram:将隔离的长轮询保持在严格的 `getUpdates` 请求保护之下,以便具有高 `timeoutSeconds` 的空闲机器人账户不会错误断开并重启循环。修复 #83264。感谢 @riccodecarvalho。 - 提供者/Google:在原生重放期间保留并恢复 Gemini 3 工具调用思路签名,以便函数调用轮次不再因缺少 `thought_signature` 而返回 400 错误。修复 #72879。(#80358)感谢 @abnershang。 - 内存/QMD:保留对原始连字符查询的词法搜索,同时规范化语义 QMD 子搜索,避免对于带破折号的标识符和日期回退到内置索引。修复 #81328。 - 内存核心:区分 sqlite-vec 加载失败和语义向量嵌入缺失,在降级 `memory index` 警告中提供更清晰的诊断,以便向量召回诊断指向未解决的维度,而不是在存储就绪时指责 sqlite-vec。修复 #75624。(#83056)感谢 @xuruiray 和 @Noah3521。 - 代理/子代理:在将完成公告路由回原始运行会话时,保留沙盒对等控制器所有权,确保子代理控制和完成投递范围正确。修复 #80201。(#80242)感谢 @Jerry-Xin。 - 网关:当某个热加载频道重启失败时,继续重启其余频道,同时仍然报告聚合重启失败并回滚插件预替换停止。修复 #83054。感谢 @zqchris。 - 网关/密钥:将轻量级密钥运行时状态和认证存储缓存从完整密钥运行时中分离出来,当网关启动配置没有 SecretRef 值时走启动快速路径,加快密钥启动速度,同时保留清理和刷新语义。 - Codex 应用服务器:在恢复前轮换过大的原生 Codex 线程,并限制进入原生 Codex 会话的动态工具结果文本,防止过大的旧上下文在 OpenClaw 压缩后仍然存在。(#82981)感谢 @hansolo949。 - 网关/重启:在重启关闭期间,在套接字和频道关闭之前排空待处理的回复和活动的聊天运行,通过正常清理路径中止超时的聊天运行。(#69121)感谢 @alexlomt。 - 代理/Codex:使用 Codex 运行时上下文窗口进行 OpenAI 模型预检压缩和内存刷新检查,以便 GPT-5.5 Codex 会话在达到较小的原生上下文限制之前进行压缩。修复 #82982。感谢 @vliuyt。 - QA 实验室:当套件父进程退出时清理孤立的网关临时根目录,并在配置重启后等待网关和传输就绪,减少中断运行产生的陈旧 `qa-channel` 噪音。修复 #65506。感谢 @100yenadmin。 - QA 实验室:唤醒在总线重启后到达的带有过时未来游标的 qa-bus 长轮询,为测试平台客户端保持重新连接就绪状态。(#67142)感谢 @hxy91819。 - QA 实验室:将 Multipass 传输脚本放置在 OpenClaw 首选的临时根目录下,而不是原始操作系统临时路径,使 VM 运行器保持在临时路径保护范围内。(#64098)感谢 @ImLukeF。 - 代理/回复:保留幸存的回复媒体,并在其他媒体引用失败时附加警告,以便部分媒体标准化不再静默丢弃失败。感谢 @Jerry-Xin。 - 配置/模型:在模型兼容配置中接受 `thinkingFormat: "together"`,以便 Together 路由可以选择使用 Together 特定的思考响应格式。 - 插件/tokenjuice:将捆绑的 tokenjuice 运行时升级到 0.7.1,为 OpenClaw 插件带来 Codex 钩子批准兼容性、预处理工具命令包装修复以及 Rolldown/Vitest 输出压缩改进。 - 代理/OpenAI:停止对 GPT-5 最终回复进行硬编码简洁性上限的后处理,保留完整的频道响应而不是追加虚假省略号,并在严格的代理 GPT-5 执行激活时记录日志。修复 #82910。 - Mac 应用:细化设置常规和连接面板,采用更清晰的状态面板、卡片行以及单个原生标题栏侧边栏切换按钮。 - 代理/媒体:当请求者会话完成交接失败时,直接交付失败的异步图像、音乐和视频生成结果,以便频道用户看到提供者错误,而不是静默回退停滞。 - 代理/音乐:将歌曲、短曲、节拍、颂歌和器乐请求引导至 `music_generate` 音频创作,而不是仅歌词回复,并将 `lyrics` 保留给精确的演唱单词。 - Codex 应用服务器:将原生 Codex 工具调用和结果记录到轨迹工件中,以便调试/轨迹导出捕获完整的 Codex 原生工具历史,而不仅仅是 OpenClaw 桥接的轮次。感谢 @vyctorbrzezowski。 - Codex/应用服务器:将绑定的会话绑定到所属代理运行时,以便原生 Codex 控制和后续轮次不会回退到默认代理客户端。修复 #82954。(#82993) - CLI/infer:在全新的显式会话中运行网关模型探测,以便一次性提供者检查不会继承默认代理转录状态。(#82861)感谢 @Kaspre。 - 提供者/Together:即使共享文本模型配置仍指向 v1 基础 URL,也将视频生成请求发送到 Together 的 v2 视频 API。(#82992) - 浏览器 CLI:在嵌套命令上保留浏览器级选项,在延迟命令注册期间跳过选项值,并保持长时间运行的等待/下载/对话框钩子在其广告的等待窗口内打开。 - CLI/会话:接受 `openclaw sessions list` 作为 `openclaw sessions` 的别名,以匹配其他列表式命令。修复 #81139。(#81163)感谢 @YB0y。 - 频道/流预览:加宽紧凑进度草稿行,并在单词边界处裁剪散文,同时保留命令/路径后缀,并通过 `streaming.progress.maxLineChars` 提供频道特定的调整。 - CLI/插件:让 `openclaw plugins doctor` 在配置的运行时缺少其所有者插件时发出警告,并共享与 `openclaw doctor --fix` 相同的安装映射。修复 #81326。(#81674)感谢 @Zavianx。 - 代理/Codex:将解析为 `openai-codex` 的 OpenAI 运行路由到 Codex 提供者,并在传输由 Codex 测试平台拥有时,将 OpenClaw 存储的 OAuth 配置文件引导到 Codex 测试平台,以便 `openai/*` 模型引用不再因“未找到 openai-codex 的 API 密钥”而失败,尽管存在现有的 Codex OAuth 配置文件。(#82864)感谢 @ragesaq。 - 代理/ACP:区分提示提交的和运行时活动的子停滞与真正的交互式等待,包括为 Codex ACP 无输出运行提供经过编辑的代理环境诊断。修复 #44810。 - 代理/内存:解释在 `tools.allow` 警告中,当配置的核心工具不可用时,内存触发的压缩仅暴露 `read` 和仅追加的 `write`。修复 #82941。感谢 @galiniliev。 - 代理/OpenAI:保留确定的工具有效负载顺序,以便在 OpenAI Responses 和聊天补全调用中实现提示缓存重用。(#82940)感谢 @galiniliev。 - ACP/Codex:尊重终端 ACP 轮次结果,以便失败的 Codex/acpx 运行不会在只有进度文本的情况下被记录为成功。修复 #79522。感谢 @dudaefj。 - Telegram:当媒体组丢弃下载失败的图片时发出警告,包括每张图片都被跳过的相册。修复 #55216。(#82987)感谢 @eldar702。 - 代理/技能:在所有者过滤之前,将完整的有效工具策略管道应用于内联 `command-dispatch: tool` 技能分发,保留配置的允许、拒绝、沙盒、发送者、群组和子代理限制。(#78525) - Codex:避免为没有注册钩子处理程序的后工具/结束事件生成原生钩子中继子进程,同时保留预处理工具安全和批准中继。修复 #76552。(#78004)感谢 @evgyur。 - 频道账户:在命名账户与默认凭据材料一起添加时,保持顶层默认频道账户可见,以便混合新旧账户配置继续解析 `default`,而不是静默丢弃它。 - Codex/Telegram:从最终轮次快照合成原生 Codex 工具进度,以便当命令事件仅在完成时到达时,Telegram `/verbose` 仍然可见。 - Codex/Telegram:在直接的仅消息工具轮次中交付 Codex 详细工具摘要,同时抑制消息发送和活动日志噪音。(#83186)感谢 @kurplunkin。 - Mac 应用:通过推迟配置模式工作、避免启动频道探测、缓存解码的频道状态行以及仅显示紧凑快速设置而不是完整的生成频道模式,加快频道设置打开速度。 - 控制 UI:在协议不匹配错误中包含控制 UI 和网关协议版本,以便过时的应用/仪表盘组合能够识别哪一端需要重建或重启。 - 网关/协议:恢复网关 WS 协议 v4,并在现有的 `inboundTurnKind` 线字段上保留 `message.action` 房间事件元数据,同时保留内部的入站事件分类。 - 代理/工具:当消息工具具有过时的 WebChat 上下文时,优先选择非 WebChat 会话密钥路由,以便仅消息工具回复继续交付到原始频道。修复 #82911。(#83004)感谢 @joshavant。 - 频道:将对已隔离的 `per-channel-peer` 会话的直接消息最后路由写入,而不是用频道投递上下文污染代理主会话。修复 #36614。感谢 @aspenas。 - Mac 应用:将设置侧边栏切换按钮移到原生标题栏中,并收紧常规面板宽度。 - Mac 应用:保持已访问的设置面板挂载,以便切换选项卡时不再清空并重新加载其内容。 - Mac 应用:使配置设置从浅层模式查找中打开,并按需加载选定路径,而不是预先获取并渲染完整的生成配置模式。 - Codex:在 Codex 应用服务器和 OpenAI Responses 重放之前,清理内联图像有效负载,并在无效图像错误后清除受污染的 Codex 线程绑定。修复 #82878。 - 提供者/GitHub Copilot:在令牌交换、目录、模型调用、使用和嵌入中请求身份编码的 Copilot API 响应,以便压缩的商务账户错误负载不再以 gzip 字节形式到达 JSON 解析器。修复 #82871。感谢 @tonyfe01。 - Telegram:在群组回复链中保留被回复的机器人消息、标题和媒体元数据,以便后续回复了解用户正在回复的内容。(#82863) - 提供者/Together:将 PI 运行时包更新到 0.74.1,并为支持推理的 OpenAI 补全模型启用 Together 风格的 `reasoning.enabled`/`max_tokens` 控制。 - 代理/诊断:将缓慢的嵌入式运行 `attempt-dispatch` 启动摘要拆分为工作区、提示、运行时计划和最终调度子跨度,以便追踪识别延迟的设置阶段。修复 #82782。(#82783)感谢 @galiniliev。 - 代理/Codex:将嵌套的工具结果中间件块展平为有界文本,以便成功的消息发送不再被替换为“由于后处理错误,工具输出不可用”。修复 #82912。感谢 @joeykrug。 - CLI/媒体:在 `openclaw infer image describe --file` 中接受 HTTP(S) URL,通过受保护的媒体路径获取远程图像,而不是将 URL 视为本地文件。修复 #82837。(#82854)感谢 @neeravmakwana。 - 代理/子代理:当子等待调用在子会话实际解决之前超时时,保持基于会话的父运行活动,以便迟到的子代理完成结果被协调而不是丢失。修复 #82787。感谢 @ramitrkar-hash。 - 控制 UI:在浏览器连接帧中通告共享的网关协议常量,修复协议常量漂移后的协议不匹配握手。修复 #82882。感谢 @galiniliev。 - 网关:添加回滚协议不匹配诊断,包括网关日志中的客户端协议范围,以及针对陈旧客户端进程的深度状态/医生提示。修复 #82841。(#82908) - 代理/子代理:在最终投递重试耗尽后,保留成功的保持模式完成负载待处理,以便请求者恢复不再丢失最终的子代理结果。修复 #82583。(#82999)感谢 @joshavant。 - 网关/认证:允许同主机受信任代理调用者在重新审视 #78684 关闭失败策略后,使用文档中记录的本地直接 `gateway.auth.password` 回退,同时保持令牌回退被拒绝以及转发头请求保持在受信任代理路径上。修复 #82607。(#82953)感谢 @joshavant。 - 代理/子代理:等待排队的完成交接到达父转录后,再将其标记为已宣布,防止忙碌的父运行在观察子结果之前清理。修复 #82913。(#83039)感谢 @joshavant。 - 代理/子代理:在需要时通过仅消息工具交接路由群组/频道子代理完成,并保持活动请求者唤醒失败不会丢弃完成投递。修复 #82803。感谢 @galiniliev、@yozakura-ava 和 @moeedahmed。 - 内存核心:启动时扫描持久化内存源会话,将磁盘上的转录与索引进行比较,仅将缺失/更新/调整大小的文件标记为脏文件以进行增量同步。修复 #82341。(#82341)感谢 @giodl73-repo。 - Telegram:当命名账户或绑定与顶级凭据一起添加时,将顶级默认账户保留在账户列表中,保持默认轮询,同时仍然允许仅命名配置解析为单个账户。修复 #82794。(#82794)感谢 @giodl73-repo。 - CLI/模型:在模型列表、提供者目录、认证和合成认证检查之间重用命令作用域的插件元数据,恢复插件密集型安装的快速 `openclaw models` 运行。修复 #82881。(#83033)感谢 @joshavant。 - CLI/频道:当官方外部频道(如 Discord)的插件包缺失时,在 `openclaw channels list` 中显示它们,包括安装和医生修复命令,而不是报告没有配置的频道。修复 #82813。 - Signal:通过路由和会话持久化保留混合大小写的群组 ID,以便群组自动回复在更新后继续投递。修复 #82827。 - 代理/工具:当通过 `tools.alsoAllow` 或运行时工具允许列表明确允许时,在嵌入式运行中保持 `message` 工具可用,以便具有自定义回复投递的频道插件仍然可以使用配置的消息发送。修复 #82833。感谢 @cn1313113。 - WhatsApp:为出站图片、GIF 和视频媒体强制文档投递,以便 `forceDocument`/`asDocument` 发送保留原始媒体字节,而不是使用压缩媒体负载。(#79272)感谢 @itsuzef。 - WhatsApp:当未提供文件名时,根据 MIME 类型命名出站文档附件,以便 PDF 和 CSV 发送以 `file.pdf` 和 `file.csv` 形式到达,而不是没有扩展名的 `file`。感谢 @mcaxtr。 - 进程/诊断:在通道等待警告中报告活动通道阻塞器,以便 `queueAhead=0` 不再隐藏等待在活动工作后面的命令。修复 #82791。(#82792)感谢 @galiniliev。 - 进程/诊断:停止将活动处理轮次计为存活警告中的排队积压,以便瞬态的最大仅事件循环峰值不再作为网关警告出现。 - 代理/回复:将提供者对话状态拒绝分类,并返回清晰的消息频道错误,而不是自动重置或回退到通用运行器故障。(#82616)感谢 @dutifulbob。 - 浏览器插件:当启动 HTTP 探测与冷启动就绪性竞争时,信任受管理的 Chrome CDP 诊断,避免错误的启动失败。修复 #82904。(#82986)感谢 @kmanan 和 @hclsys。 - Android:在替换更改的网关 TLS 指纹之前提示用户,显示旧的和新的 SHA-256 指纹,以便用户可以接受预期的证书轮换,而不是在引脚不匹配时硬失败。(#83077)感谢 @sliekens。 - CLI/状态:将额外的类似网关的服务诊断渲染为警告/信息输出,而不是错误输出。修复 #46930。(#82922)感谢 @giodl73-repo。 - 代理/故障转移:将 Moonshot/Kimi 余额耗尽的 HTTP 429 负载分类为计费问题,而不是通用速率限制,保留计费指导和回退行为。修复 #43447。(#83079)感谢 @leno23。 - 插件 SDK:将 `openclaw/plugin-sdk/zod` 捆绑到发布的包工件中,并验证打包的 zod 子路径保持自包含,以便 pnpm 全局安装无需包本地的 `zod` 符号链接即可注册插件。修复 #78398。(#78515)感谢 @ggzeng。 - 提供者/Google:在重放之前丢弃压缩截断的 Gemini 思路签名,以便格式错误的 Base64 不再中止下一个助手轮次。(#82995)感谢 @wAngByg。