@openclaw/feishu: messaggi diretti al bot, chat di gruppo, risposte in streaming tramite schede e strumenti per documenti, wiki, drive e Bitable di Feishu.
Stato: pronto per la produzione per messaggi diretti al bot e chat di gruppo. WebSocket è il trasporto eventi predefinito (non è necessario un URL pubblico); la modalità Webhook è facoltativa.
Avvio rapido
Richiede OpenClaw 2026.5.29 o versione successiva. Eseguire
openclaw --version per verificare. Eseguire l’aggiornamento con openclaw update.1
Eseguire la procedura guidata di configurazione del canale
@openclaw/feishu se non è presente, quindi guida nella configurazione:- Configurazione manuale: incollare un App ID e un App Secret da Feishu Open Platform (
https://open.feishu.cn) o Lark Developer (https://open.larksuite.com). - Configurazione tramite QR: scansionare un codice QR nell’app Feishu per creare automaticamente un bot. Questo flusso limita i messaggi diretti al proprio account (
dmPolicy: "allowlist"con il proprioopen_id).
2
Al termine della configurazione, riavviare il Gateway per applicare le modifiche
Controllo degli accessi
Messaggi diretti
Configurarechannels.feishu.dmPolicy (valore predefinito: pairing) per controllare chi può inviare messaggi diretti al bot:
Approvare una richiesta di associazione:
Chat di gruppo
Politica dei gruppi (channels.feishu.groupPolicy, valore predefinito: allowlist):
Requisito di menzione (
channels.feishu.requireMention):
- Impostazione predefinita: è richiesta una @menzione, tranne quando la politica effettiva del gruppo è
"open"; in tal caso, il valore predefinito èfalse, affinché i messaggi che non possono contenere menzioni (ad esempio le immagini) raggiungano comunque l’agente. - Impostare esplicitamente
trueofalseper sostituire il valore; impostazione specifica per gruppo:channels.feishu.groups.<chat_id>.requireMention. - Le menzioni di sola trasmissione
@alle@_allnon sono considerate menzioni del bot. Un messaggio che menziona sia@allsia direttamente il bot viene comunque considerato una menzione del bot.
Esempi di configurazione dei gruppi
Consentire tutti i gruppi senza richiedere una @menzione
Consentire tutti i gruppi richiedendo comunque una @menzione
Consentire solo gruppi specifici
allowlist, è inoltre possibile ammettere un gruppo aggiungendo una voce esplicita groups.<chat_id>. Le voci esplicite non sostituiscono groupPolicy: "disabled". Le impostazioni predefinite con caratteri jolly in groups.* configurano i gruppi corrispondenti, ma non li ammettono autonomamente.
Limitare i mittenti all’interno di un gruppo
channels.feishu.groupSenderAllowFrom imposta lo stesso elenco di mittenti consentiti per tutti i gruppi; un’impostazione allowFrom specifica per gruppo ha la precedenza.
Ottenere gli ID di gruppi e utenti
ID dei gruppi (chat_id, formato: oc_xxx)
Aprire il gruppo in Feishu/Lark, fare clic sull’icona del menu nell’angolo superiore destro e accedere a Settings. L’ID del gruppo (chat_id) è riportato nella pagina delle impostazioni.

