← 返回更新日志

OpenClaw v2026.4.9

2026-04-09 · GitHub 原文
### 变更 - 记忆/梦境:新增具身REM回填通道,支持历史 `rem-harness --path`、日记提交/重置流程、更清晰的持久化事实提取,以及实时短期记忆整合,使旧每日笔记可重放到梦境和持久化记忆中,无需第二记忆栈。感谢 @mbelinky。 - 控制界面/梦境:新增结构化日记视图,支持时间线导航、回填/重置控制、可追溯的梦境摘要,以及具身场景通道,包含记忆提示和安全清除具身操作,用于 staged backfill 信号。 (#63395) 感谢 @mbelinky。 - 质量保证/实验室:新增角色氛围评估报告,支持模型选择和并行运行,使实时质量保证能更快比较候选行为。 - 插件/提供者认证:允许提供者清单声明 `providerAuthAliases`,使提供者变体可共享环境变量、认证配置文件、配置支持的认证和 API 密钥引导选项,无需核心特定连接。 - iOS:将发布版本号固定到 `apps/ios/version.json` 中的显式日历版本(CalVer),在维护者有意提升下一网关版本前,TestFlight 迭代保持相同短版本,并添加文档化的 `pnpm ios:version:pin -- --from-gateway` 发布流程。 (#63001) 感谢 @ngutman。 ### 修复 - 浏览器/安全:在由点击、求值、钩子触发点击和批量操作流驱动的交互式主框架导航后,重新运行阻止目的地安全检查,防止浏览器交互在跳转到禁止 URL 时绕过 SSRF 隔离区。 (#63226) 感谢 @eleqtrizit。 - 安全/.env:阻止运行时控制环境变量、浏览器控制覆盖和跳过服务器环境变量来自不受信任工作区的 `.env` 文件,并在懒加载前拒绝不安全的 URL 样式浏览器控制覆盖说明符。 (#62660, #62663) 感谢 @eleqtrizit。 - 网关/节点执行事件:将远程节点 `exec.started`、`exec.finished` 和 `exec.denied` 摘要标记为不可信系统事件,并在入队前清理节点提供的命令/输出/原因文本,防止远程节点输出向后续轮次注入可信 `System:` 内容。 (#62659) 感谢 @eleqtrizit。 - 插件/引导认证选择:在非交互式引导期间,防止不受信任工作区插件与捆绑提供者认证选择 ID 冲突,使捆绑提供者设置将操作员密钥保留在不信任工作区插件处理程序之外,除非这些插件被明确信任。 (#62368) 感谢 @pgondhi987。 - 安全/依赖审计:强制 `basic-ftp` 升级至 `5.2.1` 以修复 CRLF 命令注入漏洞,并在生产解析路径中提升 Hono 及 `@hono/node-server`。 - Android/配对:在新 QR 扫描时清除过时的设置代码认证,从全新配对引导操作员和节点会话,引导移交后优先使用存储的设备令牌,并在应用后台时暂停配对自动重试,使一次性 Android 配对恢复可靠。 (#63199) 感谢 @obviyus。 - Matrix/网关:在标记启动成功前等待 Matrix 同步就绪, containment Matrix 后台处理程序故障,并将致命 Matrix 同步停止路由到通道级重启处理,而非使整个网关崩溃。 (#62779) 感谢 @gumadeiras。 - Slack/媒体:在跨同源 `files.slack.com` 重定向时保留 Bearer 认证,同时在跨源 Slack CDN 跳转时剥离,使 `url_private_download` 图像附件能再次加载。 (#62960) 感谢 @vincentkoc。 - 回复/诊断:对排队回复运行使用活动运行时快照,在预飞行辅助程序接触配置前解析回复运行 SecretRefs,向用户暴露网关 OAuth 重新认证失败,并使 `openclaw doctor` 指出精确的重新认证命令。 (#62693, #63217) 感谢 @mbelinky。 - 控制界面:在快速会话切换期间防护过时会话历史重新加载,使选中会话和渲染记录保持同步。 (#62975) 感谢 @scoootscooob。 - 网关/聊天:在实时聊天更新和历史清理中抑制精确和流式 `ANNOUNCE_SKIP` / `REPLY_SKIP` 控制回复,防止内部代理间控制令牌泄露到面向用户的网关聊天界面。 (#51739) 感谢 @Pinghuachiu。 - 自动回复/NO_REPLY:在回复规范化及 ACP 可见流式传输前剥离粘连的前导 `NO_REPLY` 令牌,防止静默标记文本泄露到用户可见回复,同时保留实质性 `NO_REPLY ...` 文本。感谢 @frankekn。 - 会话/路由:在会话间公告流量上保留已建立的外部路由,防止 `sessions_send` 后续消息窃取 Telegram、Discord 或其他外部频道的传递。 (#58013) 感谢 @duqaXxX。 - 网关/会话:在 `/reset` 和 `/new` 时清除自动回退固定模型覆盖,同时保留显式用户模型选择,包括覆盖源跟踪存在前的旧会话。 (#63155) 感谢 @frankekn。 - Slack/ACP:将 Slack ACP 块回复视为可见交付输出,使 OpenClaw 在 Slack 已渲染回复后停止重新发送最终回退文本。 (#62858) 感谢 @gumadeiras。 - Slack/部分流式:按分发类型键控轮次本地去重,并在预览定稿失败时保持最终回退回复路径激活,防止过时预览文本抑制实际最终答案。 (#62859) 感谢 @gumadeiras。 - Matrix/诊断:在 `openclaw doctor --fix` 期间将旧版 `channels.matrix.dm.policy: "trusted"` 配置迁移回兼容 DM 策略,将显式 `allowFrom` 边界保留为 `allowlist`,并将空旧配置默认设为 `pairing`。 (#62942) 感谢 @lukeboyett。 - npm 打包:镜像捆绑频道运行时依赖,阶段化 Nostr 运行时依赖,从清单和构建区块推导所需根镜像,并在无仓库 `node_modules` 情况下测试打包发布压缩包,使全新安装在缺失插件依赖时快速失败,而非运行时崩溃。 (#63065) 感谢 @scoootscooob。 - 质量保证/实时认证:当实时质量保证场景遇到分类认证或运行时失败回复(包括原始场景等待路径)时快速失败,并清理缺失密钥指引,使网关认证问题作为可操作错误而非超时暴露。 (#63333) 感谢 @shakkernerd。 - 提供者/OpenAI:在 OpenAI Responses、WebSocket 及兼容补全传输上默认缺失推理努力为 `high`,同时仍遵循显式每轮推理级别。 - 提供者/Ollama:允许使用原生 `api: "ollama"` 路径的 Ollama 模型在 `/think` 设为非关闭级别时选择性地显示思考输出。 (#62712) 感谢 @hoyyeva。 - Codex CLI:通过 Codex 的 `model_instructions_file` 配置覆盖传递 OpenClaw 的系统提示,使全新 Codex CLI 会话接收与 Claude CLI 会话相同的提示引导。 - 认证/配置文件:直接持久化显式认证配置文件更新,并跳过外部 CLI 同步以进行本地写入,使配置文件更改无需 stale 外部凭证状态即可保存。 - 代理/超时:使 LLM 空闲超时在配置时继承 `agents.defaults.timeoutSeconds`,禁用未配置的 cron 运行空闲监视器,并将空闲超时错误指向 `agents.defaults.llm.idleTimeoutSeconds`。感谢 @drvoss。 - 代理/故障转移:将 Z.ai 供应商代码 `1311` 分类为计费,`1113` 为认证,包括长包装 `1311` 负载,使这些错误不再落入通用故障转移处理。 (#49552) 感谢 @1bcMax。 - QQBot/媒体标签:支持 HTML 实体编码尖括号(`&lt;`/`&gt;`)、属性中的 URL 斜杠及自闭合媒体标签,使上游 `<qqimg>` 负载被正确解析和规范化。 (#60493) 感谢 @ylc0919。 - 记忆/梦境:通过保留源日标签、拒绝缺失或符号链接目标、规范化网关回填中的日记标题、收紧声明分割及日记源元数据,加固具身回填输入、日记写入、状态负载和日记操作分类。感谢 @mbelinky。 - 记忆/梦境:接受嵌入式心跳触发令牌,使轻量级和 REM 梦境在运行时包装器包含额外心跳文本时仍能运行。 - Android/手动连接:仅允许 TLS 手动网关端点使用空白端口输入,使标准 HTTPS Tailscale 主机默认为 `443`,且不静默更改明文手动连接。 (#63134) 感谢 @Tyler-RNG。 - Windows/更新:在开发更新期间为 Windows `pnpm build` 步骤添加堆头空间,使更新预飞行构建不再因默认 Node 内存不足而失败。 - 插件 SDK:通过公共包导出频道插件基类和网络搜索配置合约,使插件无需私有导入即可使用。 - 插件/合约:将仅测试辅助程序保留在生产合约 barrel 之外,通过捆绑测试表面加载共享合约 harness,并加固防护,阻止间接重新导出和规范 `*.test.ts` 文件。 (#63311) 感谢 @altaywtf。 - 控制界面/模型:为 OpenRouter 目录模型中已包含斜杠的 ID 保留提供者限定引用,使选择器提交允许列表兼容模型引用而非丢弃 `openrouter/` 前缀。 (#63416) 感谢 @sallyom。 - 插件 SDK/命令认证:将命令状态构建器拆分到轻量级 `openclaw/plugin-sdk/command-status` 子路径,同时保留已弃用的 `command-auth` 兼容导出,使仅认证插件导入不再将状态/上下文预热拉入 CLI 引导路径。 (#63174) 感谢 @hxy91819。