Skip to content

WeChat 频道在多步任务执行过程中,中间助手回复消息无法送达微信 #182

Description

@light0220

OpenClaw WeChat 插件 Bug 反馈

环境信息

  • OpenClaw 版本:2026.5.20
  • WeChat 插件版本:2.4.4(@tencent-weixin/openclaw-weixin)
  • 操作系统:WSL2 (Ubuntu 26.04 on Windows)
  • 会话类型:openclaw-weixin direct

Bug 描述

WeChat 频道在多步任务执行过程中,中间助手回复消息无法送达微信,仅最终回复可送达。

具体表现:当我通过微信发一条需要多步工具调用的复杂指令时(如"查手机参数并生成报告"),助手在执行任务期间的中间回复(工具调用状态、进度更新等)全部丢失,微信端完全收不到。只有任务全部结束后的一条最终回复才能收到。


复现步骤

  1. 通过微信发送指令:"去新浪财经网上抓取十条热点新闻总结内容后把摘要发给我"
  2. 观察微信端:
  • 助手说"好的,我上新浪财经抓新闻" → 微信未收到
  • 助手说"首页没有抓到新闻列表,换个方式" → 微信未收到
  • 助手发送最终摘要(含10条新闻) → 微信收到1条
  1. 统计各消息的送达情况:10条中间消息全部丢失,只有最终1条到达

消息送达记录(实测)

消息时间 消息内容简述 收到情况
14:20 Gateway 运行正常,发条测试确认下
14:20 收到了,但你的上一条微信我这边没看到
14:21 收到,微信现在正常了!我来查一下国内主流手机厂商的最新旗舰机型
14:21 数据收集完了,现在写文件
14:21 搞定了!已放到你桌面:2026旗舰手机对比分析.md
14:30 日志分析结果很清晰……
14:35 日志分析完了,关键发现……
14:44 确认了——你说得对,14:30 是你关网页的时间……
14:44 日志确认了……
14:53 好消息!说明微信投递是正常的……
14:59 我这边收到你的微信消息了。thinking block——当前会话显示 Think: off
15:01 收到。之前关掉 thinking 是为了排查问题……
15:09 我通过微信收到你的消息了,thinking block 应该已经开着。开始执行任务
15:09 现在生成一个真正的横向对比表
15:09 搞定了……

**统计结果:15条消息,9条未送达(60%),6条送达(40%)**规律:任务执行过程中工具运行时的消息 100% 丢失,只有最终回复才能到达。


已排除的因素

  • thinking block:关闭和开启状态下均出现此问题,已排除
  • 消息长度:中间消息有的仅几十字,最长900字,均未送达;最终回复(909字)反而送达
  • 网页端开关:网页端关闭(webchat disconnected)期间,消息依然有部分送达;网页端开着时中间消息同样丢失
  • 工具调用次数:SSH 安装任务(12次工具调用,中间10条全丢)和新闻任务(3次工具调用,中间2条全丢)均符合同一规律
  • 微信长连接:双向消息投递在最终回复阶段正常

根因分析(推测)

根据源码分析(openclaw-weixin 2.4.4),微信插件使用 BatchSession 机制缓冲消息:

  • 文件位置:dist/src/streaming/batch-session.js
  • 行为:BatchSession 在 finalize() 时才将所有 thinking + toolCall + text 一次性发送
  • 问题:工具执行期间的消息被缓冲,只有当任务结束时才 flush 到微信

这导致中间进度消息无法实时送达微信,用户在任务执行期间看到的是完全沉默,直到最终结果突然出现。


复现项目

可复现项目:

  1. openclaw/wechat(官方微信插件)
  2. 任何需要多步工具调用的复杂指令

相关文件

  • 微信插件源码:~/.openclaw/npm/node_modules/@tencent-weixin/openclaw-weixin/dist/src/streaming/batch-session.js
  • 插件版本:2.4.4
  • 日志文件:/tmp/openclaw/openclaw-2026-05-26.log

期望行为

中间助手回复(工具执行状态、进度更新等)应在生成时实时推送到微信,而不是等到任务全部结束后才批量发送。用户希望在长时间任务执行期间能够看到实时进度,而非完全沉默直到结束。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions