← 返回更新日志

OpenClaw v2026.4.29-beta.2 预发布

2026-04-30 · GitHub 原文
## 2026.4.29 ### 亮点 - **消息与自动化**:默认启用主动运行引导(active-run steering)、可见回复强制(visible-reply enforcement)、生成子代理路由元数据(spawned subagent routing metadata),以及心跳传递提醒的可选后续承诺(opt-in follow-up commitments)。感谢 @vincentkoc、@scoootscooob、@samzong 和 @vignesh07。 - **记忆**:发展为具备人员感知的维基,提供来源视图(provenance views)、每对话主动记忆过滤器(per-conversation Active Memory filters)、超时部分回忆(partial recall on timeout)以及受限的REM预览诊断(bounded REM preview diagnostics)。感谢 @vincentkoc、@quengh、@joeykrug 和 @samzong。 - **提供商/模型覆盖**:通过NVIDIA接入/目录扩展,以及更快的清单支持模型/认证路径、Bedrock Opus 4.7思维模式对等(thinking parity),以及更安全的Codex/OpenAI兼容回放与流式行为。感谢 @eleqtrizit、@shakkernerd、@prasad-yashdeep、@woodhouse-bot 和 @LyHug。 - **网关与打包插件可靠性**:聚焦于缓慢主机启动、可复用模型目录、事件循环就绪诊断、运行时依赖修复、陈旧会话恢复以及版本作用域更新缓存。感谢 @lpendeavors、@DerFlash、@vincentkoc、@pashpashpash 和 @jhsmith409。 - **渠道修复**:集中在Slack Block Kit限制、Telegram代理/网络钩子/轮询/发送弹性、Discord启动/速率限制处理、WhatsApp送达/活跃度,以及Microsoft Teams/Matrix/飞书边缘情况。感谢 @slackapi、@SymbolStar、@djgeorg3、@TinyTb、@dseravalli、@nklock 和 @alex-xuweilong。 - **安全与运营**:新增OpenGrep扫描、更清晰的GHSA分类策略、更安全的exec/配对/所有者作用域处理、Docker/接入自动化,以及面向可信代理栈的web-fetch IPv6 ULA选择加入。感谢 @jesse-merhi、@pgondhi987、@mmaps、@jinjimz 和 @jeffrey701。 ### 变更 - **安全/工具**:配置的工具区块(`tools.exec`、`tools.fs`)不再隐式放宽限制性配置文件(`messaging`、`minimal`)。需要在限制配置下使用这些工具的用户必须添加明确的 `alsoAllow` 条目;启动警告会标识受影响的配置。修复 #47487。感谢 @amknight。 - **代理/承诺**:新增可选推断的后续承诺,配合隐藏批量提取、每代理/每渠道作用域、心跳传递、CLI管理,以及简单的 `commitments.enabled`/`commitments.maxPerDay` 配置;同时心跳间隔到期时间限制,防止魔法签到立即回响。(#74189)感谢 @vignesh07。 - **消息/队列**:使 `steer` 在下一个模型边界处排空所有待处理的Pi引导消息,保留传统的单条引导为 `queue`,并新增专用引导队列文档页。感谢 @vincentkoc。 - **消息/队列**:默认主动运行队列为 `steer`,并带有500ms后续回退防抖(debounce);在命令队列页文档化队列模式、优先级和丢弃策略。感谢 @vincentkoc。 - **消息**:新增全局 `messages.visibleReplies`,使操作员可要求任何源聊天可见输出必须通过 `message(action=send)`,而 `messages.groupChat.visibleReplies` 仍作为群组/频道覆盖项可用。感谢 @scoootscooob。 - **网关/事件**:在子代理聊天和代理广播负载中暴露 `spawnedBy`,使客户端可在无需额外会话查找的情况下路由子会话事件。(#63244)感谢 @samzong。 - **记忆/维基**:新增面向代理的人员维基元数据、规范别名、人员卡片、关系图、隐私/来源报告、证据类型下钻,以及用于人员查找、问题路由、来源证据和原始声明的搜索模式。感谢 @vincentkoc。 - **主动记忆**:新增可选的每对话 `allowedChatIds` 和 `deniedChatIds` 过滤器,使操作员可在保持广泛会话跳过的情况下,仅为选定的直接、群组或频道对话启用回忆。(#67977)感谢 @quengh。 - **主动记忆**:当隐藏记忆子代理超时时返回受限的部分回忆摘要,包括默认临时转录路径,以免有用的恢复上下文被丢弃。(#73219)感谢 @joeykrug。 - **网关/记忆**:新增只读 `doctor.memory.remHarness` RPC,使操作员客户端可预览受限的REM梦境输出,而无需运行变异路径。(#66673)感谢 @samzong。 - **提供商/NVIDIA**:新增NVIDIA提供商,支持API密钥接入、设置文档、静态目录元数据以及字面模型引用选择器支持,使NVIDIA托管模型可在保留提供商前缀的情况下被选择。(#71204)感谢 @eleqtrizit。 - **模型**:抑制显式配置的openai-codex/gpt-5.4-mini内联条目,防止由 `openclaw doctor --fix` 写入的陈旧模型配置绕过清单能力块,并在运行时切换到ChatGPT支持的Codex账户时导致重复的助手轮次失败。条件抑制(例如qwen编码计划端点保护)仍可通过显式用户配置绕过。(#74451)感谢 @0xCyda、@hclsys 和 @Marvae。 - **新增SQLite支持的插件状态存储**(`api.runtime.state.openKeyedStore`),用于支持TTL、逐出和自动插件隔离的重启安全键控注册表。感谢 @amknight。 - **插件SDK**:标记剩余遗留别名导出和diffs工具/配置别名为弃用元数据,并添加防护,使未来遗留别名注释需要 `@deprecated` 标签。感谢 @vincentkoc。 - **CLI/QR/依赖**:将小型终端进度和QR包装辅助功能内部化,同时保持真实QR编码器依赖直接性,减少默认运行时依赖图而不改变QR输出行为。感谢 @vincentkoc。 - **依赖**:刷新工作区运行时、插件和工具包,包括ACP、Pi、AWS SDK、TypeBox、pnpm、oxlint、oxfmt、jsdom、pdfjs、ciao和tokenjuice,同时保持修补的ACP行为与锁 gates 最新。感谢 @mariozechner。 - **网关/开发**:默认通过命名tmux会话运行 `pnpm gateway:watch`,提供 `gateway:watch:raw` 和 `OPENCLAW_GATEWAY_WATCH_TMUX=0` 用于前台模式,使重复启动可生成可检查的观察器而不阻塞调用代理shell。感谢 @vincentkoc。 - **网关/诊断**:发送可选启动诊断时间线,在配置标志后记录网关生命周期和插件加载阶段,使缓慢启动诊断不再需要定制检测。感谢 @shakkernerd。 - **控制UI/国际化**:扩展语言注册表,新增波斯语(fa)、荷兰语(nl)、越南语(vi)、意大利语(it)、阿拉伯语(ar)和泰语(th)条目,并发布 `fa`、`nl`、`vi` 和 `zh-TW` 文档词汇表,使文档翻译流程和控制UI语言选择器在各表面保持一致。感谢 @vincentkoc。 - **渠道**:新增元宝渠道文档入口,使腾讯元宝机器人出现在渠道列表和侧边栏导航中。(#73443)感谢 @loongfay。 - **渠道/元宝**:更新插件GitHub位置至YuanbaoTeam/yuanbao-openclaw-plugin,并为渠道目录添加“yuanbao”别名。(#74253)感谢 @loongfay。 - **Docker设置**:新增 `OPENCLAW_SKIP_ONBOARDING`,使自动化Docker安装可跳过交互式接入步骤,同时仍应用网关默认值。(#55518)感谢 @jinjimz。 - **安全策略**:将媒体/base64解码和格式转换开销(在配置接受限制后)分类为仅性能问题,用于GHSA分类,除非报告证明存在限制绕过、崩溃、耗尽、数据暴露或其他边界绕过。(#74311) - **安全/OpenGrep**:添加精确的OpenGrep规则包、源规则编译器、来源元数据检查,以及验证第一方代码和仅规则包更改的PR/全扫描工作流,同时将SARIF上传至GitHub代码扫描。(#69483)感谢 @jesse-merhi。 ### 修复 - **自动回复/群聊**:当渠道预计算仅消息工具回复但 `message` 工具不可用时,回退到自动源交付,使Discord/Slack风格的群组轮次不会无声完成而无可见回复。修复 #74868。感谢 @kagura-agent。 - **浏览器/网关**:在HTTP控制服务器和 `browser.request` 间共享单个浏览器控制运行时,并从源快照刷新浏览器配置文件配置,使CLI状态/启动遵循配置的 `browser.executablePath`、`headless` 和 `noSandbox`,而非回退到陈旧的自动检测。修复 #75087;修复 #73617。感谢 @civiltox 和 @martingarramon。 - **代理/子代理**:通过持久化恢复尝试和僵化会话墓碑限制自动孤儿恢复,并教导任务维护/doctor调和这些会话,使重启循环不再需要手动 `sessions.json` 手术。修复 #74864。感谢 @solosage1。 - **网关/启动**:跳过无凭证 `tools.web.fetch` 配置的预绑定web-fetch提供商发现,使Docker/Kubernetes网关即使在可选获取限制存在时也能绑定。修复 #74896。感谢 @KoykL。 - **基础设施/tmp**:通过重新检查另一进程已收紧的目录来容忍并发临时目录权限修复,使并行ACP子进程启动不再抛出 `Unsafe fallback OpenClaw temp dir`。修复 #66867。感谢 @Kane808-AI 和 @jarvisz8。 - **Slack**:要求机器人 authored 房间消息带有 `allowBots=true` 来自显式频道允许列表的机器人或来自存在显式Slack所有者的房间,防止广泛机器人中继无人值守运行。修复 #59284。感谢 @andrewhong-translucent。 - **Signal**:用显式超时、声明和流式大小检查以及部分文件清理约束 `signal-cli` 安装程序发布和归档下载。修复 #54153。感谢 @jinduwang1001-max 和 @juan-flores077。 - **Signal**:从 `channels.signal.mediaMaxMb` 推导 `getAttachment` HTTP响应上限,并附带base64余量,使入站照片和视频不再被1 MiB RPC默认值丢弃。修复 #73564。感谢 @heyhudson。 - **Signal**:在空闲时保持长寿命接收SSE监视器打开,而非应用10s RPC/检查截止,使 `signal-cli` 0.14.3事件流在入站消息到达前不再重连。修复 #74741。感谢 @fgabelmannjr 和 @k7n4n5t3w4rt。 - **模型/OpenAI Codex**:在实时OAuth证明后为ChatGPT/Codex OAuth PI运行恢复 `openai-codex/gpt-5.4-mini`,并协调清单、前向兼容元数据、文档和回归测试,使陈旧cron和心跳配置再次解析。修复 #74451。感谢 @0xCyda、@hclsys 和 @Marvae。 - **记忆/运行时依赖**:仅在配置本地记忆搜索时保留原生 `node-llama-cpp` 运行时,使打包安装可在无需依赖不可达全局npm安装的情况下修复本地嵌入。修复 #74777。感谢 @LLagoon3。 - **插件/运行时依赖**:从暂存插件运行时依赖保持捆绑提供商策略配置加载,使配置读取在锁定的 `/var/lib/openclaw/plugin-runtime-deps` 目录上不再失败。修复 #74971。感谢 @eurojojo。 - **插件/运行时依赖**:在生成的运行时依赖安装清单中始终写入依赖映射,使npm在计划为空时不会崩溃或修剪暂存的打包插件包。修复 #74949。感谢 @hclsys。 - **安全/出站**:在纯文本消毒过程中剥离重新形成的HTML标签,使嵌套标签片段无法留下CodeQL检测的 `<script>` 序列。感谢 @vincentkoc。 - **安全/密钥**:在相等性检查前用填充的时序安全缓冲区比较凭证字节,而非哈希候选密码。感谢 @vincentkoc。 - **安全/QQBot**:在写入 `console.*` 前消毒调试日志参数,使网关负载字段在启用调试日志时无法伪造额外日志行。感谢 @vincentkoc。 - **QQBot**:在命令注册表中统一斜杠命令认证和c2cOnly门控,发送斜杠命令文件附件时传递 `allowQQBotDataDownloads`,使清除存储与实际下载目录对齐,并添加 `/bot-me` 显示发送者用户ID。(#73616)感谢 @cxyhhhhh。 - **CLI/代理/状态**:将 `openclaw agents`、文本 `agents list` 和纯文本 `status` 保留在只读元数据路径上,使人类输出在打印前不再预加载插件运行时或实时频道扫描。修复 #74195。感谢 @NianJiuZst。 - **代理/本地模型**:从有效模型窗口推导上下文窗口保护阈值,附带4k/8k安全下限,使小型本地模型不再被固定的16k/32k预检截止拒绝。修复 #42999。感谢 @chengjialu8888。 - **PDF提取**:从安装的包根解析PDF.js标准字体,并向Node回退提取器传递文件系统路径,使内置字体PDF无需 `file://` URL查找失败即可渲染。修复 #51455;继承 #70936、#54447和#62175。感谢 @anyech、@JuanRdBO 和 @solomonneas。 - **媒体**:将遗留Word/OLE附件(MIME为 `application/msword` 或 `application/x-cfb`)视为二进制,防止可打印外观的 `.doc` 文件作为文本嵌入提示。修复 #54176;继承 #54380。感谢 @andyliu。 - **配置**:在严格根配置验证中接受文档化的 `browser.tabCleanup` 键,使配置的标签页清理在运行时读取前不再失败。修复 #74577。感谢 @lonexreb 和 @ezdlp。 - **Cron**:在持久化更新前验证禁用的作业计划编辑,使无效cron更改不再部分变异存储的作业。修复 #74459。感谢 @yfge。 - **CLI/cron**:当 `openclaw cron add --message` 省略非空白 `--agent`(包括空白代理值和会话键作业)时警告,使计划的代理轮次作业使默认代理回退显式化,而系统事件保持静默。修复 #42196;继承 #42245。感谢 @ethanclaw。 - **CLI/进度**:在TUI输入拥有原始stdin时抑制嵌套进度旋转器和行清除,使Crestodian `/status` 不再干扰活动输入行。(#75003)感谢 @velvet-shark。 - **渠道/状态**:将Telegram、Slack和Google Chat只读允许列表/默认目标访问器保留在仅配置路径上,使状态和渠道摘要不再解析SecretRef支持的运行时凭证。感谢 @eusine。 - **Telegram**:对流式预览使用耐用消息编辑而非原生草稿状态,使生成的回复不再通过草稿到消息转换闪烁,看起来像重复项。(#75073)感谢 @obviyus。 - **主动记忆**:澄清已弃用的 `modelFallbackPolicy` 警告和配置帮助,将 `modelFallback` 描述为链解析最后手段,而非运行时故障转移。(#74602)感谢 @jeffrey701。 - **渠道/Discord**:保留只读允许列表/默认目标访问器不解析SecretRef支持的机器人令牌,使状态和渠道摘要在令牌仅在网关运行时可用时不再失败。(#74737)感谢 @eusine。 - **网关/会话**:协调 `chat`、`agent` 和 `sessions` 服务器方法的会话中止等待语义,使中止RPC在目标会话实际停止后返回,而非在运行仍在排空时提前解析。(#74751)感谢 @BunsDev。 - **代理/输出**:在提供商回放前丢弃复制的入站仅元数据助手回放轮次,使Telegram和其他渠道无法接收 `[assistant copied inbound metadata omitted]` 作为模型输出。修复 #74745。感谢 @adamwdear 和 @Marvae。 - **Doctor/记忆**:对可选密钥提供商(如Ollama和LM Studio)抑制跳过的嵌入就绪警告,同时保留超时和未就绪诊断。修复 #74608和#73882。感谢 @hclsys。 - **渠道/群组**:为准备的调度路径保留仅观察轮次抑制,并恢复已弃用的渠道轮次运行时别名,使被动观察者/群组流保持静默,同时旧插件保持编译。感谢 @vincentkoc。 - **飞书**:跳过携带无媒体的空文本消息(例如 `{"text":""}`),因此无空白用户轮次写入会话,下游LLM提供商无法以“消息不能为空”拒绝请求。(#74634)感谢 @xdengli 和 @hclsys。 - **飞书/多维表格**:在创建应用清理期间清理新创建的占位符行(其字段仅包含默认空值),同时保留有意义的链接、附件、用户、数字、布尔和位置值。(#73920)继承 #40602。感谢 @boat2moon。 - **macOS应用**:将仅附加模式和调试设置Launchd切换标记保留为仅标记,因此使用 `--attach-only`/`--no-launchd` 启动不再卸载网关LaunchAgent或丢弃活动会话。(#72174)感谢 @DolencLuka。 - **macOS Canvas**:停止在推送/求值/快照流期间自动重新加载当前A2UI主机,使推送的A2UI内容保持可见,而非返回空Canvas shell。修复 #73337。感谢 @Gr4via。 - **插件SDK**:恢复已弃用的 `plugin-sdk/zalouser` 命令认证外观,使发布的Lark/Zalo插件导入时能在当前主机上加载。修复 #74702。感谢 @Goron01。 - **插件/运行时依赖**:当 `models.providers`、认证配置文件、代理默认值或子代理模型引用配置该提供商时包含捆绑提供商插件,同时保持非活动默认启用提供商插件不在doctor修复中。引用 #74307。感谢 @Skeptomenos。 - **插件/运行时**:将相对插件 `api.resolvePath` 输入解析相对于插件根而非主机工作目录,同时保持绝对和主路径用户解析。修复 #74718。感谢 @jimdawdy-hub。 - **插件/运行时依赖**:在替换活动副本前通过临时文件刷新镜像根块,使失败刷新不删除运行插件导入仍需要的块。感谢 @shakkernerd。 - **插件/运行时依赖**:在构建暂存依赖别名时优先使用 `require` 条件导出,使CommonJS仅插件运行时依赖(如 `ws`)在Jiti下不解析为ESM包装器。修复 #74547。感谢 @aderius。 - **Bonjour/网关**:在滑动窗口中限制 flaps 广告商重启,使mDNS探测/名称冲突循环禁用发现而非在受限主机上无限搅动。引用 #74209和#74242。感谢 @ndj888 和 @Sanjays2402。 - **插件/运行时依赖**:在重用镜像运行时根之前验证暂存包入口文件,使浏览器控制修复不完整的 `ajv`/MCP SDK安装(更新后重启失败,因缺失 `ajv/dist/ajv.js`)。引用 #74630。感谢 @spickeringlr。 - **心跳**:在传递提醒或抑制前缀 `HEARTBEAT_OK` 回复前,用选定的提供商、模型和思维上下文解析 `responsePrefix` 模板变量。修复 #43064;修复 #43065;取代 #46858。感谢 @yweiii 和 @JunJD。 - **记忆/LanceDB**:在 `memory_forget` 候选列表中显示完整记忆UUID,使代理可将显示的ID传递回目标删除,而无需命中完整UUID验证器。(#66913)感谢 @amittell。 - **文件传输插件**:要求 `file.fetch` 的规范读取路径预检授权,当 `dir.fetch` 预检条目缺失、绝对或遍历时失败关闭,并在将归档字节传递给调用者前重新检查返回的归档条目。继承 #74134。感谢 @omarshahine。 - **渠道/飞书**:在Feishu/Lark HTTP 502后将文件类型的iOS视频资源下载重试为 `media`,并在回退也失败时保留原始502。修复 #49855;继承 #50164和#73986。感谢 @alex-xuweilong。 - **提供商/Amazon Bedrock**:为Bedrock模型引用暴露完整Claude Opus 4.7思维配置文件(`xhigh`、`adaptive` 和 `max`),同时保持Opus/Sonnet 4.6为自适应默认,使 `/think` 菜单和验证与Anthropic传输行为匹配。修复 #74701。感谢 @prasad-yashdeep、@sparkleHazard、@Sanjays2402 和 @hclsys。 - **插件/tokenjuice**:将捆绑插件针对tokenjuice 0.7.0发布的OpenClaw主机类型编译,而非本地兼容shim,使包合同漂移在发布前于OpenClaw验证中失败。感谢 @vincentkoc。 - **OAuth/密钥**:忽略根级别Google OAuth `client_secret_*.json` 下载,使本地客户端密钥文件不显示为提交候选项。(#74689)感谢 @jeongdulee。 - **记忆**:将 `sqlite-vec` 镜像到打包捆绑插件运行时依赖的默认记忆插件中,使内置向量搜索在升级到2026.4.27后不丢失其SQLite扩展。修复 #74692。感谢 @mozi1924。 - **网关/启动**:约束启动期间的本地发现广告,使卡住的发现插件不再阻止网关达到就绪。修复 #73865;引用 #74630和#74633。感谢 @lpendeavors、@moltar-bot 和 @Saboor711。 - **网关/模型**:在陈旧重新加载在后台刷新时提供最后一个成功的模型目录,使网关控制平面和OpenAI兼容请求不再在模型配置更改后阻塞于模型提供商重新发现。引用 #74135、#74630和#74633。感谢 @DerFlash、@moltar-bot 和 @Saboor711。 - **CLI/状态**:将只读频道设置运行时回退解析自打包OpenClaw分发根,使 `status --all`、`status --deep`、频道和doctor路径在外部频道插件需要设置元数据时不崩溃。修复 #74693。感谢 @giangthb。 - **SDK/事件**:防止每运行SDK事件流暴露重复原始聊天投影帧,同时规范化仅聊天投影帧并通过 `rawEvents` 保留原始访问。引用 #74704。感谢 @BunsDev。 - **SDK**:将网关终端 `agent.wait` 超时快照报告为带生命周期元数据的 `timed_out`,同时保持裸等待截止非终端。感谢 @clawsweeper。 - **Google Meet**:在浏览器健康证明参与者处于通话中之前,阻止托管Chrome介绍/测试语音,并暴露 `speechReady` 诊断,使登录、准入、权限和音频桥接阻止器不再看起来像成功语音。引用 #72478。感谢 @DougButdorf。 - **Slack/命令**:对编码选择值保留Slack选项限制内的原生命令参数菜单,并将回退按钮标签截断至Slack按钮文本限制,使长有效选择不再渲染无效Slack块。感谢 @slackapi。 - **代理/Codex**:在正常应用服务器轮次清理前刷新已接受的防抖引导消息,使 inbound 后续确认排队在防抖触发前轮次完成时不会被丢弃。感谢 @vincentkoc。 - **Slack/交互回复**:将渲染按钮和选择保持在Slack Block Kit值和计数限制内,并协调命令参数选择值与Slack选项限制,使过长的代理编写选择不再使Slack拒绝整个块负载。感谢 @slackapi。 - **Slack/交互回复**:丢弃过长的Block Kit按钮URL同时保留有效回调值,使错误链接按钮不再使Slack拒绝整个交互回复。感谢 @slackapi。 - **Slack/命令**:将原生命令参数菜单确认文本截断至Slack对话框限制,使长插件参数名不再使回退按钮渲染无效BlockKit负载。感谢 @slackapi。 - **Slack/exec批准**:将原生批准元数据上下文限制在Slack元素和文本限制内,使大批准详情不再使Slack拒绝批准卡。感谢 @slackapi。 - **Slack/exec批准**:将原生批准更新回退文本限制在Slack消息限制内,同时保留渲染的批准块,使长命令不再使已解决或过期的批准卡在 `chat.update` 拒绝 `msg_too_long` 后保持陈旧。感谢 @slackapi。 - **Slack/命令**:将原生命令参数菜单回退行限制在Slack消息块限制内,使大插件选择列表不再使Slack拒绝生成的菜单。感谢 @slackapi。 - **Slack/命令**:丢弃编码值超过Slack按钮值限制的回退命令参数按钮,使一个超大插件选择不再使Slack拒绝整个菜单。感谢 @slackapi。 - **Slack/消息**:在Slack发送上合并消息工具展示和交互块,使按钮和选择在结构化消息体也存在时不再被丢弃。感谢 @slackapi。 - **Slack/消息**:将Block Kit回退文本限制在Slack发送限制内,同时保留渲染块,使长上下文回退不再使丰富Slack消息以 `msg_too_long` 失败。感谢 @slackapi。 - **Slack/消息**:在消息编辑时将Block Kit回退文本限制在Slack发送限制内,同时保留渲染块,使长上下文回退不再使Slack以 `msg_too_long` 拒绝 `chat.update` 调用。感谢 @slackapi。 - **渠道/WhatsApp**:要求Baileys出站消息ID在标记自动回复送达前,使转录文本和ack反应不再使失败的群组回复看起来已发送。修复 #49225。感谢 @TinyTb。 - **CLI/更新**:通过OpenClaw版本和安装元数据作用域打包Node编译缓存,使全局安装在包更新后不再复用陈旧的编译块。感谢 @pashpashpash。 - **渠道/语音呼叫**:当套接字远程地址元数据缺失时保持预认证webhook飞行中限制活动,使来自剥离IP代理路径的慢体请求仍共享回退桶。(#74453)感谢 @davidangularme。 - **插件SDK/测试**:延迟从插件测试契约运行时加载TypeScript,并为关键SDK契约入口点导入和包大小添加发布检查,使发布包在发布前失败于ESM不兼容或超大的契约辅助。感谢 @vincentkoc。 - **渠道/Microsoft Teams**:将配置的 `19:[email protected]` 和遗留 `19:[email protected]` 团队/频道ID视为启动时已解析,避免虚假 `channels unresolved` 警告,同时为显示名称条目保留Graph名称查找。修复 #74683。感谢 @dseravalli。 - **CLI/浏览器**:在延迟加载浏览器子命令时保留父标志,使 `openclaw browser --json open` 和 `openclaw browser --json tabs` 在重新解析后保持机器可读输出。修复 #74574。感谢 @devintegeritsm。 - **Exec/提升**:在批准后续运行中将 `turnSourceChannel` 保留为 `messageProvider`,使 `tools.elevated.allowFrom.<provider>` 检查在用户批准异步提升命令后不再以 `provider=null` 失败。修复 #74646。感谢 @xhd2015。 - **插件/运行时依赖**:新增 `openclaw plugins deps` 检测和修复,共享插件安装器的无脚本包管理器默认值,使操作员可修复缺失的捆绑运行时依赖,而不损坏JSON输出或阻塞无关无冲突依赖。感谢 @vincentkoc。 - **代理/输出**:从用户可见回复剥离内部 `[tool calls omitted]` 回放占位符,同时保留可见回复空白。修复 #74573。感谢 @blaspat。 - **提供商/Google Vertex**:通过OpenClaw的REST传输路由授权用户ADC凭证,使使用gcloud应用程序默认凭证的Docker安装不再在Google SDK中崩溃(请求发送前)。修复 #74628。感谢 @frankhal2001-design。 - **ACP/解析器**:当显式 `--session` 令牌无法解析时回退到线程绑定会话解析,同时保留无线程绑定的错误诊断,使自动填充当前线程ID作为位置ACP目标的Discord斜杠命令不再返回“Unable to resolve session target”错误。修复 #66299。感谢 @hclsys、@kindomLee 和 @martingarramon。 - **代理/会话**:在嵌入式超时/错误轮次无 `agent_end` 返回时发送终端生命周期后备,使网关会话在故障转移暴露超时后不再卡在 `running`。修复 #74607。感谢 @millerc79。 - **网关/诊断**:在警告中包含卡住会话原因提示和恢复跳过原因,使操作员可判断通道是等待活动工作、排队工作还是陈旧簿记。感谢 @vincentkoc。 - **代理/Codex**:约束嵌入式运行清理、轨迹刷新和命令通道任务超时(在运行时故障后),使Discord和其他聊天会话返回空闲而非卡在processing。感谢 @vincentkoc。 - **心跳/exec**:静默消费成功的仅元数据异步exec完成,使Telegram和其他聊天表面在 `No session found` 后不再要求用户缺失命令日志。修复 #74595。感谢 @gkoch02。 - **Web获取**:添加文档化的 `tools.web.fetch.ssrfPolicy.allowIpv6UniqueLocalRange` 选择加入,并将其贯穿缓存键和DNS/IP检查,使使用 `fc00::/7` 的受信任假IP代理栈可在无广泛私有网络访问下工作。修复 #74351。感谢 @jeffrey701。 - **OpenAI Codex**:恢复 `/verbose full` 持久化和应用服务器工具输出转发,并重试网关端到端临时主目录清理,使调试运行不在陈旧验证或清理 flakes上回归。感谢 @vincentkoc。 - **Anthropic/Meridian**:在anthropic-messages流中保留在 `content_block_start` 上播种的文本和思维内容,使 `[thinking, text]` 回复不再持久为空轮次或触发空响应回退。修复 #74410。感谢 @vyctorbrzezowski。 - **渠道/Matrix**:在 `openclaw matrix verify confirm-sas` 上完成跨签名握手,使操作员的其他Matrix设备清除其 `Verifying…` 循环,而非在代理确认后保持卡住。(#74542)感谢 @nklock。 - **CLI/状态**:报告有效上下文时遵循频道特定模型上下文窗口覆盖,使频道作用域会话在 `openclaw status` 中反映活动窗口。感谢 @HemantSudarshan。 - **沙盒/Docker**:在沙盒模式关闭时容忍Docker守护进程不可用,使doctor和预检检查在不运行Docker守护进程的安装上不再失败。修复 #73671。感谢 @kaseonedge。 - **控制UI/移动**:通过Lit管理状态持久化移动聊天设置,并路由移动导航通过相同视图状态路径,使聊天面板切换在小视口过渡中存活。感谢 @BunsDev。 - **控制UI/导出**:沿可调整分隔器、移动布局和导出HTML转录模板对齐侧边栏触发 affordances,使侧边栏切换和导出转录侧边栏渲染具有一致的命中区域和样式。感谢 @BunsDev。 - **控制UI/聊天**:在聊天运行活动时禁用页面刷新 affordance,防止意外刷新中止飞行中回复。感谢 @Angfr95 和 @BunsDev。 - **记忆/LanceDB**:从 `openclaw ltm list` 返回真实记忆记录(带可选 `--limit` 和createdAt排序)而非空占位符,使CLI表面匹配文档化LTM列表契约。(#67952)感谢 @zhangyue19921010。 - **媒体**:在视觉管道错误中包含每次尝试调整大小失败的红acted和解析的模型输入能力,使ARM64图像失败可在不关闭剩余路由调查的情况下诊断。引用 #74552。感谢 @1yihui。 - **控制UI/国际化**:将zh-CN代理、调试、频道刷新和exec批准副本路由通过语言源,同时保留英语 `Cron Jobs` 代理选项卡标签和安全审计命令样式。继承 #39692修复上下文。感谢 @hepeng154833488 和 @vincentkoc。 - **自动回复**:对干净空或仅推理直接聊天轮次遵循显式 `silentReply.direct: "allow"`,同时保持默认直接聊天空响应守卫保守。修复 #74409。感谢 @jesuskannolis。 - **OpenAI Codex**:当Codex轮次仅具有systemPrompt支持的指令时发送非空Responses输入项,避免ChatGPT后端因 `input: []` 返回400。修复 #73820。感谢 @woodhouse-bot。 - **Ollama**:在原生流边界标准化提供商前缀工具调用名称,使Kimi/Ollama调用(如 `functions.exec`)分派为 `exec` 而非缺失配置工具。修复 #74487。感谢 @afurm 和 @carreipeia。 - **安全/审计**:在模型层和小参数检查前解析配置的模型别名,使基于别名的GPT-5/Codex配置不再报告虚假弱模型警告。修复 #74455。感谢 @blaspat。 - **CLI/代理**:将网关超时嵌入式回退运行隔离在显式 `gateway-fallback-*` 会话下,使接受的网关运行无法竞争转录锁或替换路由对话会话。修复 #62981。感谢 @HemantSudarshan。 - **CLI/QR/设备配对**:在发出移动配对引导令牌前拒绝格式错误的公共设置URL,同时保持有效裸host:port设置URL支持。感谢 @Lucenx9。 - **模型/UI**:从默认Web聊天、`/models`和模型设置选择器中隐藏未认证提供商,同时保持显式完整目录浏览路径通过 `view: "all"`、`/models <provider> all` 和 `models list --all`。修复 #74423。感谢 @guarismo 和 @SymbolStar。 - **Ollama**:在PI发现跳过时保持显式本地模型运行在目标提供商运行时钩子上,使一次性Ollama调用不再在流式前冷加载无关提供商运行时。修复 #74078。感谢 @sakalaboator。 - **Slack/提示**:依赖Slack `interactiveReplies` 指导而非通用 `inlineButtons` 配置提示,使启用的Slack按钮指令不矛盾。修复 #46647。感谢 @jeremykoerber。 - **Slack/反应**:将重复的 `already_reacted` 响应视为幂等成功,使重复代理反应添加不再显示为工具失败。修复 #69005。感谢 @shipitsteven 和 @martingarramon。 - **渠道/Discord**:在启动应用程序查找和网关元数据获取期间对Cloudflare/Error 1015 HTML 429 REST失败冷却,添加 `channels.discord.applicationId` 作为应用ID查找旁路,在记录前消毒HTML体,并在回退到保守冷却前遵循Retry-After。修复 #38853。(#74489)感谢 @djgeorg3 和 @Garyko0730。 - **Slack/工具**:在共享消息工具模式中暴露 `fileId`,使 `download-file` 可从入站占位符接收Slack附件ID。修复 #45574。感谢 @chadvegas。 - **Exec**:拒绝无效每调用 `host` 值而非静默回退到默认目标,使类主机名值在命令运行前失败。修复 #74426。感谢 @scr00ge-00 和 @vyctorbrzezowski。 - **Google/Gemini**:当Gemini运行以空或过滤的用户内容触发时发送非空占位符内容,避免 `contents is not specified` API错误。感谢 @CaoYuhaoCarl。 - **心跳**:在传递提醒或抑制前缀 `HEARTBEAT_OK` 回复前,用选定提供商、模型和思维上下文解析 `responsePrefix` 模板变量。修复 #43064;修复 #43065;取代 #46858。感谢 @yweiii 和 @JunJD。 - **Markdown**:在共享出站格式化中保留松散列表项内的段落分隔,同时保持紧密列表间距稳定。感谢 @Lucenx9。 - **构建/网关**:通过一个稳定的网关生命周期运行时入口路由重启、关闭、重生、诊断、命令队列清理和运行时清理,使重建包不会在陈旧哈希块上遗留长时间运行的网关。继承 #73964。感谢 @pashpashpash。 - **记忆/维基**:防止广泛共享源和生成的关联链接块将每个页面变成搜索命中,限制嘈杂回链,支持人员路由查询等所有术语搜索,并优先可读页面主体片段而非生成元数据。感谢 @vincentkoc。 - **Cron/网关**:在记录超时前中止和约束清理超时的隔离代理轮次,使过时cron会话在超时后无法让Discord或其他聊天通道卡在 `processing`。感谢 @vincentkoc。 - **代理/错误**:在到达聊天表面前抑制畸形流式工具调用JSON片段,同时保留提供商请求验证诊断。修复 #59076;保持 #59080 作为重复覆盖。(#59118)感谢 @singleGanghood。 - **CLI/模型**:为无清单/静态目录覆盖的提供商(包括Anthropic和Amazon Bedrock)恢复提供商过滤的 `models list --all --provider <id>` 行,同时保持兼容回退关闭昂贵的可用性和解析器路径。感谢 @shakkernerd。 - **CLI/模型**:在 `models status`、auth探测和PI模型发现中保持清单auth证据凭证可见,使工作区作用域提供商auth在列表、探测和执行间不矛盾。感谢 @shakkernerd。 - **CLI/模型**:将本地凭证证据(如Google Vertex ADC)移入通用插件清单设置元数据,使模型列表auth索引保持声明性而无提供商特定运行时分支。感谢 @shakkernerd。 - **CLI/模型**:通过一个命令本地提供商auth索引计算 `models list` Auth列,使行渲染不再每模型行重复auth profile、env、配置提供商、AWS或合成auth检查。感谢 @shakkernerd。 - **CLI/模型**:将OpenAI可列表目录移入插件清单,使 `models list --all --provider openai` 使用清单快速路径而非加载提供商运行时规范化钩子。感谢 @shakkernerd。 - **CLI/工具**:将网关 `tools.*` RPC命名空间保留在插件命令发现和托管代理启动外,使散落命令(如 `openclaw tools effective`)快速失败而非冷加载插件元数据。引用 #73477。感谢 @oromeis。 - **CLI/状态**:将默认文本 `openclaw status --usage` 保留在仅元数据频道扫描上,除非设置 `--deep` 或 `--all`,并将散落 `openclaw tools --help` 发送通过预计算根帮助快速路径,使延迟分诊命令在打印前避免插件/运行时冷加载。引用 #73477和#74220。感谢 @oromeis 和 @NianJiuZst。 - **代理/诊断**:在模型I/O前跟踪嵌入式运行启动和准备阶段计时,并仅在严重慢阶段警告,使Docker/VPS延迟报告可识别插件加载、auth/模型解析、工具清单、引导、MCP/LSP、资源加载或流设置是否主导预运行延迟,而无嘈杂正常日志。引用 #73428。感谢 @Dimaoggg、@quangtran88 和 @Heyvhuang。 - **代理/子代理**:通过文件签名缓存持久化子代理运行注册表读取,同时保留新鲜解析隔离,使繁忙网关在控制器/列表/状态热路径上不再重复解析未更改的 `subagents/runs.json`。引用 #72338。感谢 @argus-as。 - **网关/客户端**:在打开网关WebSocket RPC/探测/客户端连接前等待事件循环响应,同时将该就绪等待计费给调用者超时,使Windows延迟模块评估停顿不再将健康环回网关变为跨状态、TUI、ACP、MCP、node-host和插件客户端路径的虚假握手超时。引用 #74279和#48270。感谢 @wongcode 和 @joost-heijden。 - **网关/Windows**:通过PowerShell读取监听器命令行,再回退 `wmic`,使重启健康可识别现代Windows安装上的OpenClaw监听器,避免长匿名端口等待。引用 #74280。感谢 @zym951223。 - **插件/运行时依赖**:在捆绑依赖安装锁中记录进程启动时间,并过期回收PID锁,使Docker网关重启无需等待重复五分钟超时即可从陈旧 `.openclaw-runtime-deps.lock` 目录恢复。修复 #74346。(#74361)感谢 @jhsmith409。 - **插件/运行时依赖**:在第一次成功传递后记忆打包捆绑运行时dist镜像准备,同时保持源检出镜像可刷新,使受限Docker/VPS安装在聊天轮次前避免重复根扫描。引用 #73428、#73421、#73532和#73477。感谢 @Dimaoggg、@oromeis、@oadiazp、@jmfraga、@bstanbury、@antoniusfelix 和 @jkobject。 - **渠道/Discord**:将裸数字出站目标(匹配有效Discord DM允许列表)视为用户DM,同时保留账户特定遗留 `dm.allowFrom` 优先于继承根 `allowFrom`。(#74303)感谢 @Squirbie。 - **渠道/Discord/Slack**:跨运行时、设置、允许列表编辑和doctor修复共享一个DM策略/允许列表解析器,使遗留 `dm.policy` / `dm.allowFrom` 兼容性迁移到规范 `dmPolicy` / `allowFrom` 而无分歧访问检查。感谢 @Squirbie。 - **控制UI**:使聊天侧边栏拆分分隔器可聚焦、键盘可调整大小、ARIA描述且基于指针事件,使侧边栏调整无需鼠标。感谢 @BunsDev。 - **代理/使用**:将PI嵌入式运行遥计归因于解析的模型提供商而非PI harness标签,使OpenRouter和其他提供商支持的轮次在会话使用和跟踪中报告正确提供商。感谢 @vincentkoc。 - **代理/归属**:在原生OpenAI和Codex流量(包括SDK传输、实时语音和TTS、设备代码auth、WHAM使用和远程嵌入)上发送OpenClaw归属头,使PI origin默认不再泄漏到提供商请求。感谢 @vincentkoc。 - **代理/auth**:保持从主代理继承的外部CLI凭证发现为读通而非将刷新令牌复制到次要代理,并针对所属存储刷新Codex应用服务器令牌,使多代理群避免重复使用刷新令牌失败。修复 #74055。感谢 @ClarityInvest。 - **渠道/Telegram**:在构造HTTP/1仅Telegram Bot API传输时遵循 `ALL_PROXY` / `all_proxy` 和服务级 `OPENCLAW_PROXY_URL`,使依赖这些代理设置的Windows和服务安装不再回退到直接出口。修复 #74014;引用 #74086。感谢 @SymbolStar。 - **渠道/Telegram**:保持原始主机/网络不可达Bot API连接失败非致命,并将标记轮询未捕获异常路由通过Telegram重启路径,使瞬态可达性失败不再杀死网关或使长轮询卡住。修复 #60515;引用 #74540。感谢 @HemantSudarshan、@thacid22 和 @ewimsatt。 - **渠道/Telegram**:当 `deleteWebhook` 命中瞬态网络失败但 `getWebhookInfo` 确认无webhook配置时继续轮询,使启动在webhook已被移除后不再永远重试清理。引用 #74086;继承 #47384。感谢 @clovericbot。 - **渠道/Telegram**:当Telegram返回 `QUOTE_TEXT_INVALID` 时重试无 `reply_parameters.quote` 的原生引用回复,使陈旧或截断引用摘录不再丢弃整个回复。修复 #74581。感谢 @moeedahmed。 - **渠道/Telegram**:当grammY包装预连接失败时对入站最终回复应用严格安全发送重试,同时保持模糊纯网络信封单次发送以避免重复可见消息。修复 #74203。感谢 @nanli2000cn。 - **渠道/Telegram**:在频道状态和doctor中暴露轮询活跃度警告(当运行长轮询器在启动宽限期后未完成 `getUpdates` 或其传输活动陈旧时),使无声轮询失败不再看起来干净。引用 #74299。感谢 @lolaopenclaw。 - **渠道/Telegram**:发布webhook运行时状态并在 `setWebhook` 在启动宽限期后未完成时警告,使webhook模式账户在注册仍失败或重试时不再看起来健康。引用 #74299。感谢 @lolaopenclaw 和 @martingarramon。 - **渠道/Telegram**:约束原生命令菜单 `deleteMyCommands` 和 `setMyCommands` Bot API调用,并允许相同超时触发传输回退重试(如其他启动控制调用),使Windows/WSL网络停滞无法在 otherwise running 提供商后留下命令同步挂起。引用 #74086。感谢 @SymbolStar。 - **ACP/命令**:在OpenClaw桥中接受转发的ACP超时配置控制,将不支持的丢弃关闭控制视为可恢复清理,并恢复原生 `/verbose full` 和无参数状态行为,使Discord命令菜单和嵌套ACP轮次在支持会话控制上不再失败。感谢 @vincentkoc。 - **Codex harness**:中断和释放原生应用服务器轮次(在OpenClaw动态工具响应后静默,未发送 `turn/completed`),使Discord和其他聊天通道不卡在 `processing`。感谢 @vincentkoc。 - **Codex harness**:将OpenClaw动态工具响应约束至30秒,并在应用服务器桥可能将轮次 stranded 在 `processing` 时以显式工具结果失败关闭。感谢 @vincentkoc。 - **TUI/状态**:当最终事件在活动运行已清除且无跟踪运行时到达时清除陈旧的 `streaming` 页脚状态,同时保留并发运行所有权和非活动本地 `/btw` 终端处理。修复 #64825;继承 #64842、#64843、#64847和#64862。感谢 @briandevans 和 @Yanhu007。 - **渠道/Discord**:当Discord无法解析机器人自身身份时失败启动关闭,并在仅配置提及模式可检测提及时保持提及门控活动,使提供商不再以缺失机器人ID继续。修复 #42219;继承 #46856和#49218。感谢 @education-01 和 @BenediktSchackenberg。 - **渠道/Discord**:在标点符号和代码点安全回退边界拆分长CJK回复,使Discord分块保持可读而不损坏辅助字符。修复 #38597;修复 #71384。感谢 @p3nchan。 - **TUI**:使流式监视器跨活动工具/生命周期存活证明保持活动,在断开期间暂停,并在陈旧重新连接运行后重新加载历史,使长时间聊天停止翻转到虚假空闲或在陈旧流式上挂起。修复 #69081。感谢 @EenvoudJasper。 - **浏览器/网关**:忽略来自 `Page.handleJavaScriptDialog` 的Playwright对话框关闭竞争,使浏览器自动化在对话框在Playwright接受前消失时不再崩溃网关。(#40067)感谢 @randyjtw。 - **Cron/网关**:将错过的隔离代理轮次追赶延迟出频道启动窗口,使过期cron工作无法在提供商重启后连接时饿死Discord或Telegram。感谢 @vincentkoc。 - **心跳/cron**:在cron工作活动或排队时延迟心跳轮次,添加可选 `heartbeat.skipWhenBusy` 用于子代理/嵌套通道压力,并重试繁忙跳过而不推进计划,使本地Ollama主机不并发运行心跳和cron提示。修复 #50773。感谢 @scottgl9。 - **代理/思维**:遵循配置的模型 `compat.supportedReasoningEfforts` 条目(包含 `xhigh`),使自定义OpenAI兼容提供商引用在命令菜单、网关会话、代理CLI和 `llm-task` 中一致暴露和验证 `/think xhigh`。继承 #48904。感谢 @Milchstrassse 和 @wufunc。 - **Vercel AI网关**:为受信任OpenAI/Codex上游引用暴露提供商拥有的 `/think xhigh`,为Anthropic上游引用暴露Claude自适应思维,同时将不受信任命名空间引用保留在基础级别。继承 #41561。感谢 @Zcg2021。 - **插件/运行时依赖**:在网关启动期间修剪陈旧的 `openclaw-unknown-*` 捆绑运行时依赖根,同时保留最近或锁定的根,使旧阶段碎片不再跨重启增长。感谢 @vincentkoc。 - **插件/运行时依赖**:在 `MIRRORED_CORE_RUNTIME_DEP_NAMES` 中包含十个更多根包运行时依赖(`@agentclientprotocol/sdk`、`@lydell/node-pty`、`croner`、`dotenv`、`jiti`、`json5`、`jszip`、`markdown-it`、`tar`、`web-push`),使它们与 `semver` 和 `tslog` 一起镜像到运行时依赖树,防止核心分发代码(例如 `qmd-manager`、`cron/schedule`、`infra/archive`、`infra/push-web`、`infra/backup-create`、`process/supervisor/adapters/pty`)在无启用扩展拥有依赖时出现 `Cannot find package 'X'` 失败。添加扫描 `src/` 的静态漂移守卫测试,用于根包依赖的值导入,当缺失镜像允许列表或扩展拥有集时CI失败。引用 #74199。感谢 @maxpuppet。 - **Ollama**:为原生 `/api/chat` 流组合调用方中止信号与保护获取超时,使 `/stop` 和提前取消仍中断也携带提供商超时预算的本地Ollama请求。引用 #74133。感谢 @obviyus。 - **Doctor/TTS**:在 `openclaw doctor --fix` 期间将遗留 `messages.tts.enabled`、代理TTS、频道TTS和语音呼叫插件TTS切换迁移到 `auto` 模式,匹配文档化TTS配置契约。感谢 @vincentkoc。 - **CLI/日志**:当隐式环回网关连接在 `logs.tail` 前或期间关闭或超时时回退到配置的网关文件日志,使 `openclaw logs` 在诊断本地模型网关断开时仍工作。引用 #74078。感谢 @sakalaboator。 - **MCP/插件**:用聊天内容强制而非默认对象字符串化字符串化非数组插件工具结果,使MCP调用者从插件工具接收有用JSON/文本内容。感谢 @vincentkoc。 - **主动记忆/QMD**:使网关启动QMD刷新为通过 `memory.qmd.update.startup` 选择加入,保持正常记忆访问延迟,保留交互文件监视,并协调监视器依赖/构建忽略与QMD扫描器,使冷网关启动默认不导入或初始化QMD。感谢 @codexGW。 - **渠道/Discord**:通过共享渠道生命周期队列移除Discord拥有的排队运行超时回复,同时保留消息顺序和兼容超时常量,使长Discord轮次由会话/工具/运行时生命周期而非渠道回退错误治理。感谢 @codexGW。 - **代理/工具**:将 `process.poll` 等待限制至30秒,在工具模式中广告该上限,并在等待时遵循中止信号,使长命令轮询在取消后无法固定代理响应性。感谢 @vincentkoc。 - **插件SDK**:添加跟踪的Discord组件消息辅助和Telegram账户解析兼容外观,使使用这些子路径的现有插件解析,同时新插件保留在通用渠道SDK契约上。感谢 @vincentkoc。 - **共享标签**:在群组/频道slug标准化中保留Unicode组合标记和NFC等价重音文本,使非拉丁标签不再丢失有意义的字符。修复 #58932;继承 #58942和#58995。感谢 @fengqing-git、@Starhappysh 和 @koen666。 - **渠道/Telegram**:在发送常规Telegram视频时包含探测视频宽度和高度,使纵向剪辑以正确方向渲染而非被客户端拉伸。(#18915)感谢 @storyarcade。 - **文档/Hetzner**:澄清SSH隧道访问需要 `AllowTcpForwarding local` 再运行 `ssh -L`,使硬化VPS sshd配置不阻止环回网关访问。修复 #54557;继承 #54564;引用 #54954。感谢 @satishkc7、@blackstrype 和 @Aftabbs。 - **代理/配置**:在 narrowed 内部配置写入期间保留编写的 `agents.defaults.params` 和每模型 `agents.defaults.models[].params`,使OpenAI传输覆盖(如 `transport: "sse"` 和 `openaiWsWarmup: false`)不剥离出 `openclaw.json`。修复 #73607;引用 #73428。感谢 @quangtran88。 - **代理/模型配置**:通过规范模型键解析每模型额外参数,同时保留遗留双前缀回退条目,使提供商前缀模型ID(如 `openrouter/auto`)保持其配置运行时参数。(#44319)感谢 @HenryXiaoYang。 - **网关/关闭**:通过 `ShutdownResult` 报告结构化关闭警告和HTTP关闭超时警告,同时保留生命周期钩子硬化。继承 #41296。感谢 @edenfunf。 - **控制UI**:使代理概览和配置表单选择下拉菜单在其配置值上保持,同时保留继承代理模型占位符。修复 #40352;继承 #52948。感谢 @xiaoquanidea。 - **代理/exec**:以启动文件抑制启动zsh、bash和fish主机exec shell,同时保留现有PATH回退,使守护进程环境不被shell启动文件覆盖。继承 #40200;修复 #40179。感谢 @NewdlDewdl。 - **插件/QA**:在插件gauntlet源运行前预构建私有QA频道运行时,使包装CPU/RSS测量不被私有QA分发重建工作污染。感谢 @vincentkoc。 - **插件/QA**:添加厨房水槽插件gauntlet,安装外部包,检查命令清单、MCP工具、频道状态、提供商轮次、网关RSS、CPU和致命日志异常。感谢 @vincentkoc。 - **插件/配置**:在单个配置规范化传递中重用捆绑插件别名扫描,使厨房水槽样式插件配置不再在代理轮次前通过重复重新扫描捆绑元数据钉住网关CPU。感谢 @vincentkoc。 - **插件/渠道**:在它们毒害频道状态前拒绝格式错误的运行时频道注册(省略所需配置辅助)。感谢 @vincentkoc。 - **MCP/插件**:通过插件工具MCP桥序列化原始插件工具返回值,使厨房水槽样式工具不再暴露 `undefined` 内容。感谢 @vincentkoc。 - **网关/重载**:约束默认重启延迟和SIGUSR1重启排空至五分钟,同时保留显式 `deferralTimeoutMs: 0` 无限等待,使陈旧活动工作核算不再永远阻塞配置重载。感谢 @vincentkoc。 - **主动记忆**:使用配置的回忆超时加设置宽限(而非150秒最大预算)注册提示构建钩子,使默认记忆回忆不再将轮次启动延迟数分钟。感谢 @vincentkoc。 - **网关/就绪**:在本地或认证 `/readyz` 响应中包含 `eventLoop` 诊断块,含事件循环延迟(p99和最大)、事件循环利用率、CPU核心比和 `degraded` 标志,使操作员可见缓慢启动或失控轮次如何停滞事件循环。感谢 @vincentkoc。 - **网关/代理**:在接受的RPC帧有机会刷新后调度接受的代理运行,使预轮次提示/上下文工作更不可能饿死立即 `agent.wait` 调用者。感谢 @vincentkoc。 - **CLI/更新**:容忍最佳努力CLI进程收尾期间的陈旧记忆运行时导入失败,使 `openclaw update` 在最终器运行前替换哈希运行时块不再显示为退出时 `Cannot find module` 噪音。感谢 @vincentkoc。 - **CLI/频道日志**:重用滚动日志文件解析器,使 `openclaw channels logs` 在日期边界回退到活动日期日志,而无需读取无关自定义日志文件。修复 #42875;继承 #42904和#43043。感谢 @ethanclaw 和 @wdskuki。 - **CLI/更新**:在npm、ClawHub或市场更新检查前跳过配置中禁用跟踪的插件,保留其安装记录而不失败更新。修复 #73880。感谢 @islandpreneur007。 - **控制UI**:通过存储每小时消息计数(UTC日期键)和使用DST感知 `Date.getHours()` 进行本地转换,修复峰值错误小时在浏览器时区观察DST时显示错误小时速率。同时提取 `accumulateMessageCounts` 辅助以减少重复每日/每小时聚合逻辑。(#49396)感谢 @konanok。 - **iMessage**:规范化发送消息回显文本键上的已知前导attributedBody损坏标记,使延迟反射回射(带U+FFFD/U+FFFE/U+FFFF/FEFF前缀)被丢弃而不塌陷内部文本。修复 #59973;继承 #59980和#62191。感谢 @neeravmakwana 和 @maguilar631697。 - **安全/审计**:识别危险节点命令ID为有效 `gateway.nodes.denyCommands` 条目,使审计仅在真实拼写错误或不支持模式上警告。(#56923)感谢 @chziyue。 - **Cron**:将带代理轮次覆盖的隐式文本负载视为代理轮次,保留调度文本提示的模型覆盖而非将其修剪为系统事件。修复 #28905。(#64060)感谢 @liaoandi。 - **Telegram/exec批准**:停止将一般Telegram聊天允许列表和 `defaultTo` 路由视为原生exec批准者;Telegram现在使用显式 `execApprovals.approvers` 或来自 `commands.ownerAllowFrom` 的所有者身份,匹配首次配对所有者引导路径。感谢 @pashpashpash。 - **插件/提供商**:在启动时保持网关主要模型发现在仅元数据提供商条目上,并重用活动非语音能力提供商(即使有显式插件条目),避免启动期间不必要的提供商注册表加载和媒体能力检查。修复 #73729、#73835和#73793;继承 #73853和#73794。感谢 @sg1416-zg、@brokemac79 和 @poolside-ventures。 - **聊天命令**:将敏感组 `/diagnostics` 和 `/export-trajectory` 批准和结果路由到私有所有者路由,优先同表面DM再回退到第一个配置所有者路由,使Discord群组调用可落入Telegram(当那是主要所有者接口时)。感谢 @pashpashpash。 - **网关/钩子**:保持成功 `deliver:false` 代理钩子静默,为抑制的成功公告记录钩子审计记录,并在尝试钩子传递后抑制回退摘要,同时暴露失败钩子运行。修复 #55761;构建于#36332和#49234。感谢 @EffortlessSteven、@cioclawcode 和 @BrennerSpear。 - **插件SDK/Discord**:恢复已弃用的 `openclaw/plugin-sdk/discord` 兼容外观和已发布 `@openclaw/[email protected]` 包的遗留兼容组策略警告导出,覆盖其配置、账户、目录、状态和线程绑定导入,同时新插件保留在通用SDK子路径。修复 #73685;取代 #73703。感谢 @rderickson9 和 @SymbolStar。 - **渠道/Discord**:当多个启用账户解析到相同机器人令牌时抑制重复网关监视器,优先配置令牌而非默认env回退,并将跳过的重复报告为禁用。取代 #73608。感谢 @kagura-agent。 - **CLI/健康**:从检查的凭证元数据加运行时状态构建频道健康摘要,使 `openclaw health --json` 一致报告Discord `running`、`connected` 和 `tokenSource` 与频道状态。修复 #44354。感谢 @ferenc-acs。 - **控制UI/Talk**:解码Google Live二进制WebSocket JSON帧,并在中断或关闭时停止排队浏览器音频,使浏览器Talk离开 `Connecting Talk...` 且强入不再播放陈旧音频。修复 #73601和#73460;取代 #73466。感谢 @Spolen23 和 @WadydX。 - **渠道/Discord**:当Discord频道重新配置到另一代理后忽略陈旧路由形状对话绑定,同时保留显式焦点和子代理绑定。修复 #73626。感谢 @ramitrkar-hash。 - **代理/引导**:通过首次运行用户提示传递待处理BOOTSTRAP.md内容,同时使其脱离特权系统上下文,并在工作区文件访问不可用时显示有限引导指导。修复 #73622。感谢 @mark1010。 - **ACP/任务**:将父拥有的ACP会话分类为背景工作(无论持久运行时模式),并在无活动绑定时关闭终端陈旧ACP会话,使委托ACP输出通过父任务通知器报告而非表现为正常前台聊天会话。引用 #73609。感谢 @joerod26。 - **任务**:将终端镜像TaskFlow时间戳固定到任务完成时间,并让维护修复陈旧镜像,使ACP终端传递更新不再留下不一致流审计。引用 #73609。感谢 @joerod26。 - **网关/会话**:添加保守卡住会话恢复(仅释放陈旧会话通道,同时活动嵌入式运行、回复操作和通道任务保持序列化),使排队后续可排空而不中止合法长时间轮次。引用 #73581、#73655、#73652、#73705、#73647、#73602、#73592和#73601。感谢 @WS-Q0758、@bryangauvin、@spenceryang1996-dot、@bmilne1981、@mattmcintyre、@Vksh07 和 @Spolen23。 - **插件**:缓存未更改插件清单加载(通过文件签名),减少突发启动和运行时注册表路径的重复JSON/JSON5解析和清单规范化。引用 #73532和#73647;继承 #73678。感谢 @TheDutchRuler。 - **插件/运行时依赖**:缓存未更改捆绑运行时镜像dist文件具体化决策,并在所有者写入失败时关闭文件锁句柄,减少重复启动块扫描并避免FileHandle-GC恢复停顿。引用 #73532。感谢 @oadiazp 和 @bstanbury。 - **插件/运行时依赖**:重试和延迟拥有的运行时暂存目录的瞬态清理失败,使CLI启动在成功捆绑依赖交换后不再中止。引用 #73903。感谢 @bobfreeman1989。 - **插件/运行时依赖**:通过文件签名缓存捆绑运行时依赖JSON/包文件,减少捆绑频道启动期间重复暂存运行时元数据读取。引用 #73647和#73705。感谢 @mattmcintyre 和 @bmilne1981。 - **插件/运行时依赖**:将捆绑插件依赖暂存委托给完整npm/pnpm安装计划(具有持久运行时状态),从网关启动移除保留清单和源检出缓存协调。引用 #73532。感谢 @oadiazp、@bstanbury 和 @jmfraga。 - **插件/运行时依赖**:用显式镜像根依赖元数据替换网关启动根块依赖推断,减少暂存运行时扫描同时保留延迟每插件安装。引用 #73532。感谢 @oadiazp 和 @bstanbury。 - **插件/运行时依赖**:在仓库工作区外运行pnpm暂存安装,并为精确捆绑运行时依赖具体化禁用pnpm发布年龄门,使捆绑插件依赖修复写入包到生成的阶段,而不阻塞新鲜打包依赖。引用 #73532。感谢 @oadiazp、@bstanbury 和 @jmfraga。 - **CLI/TUI**:使 `chat.history` 不参与模型目录发现,使初始网关支持TUI历史加载无法阻塞于慢提供商/插件模型扫描(低核心主机)。引用 #73524。感谢 @harshcatsystems-collab。 - **渠道/WhatsApp**:在频道状态中标记最近重新连接的关联账户(即使套接字当前健康),使 flaps WhatsApp Web会话在短暂重新连接后不再看起来干净。引用 #73602。感谢 @Vksh07。 - **渠道/WhatsApp**:记录共享调度程序传递失败(带回复类型、消息ID、聊天ID和连接ID),使无发送键入报告可识别WhatsApp发送路径是否拒绝生成的回复。引用 #74269。感谢 @tomcosta-git。 - **飞书**:在流式卡已关闭后抑制 distinct 晚 `final` 文本传递,同时保留媒体附件可传递,使晚最终不再重新打开重复飞书卡。修复 #71977。(#72294)感谢 @MonkeyLeeT。 - **网关**:在配置、模式和文档中暴露 `gateway.handshakeTimeoutMs`,同时保留 `OPENCLAW_HANDSHAKE_TIMEOUT_MS` 优先,使加载或低功率主机可调整本地WebSocket预认证握手而不修补分发文件。取代 #51282;引用 #73592和#73652。感谢 @henry-the-frog。 - **网关/TUI/状态**:在本地客户端、探测和回退RPC间对齐配置和基于env的WebSocket握手预算,同时保留显式状态超时和配对设备auth回退,使慢本地网关不被较短的客户端监视狗标记为不可达。引用 #73524、#73535、#73592和#73602。感谢 @harshcatsystems-collab、@DJBlackhawk 和 @Vksh07。 - **网关/启动**:在sidecar启动窗口期间返回可重试 `UNAVAILABLE`,并保持CLI/TUI/状态客户端在其现有超时预算内重试,使早期连接不再显示为终端握手失败。修复 #73652。感谢 @spenceryang1996-dot。 - **网关/代理**:对本地网关控制平面WebSocket(到 `localhost` 以及环回IP)绕过继承的代理环境,使Windows/WSL代理设置无法拦截本地CLI/TUI网关连接。取代 #73474;引用 #73602。感谢 @DhtIsCoding。 - **Doctor/网关**:对doctor网关存活使用轻量级 `status` RPC(无频道摘要工作),使缓慢健康快照不错误驱动服务重启修复。修复 #64400;取代 #64511。感谢 @CHE10X 和 @EronFan。 - **代理/auth**:在模型auth状态和启动预热期间将外部CLI凭证发现作用域到配置的提供商,使opencode-only和其他单提供商网关不阻塞于无关Claude CLI Keychain探测。修复 #73908。感谢 @Ailuras。 - **代理/模型选择**:在提供商/模型解析前解析斜杠形式别名,并保持别名解析主模型受瞬态提供商冷却约束,使cron和持久会话不重试冷却的原始别名。修复 #73573和#73657。感谢 @akai-shuuichi 和 @hashslingers。 - **代理/Claude CLI**:对无提示Claude凭证读取重用已缓存的macOS Keychain凭证,使doctor/运行时检查不错过新鲜交互式Claude auth。修复 #73682。感谢 @RyanSandoval。 - **代理/Claude CLI doctor**:将工作区和项目目录检查作用域到实际使用Claude CLI运行时的代理,使非默认Claude代理不再使默认代理看起来Claude支持。修复 #73903。感谢 @bobfreeman1989。 - **网关/会话**:在会话行、`sessions.patch` 和本地 `openclaw sessions --json` 上暴露有效代理运行时元数据,同时保持Claude CLI支持行在规范模型提供商上,使运行时后端和模型身份不再混淆。修复 #73090。感谢 @vishutdhar。 - **网关/auth状态**:将外部CLI凭证覆盖作用域到配置的提供商、运行时或配置文件,并保持状态读取不触发新Keychain提示,使单提供商网关配置不再在启动时探测无关Claude/Codex/MiniMax auth。修复 #73908。感谢 @Ailuras。 - **代理/运行时状态**:在 `agents.list`、控制UI代理面板和 `/agents` 中暴露有效代理运行时元数据,并避免渲染陈旧或累积CLI令牌总计为实时上下文使用。修复 #73660、#73578和#45268。感谢 @spartman、@DashLabsDev 和 @xyooz。 - **代理/转录**:剥离空助手文本块同时保留有效文本、图像和签名,使Anthropic风格提供商不再拒绝消毒的转录轮次。修复 #73640。感谢 @jowhee327。 - **网关/会话**:在隐藏生命周期事件上保留会话密钥,使频道路由运行仍持久化终端会话状态,且不将会话状态 strand 为Codex轮次完成后的运行中。感谢 @cathrynlavery。 - **提供商/Bedrock**:对Claude Opus 4.7 Bedrock模型ID、命名和应用程序推理配置文件(包括点状 `opus-4.7` 引用)省略已弃用 `temperature`,并将嵌套验证响应分类为故障转移。修复 #73663。感谢 @bstanbury。 - **网关**:将预认证/连接挑战超时提高到15秒,使慢速主机上的冷CLI启动在网关关闭连接前有更多时间处理WebSocket挑战。修复 #51469;引用 #73592和#62060。感谢 @GothicFox 和 @jackychen-png。 - **CLI/状态**:当环回详细探测超时或报告未知能力时回退到有界本地 `status` RPC,使可达本地网关不再被慢速读取诊断标记为不可达。修复 #73535;引用 #48360、#62762、#51357和#42019。感谢 @RacecarGuy、@justinschille、@DJBlackhawk、@tianyaqpzm 和 @0xrsydn。 - **CLI/网关**:在 `gateway probe` 期间重用缓存配对设备auth,并将连接后诊断失败报告为降级可达性,使健康本地网关在环回auth或读取超时后不再标记为不可达。修复 #48360。感谢 @RacecarGuy。 - **渠道/Discord**:为Discord网关WebSocket握手提供30秒超时,使停滞TLS/网络转换发出错误,且Carbon可继续重连循环,而非让机器人静默直至重启。引用 #50046。感谢 @codexGW。 - **Mattermost/WebSocket**:发送协议ping/pong保活并在pong停止到达时终止陈旧会话,使无声TCP drop重连而非让监视空闲。修复 #41837;继承 #57621;引用 #50138、#44160和#51104。感谢 @JasonWang1124。 - **渠道/Telegram**:当用户可见助手错误回复已覆盖轮次时抑制独立失败编辑/写入警告负载,同时保持未解决变异失败在成功外观或抑制错误回复后可见。修复 #39631;引用 #73750;继承 #39636和#39717;保留 #39406用于可配置传递策略。感谢 @Bartok9 和 @Bortlesboat。 - **控制UI/代理**:通过 `agents.list[].default` 持久化Set Default操作而非写入不支持的 `agents.defaultId` 字段,使保存默认代理更改在配置验证后存活。修复 #65565;继承 #72585。感谢 @luyao618。 - **NVIDIA/NIM**:持久化 `NVIDIA_API_KEY` 提供商标记并将捆绑NVIDIA Chat Completions模型标记为字符串内容兼容,使NIM模型从 `models.json` 加载且OpenAI兼容子代理调用发送纯文本内容。修复 #73013和#50107;引用 #73014。感谢 @bautrey、@iot2edge、@ifearghal 和 @futhgar。 - **渠道/Discord**:让仅文本配置丢弃 `GuildVoiceStates` 网关意图,并暴露有界 `/gateway/bot` 元数据超时(带速率限制回退日志),减少空闲CPU和警告洪水。修复 #73709和#73585。感谢 @sanchezm86 和 @trac3r00。 - **代理/会话**:在它们到达模型前用跨会话 `isUser=false` 信封标记同轮次 `sessions_send` 和A2A回复提示,使外部会话输出不再作为裸活动用户文本落地。修复 #73702;引用 #73698、#73609、#73595和#73622。感谢 @alvelda。 - **渠道/Telegram**:当账户级公共DM设置与限制性顶级 `allowFrom` 冲突时失败关闭,并需要有效通配符前 `dmPolicy="open"` 表现为公共访问。修复 #73756;引用 #73698。感谢 @Hilo-Hilo 和 @xace1825。 - **渠道/安全**:将开放DM允许列表语义移入共享策略辅助,并协调Discord、Slack、Mattermost、Matrix、飞书、LINE、IRC、Google Chat、Zalo、Zalo User、QQ Bot和Synology Chat,使 `dmPolicy="open"` 仅在有效通配符下为公共,否则仍遵循发送者允许列表。引用 #73756和#73698。感谢 @Hilo-Hilo 和 @xace1825。 - **ACP/任务**:清理其任务记录丢失的孤立父拥有ACP会话,保留绑定持久会话但清除未绑定陈旧ACPX元数据,使旧子会话无法无声重生到聊天。修复 #73609。感谢 @joerod26。 - **出站/安全**:在最终频道传递边界剥离已知内部运行时脚手架(如 `<system-reminder>` 和 `<previous_response>`),并保持Discord输出在目标标签剥离上,使降级harness回复无法将这些标签泄漏给用户。修复 #73595。感谢 @gabrielexito-stack 和 @martingarramon。 - **安全/Telegram**:在只读审计/doctor中加载Telegram安全适配器,审计畸形Telegram DM `allowFrom` 条目(即使群组禁用),并保持允许列表DM审计不计数陈旧配对存储发送者,使公共/共享DM风险检查保持准确。引用 #73698。感谢 @xace1825。 - **插件**:移除隐藏清单、提供商所有者、引导和渠道元数据缓存,使插件安装、清单编辑和捆绑根更改在下次元数据读取时可见,同时保留运行时/模块加载器缓存用于实际插件代码。感谢 @shakkernerd。 - **CLI/插件**:对安装槽选择使用插件元数据快照并添加可选插件生命周期计时跟踪,使插件安装避免运行时加载插件注册表用于仅元数据决策。感谢 @shakkernerd。 - **修复(插件)**:将捆绑插件目录解析限制到受信任包根。(#73275)感谢 @pgondhi987。 - **修复(安全)**:防止工作区PATH注入通过服务env和trash辅助。(#73264)感谢 @pgondhi987。 - **主动记忆**:允许 `allowedChatTypes` 包含显式门户/webchat会话,并在不透明会话ID可阴影聊天类型前分类 `agent:...:explicit:...` 会话密钥。修复 #65775。(#66285)感谢 @Lidang-Jiang。 - **主动记忆**:允许隐藏回忆子代理使用 `memory_recall` 和遗留 `memory_search`/`memory_get` 记忆工具契约,使捆绑 `memory-lancedb` 回忆工作而不破坏默认 `memory-core` 路径。修复 #73502。(#73584)感谢 @Takhoffman。 - **修复(设备配对)**:在修复[AI]上针对解析的令牌范围验证callerScopes。(#72925)感谢 @pgondhi987。 - **主动记忆文档**:文档化 `cacheTtlMs` 1000-120000 ms范围和15000 ms默认,使设置片段不引导用户超过模式限制。修复 #65708。(#65737)感谢 @WuKongAI-CMU。 - **修复(代理)**:在byProvider工具策略查找中规范提供商别名[AI]。(#72917)感谢 @pgondhi987。 - **修复(安全)**:阻止来自工作区.env的npm_execpath注入[AI辅助]。(#73262)感谢 @pgondhi987。 - **工具/web_fetch**:在提取前用声明HTTP、XML或HTML meta字符集从原始字节解码响应体,使Shift_JIS和其他遗留字符集页面不再返回乱码。修复 #72916。感谢 @amknight。 - **主动记忆**:在构建调试遥计时跳过无负载 `memory_search` 转录工具结果,使新空条目不再隐藏最新有用调试负载。(#68773)感谢 @SimbaKingjoe。 - **主动记忆**:保持回忆设置时间不消耗配置模型超时,同时给钩子运行器插件显式有界预算,使慢嵌入式运行设置不再导致立即回忆超时。修复 #72606。(#72620)感谢 @hyspacex。 - **渠道/Discord**:约束消息读取/搜索REST调用,将这些动作路由通过网关执行,并回退 `CommandTargetSessionKey` 用于入站钩子会话密钥,使Discord读取不挂起且钩子在 `SessionKey` 为空时仍触发。修复 #73431。(#73521)感谢 @amknight。 - **插件/媒体**:自动启用由 `agents.defaults.imageGenerationModel`、`videoGenerationModel` 和 `musicGenerationModel` 主/回退引用引用的提供商插件,使配置的Google和MiniMax媒体提供商不保留在限制性插件允许列表后禁用。感谢 @vincentkoc。 - **记忆核心/梦境**:在启动后重试托管梦境cron注册(当cron服务尚不可达时),使调度的记忆梦境推广清扫无需等待心跳流量即可恢复。修复 #72841。感谢 @amknight。 - **Acpx/运行时**:在 `AcpxRuntime.ensureSession` 包装边界验证运行时会话模式,使传递非 `persistent` 或 `oneshot` 的调用者获得清晰 `ACP_INVALID_RUNTIME_OPTION` 错误,而非静默往返编码句柄作为默认 `persistent` 模式,稍后抛出 `SessionResumeRequiredError`。调查上下文:#73071。(#73548)感谢 @amknight。 - **CLI/推断**:保持web搜索回退在缺失提供商API密钥上,保留来自选定提供商的结构化验证错误,并让每请求图像描述提示覆盖配置媒体条目提示。(#63263)感谢 @Spolen23。 - **聊天命令**:构建 `/think` 参数菜单时包含配置的模型目录思维元数据,使Ollama Cloud和其他提供商拥有的思维模型显示支持级别而非仅 `off`。修复 #73515;取代 #73568。感谢 @danielzinhu99 和 @neeravmakwana。 - **渠道/Telegram**:当预览流式关闭时抑制通用工具进度 chatter,使非流式Telegram轮次仅传递最终回复,而批准、媒体和错误仍正常路由。引用 #72363和#72482。感谢 @neeravmakwana 和 @SweetSophia。 - **CLI/模型探测**:为 `infer model run` 添加可重复图像 `--file` 输入(用于本地和网关多模态模型冒烟),使视觉模型(如Ollama Qwen VL和Gemini)可通过原始模型探测表面测试。修复 #63700。感谢 @cedricjanssens。 - **CLI/模型探测**:为 `infer model run --gateway --model <provider/model>` 请求受信任操作员作用域,使网关原始模型冒烟可使用一次性提供商/模型覆盖而非在提供商auth解析前被拒绝。修复 #73759。感谢 @chrislro。 - **CLI/图像描述**:通过 `infer image describe` 和 `describe-many` 传递 `--prompt` 和 `--timeout-ms`,使自定义视觉指令和慢本地模型预算到达媒体理解提供商(如Ollama、OpenAI、Google和OpenRouter)。引用 #63700。感谢 @cedricjanssens。 - **模型选择**:当存储的会话覆盖被清除时包含被拒绝的提供商/模型引用和允许列表恢复提示,使本地模型选择(如Gemma GGUF变体)不回归默认并显示通用消息。引用 #71069。感谢 @CyberRaccoonTeam。 - **OpenAI兼容提供商**:在OpenAI SDK流解析器看到之前丢弃仅事件或空白数据SSE帧,使拆分 `event:` 来自 `data:` 的代理不再以 `Unexpected end of JSON input` 崩溃流式运行。修复 #52802。感谢 @LyHug。 - **网关/OpenAI兼容流式**:在到达SSE客户端前剥离跨流模型增量分割的 `<final>` 标签,使 `/v1/chat/completions` 不再发射标签残余或在最终答案包装器跨块边界时丢弃内容。修复 #63325。感谢 @tzwickl。 - **Ollama**:当 `/api/tags` 省略它们时通过 `/api/show` 解析显式选择登录的 `:cloud` 模型,使工作模型(如 `gemini-3-flash-preview:cloud` 和 `deepseek-v4-pro:cloud`)在原生 `/api/chat` 传输运行前不失败动态模型解析。修复 #73909。感谢 @chtse53。 - **Discord/exec批准**:当无原生Discord批准运行时保持本地 `/approve` 提示,并在原生批准传递无目标时发送手动回退通知,使失败DM卡不再留下批准轮次静默或依赖模型编写的shell命令。修复 #73954;继承 #74027。感谢 @guarismo 和 @brokemac79。 - **本地模型提示缓存**:将稳定项目上下文保持在易失频道/会话提示指导上方,并停止在消息工具描述中嵌入当前频道名称,使Ollama、MLX、llama.cpp和其他前缀缓存后端避免跨频道轮次的可避免完整提示重新处理。修复 #40256;取代 #40296。感谢 @rhclaw 和 @sriram369。 - **网关/OpenAI兼容API**:保护提供商策略查找针对运行时提供商(具有非数组 `models` 值),使 `/v1/chat/completions` 不再以 `provider?.models?.some is not a function` 失败。修复 #66744;继承 #66761。感谢 @MightyMoud、@MukundaKatta。 - **WhatsApp/Web**:将显式Baileys套接字定时传递到每个WhatsApp Web套接字,并暴露 `web.whatsapp.*` 保活、连接和查询超时设置,使不稳定网络可避免重复408断开和打开握手超时循环。修复 #56365。(#73580)感谢 @velvet-shark。 - **WhatsApp/Web**:当后408重新连接继续接收传输帧但停止传递应用消息时恢复最近活跃监听器,同时保持群组元数据回退关闭Baileys发送。修复 #63855和#66920;引用 #7433、#67986、#70856、#60007和#72621。感谢 @legonhilltech-jpg、@octopuslabs-fl、@Kanorin-chan 和 @stuswan。 - **渠道/Telegram**:将原生命令元数据持久化到目标会话,使主题、helper和ACP绑定斜杠命令保持其会话元数据附加到路由对话。(#57548)感谢 @GaosCode。 - **渠道/原生命令**:在群聊中保持验证的原生斜杠命令回复可见,同时保留显式所有者允许列表用于命令授权。(#73672)感谢 @obviyus。 - **配对/doctor**:当无命令所有者时从首次批准DM配对引导 `commands.ownerAllowFrom`,并让doctor解释缺失所有者,使特权斜杠命令在接入后不意外不可用。感谢 @pashpashpash。 - **Telegram/exec**:从 `commands.ownerAllowFrom` 推断原生exec批准者,并在所有者可解析时自动启用Telegram批准客户端,使仅所有者命令(如 `/diagnostics`)可在Telegram批准而无需重复每频道批准者配置。感谢 @pashpashpash。 - **自动回复/会话**:在静默内回复会话重置(压缩失败、角色排序冲突)时将用户/助手轮次尾部携带到新鲜旋转的转录,使直接聊天连续性在重绑定后存活。修复 #70853。(#70898)感谢 @neeravmakwana。 - **技能**:从配置技能根加载分组技能目录(如 `skills/<group>/<skill>/SKILL.md`),同时保持分组发现对大目录限制。修复 #56915。(#72534)感谢 @ottodeng、@MoerAI 和 @i010542。 - **配置**:在env引用检查前跳过格式错误非字符串 `env.vars` 条目,使配置加载不再在数字或布尔等JSON值上崩溃。(#42402)感谢 @MiltonHeYan。 - **Docker Compose**:默认缺失配置和工作区绑定挂载到 `${HOME:-/tmp}/.openclaw`,使手动compose运行不创建无效空源卷规格。(#64485)感谢 @jlapenna。 - **代理/上下文引擎**:当子代理清理重新解析上下文引擎时保留子代理配置的 `agentDir`,使 `onSubagentEnded` 钩子保持对正确每代理状态操作。(#67243)感谢 @jarimustonen。 - **渠道/WhatsApp**:限制配对验证回复到真实入站用户内容,防止来自回执、键入指示、在场更新和其他非消息Baileys upserts的未经请求提示。修复 #73797。(#73823)感谢 @hclsys。 - **配置/Ollama**:在仅云或云+本地设置后显示配置的Ollama模型允许列表,并跳过慢每模型云元数据获取。(#73995)感谢 @obviyus。 - **渠道/WhatsApp**:当机器人的自身E.164在 `allowFrom` 中时检测显式群组 `@mentions`,使共享号码设置不再跳过直接提及机器人的群组ping。修复 #49317。(#73453)感谢 @juan-flores077。 - **WhatsApp/可靠性**:发布真实传输活跃度到WhatsApp频道状态,并在无声传输停滞时强制更早重连,使安静健康会话保持连接,而卡住套接字在 later remote 408路径前恢复。(#72656)感谢 @Sathvik-1007。 - **核心/渠道**:收紧选定运行时、媒体和插件边缘情况处理,同时保留现有行为。感谢 @jesse-merhi。 - **渠道/WhatsApp**:在每个WhatsApp可见出站路径剥离泄漏复数工具调用XML包装,并保持频道错误负载出WhatsApp聊天。(#71830)感谢 @rubencu。 - **代理/嵌入式运行器**:在边界感知嵌入式流回退注入解析的OAuth bearer(并转发运行中止信号),使通过 `openai-codex-responses` 和其他边界感知传输路由的模型停止以 `401 Unauthorized: Missing bearer or basic authentication in header` 失败。修复 #73559。(#73588)感谢 @openperf。 - **Telegram/网关**:约束出站Bot API调用并缓存捆绑插件别名查找,使慢Telegram发送或WSL2文件系统扫描不再楔网关回复。(#74210)感谢 @obviyus。 - **配置/GitHub Copilot**:在配置和显示提供商清单模型目录时重用现有Copilot auth,使选择GitHub Copilot不再回退到Ollama或跳过目录。(#74276)感谢 @obviyus。 - **配置/模型**:保持模型选择器作用域到选定清单提供商,并在目录查找前启用其捆绑插件,使选择GitHub Copilot不再回退到Ollama或跳过目录。(#74322)感谢 @obviyus。 - **自动回复/子代理**:从叶子子代理拒绝 `/focus`,并将回退目标解析作用域到请求子代理的子代,使子代理无法绑定其控制边界外的对话。(#73613)感谢 @drobison00。 - **网关/启动**:跳过无真实工作区写访问的沙盒生成会话的继承工作区启动记忆,使 `/new` 不再预加载主机工作区记忆到隔离子运行。(#73611)感谢 @drobison00。 - **代理/工具策略**:在应用组作用域工具策略或持久化网关组元数据前验证调用者组ID against 会话或生成上下文,使伪造组ID无法解锁更宽松工具。(#73720)感谢 @mmaps。 - **命令**:保持频道前缀所有者允许列表条目作用域到匹配提供商,使webchat命令上下文无法继承外部频道所有者。感谢 @zsxsoft。 - **Auth/设备配对**:将引导移交令牌发放、赎回和批准配对基线约束到文档每角色作用域允许列表,使引导批准无法持久授予 `operator.admin`、`operator.pairing` 或 `node.exec` 作用域。感谢 @eleqtrizit。 - **提供商/GitHub Copilot**:支持GUI/RPC向导设备代码auth流,使从非TTY客户端(网关RPC桥、GUI向导)的接入完成而非返回空配置文件。危险状态处理区分 `access_denied` 和 `expired_token` 与传输错误。(#73290)感谢 @indierawk2k2。 - **安装程序/Linux**:在切换不可写npm全局前缀到 `~/.npm-global` 前警告,然后告诉用户未来全局更新使用 `npm i -g openclaw@latest` 无 `sudo`,使npm保持使用重定向用户前缀。修复 #44365;继承 #50479。感谢 @Sayeem3051。 - **网关/插件**:在Windows上为捆绑插件模块启用原生 `require()` 快速路径,使插件加载使用 `require()` 而非Jiti的转换管道,将典型6插件设置的启动从~39s减少到~2s。修复 #68656。(#74173)感谢 @galiniliev。 - **macOS应用**:检测陈旧的网关TLS证书固定,自动修复受信任Tailscale Serve轮换,并暴露配对但断开Mac companion节点,使部分网关连接不再看起来健康。感谢 @guti。 ## 2026.4.27