Bot do Feishu
Feishu (Lark) é uma plataforma de chat para equipes usada por empresas para mensagens e colaboração. Este plugin conecta o OpenClaw a um bot do Feishu/Lark usando a assinatura de eventos WebSocket da plataforma, para que as mensagens possam ser recebidas sem expor uma URL de webhook pública.Plugin empacotado
O Feishu já vem empacotado nas versões atuais do OpenClaw, então não é necessária uma instalação separada do plugin. Se você estiver usando uma build mais antiga ou uma instalação personalizada que não inclua o Feishu empacotado, instale-o manualmente:Início rápido
Há duas maneiras de adicionar o canal Feishu:Método 1: onboarding (recomendado)
Se você acabou de instalar o OpenClaw, execute o onboarding:- Criar um app no Feishu e coletar credenciais
- Configurar as credenciais do app no OpenClaw
- Iniciar o gateway
openclaw gateway statusopenclaw logs --follow
Método 2: configuração pela CLI
Se você já concluiu a instalação inicial, adicione o canal pela CLI:openclaw gateway statusopenclaw gateway restartopenclaw logs --follow
Etapa 1: criar um app do Feishu
1. Abra a Feishu Open Platform
Acesse Feishu Open Platform e entre na sua conta. Tenants do Lark (global) devem usar https://open.larksuite.com/app e definirdomain: "lark" na configuração do Feishu.
2. Crie um app
- Clique em Create enterprise app
- Preencha o nome e a descrição do app
- Escolha um ícone para o app

3. Copie as credenciais
Em Credentials & Basic Info, copie:- App ID (formato:
cli_xxx) - App Secret

4. Configure as permissões
Em Permissions, clique em Batch import e cole:
5. Habilite a capacidade de bot
Em App Capability > Bot:- Habilite a capacidade de bot
- Defina o nome do bot

6. Configure a assinatura de eventos
⚠️ Importante: antes de definir a assinatura de eventos, certifique-se de que:- Você já executou
openclaw channels addpara o Feishu - O gateway está em execução (
openclaw gateway status)
- Escolha Use long connection to receive events (WebSocket)
- Adicione o evento:
im.message.receive_v1 - (Opcional) Para fluxos de trabalho de comentários do Drive, adicione também:
drive.notice.comment_add_v1

7. Publique o app
- Crie uma versão em Version Management & Release
- Envie para revisão e publique
- Aguarde a aprovação do administrador (apps corporativos normalmente são aprovados automaticamente)
Etapa 2: configurar o OpenClaw
Configurar com o assistente (recomendado)
Configurar pelo arquivo de configuração
Edite~/.openclaw/openclaw.json:
connectionMode: "webhook", defina verificationToken e encryptKey. O servidor de webhook do Feishu faz bind em 127.0.0.1 por padrão; defina webhookHost apenas se você realmente precisar de um endereço de bind diferente.
Verification Token e Encrypt Key (modo webhook)
Ao usar o modo webhook, definachannels.feishu.verificationToken e channels.feishu.encryptKey na sua configuração. Para obter esses valores:
- Na Feishu Open Platform, abra seu app
- Vá para Development → Events & Callbacks (开发配置 → 事件与回调)
- Abra a aba Encryption (加密策略)
- Copie Verification Token e Encrypt Key