ID degli utenti (open_id, formato: ou_xxx)
Avviare il Gateway, inviare un messaggio diretto al bot, quindi controllare i log:
open_id nell’output dei log. È inoltre possibile controllare le richieste di associazione in sospeso:
Comandi comuni
Feishu/Lark non supporta menu nativi per i comandi slash, quindi occorre inviarli come messaggi di testo normale.
Risoluzione dei problemi
Il bot non risponde nelle chat di gruppo
- Assicurarsi che il bot sia aggiunto al gruppo
- Assicurarsi di @menzionare il bot (impostazione predefinita obbligatoria)
- Verificare che
groupPolicynon sia"disabled" - Controllare i log:
openclaw logs --follow
Il bot non riceve messaggi
- Assicurarsi che il bot sia pubblicato e approvato in Feishu Open Platform / Lark Developer
- Assicurarsi che la sottoscrizione agli eventi includa
im.message.receive_v1 - Assicurarsi che sia selezionata la persistent connection (WebSocket)
- Assicurarsi che siano concessi tutti gli ambiti di autorizzazione richiesti
- Assicurarsi che il Gateway sia in esecuzione:
openclaw gateway status - Controllare i log:
openclaw logs --follow
La configurazione tramite QR non reagisce nell’app mobile Feishu
- Eseguire nuovamente la configurazione:
openclaw channels login --channel feishu - Scegliere la configurazione manuale
- In Feishu Open Platform, creare un’app personalizzata e copiarne l’App ID e l’App Secret
- Incollare queste credenziali nella procedura guidata di configurazione
App Secret divulgato
- Reimpostare l’App Secret in Feishu Open Platform / Lark Developer
- Aggiornare il valore nella configurazione
- Riavviare il Gateway:
openclaw gateway restart
Configurazione avanzata
Account multipli
defaultAccount controlla quale account viene utilizzato quando le API in uscita non specificano un accountId. Le voci degli account ereditano le impostazioni di primo livello; la maggior parte delle chiavi di primo livello può essere sostituita per ciascun account.
accounts.<id>.tts usa la stessa struttura di messages.tts e viene unito in profondità alla configurazione TTS globale, consentendo alle configurazioni Feishu con più bot di mantenere globalmente le credenziali condivise dei provider e sostituire per ciascun account solo la voce, il modello, la persona o la modalità automatica.
Limiti dei messaggi
textChunkLimit- dimensione dei segmenti di testo in uscita (valore predefinito:4000caratteri)streaming.chunkMode-"length"(valore predefinito) divide al raggiungimento del limite;"newline"preferisce i confini delle nuove righemediaMaxMb- limite di caricamento/scaricamento dei contenuti multimediali (valore predefinito:30MB)
Streaming
Feishu/Lark supporta le risposte in streaming tramite schede interattive (API di streaming Card Kit). Quando la funzionalità è abilitata, il bot aggiorna la scheda in tempo reale durante la generazione del testo.streaming.mode: "off" per inviare la risposta completa in un unico messaggio; anche renderMode: "raw" (testo normale anziché schede) disabilita le schede in streaming. streaming.block.enabled è disattivato per impostazione predefinita; abilitarlo solo quando si desidera inviare i blocchi completati dell’assistente prima della risposta finale. Il valore booleano obsoleto streaming e le chiavi non nidificate blockStreaming / blockStreamingCoalesce / chunkMode vengono migrati a questa struttura nidificata tramite openclaw doctor --fix.
Ottimizzazione delle quote
Ridurre il numero di chiamate alle API Feishu/Lark tramite due flag facoltativi:typingIndicator(valore predefinitotrue): impostarefalseper ignorare le chiamate di reazione alla digitazioneresolveSenderNames(valore predefinitotrue): impostarefalseper ignorare le ricerche del profilo del mittente
Ambito delle sessioni di gruppo e thread degli argomenti
channels.feishu.groupSessionScope (a livello principale, per account o per gruppo) controlla il modo in cui i messaggi di gruppo vengono associati alle sessioni dell’agente:
Per gli ambiti degli argomenti, i gruppi di argomenti nativi di Feishu/Lark usano l’evento
thread_id (omt_*) come chiave canonica della sessione dell’argomento. Se un evento iniziale di un argomento nativo omette thread_id, OpenClaw lo recupera da Feishu prima di instradare il turno. Le normali risposte di gruppo che OpenClaw trasforma in thread continuano a usare l’ID del messaggio radice della risposta (om_*), affinché il primo turno e quelli successivi rimangano nella stessa sessione.
Impostare replyInThread: "enabled" (a livello principale o per gruppo) per fare in modo che le risposte del bot creino o continuino un thread di argomento Feishu anziché rispondere in linea. topicSessionMode è il predecessore deprecato di groupSessionScope; preferire groupSessionScope.
Strumenti per l’area di lavoro Feishu
Il Plugin include strumenti per agenti dedicati a documenti, chat, base di conoscenza, archiviazione cloud, autorizzazioni e Bitable di Feishu, oltre alle Skills corrispondenti (feishu-doc, feishu-drive, feishu-perm, feishu-wiki). Le famiglie di strumenti sono controllate da channels.feishu.tools:
tools.base è un alias di tools.bitable; quando sono impostati entrambi, prevale il valore esplicito di bitable. Le limitazioni per account si trovano in accounts.<id>.tools.
Concedere drive:drive.metadata:readonly per le ricerche dirette di feishu_drive info al di fuori della directory
radice, a meno che l’app non disponga già dell’ambito completo drive:drive. Senza nessuno dei due ambiti, info
mantiene disponibile la ricerca legacy nella directory radice tramite drive:drive:readonly.
Sessioni ACP
Feishu/Lark supporta ACP per i messaggi diretti e i messaggi nei thread di gruppo. ACP su Feishu/Lark è basato su comandi testuali: non sono disponibili menu nativi per i comandi slash, quindi utilizzare direttamente i messaggi/acp ... nella conversazione.
Associazione ACP persistente
Avvio di ACP dalla chat
In un messaggio diretto o thread di Feishu/Lark:--thread here funziona per i messaggi diretti e per i messaggi nei thread di Feishu/Lark. I messaggi successivi nella conversazione associata vengono instradati direttamente a tale sessione ACP.
Instradamento multi-agente
Utilizzarebindings per instradare i messaggi diretti o i gruppi di Feishu/Lark verso agenti diversi.
match.channel:"feishu"match.peer.kind:"direct"(messaggio diretto) o"group"(chat di gruppo)match.peer.id: Open ID dell’utente (ou_xxx) o ID del gruppo (oc_xxx)
Isolamento dell’agente per utente (creazione dinamica degli agenti)
AbilitaredynamicAgentCreation per creare automaticamente istanze di agente isolate per ciascun utente dei messaggi diretti. Ogni utente dispone di:
- Directory di lavoro indipendente
USER.md/SOUL.md/MEMORY.mdseparati- Cronologia delle conversazioni privata
- Skills e stato isolati
Le associazioni dinamiche includono il valore
accountId normalizzato di Feishu, pertanto gli account predefiniti e quelli denominati instradano ogni mittente verso l’agente dinamico corretto.Se in una versione precedente un account denominato ha creato un agente dinamico senza ambito, tale agente legacy viene comunque conteggiato nel limite maxAgents. Prima di rimuoverlo, verificare che non sia utilizzato dall’account predefinito oppure aumentare temporaneamente maxAgents; OpenClaw non può determinare in modo sicuro quale account possieda uno stato legacy ambiguo.Configurazione rapida
Funzionamento
Quando un nuovo utente invia il suo primo messaggio diretto:- Il canale genera un
agentIdunivoco:feishu-{user_open_id}per l’account predefinito oppure un digest dell’identità limitato e con prefisso dell’account per un account denominato - Crea una nuova directory di lavoro nel percorso
workspaceTemplate - Registra l’agente e crea un’associazione per questo utente
- L’helper della directory di lavoro garantisce la presenza dei file di bootstrap (
AGENTS.md,SOUL.md,USER.mde così via) al primo accesso - Instrada tutti i messaggi futuri di questo utente verso il suo agente dedicato
Opzioni di configurazione
Variabili del modello:
{agentId}- l’ID dell’agente generato (ad esempio,feishu-ou_xxxxxxofeishu-support-<identity_digest>){userId}- l’open_id Feishu del mittente (ad esempio,ou_xxxxxx)
Ambito della sessione
session.dmScope controlla il modo in cui i messaggi diretti vengono associati alle sessioni dell’agente. Si tratta di un’impostazione globale che interessa tutti i canali.
Compromesso: l’utilizzo di
"main" abilita il caricamento automatico dei file di bootstrap (USER.md, SOUL.md, MEMORY.md), ma comporta che tutti i messaggi diretti su tutti i canali condividano lo stesso schema di chiavi di sessione. Per i bot pubblici multiutente in cui l’isolamento è più importante del caricamento automatico dei file di bootstrap, considerare "per-channel-peer" e gestire manualmente i file di bootstrap.
Utilizzare
"per-account-channel-peer" quando gli account Feishu denominati devono mantenere sessioni separate per lo stesso mittente. Le associazioni dinamiche preservano l’ambito dell’account.Distribuzione multiutente tipica
Verifica
Controllare i log del Gateway per verificare che la creazione dinamica funzioni:Note
- Isolamento della directory di lavoro: ogni utente dispone della propria directory di lavoro e istanza dell’agente. Nel normale flusso di messaggistica, gli utenti non possono vedere la cronologia delle conversazioni o i file degli altri utenti.
- Confine di sicurezza: si tratta di un meccanismo di isolamento del contesto di messaggistica, non di un confine di sicurezza tra co-tenant ostili. Il processo dell’agente e l’ambiente host sono condivisi.
- Le scritture della configurazione devono rimanere abilitate: la creazione dinamica degli agenti scrive agenti e associazioni nella configurazione; viene ignorata quando
channels.feishu.configWritesèfalse(valore predefinito: abilitato). bindingsdeve essere vuoto: gli agenti dinamici registrano automaticamente le proprie associazioni- Percorso di aggiornamento: le associazioni manuali esistenti continuano a funzionare insieme agli agenti dinamici
session.dmScopeè globale: interessa tutti i canali, non soltanto Feishu
Riferimento per la configurazione
Configurazione completa: Configurazione del GatewayTipi di messaggi supportati
Ricezione
- ✅ Testo
- ✅ Testo formattato (post)
- ✅ Immagini
- ✅ File
- ✅ Audio
- ✅ Video/contenuti multimediali
- ✅ Adesivi
file_key non elaborato. Quando tools.media.audio è configurato, OpenClaw
scarica la risorsa della nota vocale ed esegue la trascrizione audio condivisa prima del
turno dell’agente, in modo che l’agente riceva la trascrizione del parlato. Se Feishu include
direttamente il testo della trascrizione nel payload audio, tale testo viene utilizzato senza un’altra
chiamata ASR. Senza un provider di trascrizione audio, l’agente riceve comunque un
segnaposto <media:audio> insieme all’allegato salvato, non il payload non elaborato
della risorsa Feishu.
Invio
- ✅ Testo
- ✅ Immagini
- ✅ File
- ✅ Audio
- ✅ Video/contenuti multimediali
- ✅ Schede interattive (inclusi gli aggiornamenti in streaming)
- ⚠️ Testo formattato (formattazione in stile post; non supporta tutte le funzionalità di creazione di Feishu/Lark)
audio e richiedono
contenuti multimediali caricati in formato Ogg/Opus (file_type: "opus"). I contenuti multimediali .opus e .ogg esistenti
vengono inviati direttamente come audio nativo. MP3/WAV/M4A e altri formati probabilmente audio vengono
transcodificati in Ogg/Opus a 48kHz con ffmpeg solo quando la risposta richiede la consegna
vocale (audioAsVoice / strumento per i messaggi asVoice, incluse le risposte TTS sotto forma di nota
vocale). I normali allegati MP3 restano file ordinari. Se ffmpeg non è presente o
la conversione non riesce, OpenClaw ricorre a un allegato file e registra il motivo.
Thread e risposte
- ✅ Risposte in linea
- ✅ Risposte nei thread
- ✅ Le risposte multimediali mantengono la consapevolezza del thread quando rispondono a un messaggio del thread
Correlati
- Panoramica dei canali - tutti i canali supportati
- Associazione - autenticazione dei messaggi diretti e flusso di associazione
- Gruppi - comportamento delle chat di gruppo e controllo delle menzioni
- Instradamento dei canali - instradamento delle sessioni per i messaggi
- Sicurezza - modello di accesso e rafforzamento