-
-
Notifications
You must be signed in to change notification settings - Fork 69.4k
[Bug]: Feishu: messages not delivered when blockStreamingDefault is "on" (queuedFinal=false, replies=0) #38258
Description
Bug type
Behavior bug (incorrect output/state without crash)
Summary
Environment
- openclaw version: 2026.3.2
- Channel: Feishu (two accounts: default + invest)
- agents.defaults.blockStreamingDefault: "on"
Problem
When blockStreamingDefault is set to "on" (the default after setup wizard),
Feishu agents receive messages and dispatch to the agent successfully, but
no reply is ever delivered to the Feishu client.
Log shows:
feishu[invest]: dispatching to agent (session=...)
feishu[invest]: dispatch complete (queuedFinal=false, replies=0)
The agent does generate a response (confirmed via session files), but it never reaches Feishu.
Root Cause
In extensions/feishu/src/reply-dispatcher.ts, the returned replyOptions does not set
disableBlockStreaming. This means the agent-level block streaming pipeline is active.
The pipeline calls onBlockReply → dispatcher.sendBlockReply() → feishu's deliver({kind: "block"}).
However, feishu's deliver silently drops block chunks when renderMode is "auto" and the
text contains no code blocks/tables (!(streamingEnabled && useCard) → return).
The pipeline still marks didStream = true (the callback returned without error).
Then shouldDropFinalPayloads = blockStreamingEnabled && didStream() = true, so the final
reply array is filtered to []. dispatcher.sendFinalReply() is never called → nothing sent.
Compare with QQ bot: it actually sends block chunks, so didStream=true is correct and
the final reply being dropped is acceptable. Feishu drops blocks silently, causing both
blocks AND the final reply to be lost.
Fix
In extensions/feishu/src/reply-dispatcher.ts, add disableBlockStreaming: true to replyOptions:
return {
dispatcher,
replyOptions: {
...replyOptions,
onModelSelected: prefixContext.onModelSelected,
+ disableBlockStreaming: true,
onPartialReply: streamingEnabled ? ... : undefined,
},
markDispatchIdle,
};
After this fix, log shows:
feishu[default]: dispatch complete (queuedFinal=true, replies=1) ✅
feishu[invest]: dispatch complete (queuedFinal=true, replies=1) ✅
Notes
- QQ bot channel is unaffected (it does not go through feishu's reply-dispatcher)
- Feishu streaming cards (via onPartialReply) still work after this fix
- This bug affects any setup where blockStreamingDefault: "on" (which is the default)
---
### Steps to reproduce
When `blockStreamingDefault` is set to `"on"` (the default after setup wizard),
Feishu agents receive messages and dispatch to the agent successfully, but
**no reply is ever delivered** to the Feishu client.
### Expected behavior
feishu agent can reseive the message
### Actual behavior
## Problem
When `blockStreamingDefault` is set to `"on"` (the default after setup wizard),
Feishu agents receive messages and dispatch to the agent successfully, but
**no reply is ever delivered** to the Feishu client.
### OpenClaw version
- openclaw version: 2026.3.2 - Channel: Feishu (two accounts: default + invest) - agents.defaults.blockStreamingDefault: "on"
### Operating system
opencloudos 6.6.117-45.1.oc9.x86_64
### Install method
_No response_
### Logs, screenshots, and evidence
```shell
Log shows:
feishu[invest]: dispatching to agent (session=...)
feishu[invest]: dispatch complete (queuedFinal=false, replies=0)
The agent does generate a response (confirmed via session files), but it never reaches Feishu.Impact and severity
No response
Additional information
No response