← 返回更新日志

OpenClaw v2026.3.8

2026-03-09 · GitHub 原文
本版本的 Mac 资源复用了 v2026.3.8-beta.1 的测试版构件系列。 ### 变更 - CLI/备份:新增 `openclaw backup create` 和 `openclaw backup verify` 命令,用于本地状态归档,支持 `--only-config`、`--no-include-workspace` 选项,提供清单/载荷验证,并在破坏性流程中增加备份指引。(#40163) 感谢 @shichangs。 - macOS/引导流程:远程模式新增远程网关令牌字段,保留现有非明文 `gateway.remote.token` 配置值直至明确替换,并在 macOS 应用无法直接使用加载的令牌格式时发出警告。(#40187,取代 #34614) 感谢 @cgdusek。 - 对话模式:新增顶层 `talk.silenceTimeoutMs` 配置,使 Talk 在可配置的静默时长后自动发送当前转录,同时保留各平台未设置时的现有默认暂停窗口。(#39607) 感谢 @danodoesdesign。修复 #17147。 - TUI:在已配置代理工作区内启动时,从当前工作区推断活跃代理,同时保留显式的 `agent:` 会话目标。(#39591) 感谢 @arceus77-7。 - 工具/Brave 网页搜索:新增可选配置 `tools.web.search.brave.mode: "llm-context"`,使 `web_search` 可调用 Brave 的 LLM Context 端点并返回带源元数据的提取摘要片段,同时补充配置/文档/测试覆盖。(#33383) 感谢 @thirumaleshp。 - CLI/安装:在元数据可用时,`openclaw --version` 输出中包含简短 git 提交哈希,并保持安装程序版本检查与装饰格式兼容。(#39712) 感谢 @sourman。 - CLI/备份:改进归档命名以支持日期排序,新增仅配置备份模式,并强化备份规划、发布和验证的边界情况处理。(#40163) 感谢 @gumadeiras。 - ACP/溯源:新增可选 ACP 入口溯源元数据和可见回执注入功能(`openclaw acp --provenance off|meta|meta+receipt`),使 OpenClaw 代理可在会话跟踪 ID 中保留并报告 ACP 来源上下文。(#40473) 感谢 @mbelinky。 - 工具/网页搜索:在运行时选择、引导/配置选择器及配置元数据中对提供商排序进行字母化,使提供商列表保持中立,且多键自动检测现优先选择 Grok 而非 Kimi。(#40259) 感谢 @kesku。 - 文档/网页搜索:恢复每月 5 美元免费额度详情,用当前“Search”计划名称替换已失效的“Data for Search”/“Data for AI”计划名称,并在 Brave 设置文档中注明旧订阅有效性。跟进 #26860。(#40111) 感谢 @remusao。 - 扩展/ACPX 测试:将共享运行时测试辅助工具从 `src/runtime-internals/` 移至 `src/test-utils/`,使仅测试用的辅助工具不再看似已发布的运行时代码。 ### 修复 - 更新/macOS launchd 重启:在更新程序引导前重新启用被禁用的 LaunchAgent 服务,使 `openclaw update` 能在网关服务被禁用时恢复,避免重启步骤卡住。 - macOS 应用/聊天界面:将浏览器代理路由至本地节点浏览器服务,保留纯文本粘贴语义,从转录中剥离已完成助手跟踪/调试包装噪音,从系统设置返回后刷新权限状态,并容忍 macOS 标签页中格式错误的 cron 行。(#39516) 感谢 @Imhermes1。 - Android/Play 分发:从 Android 应用中移除自更新、后台定位、`screen.record` 和后台麦克风捕获功能,将前台服务限制为仅 `dataSync`,并清理遗留的 `location.enabledMode=always` 偏好迁移。(#39660) 感谢 @obviyus。 - Telegram/DM 路由:按代理而非会话密钥对入站 Telegram 直接消息去重,防止当 `agent:main:main` 和 `agent:main:telegram:direct:<id>` 均解析到同一代理时,同一 DM 触发重复回复。修复 #40005。取代 #40116。(#40519) 感谢 @obviyus。 - Cron/Telegram 公告投递:在最终确定派生输出后,将纯文本公告作业路由至真实出站适配器,使纯 Telegram 目标不再在消息实际未送达 Telegram 时报告 `delivered: true`。(#40575) 感谢 @obviyus。 - Matrix/DM 路由:为损坏的 `m.direct` homeserver 添加更安全的回退检测,尊重显式房间绑定而非 DM 分类,并为 Matrix DM 房间保留房间绑定代理选择。(#19736) 感谢 @derbronko。 - 飞书/插件引导流程:在安装频道插件后清除短期插件发现缓存再重新加载注册表,使引导流程不再在成功安装后立即提示下载飞书。修复 #39642。(#39752) 感谢 @GazeKingNuWu。 - 插件/频道引导流程:在引导和发布频道同步期间,优先使用捆绑的频道插件而非重复的 npm 安装副本,防止相同插件 ID 的 npm 安装覆盖捆绑插件。(#40092) - 配置/运行时快照:在配置写入后保持密钥运行时解析的配置和身份配置文件快照完整,使后续读取仍能看到文件支持的密钥值,同时获取持久化的配置更新。(#37313) 感谢 @bbblending。 - 网关/控制界面:通过符号链接的全局包装器和自动检测的包根解析捆绑仪表板资源,同时将配置和自定义根保留在严格硬链接边界内。(#40385) 感谢 @LarytheLord。 - 浏览器/扩展中继:新增 `browser.relayBindHost` 使 Chrome 中继可绑定至显式的非回环地址(适用于 WSL2 等跨命名空间场景),同时保留仅回环默认值。(#39364) 感谢 @mvanhorn。 - 浏览器/CDP:将回环直连 WebSocket CDP URL 标准化回 HTTP(S) 格式,使 `/json/*` 标签页操作在新增直连 WS 支持后仍能对本地 `ws://`/`wss://` 配置执行列表、聚焦、打开和关闭标签页操作。(#31085) 感谢 @shrey150。 - 浏览器/CDP:将来自远程 `/json/version` 响应的通配符 `ws://0.0.0.0` 和 `ws://[::]` 调试器 URL 重写回外部 CDP 主机/端口,修复 Browserless 风格容器端点问题。(#17760) 感谢 @joeharouni。 - 浏览器/扩展中继:在短暂中继断开后,短暂等待先前附加的 Chrome 标签页重新出现,再报 `tab not found` 错误,减少嘈杂的重连波动。(#32461) 感谢 @AaronWander。 - macOS/Tailscale 网关发现:当其他远程网关已发现时保持 Tailscale Serve 探测活跃,对解析的 `.ts.net` 和 Tailscale Serve 网关优先使用直连传输,并为 GUI 启动的 Tailscale CLI 发现设置 `TERM=dumb`。(#40167) 感谢 @ngutman。 - TUI/主题:通过 `COLORFGBG` 检测浅色终端背景并选择 WCAG AA 级合规浅色方案,对无法自动检测的终端提供 `OPENCLAW_THEME=light|dark` 覆盖选项。(#38636) 感谢 @ademczuk 和 @vincentkoc。 - 代理/openai-codex:当配置漂移至通用 OpenAI 响应端点时,将 `gpt-5.4` 回退传输标准化回 `openai-codex-responses` 的 `chatgpt.com/backend-api`。(#38736) 感谢 @0xsline。 - 模型/openai-codex GPT-5.4 前向兼容:对 `openai-codex/gpt-5.4` 使用 GPT-5.4 的 1,050,000 令牌上下文窗口和 128,000 最大令牌数,而非在解析回退和模型列表中继承陈旧的遗留 Codex 限制。(#37876) 感谢 @yuweuii。 - 工具/网页搜索:恢复 Perplexity 对 OpenRouter/Sonar 的兼容性,支持遗留的 `OPENROUTER_API_KEY`、`sk-or-...` 以及显式的 `perplexity.baseUrl`/`model` 配置,同时保持直接 Perplexity 密钥走原生 Search API 路径。(#39937) 感谢 @obviyus。 - 代理/故障转移:在故障转移、cron 重试和内存嵌入中,将 Amazon Bedrock `Too many tokens per day` 配额错误检测为速率限制,同时将上下文窗口 `too many tokens per request` 错误排除在速率限制通道外。(#39377) 感谢 @gambletan。 - Mattermost 回复:当代理在主题内回复时,将 `root_id` 固定到现有主题根,而对顶层帖子仍使用回复目标主题设置。(#27744) 感谢 @hnykda。 - Telegram/DM 部分流式传输:DM 预览通道在真实消息编辑时保持活动,而非使用原生草稿实体化,使最终回复不再在折叠回单条前闪现第二个重复副本。 - macOS 覆盖层:通过移除 `OverlayPanelFactory.present` 中的共享 `inout` 可见性突变,修复 VoiceWake、Talk 和 Notify 覆盖层独占性崩溃,并添加重复 Talk 覆盖层冒烟测试。(#39275, #39321) 感谢 @fellanH。 - macOS Talk 模式:将语音识别请求的 `taskHint` 设为 `.dictation` 以捕获麦克风输入,并为请求默认值添加回归覆盖。(#38445) 感谢 @dmiv。 - macOS 发布打包:`scripts/package-mac-app.sh` 默认对 `BUILD_CONFIG=release` 生成通用二进制文件,并澄清 `scripts/package-mac-dist.sh` 已生成发布 zip + DMG。(#33891) 感谢 @cgdusek。 - 钩子/会话内存:将 `/new` 和 `/reset` 内存产物保留在绑定代理工作区中,并在陈旧主代理密钥泄漏到钩子路径时,使保存的重置会话键与该工作区对齐。(#39875) 感谢 @rbutera。 - 会话/模型切换:会话更改模型时清除陈旧的缓存 `contextTokens`,使状态和运行时路径针对活动模型窗口重新计算。(#38044) 感谢 @yuweuii。 - ACP/会话历史:为成功的 ACP 子运行持久化转录,保留精确转录文本,记录 ACP 生成会话谱系,并以尽力方式保持生成时转录路径持久化,使历史存储失败不阻塞执行。(#40137) 感谢 @mbelinky。 - 文档/浏览器:添加分层 WSL2 + Windows 远程 Chrome CDP 故障排除指南,涵盖控制界面源陷阱和扩展中继绑定地址指导。(#39407) 感谢 @Owlock。 - 上下文引擎注册表/捆绑构建:通过 `globalThis` 单例共享注册表状态,使重复的捆绑模块副本能在运行时解析彼此注册的引擎,并为重复模块导入添加回归覆盖。(#40115) 感谢 @jalehman。 - Podman/设置:当 `setup-podman.sh` 从目标用户无法访问的目录调用时,通过将用户切换调用包装在 `cd` 到 `/tmp`(`/` 作为回退)的子 shell 中,修复 `run_as_user` 中的 `cannot chdir: Permission denied` 错误。(#39435) 感谢 @langdon 和 @jlcbk。 - Podman/SELinux:自动检测 SELinux 强制/宽容模式,并在 `run-openclaw-podman.sh` 和 Quadlet 模板中为绑定挂载添加 `:Z` 重标签,修复 Fedora/RHEL 主机上的 `EACCES` 错误。支持 `OPENCLAW_BIND_MOUNT_OPTIONS` 覆盖。(#39449) 感谢 @langdon 和 @githubbzxs。 - 代理/上下文引擎插件:在嵌入式运行、压缩和子代理边界处一次性引导运行时插件,使插件提供的上下文引擎和钩子能在运行时解析前从活动工作区加载。(#40232) - 文档/更新日志:修正捆绑控制界面全局安装修复的贡献者署名应为 @LarytheLord。(#40420) 感谢 @velvet-shark。 - Telegram/媒体下载:仅对停滞的主体读取超时,使轮询能从挂起的文件下载恢复而不中断仍在流式传输数据的慢速下载。(#40098) 感谢 @tysoncung。 - Docker/运行时镜像:清理开发依赖,剥离仅构建的分发元数据以减小 Docker 镜像体积。(#40307) 感谢 @vincentkoc。 - 网关/重启超时恢复:重启触发关闭耗尽时间时以非零状态退出,使 launchd/systemd 重启网关而非将失败重启视为正常停止。源自贡献者 PR #40380 by @dsantoreis。感谢 @dsantoreis。 - 网关/配置重启保护:在服务启动/重启前验证配置,并防止 SIGUSR1 后启动故障导致网关进程崩溃,减少无效配置重启循环和 macOS 权限丢失。源自贡献者 PR #38699 by @lml2468。感谢 @lml2468。 - 网关/launchd 重生检测:将 `XPC_SERVICE_NAME` 视为 launchd 监管提示,使 macOS 在 launchd 下干净退出而非尝试分离式自重生。源自贡献者 PR #20555 by @dimat。感谢 @dimat。 - Telegram/轮询重启清理:在关闭或强制轮询重启停止运行器时中止进行中的 Telegram API 获取,防止陈旧的 `getUpdates` 长轮询与替换运行器冲突。源自贡献者 PR #23950 by @Gkinthecodeland。感谢 @Gkinthecodeland。 - Cron/重启追赶交错:限制启动时立即重放错过的作业,并在追赶后时钟重新调度延迟剩余作业,防止重启突发导致网关饥饿或静默跳过逾期重复作业。源自贡献者 PR #18925 by @rexlunae。感谢 @rexlunae。 - Cron/仅所有者工具:将受信任的隔离 cron 运行连同所有者上下文传入嵌入式代理,使 `cron`/`gateway` 工具在所有者身份验证硬化缩小直接消息所有权推断后仍可用。 - 浏览器/SSRF:在严格浏览器导航流程中阻止私有网络中间重定向跳转,当远程标签页打开路径无法检查重定向链时失败关闭。感谢 @zpbrent。 - MS Teams/授权:即使配置了团队/频道路由允许列表,仍保持 `groupPolicy: "allowlist"` 强制发件人允许列表,使路由匹配不再将组访问扩大到该路由的每个发件人。感谢 @zpbrent。 - 安全/system.run:将批准的 `bun` 和 `deno run` 脚本操作数绑定到磁盘文件快照,使批准后脚本重写在执行前被拒绝。 - 技能/下载安装:在写入下载归档前固定验证的每技能工具根目录,使重新绑定词法工具路径无法将下载写入重定向到预期工具目录外。感谢 @tdjackey。