Configurar por variáveis de ambiente
Domínio do Lark (global)
Se o seu tenant estiver no Lark (internacional), defina o domínio comolark (ou uma string de domínio completa). Você pode defini-lo em channels.feishu.domain ou por conta (channels.feishu.accounts.<id>.domain).
Flags de otimização de cota
Você pode reduzir o uso da API do Feishu com duas flags opcionais:typingIndicator(padrãotrue): quandofalse, ignora chamadas de reação de digitação.resolveSenderNames(padrãotrue): quandofalse, ignora chamadas de busca de perfil do remetente.
Etapa 3: iniciar e testar
1. Inicie o gateway
2. Envie uma mensagem de teste
No Feishu, encontre seu bot e envie uma mensagem.3. Aprove o pareamento
Por padrão, o bot responde com um código de pareamento. Aprove-o:Visão geral
- Canal de bot do Feishu: bot do Feishu gerenciado pelo gateway
- Roteamento determinístico: as respostas sempre retornam ao Feishu
- Isolamento de sessão: DMs compartilham uma sessão principal; grupos são isolados
- Conexão WebSocket: conexão longa via SDK do Feishu, sem necessidade de URL pública
Controle de acesso
Mensagens diretas
-
Padrão:
dmPolicy: "pairing"(usuários desconhecidos recebem um código de pareamento) -
Aprovar pareamento:
-
Modo allowlist: defina
channels.feishu.allowFromcom os Open IDs permitidos
Chats em grupo
1. Política de grupo (channels.feishu.groupPolicy):
"open"= permite todos nos grupos"allowlist"= permite apenasgroupAllowFrom"disabled"= desabilita mensagens em grupo
allowlist
2. Exigência de menção (channels.feishu.requireMention, substituível por channels.feishu.groups.<chat_id>.requireMention):
trueexplícito = exigir @mentionfalseexplícito = responder sem menções- quando não definido e
groupPolicy: "open"= o padrão éfalse - quando não definido e
groupPolicynão é"open"= o padrão étrue
Exemplos de configuração de grupo
Permitir todos os grupos, sem exigir @mention (padrão para grupos abertos)
Permitir todos os grupos, mas ainda exigir @mention
Permitir apenas grupos específicos
Restringir quais remetentes podem enviar mensagem em um grupo (allowlist de remetentes)
Além de permitir o próprio grupo, todas as mensagens nesse grupo são controladas pelo open_id do remetente: apenas usuários listados emgroups.<chat_id>.allowFrom têm suas mensagens processadas; mensagens de outros membros são ignoradas (isso é um controle completo no nível do remetente, não apenas para comandos de controle como /reset ou /new).
Obter IDs de grupo/usuário
IDs de grupo (chat_id)
Os IDs de grupo se parecem comoc_xxx.
Método 1 (recomendado)
- Inicie o gateway e mencione o bot com @ no grupo
- Execute
openclaw logs --followe procurechat_id
IDs de usuário (open_id)
Os IDs de usuário se parecem comou_xxx.
Método 1 (recomendado)
- Inicie o gateway e envie uma DM para o bot
- Execute
openclaw logs --followe procureopen_id
Comandos comuns
| Comando | Descrição |
|---|---|
/status | Mostrar status do bot |
/reset | Redefinir a sessão |
/model | Mostrar/trocar modelo |
Observação: o Feishu ainda não oferece suporte a menus de comandos nativos, então os comandos devem ser enviados como texto.
Comandos de gerenciamento do gateway
| Comando | Descrição |
|---|---|
openclaw gateway status | Mostrar status do gateway |
openclaw gateway install | Instalar/iniciar serviço do gateway |
openclaw gateway stop | Parar serviço do gateway |
openclaw gateway restart | Reiniciar serviço do gateway |
openclaw logs --follow | Acompanhar logs do gateway |
Solução de problemas
O bot não responde em chats de grupo
- Certifique-se de que o bot foi adicionado ao grupo
- Certifique-se de mencionar o bot com @ (comportamento padrão)
- Verifique se
groupPolicynão está definido como"disabled" - Verifique os logs:
openclaw logs --follow
O bot não recebe mensagens
- Certifique-se de que o app foi publicado e aprovado
- Certifique-se de que a assinatura de eventos inclui
im.message.receive_v1 - Certifique-se de que long connection está habilitada
- Certifique-se de que as permissões do app estão completas
- Certifique-se de que o gateway está em execução:
openclaw gateway status - Verifique os logs:
openclaw logs --follow
Vazamento do App Secret
- Redefina o App Secret na Feishu Open Platform
- Atualize o App Secret na sua configuração
- Reinicie o gateway
Falhas no envio de mensagens
- Certifique-se de que o app tem a permissão
im:message:send_as_bot - Certifique-se de que o app foi publicado
- Verifique os logs para ver erros detalhados
Configuração avançada
Múltiplas contas
defaultAccount controla qual conta do Feishu é usada quando as APIs de saída não especificam um accountId explicitamente.
Limites de mensagem
textChunkLimit: tamanho do bloco de texto de saída (padrão: 2000 caracteres)mediaMaxMb: limite de upload/download de mídia (padrão: 30MB)
Streaming
O Feishu oferece suporte a respostas em streaming por meio de cartões interativos. Quando habilitado, o bot atualiza um cartão à medida que gera texto.streaming: false para aguardar a resposta completa antes de enviar.
Sessões ACP
O Feishu oferece suporte a ACP para:- DMs
- conversas de tópico em grupo
/acp ... diretamente na conversa.
Bindings persistentes de ACP
Use bindings ACP tipados no nível superior para fixar uma DM do Feishu ou uma conversa de tópico em uma sessão ACP persistente.Geração de ACP vinculada à thread a partir do chat
Em uma DM do Feishu ou conversa de tópico, você pode gerar e vincular uma sessão ACP no próprio lugar:--thread herefunciona para DMs e tópicos do Feishu.- Mensagens subsequentes na DM/tópico vinculado são roteadas diretamente para essa sessão ACP.
- A v1 não tem como alvo chats em grupo genéricos sem tópico.
Roteamento multiagente
Usebindings para rotear DMs ou grupos do Feishu para agentes diferentes.
match.channel:"feishu"match.peer.kind:"direct"ou"group"match.peer.id: Open ID do usuário (ou_xxx) ou ID do grupo (oc_xxx)
Referência de configuração
Configuração completa: Gateway configuration Principais opções:| Configuração | Descrição | Padrão |
|---|---|---|
channels.feishu.enabled | Habilitar/desabilitar canal | true |
channels.feishu.domain | Domínio da API (feishu ou lark) | feishu |
channels.feishu.connectionMode | Modo de transporte de eventos | websocket |
channels.feishu.defaultAccount | ID da conta padrão para roteamento de saída | default |
channels.feishu.verificationToken | Obrigatório para modo webhook | - |
channels.feishu.encryptKey | Obrigatório para modo webhook | - |
channels.feishu.webhookPath | Caminho da rota do 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 | App ID | - |
channels.feishu.accounts.<id>.appSecret | App Secret | - |
channels.feishu.accounts.<id>.domain | Substituição do domínio da API por conta | feishu |
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 grupos | - |
channels.feishu.requireMention | Exigir @mention por padrão | condicional |
channels.feishu.groups.<chat_id>.requireMention | Substituição de exigir @mention por grupo | herdado |
channels.feishu.groups.<chat_id>.enabled | Habilitar grupo | true |
channels.feishu.textChunkLimit | Tamanho do bloco de mensagem | 2000 |
channels.feishu.mediaMaxMb | Limite de tamanho de mídia | 30 |
channels.feishu.streaming | Habilitar saída em streaming por cartão | true |
channels.feishu.blockStreaming | Habilitar streaming em bloco | true |
Referência de dmPolicy
| Valor | Comportamento |
|---|---|
"pairing" | Padrão. Usuários desconhecidos recebem um código de pareamento; é necessário aprovar |
"allowlist" | Apenas usuários em allowFrom podem conversar |
"open" | Permitir todos os usuários (requer "*" em allowFrom) |
"disabled" | Desabilitar DMs |
Tipos de mensagem compatíveis
Receber
- ✅ Texto
- ✅ Texto rico (post)
- ✅ Imagens
- ✅ Arquivos
- ✅ Áudio
- ✅ Vídeo/mídia
- ✅ Figurinhas
Enviar
- ✅ Texto
- ✅ Imagens
- ✅ Arquivos
- ✅ Áudio
- ✅ Vídeo/mídia
- ✅ Cartões interativos
- ⚠️ Texto rico (formatação estilo post e cartões, não recursos arbitrários de autoria do Feishu)
Threads e respostas
- ✅ Respostas inline
- ✅ Respostas em topic-thread quando o Feishu expõe
reply_in_thread - ✅ Respostas com mídia permanecem cientes da thread ao responder a uma mensagem de thread/tópico
Comentários do Drive
O Feishu pode acionar o agente quando alguém adiciona um comentário em um documento do Feishu Drive (Docs, Sheets, etc.). O agente recebe o texto do comentário, o contexto do documento e a thread de comentários para poder responder na thread ou fazer edições no documento. Requisitos:- Assine
drive.notice.comment_add_v1nas configurações de assinatura de eventos do seu app Feishu (junto com o já existenteim.message.receive_v1) - A ferramenta Drive é habilitada por padrão; desabilite com
channels.feishu.tools.drive: false
feishu_drive expõe estas ações de comentário:
| Ação | Descrição |
|---|---|
list_comments | Listar comentários em um documento |
list_comment_replies | Listar respostas em uma thread de comentário |
add_comment | Adicionar um novo comentário de nível superior |
reply_comment | Responder a uma thread de comentário existente |
- o texto do comentário e o remetente
- metadados do documento (título, tipo, URL)
- o contexto da thread de comentários para respostas na thread
feishu_drive.reply_comment para notificar o
comentarista e então emitir o token silencioso exato NO_REPLY / no_reply para
evitar envios duplicados.
Superfície de ações em runtime
Atualmente, o Feishu expõe estas ações em runtime:sendreadeditthread-replypinlist-pinsunpinmember-infochannel-infochannel-listreactereactionsquando reações estão habilitadas na configuração- ações de comentário
feishu_drive:list_comments,list_comment_replies,add_comment,reply_comment
Relacionado
- Channels Overview — todos os canais compatíveis
- Pairing — autenticação de DM e fluxo de pareamento
- Groups — comportamento de chat em grupo e controle por menção
- Channel Routing — roteamento de sessão para mensagens
- Security — modelo de acesso e hardening