openclaw - ✅(Solved) Fix Feishu channel displays thinking while webchat filters it correctly [1 pull requests, 2 comments, 3 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#68052Fetched 2026-04-18 05:54:13
View on GitHub
Comments
2
Participants
3
Timeline
5
Reactions
0
Timeline (top)
commented ×2cross-referenced ×1mentioned ×1subscribed ×1

Fix Action

Fixed

PR fix notes

PR #68107: fix(feishu): respect reasoningLevel=off so thinking text stops rendering in Feishu cards

Description (problem / solution / changelog)

Summary

  • Problem: Feishu cards rendered the model's reasoning text even when a session had reasoningLevel: "off". /reasoning off, verboseDefault: off, and blockStreaming: false had no effect because the Feishu dispatcher never read the session's reasoning level.
  • Why it matters: Webchat (and Telegram, as of extensions/telegram/src/bot-message-dispatch.ts:303) already suppress thinking output when the user turned reasoning off. Feishu users had no way to hide it short of disabling reasoning at the agent level.
  • What changed: Added a Feishu-local resolveFeishuReasoningLevel helper that reads reasoningLevel from the session store and threaded the resolved level into buildCombinedStreamText at all three call sites in extensions/feishu/src/reply-dispatcher.ts. When the level is the exact string "off", the reasoning branch is skipped.
  • What did NOT change (scope boundary): Telegram, webchat, and core reply pipelines are untouched. No changes to the session-store schema or the /reasoning command. Default behavior for any level other than "off" is unchanged.

Change Type (select all)

  • Bug fix
  • Feature
  • Refactor required for the fix
  • Docs
  • Security hardening
  • Chore/infra

Scope (select all touched areas)

  • Gateway / orchestration
  • Skills / tool execution
  • Auth / tokens
  • Memory / storage
  • Integrations
  • API / contracts
  • UI / DX
  • CI/CD / infra

Linked Issue/PR

  • Closes #68052
  • Related #
  • This PR fixes a bug or regression

Root Cause (if applicable)

  • Root cause: The Feishu dispatcher constructed buildCombinedStreamText(thinking, answer) at three sites without consulting the session's reasoningLevel. Telegram already does this via resolveTelegramReasoningLevel at extensions/telegram/src/bot-message-dispatch.ts:132-156 and gates output with suppressReasoning = resolvedReasoningLevel === "off" at :303. Feishu never had the equivalent plumbing.
  • Missing detection / guardrail: No Feishu regression test covered the reasoningLevel=off path. This PR adds one.
  • Contributing context (if known): Traced by @hclsys on the issue thread - they identified the exact call sites in reply-dispatcher.ts and the Telegram reference pattern to mirror.

Regression Test Plan (if applicable)

  • Coverage level that should have caught this:
    • Unit test
    • Seam / integration test
    • End-to-end test
    • Existing coverage already sufficient
  • Target test or file: extensions/feishu/src/reply-dispatcher.test.ts
  • Scenario the test should lock in: Dispatcher handling a reply on a session whose store entry has reasoningLevel: "off" must produce card text that contains only the answer, with no reasoning prefix.
  • Why this is the smallest reliable guardrail: The bug lives entirely inside the per-dispatch helper that assembles card text. A unit-level test that drives the dispatcher with a fake session store exercises the exact suppression branch without needing a live Feishu bot.
  • Existing test that already covers this (if any): None. extensions/feishu/src/reply-dispatcher.test.ts previously had 30 tests; this PR adds 1.
  • If no new test is added, why not: N/A. New test added (31 passing).

This contribution was developed with AI assistance (Codex).

Changed files

  • extensions/feishu/src/bot.ts (modified, +2/-0)
  • extensions/feishu/src/reply-dispatcher.test.ts (modified, +90/-0)
  • extensions/feishu/src/reply-dispatcher.ts (modified, +56/-7)
RAW_BUFFERClick to expand / collapse

Description

When using the same agent (main) with the same workspace, the Feishu channel displays internal thinking/reasoning output in the response, while the webchat channel correctly filters it out.

Expected behavior

  • Both channels should filter out thinking output when reasoning is disabled
  • Webchat works correctly - thinking is hidden
  • Feishu displays thinking in the message body

What we've tried

  1. /reasoning off command - does not fix the issue
  2. Added verboseDefault: off to agents.defaults - does not fix the issue
  3. Set blockStreaming false in Feishu channel config - does not fix the issue
  4. Started a completely new session - issue persists
  5. Same SOUL.md and configuration for both channels (they share the same agent)

Environment

  • Channel: Feishu (openclaw-lark plugin)
  • Model: MiniMax-M2.5

Key observation Both webchat and Feishu use the same agent (main) and same workspace, but only Feishu displays the thinking output. This suggests a channel-specific issue.

Additional context The thinking appears embedded in the message body, not as a separate Reasoning: block.

extent analysis

TL;DR

The issue is likely due to a channel-specific configuration or handling difference between Feishu and webchat, requiring a targeted fix for the Feishu channel.

Guidance

  • Review the Feishu channel configuration for any settings that might be causing it to include thinking output in the message body, focusing on differences from the webchat configuration.
  • Verify that the verboseDefault: off setting in agents.defaults is being applied correctly to the Feishu channel, considering the possibility of channel-specific overrides.
  • Investigate the openclaw-lark plugin for Feishu to see if there are any known issues or settings related to handling reasoning output.
  • Compare the message formatting and processing logic between the Feishu and webchat channels to identify any discrepancies that could lead to the inclusion of thinking output.

Example

No specific code example can be provided without more details on the channel configurations or the plugin's implementation.

Notes

The issue seems to be isolated to the Feishu channel, suggesting a configuration or plugin-specific problem rather than a general agent or workspace issue. The fact that webchat works correctly implies that the agent and workspace settings are likely correct, and the focus should be on the channel-specific handling.

Recommendation

Apply a workaround by specifically configuring the Feishu channel to filter out thinking output, potentially through a custom setting or by modifying the openclaw-lark plugin's behavior, as the root cause appears to be channel-specific and not a version-related issue that would be fixed by an upgrade.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING

openclaw - ✅(Solved) Fix Feishu channel displays thinking while webchat filters it correctly [1 pull requests, 2 comments, 3 participants]