Skip to content
Guides

OpenClaw Feishu advanced configuration

Multiple accounts with per-account TTS, message limits and the 30 KB card ceiling, streaming cards with block streaming and controls fallbacks, the two quota flags, group session scope and topic threads, the workspace tool families with their gates and gotchas, ACP sessions with persistent bindings and spawn from chat, and multi-agent routing

7 min read

Past the wizard, Feishu has an unusually deep configuration surface: several bots on one gateway, streaming cards with their own size ceiling, a topic-aware session scope, a whole family of workspace tools, and ACP bindings. Here is the advanced page in order: accounts, limits, streaming, quota, sessions, tools, ACP, and routing.

Accounts, limits, streaming

  • Several accounts live under the accounts map with app ID, secret, a name, an optional enabled flag and per-account settings; the default account chooses which account outbound APIs use when no account ID is given, account entries inherit top-level settings with most keys overridable, and a per-account TTS block deep-merges over the global TTS config so shared provider credentials stay global while voice, model, persona or auto mode change per bot.
  • The message limits are the 4000-character outbound chunk, the length chunk mode with newline preferring line boundaries, and the 30 MB media cap; ordinary Markdown cards and rich-text posts are also split to fit Feishu's 30 KB serialised message limit, where headers, notes, mentions, JSON escaping and UTF-8 text all count so chunks may come out shorter, and long media captions are sent as text or card chunks before the attachment.
  • Streaming replies use interactive cards through the Card Kit streaming API, updating the card as text is generated: the mode is partial by default, off sends the completed reply without updates while still splitting at the limits, the raw render mode also disables streaming cards, block streaming is off by default and flushes completed assistant blocks before the final reply, and the legacy boolean streaming and flat block-streaming, coalesce and chunk-mode keys migrate to the nested shape through the doctor fix.
  • Replies with controls use native cards for command buttons and HTTP links even when streaming is off, the card carries the reply text with attachments as separate messages, unsupported controls and oversized cards keep their full labels in a readable fallback that stays a separate message when a later reply streams, a final controls reply replaces an active streaming preview without resending its text while error controls after a completed answer stay separate, and when Feishu cannot delete or clear a replaced preview delivery reports a failure and keeps the original receipt.
Account entries inherit top-level settings; most top-level keys can be overridden per account.

Quota, sessions, tools

Two flags reduce Feishu API calls: the typing indicator set to false skips typing reaction calls, and sender name resolution set to false skips profile lookups. The group session scope, at the top level, per account or per group, maps group messages to sessions: group, the default, is one session per group chat, group-sender one per group and sender, group-topic one per topic thread falling back to the group session, and group-topic-sender one per topic and sender falling back to group and sender; native topic groups use the event thread ID as the canonical topic key, a starter event that omits it is hydrated from Feishu before routing, normal replies that OpenClaw turns into threads keep the reply root message ID so first and follow-up turns share a session, the reply-in-thread switch makes bot replies create or continue a topic thread instead of replying inline, and the deprecated topic session mode key is superseded by the group session scope. The plugin ships agent tools for documents, chats, the knowledge base, cloud storage, permissions and Bitable with matching skills, gated by the tools block: documents, chat info and members, the knowledge base which requires documents, cloud storage, the scope diagnostic and Bitable are on by default while permission management is off as sensitive, per-account gates live under each account, and after a config update new turns use the updated gates and account selection without a restart while tools already created for a turn keep their configuration.

Tool gotchas, ACP, routing

  • Bitable operations use the application token from a base URL or a returned app token rather than the node token in a wiki URL, and when application creation succeeds but table metadata is not retrieved you keep the returned token and URL and inspect that application instead of creating another, because a missing table ID does not mean creation failed; the document tool creates title-only documents, so Markdown goes in a separate write action with the returned document ID as the token, a create request with content fails without creating anything, and direct drive info lookups outside the root directory need the drive metadata read-only scope unless the app has the full drive scope.
  • ACP is supported for DMs and group thread messages and is text-command driven because Feishu has no native slash menus, so ACP commands are typed directly; a persistent binding is a typed ACP entry matching the Feishu channel and account with a direct peer by open ID or a group peer by chat ID and topic root, and the spawn command with the thread-here flag in a DM or thread binds that conversation to a new session with follow-ups routed there.
  • Multi-agent routing uses bindings with the Feishu channel, a peer kind of direct or group, and a peer ID that is a user open ID or a group chat ID, so one gateway can send a DM user to one agent workspace and a group to another.

OpenClaw on Feishu is the channel post these settings extend, and OpenClaw Feishu configuration reference the table where each key and its default is listed.

Cards have a ceiling

The 30 KB serialised limit is the detail that explains short chunks: a card's headers, notes and escaping count against it, so a reply that fits the character limit can still be split by the card. OpenClaw Feishu dynamic agents covers the per-user agents that these accounts and bindings serve, and OpenClaw channel routing the shared binding model the Feishu peers plug into.

On Diali

Feishu and Lark are not among the channels Diali connects today: WhatsApp, Telegram, Discord, Slack, Mattermost, Matrix, SMS and voice. Hosted OpenClaw on Diali is the assistant and Diali security describes the boundary that applies to each connected channel.

  • Per-account TTS merges over the global block; other keys override.
  • Cards split at 30 KB serialised, not just at 4000 characters.
  • Topic scopes key on the thread ID; reply threads keep the root.
Get started

Stop reading about it, build one

Set up an agent, pick a channel, and have it working inside the app you already keep open.