Início rápido
Requer OpenClaw 2026.5.29 ou superior. Execute
openclaw --version para verificar. Atualize com openclaw update.Execute o assistente de configuração do canal
Controle de acesso
Mensagens diretas
ConfiguredmPolicy para controlar quem pode enviar DM ao bot:
"pairing"- usuários desconhecidos recebem um código de pareamento; aprove via CLI"allowlist"- somente usuários listados emallowFrompodem conversar"open"- permite DMs públicas somente quandoallowFrominclui"*"; com entradas restritivas, somente usuários correspondentes podem conversar
Chats em grupo
Política de grupo (channels.feishu.groupPolicy):
| Valor | Comportamento |
|---|---|
"open" | Responder a todas as mensagens em grupos |
"allowlist" | Responder somente a grupos em groupAllowFrom ou configurados explicitamente em groups.<chat_id> |
"disabled" | Desativar todas as mensagens de grupo; entradas explícitas de groups.<chat_id> não substituem essa configuração |
allowlist
Exigência de menção (channels.feishu.requireMention):
true- exigir @menção (padrão)false- responder sem @menção- Substituição por grupo:
channels.feishu.groups.<chat_id>.requireMention @alle@_allsomente para transmissão não são tratados como menções ao bot. Uma mensagem que menciona@alle também o bot diretamente ainda conta como menção ao bot.
Exemplos de configuração de grupo
Permitir todos os grupos, sem exigir @menção
Permitir todos os grupos, ainda exigir @menção
Permitir somente grupos específicos
allowlist, você também pode admitir um grupo adicionando uma entrada explícita groups.<chat_id>. Entradas explícitas não substituem groupPolicy: "disabled". Padrões curinga em groups.* configuram grupos correspondentes, mas não admitem grupos por si só.
Restringir remetentes dentro de um grupo
Obter IDs de grupo/usuário
IDs de grupo (chat_id, formato: oc_xxx)
Abra o grupo no Feishu/Lark, clique no ícone de menu no canto superior direito e acesse Configurações. O ID do grupo (chat_id) é listado na página de configurações.

