
OpenClaw 24h 更新快报(2026-03-21):Voice Call、Telegram Topic 命名、ACP 稳定性
过去 24 小时内,OpenClaw 仓库有大量更新值得关注。Voice Call 扩展修复了 stream TTS 静默回归,强制执行 spoken-output 合约;ACP 层面增加了 bound turns 看门狗机制,解决了 Discord 持久会话中单个挂起 turn 饿死整条队列的问题;Telegram 渠道新增 DM topic 自动命名功能,由 LLM 生成简短主题名。此外,GitHub Copilot 模型动态解析、Zalo 入站图片字段修复、Gateway webchat 图片持久化等也值得关注。
Voice Call:强制 spoken-output 合约,修复 stream TTS 静默回归
PR #51500 是一次规模较大的修复(XL),由 Josh Avant 提交,合并于 2026-03-21 09:15 UTC。该 PR 修复了 Voice Call 扩展中两个严重问题:
首先,语音回复中可能混入 reasoning/meta 文本。以往 spoken 输出提取逻辑不够严格,模型在回复中附加的内部推理内容会被当作正常输出播放。PR 在 extensions/voice-call/src/response-generator.ts 中强制了 {"spoken":"..."} 合约,添加了直接 JSON、fenced JSON 和 inline fallback 三层提取路径,并对 reasoning/meta/error payloads 做了过滤和降级处理。
其次,Twilio 流媒体场景下可能出现静默播放失败。问题根源在于初始消息在播放成功前被清除、流播放失败后状态未正确重置、stream 重连时映射被错误删除等。PR 做了以下改动:初始消息在播放确认成功前不再清除;失败的播放将状态重置回 listening;流活跃时必须使用 stream TTS,若此时电话 TTS 不可用则直接报错而非降级到 TwiML;unregisterCallStream 支持 stream-SID 感知注销,防止新 stream 的断开被旧映射覆盖。
此外,extensions/voice-call/src/media-stream.ts 中增加了 WebSocket 发送背压天花板:bufferedAmount 超过阈值后直接关闭 socket 并注明背压原因,避免内存持续膨胀。
ACP:Bound Turns 看门狗,防止会话饥饿
PR #51816 由 Bob 提交,合并于 2026-03-21 19:54 UTC,修复了一个长期存在于 ACP 会话管理中的问题:当某个 runtime.runTurn() 永久不返回时,该 ACP 会话后续所有 turns 都会被卡在队列中无法执行。这在 Discord 持久绑定场景(如 #codex-1)中尤为严重——绑定看起来像是"死了",直到手动重启 gateway 或会话。
修复方案是在 AcpSessionManager.runTurn() 中引入 manager 侧看门狗:超时时主动 abort/cancel/close 卡住的 turn、丢弃陈旧的缓存 runtime handle,让队列中的后续 turns 得以继续执行。看门狗超时时间优先使用会话级别的 ACP runtime timeout 配置,否则回退到既有 agent timeout 基线,不引入新的超小默认值。值得注意的是,该 PR 明确不改变 ACP 投影或 Discord readback 行为,只解除绑定会话的 turn 队列阻塞。
同一作者在 PR #51874 中,将无显式 timeout 配置的 ACP 和 agent runs 的默认超时从 600 秒提升至 48 小时。此前,短超时导致持久会话在 10 分钟后就被强制终止,与看门狗修复相配合,bound ACP 会话的可用性得到双重保障。
Telegram:DM Topic 自动命名
PR #51502 新增了 Telegram DM forum topic 的自动命名功能,合并于 2026-03-21 11:23 UTC。当用户在 DM 中发送第一条消息时,OpenClaw 会调用 LLM 生成一个简短的主题名称(2-4 词,最多 25 字符,不含 emoji)。该功能默认开启,用户可通过 autoTopicLabel 配置项关闭或自定义 prompt。topic 重命名通过 bot.api.editForumTopic 直接调用,避免了 SecretRef 解析问题。
渠道集成:多项修复与完善
Discord /codex_resume picker 立即过期(PR #51260):修复 Discord 中 Codex resume picker 按钮点击后立即报 This component has expired. 的问题。根本原因是 Discord component 注册表使用了模块实例局部 Map,重复加载时 sender 和 listener 找不到共享状态。修复将注册表迁移到进程级单例 Map,picker 按钮现在可以正常点击并恢复会话。
Zalo 入站图片修复(PR #51543):OpenClaw 收到 Zalo 入站图片事件后,插件读取的是 message.photo 字段,但 Zalo 实际发送的是 message.photo_url,导致入站图片全部被丢弃。PR 修正了字段映射,并在轮询和 webhook 两种模式下都增加了回归测试。
GitHub Copilot 动态模型 ID 解析(PR #51325):GitHub Copilot 渠道现在可以动态解析任意模型 ID,无需硬编码模型名称白名单。这意味着 Operator 可以灵活切换不同的 Copilot 模型而无需修改渠道配置。
Gateway webchat 图片持久化(PR #51324):通过 webchat 控制 UI(chat.send RPC)发送的图片此前只以 base64 形式存于内存,会话压缩后丢失。PR 将图片通过 saveMediaBuffer() 写入磁盘(与 WhatsApp/Telegram 保持一致),采用 fire-and-forget 模式确保不阻塞 chat.send 响应路径。
Matrix agent 级 mention patterns(PR #51272):修复 buildMentionRegexes 未接收 agentId 的问题,使得 Matrix 渠道能够正确支持 agent 级别的 mention 匹配模式。
安全与性能优化
插件认证冷启动堆内存降低 95%(PR #51891):vincentkoc 通过多项细粒度重构显著降低了插件认证冷启动成本。src/plugins/provider-auth-input.ts 的启动时间从约 6.0 秒 / 185.7MB 降至 0.3-1.2 秒 / 6.5MB;src/agents/auth-profiles/usage.ts 从 8.6 秒 / 169MB 降至 0.37 秒 / 2.26MB;src/plugin-sdk/provider-auth.ts 从 6.17 秒 / 169MB 降至 0.43 秒 / 4.65MB。具体做法包括:将环境变量 API key 查询从 src/agents/model-auth.ts 提取到独立模块、分离 sanitizeForConsole 到专用文件、减少 auth-profiles/state-observation.ts 的导入范围。
Linux nvm NODE_EXTRA_CA_CERTS 自动写入(PR #51146):Linux 上使用 nvm 管理 Node.js 时,OpenClaw 启动可能找不到正确的 CA 证书路径。PR 在 install 流程中自动检测 nvm 环境并将 NODE_EXTRA_CA_CERTS 写入 .env 文件。
控制台与开发者体验
Web UI context notice 修复(PR #51721):OpenClaw 控制台的 context 使用量提示板曾经用累积的 inputTokens 替代缺失的 totalTokens。inputTokens 会在工具调用循环和压缩重试中持续累加,导致显示如"100% context used 757.3k / 200k"这样的严重虚高数值(实际 prompt snapshot 仅 46k)。PR 移除了 inputTokens 回退逻辑,提示板只在有真实的 totalTokens 数据时才显示。
Telegram provider warning 提取(PR #51704、#51753、#51876 等):Doctor 命令持续进行重构,将 provider 级和共享配置辅助函数提取为独立模块,包括 allowlist 扫描/修复、telegram allowfrom 扫描、discord id 修复、exec safe-bin 辅助等。这些改动改善了 doctor 命令的代码可维护性,并减少了模块间的隐式耦合。
状态检查冷启动优化(commit 15fd110):fix(status) 跳过了冷启动阶段的状态探测,避免 gateway 启动时因状态探针未就绪导致误报。
发布链路与插件 SDK
多个渠道的 runtime 已统一路由至 plugin-sdk(PR #51772 Telegram、#51770 iMessage、#51766 Slack、#51444 Discord),实现了运行时注入模式的集中化管理。相关测试也通过 unit-fast CI 批次回收(PR #51884)得到优化,Vitest worker 长期内存增长问题得到改善。
本次更新以 Voice Call 可靠性修复和 ACP 会话稳定性增强为主线,覆盖语音、即时通讯、开发者工具等多个维度。


评论