OpenClaw 小龙虾 2026.4.26 更新说明
📊 统计概览
- 总 PR 数量: 150+ 项变更
- 新功能: QQBot 完整群聊支持、Cerebras 提供商、Matrix 端到端加密、
openclaw migrate迁移工具、原生配置差异对比面板 - 安全修复: 令牌回转回声消除、API Key 响应脱敏、
标签隐私边界、工具循环检测隔离 - Bug 修复: 大量稳定性修复(Windows ESM 路径、WSL2 OOM、Docker TLS、Mattermost DM 等)
🆕 重大新功能
Channels/QQBot:完整群聊支持
- 群聊历史追踪、@提及门控、激活模式、按群独立配置
- C2C
stream_messages流式传输 +StreamingController生命周期管理 - 统一
sendMedia支持大文件分片上传 - 引擎重构为 pipeline 阶段、聚焦出站子模块、内置斜杠命令模块
- 通过
createEngineAdapters()实现显式依赖注入 [#70624] @cxyhhhhh
Channels/元宝(腾讯混元)
- 在官方渠道目录、合约套件和社区插件文档中注册腾讯元宝外部渠道插件
openclaw-plugin-yuanbao - 新增
docs/channels/yuanbao.md快速入门指南(WebSocket 机器人私聊和群聊)[#72756] @loongfay
Providers:Cerebras 提供商
- 作为捆绑插件添加,含 onboard 引导、静态模型目录、文档和清单端点元数据
CLI/migration:openclaw migrate 迁移工具
- 支持 plan、dry-run、JSON 输出、迁移前备份
- onboarding 检测、仅存档报告
- Claude Code/Desktop 导入器
- Hermes 导入器(配置、记忆/插件提示、模型提供商、MCP 服务器、技能、命令、支持的凭据)
- @vincentkoc 和 @NousResearch
Matrix/E2EE:端到端加密
- 新增
openclaw matrix encryption setup一键配置 - Matrix 加密启用、恢复引导、验证状态打印
- @gumadeiras
Control UI:原始配置差异对比面板
- 解析 JSON5,脱敏显示敏感值,避免假 raw-edit 回调
- Ref #39831, supersedes #48621, #46654
- @JiajunBernoulli 和 @BunsDev
Agents/compaction:主动转录大小检测
- 新增
agents.defaults.compaction.maxActiveTranscriptBytes可选前置触发器 - 当活动 JSONL 过大时自动执行本地压缩
- 压缩成功后旋转到更小的后继文件
- @vincentkoc
🎮 渠道与平台
Control UI/Talk
- 添加通用浏览器实时传输合约
- Google Live 浏览器 Talk 会话(受限临时令牌)
- 后端纯实时语音插件的 Gateway 中继
- @VACInc
Control UI
- 优化快速设置仪表盘网格,桌面/平板/移动端对齐 [#39831]
- @BunsDev
- 升级后显示加载/重载/重试状态,日志面板不空白 [#72450] @sobergou
- 保持会话级助手身份加载权威性,非主 agent 会话不显示主 agent 名称 [#72776] @rockytian-top
- 明确 Reload Config 丢弃本地草稿,被动刷新保留待定编辑 [#40352] @realmikechong-dotcom
- 缓存/合并/过期刷新工具清单,聊天运行不卡 UI 请求 [#72365] @Gabiii2398, @1yihui
- Update now 要求真实进程替换,报告跳过/错误原因 [#62492] @IAMSamuelRodda
- Dreaming 模式变更前要求确认,含重启警告 [#63804] @bbddbb1
- Cron 任务以清理后 Markdown 渲染 [#48504] @garethdaine
- 保留 WebChat 客户端版本标签,避免重复消息日志 [#72753] @LumenFromTheFuture
Discord
- 持久化路由模型选择器覆盖 [#61473] @Nanako0129
- 线程会话继承父频道
/model覆盖(仅模型,不继承转录)[#72755] @solavrc - 忽略 Markdown 图片徽章,保留 Telegram 回复和显式 MEDIA 附件 [#72642] @solavrc, @Bartok9
- 优雅处理已解决的执行审批按钮 [#66906] @rlerikse
Telegram
- 长时预览流式回复发送最终消息,时间戳反映完成时间 @rubencu
- 隐藏失败写入警告(当助手已明确承认时)[#51065] @Bartok9, @Bortlesboat
Feishu/Lark
- Windows 侧载归一化,解决 C: ESM 加载器错误 [#72783] @jackychen-png
- 交互式回复以原生卡片发送(可点击按钮)[#13175] @Horacehxw
- 不将纯广播 @all 视为 bot 提及 [#37706] @JosepLee
- 引用/回复交互式卡片文本跨多架构提取 [#38776] @lishuaigit 等
- 尊重 HTTPS_PROXY/HTTP_PROXY 代理 QR 登录 WebSocket [#72547] @mebusw, @SymbolStar
Mattermost
- DM 回复保持顶层,不嵌入回复根 [#60115] @vincentkoc 等
Matrix/E2EE
- 稳定恢复和故障设备 QA 流程,避免设备清理同步竞争 @gumadeiras
Docker
- Slim 镜像安装 CA 证书包,修复 TLS 失败 [#72787] @ryuhaneul
- 预创建
/home/node/.openclaw带正确权限 [#48072] @timoxue, @jeanibarz - Docker Compose 添加 Linux host-gateway 映射 [#68684] @safrano9999, @skolez
WebChat
- 支持非视频文件附件上传 [#70947] @IAMSamuelRodda
/new和/reset指令不显示在聊天历史中 [#72369] @collynes, @haishmg
🧠 记忆与 Dreaming
Memory/QMD
- 同源集合合并为一次 QMD 搜索调用 [#72484] @BsnizND, @zeroaltitude
- 接受多种状态向量计数格式 [#63652] @apoapostolov, @WarrenJones
- BM25 模式下跳过向量状态探测和嵌入维护 [#59234] @PrinceOfEgypt 等
- 报告脏状态直到同步完成 [#60244] @xinzf
- 用
--mask限定根目录索引范围至 MEMORY.md [#65480] @ccage-simp 等
Memory-core
- 运行时配置变更后重新解析嵌入后端 [#61098] @BradGroux, @Linux2010
- 一次性命令走瞬态管理器,避免 macOS EMFILE [#59101] @mbear469210, @maoyuanxue
Memory/Dreaming
- 新增
dreaming.model梦境日记叙事子 agent 配置旋钮 [#65963] @esqandil, @mjamiv - 子 agent 未创建时跳过会话清理,无警告噪音 [#67152] @jsompis
- 标记插件创建的子 agent 会话,梦境清理不越权 [#72712] @BSG2000
OpenAI-compatible Memory
- 可选
memorySearch.inputType/queryInputType/documentInputType支持非对称嵌入端点 [#63313] @HOYALIM, @prospect1314521
Ollama/memory
- 特定模型检索查询前缀(nomic-embed-text, qwen3-embedding, mxbai-embed-large)[#45013] @laolin5564
🔒 安全加固
- Gateway/令牌: 停止在共享/admin 响应中回显回转后的持有者令牌 [#66773] @MoerAI
- Gateway/skills: API Key 和 secret 命名环境变量在响应中脱敏 [#69998] @Ziy1-Tan
- Agents/reasoning: 孤立结束推理标签+后续答案文本视为隐私边界 [#67092] @AnildoSilva
- Agents/tools: 工具循环检测隔离到活动运行,不继承历史计数 [#40144] @mattbrown319
- 执行审批: 接受符号链接的 OPENCLAW_HOME 作为可信根 [#64663] @FunJim
- 日志/会话: 配置脱敏模式应用到持久化会话转录 [#42982] @panpan0000
🛠️ CLI 与运维
CLI/update
- npm 全局更新前验证临时前缀,防止混装 [#72665] @sakalaboator, @He-Pin
- 遵守
OPENCLAW_NO_AUTO_UPDATE=1启动禁用开关 [#72715] @Xivi08
CLI/plugins
- 接受 ClawHub API 通配符范围(如 *)[#56446] @darconada, @claygeo
- 新增
npm:<package>安装前缀跳过 ClawHub 查找 [#55805] @Zeoy2020, @vagusX - 配置门控捆绑插件安装不持久化无效占位配置 @vincentkoc
- 拒绝格式错误的尾部 @ 插件规格 [#56579] @Kansodata
- 保留未版本化的 ClawHub 安装规格,更新时跟随新版本 [#63010] @kangsen1234, @robinspt
- 安全阻止的插件安装不重试为 hook 包 [#61175] @KonsultDigital, @ziyincody
- 从活动 profile 状态目录解析安装目标 [#69960] @FrancisLyman, @Sanjays2402
CLI/doctor
- 超时后标记记忆探针为 inconclusive [#44426] Cengiz
- 删除悬挂频道配置和心跳目标 [#65293] @yidecode
- 修复捆绑插件运行时依赖(带 spinner 和心跳进度)[#72775] @dfpalhano
CLI/nodes
- 新增
openclaw nodes remove --node清除陈旧配对记录 - 无过滤列表优先已配对节点视图 [#46871] @skainguyen1412
CLI/help
- 位置参数帮助调用不走模型预热 @gumadeeras
CLI/agent
- 标记嵌入式回退运行为
meta.transport: "embedded"[#71416] @amknight
CLI/tasks
- JSON 路径走精简模式,不加载插件运行时 [#66238] @ChuckChambers
🧩 插件系统
插件启动/注册
- Gateway PluginLookUpTable 和清单注册复用,新增启动追踪指标 @shakkernerd, @mcaxtr
- 默认 memory-core 槽位在 Gateway 启动时加载(可用时)
- 全局/工作区插件根目录跟随符号链接 [#36754] @Quackstro, @ming1523, @xsfX20
- 跳过测试文件和目录的安全扫描 [#66840] @saurabhjain1592, @Magicray1217
- 允许精确包管理器对等链接回可信主机包 [#70819] @fgabelmannjr
- 镜像核心日志依赖处理为分阶段运行时依赖 [#72228] @deepujain
- 保留构建目录,避免并行覆盖临时目录 @VACInc
- 隐藏运行时 npm 子窗口(Windows)[#72315] @athuljayaram, @joshfeng
插件/安装
- 分阶段依赖在 Gateway 启动前准备 [#72058] @amnesia106, @drvoss
OPENCLAW_PLUGIN_STAGE_DIR支持分层运行时依赖根 [#72396] @liorb-mountapps
插件/Windows 兼容
- 驱动字母路径 ESM 归一化:agent 运行时 [#72636]、插件服务 [#72573]、飞书 [#72783]、浏览器模块 [#72168]
- C 盘 ESM URL 问题修复 @Andyz-CData, @llzzww316, @feineryonah-byte 等
插件/提供商层
- 将预运行时模型 ID 归一化、端点元数据、请求家族提示等移入插件清单 @shakkernerd
- 弃用直接插件配置读取/写入辅助函数 @shakkernerd
插件/构建
- 优先原生 require 编译后的 JavaScript [#62842] @Effet
- 库存医生端弃用迁移和兼容性 @vincentkoc
⚙️ Agent 与执行引擎
Agent 运行
- 写入锁仅在冷启动后获取,回退不被阻塞
- 应用
tools.exec.timeoutSec到后台/yieldMs/节点命令 [#67600] @dlmpx, @kagura-agent - 移除尾部助手预填充(Anthropic 扩展思考时)[#72739] @superandylin
- 同样移除 Gemini 尾部模型预填充 [#72556] @Veda-openclaw
- 空参数工具调用归一化为 {} [#72587] @amknight
- 清除子 agent 完成后活动状态 [#70187] @amknight
回退与模型切换
- 区分空响应/无错误详情/未分类三种故障类型 [#71922] @andyk-ms, @nikolaykazakovvs-ux
- 内部模型切换冲突视为未知回退失败 [#63229] @clawdia-lobster
- 保持自动持久化回退模型跨轮次选择 @kibedu
- 跳转到已知后续模型重定向 [#57471] @yuxiaoyang2007-prog
ACP 适配器
- 随 OpenClaw 发布 Claude ACP 适配器
- 要求结果消息完成后空闲才完成提示 [#72080] @siavash-saki, @iannwu
子 Agent
- 强制执行
subagents.allowAgents白名单 [#72827] @oiGaDio - ACP
sessions_spawn即使在acp.dispatch.enabled=false时也允许 [#63591] @moeedahmed - 保留跨不同频道账户的完成投递 @sfuminya, @suyua9
- 任务仅放在子 agent 系统提示中,短初始启动消息 [#72019] @Wizongod, @ly85206559
启动优化
- CLI 包级导入无依赖 [#63024] @hu19940121
- 延迟加载 QMD、请求处理器、设置向导等直到需要时 @vincentkoc
- 重复引导上下文文件去重 [#59344] @koen666
- 文件变化时刷新缓存快照 [#64871] @aimqwest, @mikejuyoon
🔧 提供商与模型
Ollama
- 尊重
/api/show能力、自定义 Modelfile 参数、配置上下文默认、原生参数和思考级别 [#64710] 等 @yuan-b 等 - 分发嵌入到
/api/embed[#39983] @sskkcc 等 - 剥离自定义提供商前缀,跳过本机发现(除非配置接入)@maximus-dss 等
- 解析字符串化原生工具调用参数、重试空/纯思考轮次 [#69735] @rongshuzhao 等
LM Studio
- 信任已配置的 loopback/LAN/tailnet 端点 [#60994] @tnowakow
- 允许交互式 onboard 保留 API Key 为空 [#66937] @olamedia
- 剥离前轮 Gemma 4 思考 [#68704] @chip-snomo, @Kailigithub
本地模型
- 自定义只有 baseUrl 的提供商默认走 Chat Completions 适配器 [#40024] @parachuteshe
- 接受持久化非秘密本地认证标记 [#49736] @charles-zh
- 分类多种模型调用失败类型,附加进程内存快照 [#65551] @BigWiLLi111
Docker 端提供商
- Docker 默认走
host.docker.internal连接本地 LM Studio/Ollama [#68684]
OpenRouter
- 移除退役 Hunter Alpha/Healer Alpha 静态目录行 [#43942] @EvanDataForge
Groq / LM Studio 推理
- 声明提供商原生推理力度值 [#32638] @Aqu1bp 等
Qwen / vLLM
- 插件自有 Qwen 思考控制(vLLM chat-template kwargs + DashScope 标记)[#72329] @stavrostzagadouris
- 保留精确自定义 Model Studio 提供商配置 [#64483] @FiredMosquito831
🌐 网络与代理
ALL_PROXY/all_proxy传入全局 Undici 代理 [#43821] @RickyTong1- WhatsApp 尊重 HTTPS_PROXY/HTTP_PROXY [#72547]
- 自托管模型发现走守卫 fetch,不重开 SSRF [#46359] @cdxiaodong
🎤 语音与媒体
- TTS SecretRef 解析在运行时回复/音频路径生效 [#68690] @joshavant
- 图像分析尊重
tools.media.image.timeoutSeconds[#67889] @AllenT22, @alchip - Google Meet:本地 Chrome 加入走 OpenClaw 浏览器控制,媒体权限、BlackHole 音频、已配置 profile @DougButdorf, @oromeis
- 语音通话:SecretRef 支持 Twilio 认证和 TTS API Key [#68690] @joshavant
- 清理陈旧 Chrome-node 实时桥、处理中断/VAD/函数响应 [#72371] @BsnizND, @VACInc
🐛 关键 Bug 修复
| 问题 | 修复 |
|---|---|
| LSP 子进程在停止/重启后存活 | 终止 stdio LSP 进程树 [#72357] |
| 令牌回显敏感信息 | 停止从共享响应回显 [#66773] |
| Windows C: 路径 ESM 错误 | 多模块驱动字母路径归一化 [#72783] 等 |
| Docker 容器化网关 TLS 失败 | 安装 CA 证书包 [#72787] |
| OOM Killer 持续终止进程 | 内存快照附加到诊断事件 [#65551] |
| WebChat 升级后日志面板空白 | 显示加载/重试状态 [#72450] |
| 记忆嵌入后端不刷新 | 运行时配置变更时重新解析 [#61098] |
| 工具循环检测跨轮次继承 | 隔离到活动运行 [#40144] |
| 睡眠会话 OOM + 看门狗 | WhatsApp Web 传输活动看门狗 [#70678] |
| Mattermost DM 回复不顶层 | 抑制 DM 回复根 [#60115] |
| 重复插件启动警告 | 跟踪 npm 安装覆盖时抑制 [#48673] |
| 目录变更后热重载失效 | Chokidar v5 + 过滤监听 [#27404] |
📝 其他重要变更
- 代理/bootstrap: 文件变化时刷新缓存快照 @aimqwest, @mikejuyoon
- Bonjour: DNS 安全时默认使用系统主机名 [#72355] @mscheuerlein-bot 等
- Bonjour/Windows: 隐藏 ARP shell 探测 [#70238] @alexandre-leng 等
- 日志: 添加 hostname/agent_id/session_id 到 JSONL 记录 [#51075] @stevengonsalvez
- 日志/追踪: 内请求追踪范围跨 HTTP 和 WebSocket [#40353] @liangruochong44-ui
- OTEL: 捕获隐私安全模型调用指标 [#33832] @wwh830
- Git hooks: 跳过 .gitignore 新忽略的暂存路径 [#72744] @100yenadmin
- Web搜索: SecretRef 通过主动运行时配置解析 [#68690] @VACInc
- 自动回复: 不可重放失败后毒化消息去重 [#69303] @martingarramon 等
- Docker/QA: 为 Docker 添加可观测性覆盖 @vincentkoc
- MCP: 类型 http 条目归一化为 streamable-http [#72757] @Studioscale
- OpenCode: 暴露 Anthropic Opus/Sonnet 4.x 思考级别 [#72729] @haishmg, @aaajiao
- OCR 语音转录配置: 弃用占位符迁移至 {{MediaPath}} [#72760] @krisfanue3-hash
- Tasks/记忆: SQLite WAL 边车定时检查点和截断 [#72774] @dfpalhano
- macOS Gateway: 检测已安装但未加载的 LaunchAgent [#67335] @ze1tgeist88 等
- macOS Gateway: 写 launchd 服务带状态目录和工作目录 [#53679] @dlturock 等
https://www.fireself.cn/post/Vfg3pdFD