
OpenClaw 24h 更新快报(2026-04-12):插件体系重构、WhatsApp 连接生命周期、Agent 会话稳定性
过去 24 小时,OpenClaw 发生了多条涉及核心架构方向的变更。插件加载体系迎来了两轮相互关联的重构,WhatsApp 渠道的连接生命周期终于被统一收拢,Agent 子系统的会话锁定和活跃轮次也有了针对性的稳定性修复。
插件与渠道加载体系:两次重构收敛架构
本窗口内最大规模的变更来自插件体系的连续重构。PR #65429 为插件加载引入了 manifest 驱动的渠道域名解析机制——此前,渠道规划依赖直接的 channels[] 所有权来判断哪个插件应被加载,这导致仅声明了 activation.onChannels 但未填写 channels[] 的渠道插件无法被正确识别。
新机制让激活时 eligible 的 configured-channel owners 临时处于激活状态,再进入 scoped load 路径。这一改动同时影响了 channel setup 快照的作用域解析和 configured-channel runtime 加载两条路径,使两者不再各行其是。此前依赖直接 channels[] 匹配作为唯一信任信号的问题得到收敛,未受信任的 workspace 插件阴影(workspace shadow)仍被排除在 scoped setup/runtime 激活之外。
几乎同一时间,PR #65259 将同样的思路扩展到了 provider 加载:显式 provider 的加载现在同样由 manifest 驱动,而非通过 channels[] 间接推导。两次重构共同将插件和渠道的信任边界策略统一到了 manifest-first 架构上。
WhatsApp 连接生命周期:统一 controller 终结状态漂移
WhatsApp 渠道的连接生命周期一直是多模块分别持有状态的重灾区:socket、reconnect 状态、watchdog 计时器、login 恢复等分散在 auto-reply/monitor、inbound/monitor、active-listener、login、login-qr 等多个模块,导致 socket 替换、关闭归一化、active-listener 注册和 515 restart 处理之间容易产生状态漂移。PR #65427 为此引入了一个 account-scoped 的 WhatsAppConnectionController,作为唯一权威的连接状态所有者。
新 controller 统一持有 live socket 生命周期、reconnect/watchdog 状态、active-listener 状态和共享的 login restart/logged-out 恢复逻辑,原有的各模块路径被重绕(rewired)到新 controller 上。对于 CLI 和 QR login 两种入口,515 restart 和 logged-out 恢复路径现在走同一条共享逻辑而非各自分别维护。原有的 send-facing active-listener API 以 compatibility facade 形式保留,确保无感升级。
Agent 会话:两处关键泄漏修复
本窗口内有两个 PR 直接改善了 Agent 子系统的会话稳定性。
PR #65478 修复了一个导致活跃轮次中排队的用户提示(user prompts)被意外丢弃的问题——此前会话轮次切换时,部分已入队的用户输入未能正确保留,影响对话连贯性。
PR #65469 修复了 session lock exit 监听器泄漏:会话锁退出时,对应的监听器未正确注销,随着时间积累会在进程内留下大量悬空引用,拖累长期运行实例的内存表现。
CLI 自更新:修复刷新进程引用旧 chunk 的问题
PR #65471 修复了 openclaw update 在执行包管理器自更新后,插件刷新仍运行在旧进程中的问题。包文件被替换后,原进程内的 lazy import 路径仍引用旧的哈希 chunk 名称(dist/install.runtime-*.js),导致 ERR_MODULE_NOT_FOUND。
修复方案改为在更新后从新版 dist/entry.js 启动一个全新子进程来执行后续的插件刷新,原进程等待子进程成功退出后再恢复完成/重启流程。child exit 非零时会主动报错,而非静默继续。
Gateway 可靠性:心跳广播与幂等性
本窗口还有两处 Gateway 层的小而关键的修复。
PR #65436 确保 tick 广播不可被丢弃(non-droppable)——此前在特定高负载条件下 tick 消息可能被意外丢弃,影响依赖定时心跳的各组件协调一致性。
PR #65354 要求插件 subagent run 时必须携带 idempotencyKey,进一步强化了插件调用层的幂等性保障。
Active Memory:lexical fallback 排序改进
PR #65395 改进 memory fallback 的 lexical ranking 算法,提升了当向量检索置信度不足时降级到关键词匹配的准确性。
整体来看,本次更新以架构性的深度重构为主线,插件/渠道体系在 manifest-first 方向上迈出了关键一步,WhatsApp 连接生命周期多年的技术债得到了系统性清理。


评论