← 返回更新日志

OpenClaw v2026.4.12-beta.1 预发布

2026-04-12 · GitHub 原文
### 变更 - **Plugins/loading**: 将 CLI、provider 和 channel 的激活范围缩小至清单(manifest)声明的需求,保留显式的作用域与信任边界,并集中管理清单所有者策略,从而在启动、命令发现和运行时激活过程中避免加载无关的插件运行时。(#65120, #65259, #65298, #65429, #65459) 感谢 @vincentkoc。 - **Memory/active-memory**: 默认将 QMD 召回调整为搜索模式,并呈现更优的搜索路径遥测数据,使内存支持的召回在开箱即用时更具可预测性。(#65068) 感谢 @Takhoffman。 - **Docs/providers**: 在各 provider 页面中扩展捆绑的 provider 文档,增加更丰富的能力说明、环境变量及设置指南。 - **Docs/memory-wiki**: 添加推荐的 QMD + 桥接模式混合方案,以及针对 `memory-wiki` 桥接配置的零产物故障排除指南。(#63165) 感谢 @sercada 和 @vincentkoc。 ### 修复 - **CLI/update**: 在包自更新后,从更新后的入口点重新启动追踪的插件刷新进程,使 `openclaw update` 不再因过时的哈希 `dist/install.runtime-*.js` 分块导入而失败。(#65471) - **Memory/active-memory**: 当启用 `mx-claw` 等包装器时,保持召回运行在已解析的 channel 上,改进词汇回退排序,并排除混合搜索中的词汇增强,使召回能更一致地找到正确记忆。(#65049, #65395) 感谢 @Takhoffman。 - **Dreaming**: 精确消费一次托管的心跳事件,从所有记录的短期信号中暂存浅睡置信度,立即唤醒计划任务,提升仅梦境晋升分数以跨越持久内存门槛,并阻止梦境重新摄入其自身的叙述记录。 - **Dreaming/narrative**: 强化瞬态叙述清理机制:重试超时的删除操作,通过锁感知会话存储路径清理过时的梦境会话产物,并按工作区隔离瞬态叙述会话键。(#65320, #61674) - **Memory/wiki**: 在 wiki 路径名和矛盾聚类中保留 Unicode 字母、数字及组合标记,并将 Unicode 文件名段限制为安全字节长度,使非 ASCII 标题不再折叠或溢出路径限制。(#64742) 感谢 @zhouhe-xydt。 - **Memory/short-term recall**: 允许 `memory/**/YYYY-MM-DD.md` 下的嵌套每日笔记纳入短期召回,同时仍排除 `memory/dreaming/**` 下的生成梦境报告,防止梦境提升自身输出。(#64682) 感谢 @SARAMALI15792。 - **UI/WebChat**: 在聊天历史重载时隐藏合成记录修复工具结果,防止内部恢复标记在重连后泄露到可见聊天中。(#65247) 感谢 @wangwllu。 - **WhatsApp/outbound**: 当 `mediaUrl` 为空时回退到第一个 `mediaUrls` 条目,使网关媒体发送不再静默丢弃已解析媒体列表的附件。(#64394) 感谢 @eric-fr4 和 @vincentkoc。 - **Doctor/Discord**: 阻止 `openclaw doctor --fix` 将遗留 Discord 预览流配置重写为嵌套的现代结构,使降级仍可恢复而无需手动编辑 `channels.discord.streaming`。(#65035) 感谢 @vincentkoc。 - **Gateway/auth**: 清空 `.env.example` 中附带的示例网关凭据,并在检测到仍配置了复制的占位符令牌或密码时启动失败,防止操作员意外使用公开已知密钥启动。(#64586) 感谢 @navarrotech 和 @vincentkoc。 - **Memory/active-memory+dreaming**: 保持活动内存召回运行在最强已解析 channel 上,精确消费一次托管梦境心跳事件,阻止梦境重新摄入其自身叙述记录,并在 CLI、doctor 及 Dreams UI 中添加显式修复/去重恢复流程。 - **Agents/queueing**: 在修复记录顺序前,将孤立的活动轮次用户文本携带至下一个提示,使运行中途到达的后续消息不再被静默丢弃。(#65388) 感谢 @adminfedres 和 @vincentkoc。 - **Gateway/keepalive**: 停止将 WebSocket 心跳广播标记为可丢弃,使慢速或背压客户端在长时间运行任务期间不会因“心跳超时”而自断开连接。(#65256, #65436) 感谢 @100yenadmin 和 @vincentkoc。 - **Matrix/mentions**: 在保持 room mention 严格 gate 的同时接受可见的 `@displayName` Matrix URI 标签,使 `requireMention` 对非 OpenClaw Matrix 客户端重新生效。(#64796) 感谢 @hclsys。 - **Doctor**: 当磁盘上的代理目录仍存在于 `~/.openclaw/agents/<id>/agent` 但配置中缺少匹配的 `agents.list[]` 条目时发出警告。(#65113) 感谢 @neeravmakwana。 - **Telegram**: 将批准按钮回调查询路由到独立的顺序化通道,使插件批准点击能立即解析,而非因阻塞的代理轮次而死锁。(#64979) 感谢 @nk3750。 - **Telegram/direct sessions**: 将仅评论的助手回退负载排除在可见直接投递之外,防止无 `final_answer` 文本的运行中 Codex 规划闲聊泄露到 Telegram 私信。 - **Gateway/plugins**: 始终为插件子代理运行发送非空的 `idempotencyKey`,使梦境叙述作业不再因网关模式验证失败。(#65354) 感谢 @CodeForgeNet。 - **Plugins/memory-core dreaming**: 仅当外部内存槽所有者启用梦境时,才将捆绑的 `memory-core` 与其一起加载,同时保留 `plugins.slots.memory = "none"` 的禁用语义。(#65411) 感谢 @pradeep7127。 - **CLI/plugins**: 当 `plugins.allow` 设置为 `openclaw wiki` 时 honoring `memory-wiki`,并将活动应用配置传入元数据注册器,使插件拥有的 wiki 命令解析实时插件配置而非回退到默认值。(#64779, #65012) - **QA/packaging**: 阻止打包的 QA 助手在可选场景执行配置不可用时崩溃,使 npm 分发可跳过仅仓库的场景包而不破坏完成缓存和启动路径。(#65118) 感谢 @EdderTalmor。 - **Media/audio transcription**: 当每次音频转录尝试均失败时呈现真实的 provider 错误,使状态输出和 CLI 不再将这些错误折叠为通用跳过。(#65096) 感谢 @l0cka。 - **Infra/net**: 修复受保护运行时获取体跨 FormData 实现边界时多部分 FormData 字段(包括 `model`)被静默丢弃的问题,恢复因 HTTP 400 失败的 OpenAI 音频转录请求。(#64349) 感谢 @petr-sloup。 - **Dreaming/diary**: 当 `dreaming.timezone` 未设置时使用主机本地时区生成日记时间戳,并包含时区缩写,使 `DREAMS.md` 和 UI 明确显示本地或 UTC 时间。(#65034, #65057) - **Dreaming/promotion**: 提升阶段强化分数,使重复的仅梦境重访在数日后能突破默认持久内存门槛,而非在阈值下方停滞。(#64068) 感谢 @vincentkoc。 - **Dreaming/light-sleep**: 从所有记录的短期信号(而非仅召回计数)计算暂存候选置信度,使仅梦境条目不再渲染为 `confidence: 0.00`。(#64599) 感谢 @vincentkoc。 - **Plugins/memory**: 在插件注册表缓存命中时恢复缓存的内存能力公共产物,使内存支持的产物表面在热加载后保持可见。 - **Gateway/cron**: 在运行时重载间保留请求的隔离代理配置,使子代理作业和心跳覆盖在热加载快照过时后仍保持正确工作区和心跳设置。 - **Cron/isolated sessions**: 为每次隔离运行(包括新会话轮转)持久化正确的记录路径,使 cron 运行不再追加到过时会话文件。 - **Discord/gateway**: 在重连前清除过时的心跳定时器,防止僵尸网关回调崩溃进程并丢弃飞行中的回复。(#65009) 感谢 @SARAMALI15792。 - **Agents/Anthropic replay**: 在存储和实时重放间保留不可变签名思维重放安全性,保持非思维嵌入式 `tool_result` 用户块完整,并在验证前丢弃冲突的保留工具 ID,使重试不再退化为缺失工具调用。(#65126) 感谢 @shakkernerd。 - **Memory/QMD**: 允许 shipped 默认 QMD 作用域中的 channel 会话,同时仍拒绝组。 - **Memory/QMD**: 停止将遗留的小写根内存文件注册为单独的默认集合,使 QMD 现在优先使用 `MEMORY.md` 和 `memory/` 树,而不会出现重复集合添加警告。 - **Memory/memory-core**: 直接监听 `memory` 目录并忽略非 markdown 的变动,使嵌套笔记变更在 macOS + Node 25 环境(其中递归 `memory/**/*.md` 全局监听失败)中仍能同步。(#64711) 感谢 @jasonxargs-boop 和 @vincentkoc。 - **WhatsApp**: 集中每账户连接所有权,使重连、登录恢复和出站准备状态保持绑定到实时套接字,而非在监控和登录路径间漂移。(#65290) 感谢 @mcaxtr 和 @vincentkoc。 - **iMessage**: 在拆除监控前重试瞬态的 `watch.subscribe` 启动失败,并净化启动错误日志,使短暂的本地传输停滞不会立即 bounced 通道或将原始 imsg RPC 负载泄露到日志中。(#65393) 感谢 @vincentkoc。 - **CLI/audio providers**: 在 `openclaw infer audio providers --json` 中报告环境认证的 provider,同时在认证设置期间保持受信任的工作区 provider 环境查找默认值稳定。(#65491) - **Plugins/install**: 当匹配的平台原生可选子项缺失时重新安装捆绑的运行时包,使打包的 Windows 安装能恢复在另一主机 OS 上打包的依赖项。