IDs de usuário (open_id, formato: ou_xxx)
Inicie o gateway, envie uma DM para o bot e então verifique os logs:
open_id na saída do log. Você também pode verificar solicitações de pareamento pendentes:
Comandos comuns
| Comando | Descrição |
|---|---|
/status | Mostrar status do bot |
/reset | Redefinir a sessão atual |
/model | Mostrar ou trocar o modelo de IA |
Feishu/Lark não oferece suporte a menus nativos de comandos com barra, então envie-os como mensagens de texto simples.
Solução de problemas
O bot não responde em chats em grupo
- Verifique se o bot foi adicionado ao grupo
- Verifique se você @menciona o bot (exigido por padrão)
- Verifique se
groupPolicynão é"disabled" - Verifique os logs:
openclaw logs --follow
O bot não recebe mensagens
- Verifique se o bot está publicado e aprovado no Feishu Open Platform / Lark Developer
- Verifique se a assinatura de eventos inclui
im.message.receive_v1 - Verifique se conexão persistente (WebSocket) está selecionada
- Verifique se todos os escopos de permissão necessários foram concedidos
- Verifique se o gateway está em execução:
openclaw gateway status - Verifique os logs:
openclaw logs --follow
A configuração por QR não reage no app móvel do Feishu
- Execute a configuração novamente:
openclaw channels login --channel feishu - Escolha configuração manual
- No Feishu Open Platform, crie um app autoconstruído e copie seu App ID e App Secret
- Cole essas credenciais no assistente de configuração
App Secret vazou
- Redefina o App Secret no Feishu Open Platform / Lark Developer
- Atualize o valor na sua configuração
- Reinicie o gateway:
openclaw gateway restart
Configuração avançada
Várias contas
defaultAccount controla qual conta é usada quando APIs de saída não especificam um accountId.
accounts.<id>.tts usa o mesmo formato de messages.tts e faz mesclagem profunda sobre
a configuração global de TTS, para que configurações Feishu com vários bots possam manter credenciais
compartilhadas de provedor globalmente enquanto substituem apenas voz, modelo, persona ou modo automático
por conta.
Limites de mensagem
textChunkLimit- tamanho do bloco de texto de saída (padrão:2000caracteres)mediaMaxMb- limite de upload/download de mídia (padrão:30MB)
Streaming
Feishu/Lark oferece suporte a respostas em streaming por meio de cartões interativos. Quando ativado, o bot atualiza o cartão em tempo real enquanto gera texto.streaming: false para enviar a resposta completa em uma mensagem. blockStreaming fica desativado por padrão; ative-o somente quando quiser que blocos concluídos do assistente sejam enviados antes da resposta final.
Otimização de cota
Reduza o número de chamadas à API do Feishu/Lark com dois sinalizadores opcionais:typingIndicator(padrãotrue): defina comofalsepara ignorar chamadas de reação de digitaçãoresolveSenderNames(padrãotrue): defina comofalsepara ignorar buscas de perfil do remetente
Sessões ACP
Feishu/Lark oferece suporte a ACP para DMs e mensagens de thread de grupo. O ACP do Feishu/Lark é orientado por comandos de texto - não há menus nativos de comandos com barra, então use mensagens/acp ... diretamente na conversa.
Vinculação ACP persistente
Gerar ACP a partir do chat
Em uma DM ou thread do Feishu/Lark:--thread here funciona para DMs e mensagens de thread do Feishu/Lark. Mensagens de acompanhamento na conversa vinculada são roteadas diretamente para essa sessão ACP.
Roteamento multiagente
Usebindings para rotear DMs ou grupos do Feishu/Lark para agentes diferentes.
match.channel:"feishu"match.peer.kind:"direct"(DM) ou"group"(chat em grupo)match.peer.id: Open ID do usuário (ou_xxx) ou ID do grupo (oc_xxx)
Isolamento de agente por usuário (Criação dinâmica de agentes)
AtivedynamicAgentCreation para criar automaticamente instâncias de agente isoladas para cada usuário de DM. Cada usuário recebe seu próprio:
- Diretório de workspace independente
USER.md/SOUL.md/MEMORY.mdseparados- Histórico de conversa privado
- Skills e estado isolados
Vinculações dinâmicas incluem o
accountId normalizado do Feishu, então contas padrão e nomeadas roteiam cada remetente para o agente dinâmico correto.Se uma conta nomeada criou um agente dinâmico sem escopo em uma versão mais antiga, esse agente legado ainda conta para maxAgents. Confirme que ele não é usado pela conta padrão antes de removê-lo, ou aumente temporariamente maxAgents; o OpenClaw não consegue inferir com segurança qual conta possui estado legado ambíguo.Configuração rápida
Como funciona
Quando um novo usuário envia sua primeira DM:- O canal gera um
agentIdexclusivo:feishu-{user_open_id}para a conta padrão, ou um resumo de identidade limitado com prefixo da conta para uma conta nomeada - Cria um novo workspace no caminho
workspaceTemplate - Registra o agente e cria uma vinculação para este usuário
- O auxiliar de workspace garante arquivos de inicialização (
AGENTS.md,SOUL.md,USER.mdetc.) no primeiro acesso - Roteia todas as mensagens futuras deste usuário para seu agente dedicado
Opções de configuração
| Configuração | Descrição | Padrão |
|---|---|---|
channels.feishu.dynamicAgentCreation.enabled | Habilitar criação automática de agentes por usuário | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate | Modelo de caminho para workspaces dinâmicos de agentes | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate | Modelo de nome do diretório do agente | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents | Número máximo de agentes dinâmicos a criar | ilimitado |
{agentId}- o ID de agente gerado (por exemplo,feishu-ou_xxxxxxoufeishu-support-<identity_digest>){userId}- o open_id do Feishu do remetente (por exemplo,ou_xxxxxx)
Escopo da sessão
session.dmScope controla como mensagens diretas são mapeadas para sessões de agente. Esta é uma configuração global que afeta todos os canais.
| Valor | Comportamento | Ideal para |
|---|---|---|
"main" | A DM de cada usuário é mapeada para a sessão principal do agente | Bots de usuário único nos quais você quer carregar USER.md / SOUL.md automaticamente |
"per-channel-peer" | Cada combinação (canal + usuário) recebe uma sessão separada | Bots públicos multiusuário que precisam de isolamento mais forte |
"per-account-channel-peer" | Cada combinação (conta + canal + usuário) recebe uma sessão separada | Bots multiconta que precisam de isolamento de sessão em nível de conta |
"main" habilita o carregamento automático de arquivos de bootstrap (USER.md, SOUL.md, MEMORY.md), mas significa que todas as DMs em todos os canais compartilham o mesmo padrão de chave de sessão. Para bots públicos multiusuário nos quais o isolamento importa mais do que o carregamento automático de bootstrap, considere "per-channel-peer" e gerencie os arquivos de bootstrap manualmente.
Use
"per-account-channel-peer" quando contas nomeadas do Feishu devem manter sessões separadas para o mesmo remetente. Vinculações dinâmicas preservam o escopo da conta.Implantação multiusuário típica
Verificação
Verifique os logs do Gateway para confirmar que a criação dinâmica está funcionando:Observações
- Isolamento de workspace: Cada usuário recebe seu próprio diretório de workspace e instância de agente. Usuários não conseguem ver o histórico de conversas nem os arquivos uns dos outros dentro do fluxo normal de mensagens.
- Limite de segurança: Este é um mecanismo de isolamento de contexto de mensagens, não um limite de segurança contra cotenants hostis. O processo do agente e o ambiente do host são compartilhados.
bindingsdeve estar vazio: Agentes dinâmicos registram automaticamente suas próprias vinculações- Caminho de upgrade: Vinculações manuais existentes continuam funcionando junto com agentes dinâmicos
session.dmScopeé global: Isso afeta todos os canais, não apenas o Feishu
Referência de configuração
Configuração completa: Configuração do Gateway| Configuração | Descrição | Padrão |
|---|---|---|
channels.feishu.enabled | Habilitar/desabilitar o canal | true |
channels.feishu.domain | Domínio da API (feishu ou lark) | feishu |
channels.feishu.connectionMode | Transporte de eventos (websocket ou webhook) | websocket |
channels.feishu.defaultAccount | Conta padrão para roteamento de saída | default |
channels.feishu.verificationToken | Obrigatório para o modo webhook | - |
channels.feishu.encryptKey | Obrigatório para o modo webhook | - |
channels.feishu.webhookPath | Caminho da rota de Webhook | /feishu/events |
channels.feishu.webhookHost | Host de bind do Webhook | 127.0.0.1 |
channels.feishu.webhookPort | Porta de bind do Webhook | 3000 |
channels.feishu.accounts.<id>.appId | ID do aplicativo | - |
channels.feishu.accounts.<id>.appSecret | Segredo do aplicativo | - |
channels.feishu.accounts.<id>.domain | Substituição de domínio por conta | feishu |
channels.feishu.accounts.<id>.tts | Substituição de TTS por conta | messages.tts |
channels.feishu.dmPolicy | Política de DM | pairing |
channels.feishu.allowFrom | Allowlist de DM (lista de open_id) | - |
channels.feishu.groupPolicy | Política de grupo | allowlist |
channels.feishu.groupAllowFrom | Allowlist de grupo | - |
channels.feishu.requireMention | Exigir @menção em grupos | true |
channels.feishu.groups.<chat_id>.requireMention | Substituição de @menção por grupo; IDs explícitos também admitem o grupo no modo allowlist | herdado |
channels.feishu.groups.<chat_id>.enabled | Habilitar/desabilitar um grupo específico | true |
channels.feishu.dynamicAgentCreation.enabled | Habilitar criação automática de agentes por usuário | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate | Modelo de caminho para workspaces dinâmicos de agentes | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate | Modelo de nome do diretório do agente | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents | Número máximo de agentes dinâmicos a criar | ilimitado |
channels.feishu.textChunkLimit | Tamanho do fragmento de mensagem | 2000 |
channels.feishu.mediaMaxMb | Limite de tamanho de mídia | 30 |
channels.feishu.streaming | Saída de cartão por streaming | true |
channels.feishu.blockStreaming | Streaming de resposta por bloco concluído | false |
channels.feishu.typingIndicator | Enviar reações de digitação | true |
channels.feishu.resolveSenderNames | Resolver nomes de exibição dos remetentes | true |
channels.feishu.tools.bitable | Habilitar ferramentas Bitable/Base | true |
channels.feishu.tools.base | Alias para channels.feishu.tools.bitable; bitable explícito vence quando ambos são definidos | true |
channels.feishu.accounts.<id>.tools.bitable | Controle de ferramentas Bitable/Base por conta | herdado |
channels.feishu.accounts.<id>.tools.base | Alias por conta para tools.bitable | herdado |
Tipos de mensagem compatíveis
Receber
- ✅ Texto
- ✅ Rich text (post)
- ✅ Imagens
- ✅ Arquivos
- ✅ Áudio
- ✅ Vídeo/mídia
- ✅ Stickers
file_key bruto. Quando tools.media.audio está configurado, o OpenClaw baixa o recurso de nota de voz e executa a transcrição de áudio compartilhada antes do turno do agente, para que o agente receba a transcrição falada. Se o Feishu incluir texto de transcrição diretamente no payload de áudio, esse texto será usado sem outra chamada de ASR. Sem um provedor de transcrição de áudio, o agente ainda recebe um placeholder <media:audio> mais o anexo salvo, não o payload bruto do recurso do Feishu.
Enviar
- ✅ Texto
- ✅ Imagens
- ✅ Arquivos
- ✅ Áudio
- ✅ Vídeo/mídia
- ✅ Cartões interativos (incluindo atualizações em streaming)
- ⚠️ Rich text (formatação no estilo de postagem; não oferece suporte a todos os recursos de autoria do Feishu/Lark)
audio do Feishu e exigem
mídia de upload Ogg/Opus (file_type: "opus"). Mídias .opus e .ogg existentes
são enviadas diretamente como áudio nativo. MP3/WAV/M4A e outros formatos de áudio prováveis são
transcodificados para Ogg/Opus a 48 kHz com ffmpeg somente quando a resposta solicita entrega
por voz (audioAsVoice / ferramenta de mensagem asVoice, incluindo respostas de nota de voz
TTS). Anexos MP3 comuns permanecem como arquivos normais. Se ffmpeg estiver ausente ou
a conversão falhar, o OpenClaw recorre a um anexo de arquivo e registra o motivo.
Threads e respostas
- ✅ Respostas inline
- ✅ Respostas em thread
- ✅ Respostas com mídia permanecem cientes da thread ao responder a uma mensagem em thread
groupSessionScope: "group_topic" e "group_topic_sender", grupos de tópicos nativos do
Feishu/Lark usam o thread_id (omt_*) do evento como a chave canônica da sessão de
tópico. Se um evento iniciador de tópico nativo omitir thread_id, o OpenClaw o
hidrata a partir do Feishu antes de rotear o turno. Respostas normais de grupo que
o OpenClaw transforma em threads continuam usando o ID da mensagem raiz de resposta (om_*) para que o
primeiro turno e o turno de acompanhamento permaneçam na mesma sessão.
Relacionados
- Visão geral dos canais - todos os canais compatíveis
- Pareamento - autenticação por DM e fluxo de pareamento
- Grupos - comportamento de chat em grupo e controle por menção
- Roteamento de canais - roteamento de sessão para mensagens
- Segurança - modelo de acesso e endurecimento