Skip to content

[Bug]: Feishu streaming card: only the last character displayed after streaming completes #88867

@billyoungs

Description

@billyoungs

Bug type

Behavior bug (incorrect output/state without crash)

Beta release blocker

No

Summary

When streaming: true is enabled for the Feishu channel, the streaming card message only displays the last character of the response after streaming completes. Full text is visible in the chat list preview but not in the card itself.

Steps to reproduce

Enable streaming: true in channels.feishu config (default)
Send any message to the Feishu bot
Observe the streaming card during and after streaming
After streaming completes, the card only shows the last character

Expected behavior

The streaming card should display the full response text after streaming completes.

Actual behavior

After streaming completes, the card only displays the last character. The chat list preview correctly shows the full text. 100% reproduction rate.

OpenClaw version

2026.3.30-31

Operating system

Ubuntu 26.04, CentOS Stream 10, Fedora 44

Install method

npm global

Model

All

Provider / routing chain

All

Additional provider/model setup details

No response

Logs, screenshots, and evidence

Impact and severity

All Feishu users with streaming: true are affected. Severity: blocks workflow — streaming output is completely broken. Frequency: always. Workaround: set streaming: false.

Additional information

The Feishu CardKit streaming API (PUT /cardkit/v1/cards/{card_id}/elements/content/content) uses overwrite mode, not append mode. But resolveStreamingCardAppendContent() computes only the delta (new characters) and sends that. Each update overwrites the card with just the latest delta, so only the last few characters remain.
Example:
Update 1: sends "Hello" → card shows "Hello" ✅
Update 2: sends " World" → card shows " World" ❌ (overwrites!)
Update 3: sends "!" → card shows "!" ❌

Metadata

Metadata

Assignees

No one assigned

    Labels

    P1High-priority user-facing bug, regression, or broken workflow.bugSomething isn't workingbug:behaviorIncorrect behavior without a crashimpact:message-lossChannel message delivery can be lost, duplicated, or misrouted.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions