Regional platforms
Feishu
Feishu/Lark è una piattaforma di collaborazione all-in-one in cui i team chattano, condividono documenti, gestiscono calendari e lavorano insieme.
Stato: pronta per la produzione per DM del bot + chat di gruppo. WebSocket è la modalità predefinita; la modalità Webhook è opzionale.
Avvio rapido
Esegui la procedura guidata di configurazione del canale
openclaw channels login --channel feishu
Scansiona il codice QR con la tua app mobile Feishu/Lark per creare automaticamente un bot Feishu/Lark.
Al termine della configurazione, riavvia il Gateway per applicare le modifiche
openclaw gateway restart
Controllo degli accessi
Messaggi diretti
Configura dmPolicy per controllare chi può inviare DM al bot:
"pairing"- gli utenti sconosciuti ricevono un codice di associazione; approva tramite CLI"allowlist"- solo gli utenti elencati inallowFrompossono chattare (impostazione predefinita: solo il proprietario del bot)"open"- consenti DM pubblici solo quandoallowFrominclude"*"; con voci restrittive, solo gli utenti corrispondenti possono chattare"disabled"- disabilita tutti i DM
Approva una richiesta di associazione:
openclaw pairing list feishu
openclaw pairing approve feishu <CODE>
Chat di gruppo
Criterio di gruppo (channels.feishu.groupPolicy):
| Valore | Comportamento |
|---|---|
"open" |
Risponde a tutti i messaggi nei gruppi |
"allowlist" |
Risponde solo ai gruppi in groupAllowFrom o configurati esplicitamente in groups.<chat_id> |
"disabled" |
Disabilita tutti i messaggi di gruppo; le voci esplicite groups.<chat_id> non lo sovrascrivono |
Predefinito: allowlist
Requisito di menzione (channels.feishu.requireMention):
true- richiede @menzione (predefinito)false- risponde senza @menzione- Override per gruppo:
channels.feishu.groups.<chat_id>.requireMention @alle@_allsolo broadcast non sono trattati come menzioni del bot. Un messaggio che menziona sia@allsia direttamente il bot viene comunque conteggiato come menzione del bot.
Esempi di configurazione dei gruppi
Consenti tutti i gruppi, nessuna @menzione richiesta
{
channels: {
feishu: {
groupPolicy: "open",
},
},
}
Consenti tutti i gruppi, richiedendo comunque @menzione
{
channels: {
feishu: {
groupPolicy: "open",
requireMention: true,
},
},
}
Consenti solo gruppi specifici
{
channels: {
feishu: {
groupPolicy: "allowlist",
// Group IDs look like: oc_xxx
groupAllowFrom: ["oc_xxx", "oc_yyy"],
},
},
}
In modalità allowlist, puoi anche ammettere un gruppo aggiungendo una voce esplicita groups.<chat_id>. Le voci esplicite non sovrascrivono groupPolicy: "disabled". Le impostazioni predefinite con carattere jolly in groups.* configurano i gruppi corrispondenti, ma da sole non ammettono gruppi.
{
channels: {
feishu: {
groupPolicy: "allowlist",
groups: {
oc_xxx: {
requireMention: false,
},
},
},
},
}
Limita i mittenti all'interno di un gruppo
{
channels: {
feishu: {
groupPolicy: "allowlist",
groupAllowFrom: ["oc_xxx"],
groups: {
oc_xxx: {
// User open_ids look like: ou_xxx
allowFrom: ["ou_user1", "ou_user2"],
},
},
},
},
}
Ottieni gli ID di gruppi/utenti
ID gruppo (chat_id, formato: oc_xxx)
Apri il gruppo in Feishu/Lark, fai clic sull'icona del menu nell'angolo in alto a destra e vai a Impostazioni. L'ID del gruppo (chat_id) è elencato nella pagina delle impostazioni.

ID utente (open_id, formato: ou_xxx)
Avvia il Gateway, invia un DM al bot, quindi controlla i log:
openclaw logs --follow
Cerca open_id nell'output del log. Puoi anche controllare le richieste di associazione in sospeso:
openclaw pairing list feishu
Comandi comuni
| Comando | Descrizione |
|---|---|
/status |
Mostra lo stato del bot |
/reset |
Reimposta la sessione corrente |
/model |
Mostra o cambia il modello di IA |
Risoluzione dei problemi
Il bot non risponde nelle chat di gruppo
- Assicurati che il bot sia stato aggiunto al gruppo
- Assicurati di @menzionare il bot (richiesto per impostazione predefinita)
- Verifica che
groupPolicynon sia"disabled" - Controlla i log:
openclaw logs --follow
Il bot non riceve messaggi
- Assicurati che il bot sia pubblicato e approvato in Feishu Open Platform / Lark Developer
- Assicurati che la sottoscrizione agli eventi includa
im.message.receive_v1 - Assicurati che sia selezionata la connessione persistente (WebSocket)
- Assicurati che tutti gli ambiti di autorizzazione richiesti siano concessi
- Assicurati che il Gateway sia in esecuzione:
openclaw gateway status - Controlla i log:
openclaw logs --follow
App Secret trapelato
- Reimposta l'App Secret in Feishu Open Platform / Lark Developer
- Aggiorna il valore nella tua configurazione
- Riavvia il Gateway:
openclaw gateway restart
Configurazione avanzata
Account multipli
{
channels: {
feishu: {
defaultAccount: "main",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
name: "Primary bot",
tts: {
providers: {
openai: { voice: "shimmer" },
},
},
},
backup: {
appId: "cli_yyy",
appSecret: "yyy",
name: "Backup bot",
enabled: false,
},
},
},
},
}
defaultAccount controlla quale account viene usato quando le API in uscita non specificano un accountId.
accounts.<id>.tts usa la stessa forma di messages.tts ed esegue un deep merge sulla
configurazione TTS globale, quindi le configurazioni Feishu multi-bot possono mantenere le credenziali
dei provider condivise a livello globale, sovrascrivendo solo voce, modello, persona o modalità automatica
per account.
Limiti dei messaggi
textChunkLimit- dimensione dei blocchi di testo in uscita (predefinito:2000caratteri)mediaMaxMb- limite di caricamento/download dei media (predefinito:30MB)
Streaming
Feishu/Lark supporta le risposte in streaming tramite schede interattive. Quando è abilitato, il bot aggiorna la scheda in tempo reale mentre genera il testo.
{
channels: {
feishu: {
streaming: true, // enable streaming card output (default: true)
blockStreaming: true, // opt into completed-block streaming
},
},
}
Imposta streaming: false per inviare la risposta completa in un unico messaggio. blockStreaming è disattivato per impostazione predefinita; abilitalo solo quando vuoi inviare i blocchi completati dell'assistente prima della risposta finale.
Ottimizzazione delle quote
Riduci il numero di chiamate API Feishu/Lark con due flag opzionali:
typingIndicator(predefinitotrue): impostafalseper saltare le chiamate di reazione di digitazioneresolveSenderNames(predefinitotrue): impostafalseper saltare le ricerche dei profili dei mittenti
{
channels: {
feishu: {
typingIndicator: false,
resolveSenderNames: false,
},
},
}
Sessioni ACP
Feishu/Lark supporta ACP per DM e messaggi di thread di gruppo. ACP di Feishu/Lark è basato su comandi testuali: non ci sono menu nativi per comandi slash, quindi usa i messaggi /acp ... direttamente nella conversazione.
Binding ACP persistente
{
agents: {
list: [
{
id: "codex",
runtime: {
type: "acp",
acp: {
agent: "codex",
backend: "acpx",
mode: "persistent",
cwd: "/workspace/openclaw",
},
},
},
],
},
bindings: [
{
type: "acp",
agentId: "codex",
match: {
channel: "feishu",
accountId: "default",
peer: { kind: "direct", id: "ou_1234567890" },
},
},
{
type: "acp",
agentId: "codex",
match: {
channel: "feishu",
accountId: "default",
peer: { kind: "group", id: "oc_group_chat:topic:om_topic_root" },
},
acp: { label: "codex-feishu-topic" },
},
],
}
Avvia ACP dalla chat
In un DM o thread Feishu/Lark:
/acp spawn codex --thread here
--thread here funziona per DM e messaggi di thread Feishu/Lark. I messaggi successivi nella conversazione associata vengono instradati direttamente a quella sessione ACP.
Routing multi-agente
Usa bindings per instradare DM o gruppi Feishu/Lark ad agenti diversi.
{
agents: {
list: [
{ id: "main" },
{ id: "agent-a", workspace: "/home/user/agent-a" },
{ id: "agent-b", workspace: "/home/user/agent-b" },
],
},
bindings: [
{
agentId: "agent-a",
match: {
channel: "feishu",
peer: { kind: "direct", id: "ou_xxx" },
},
},
{
agentId: "agent-b",
match: {
channel: "feishu",
peer: { kind: "group", id: "oc_zzz" },
},
},
],
}
Campi di routing:
match.channel:"feishu"match.peer.kind:"direct"(DM) o"group"(chat di gruppo)match.peer.id: Open ID utente (ou_xxx) o ID gruppo (oc_xxx)
Vedi Ottieni gli ID di gruppi/utenti per suggerimenti sulla ricerca.
Riferimento di configurazione
Configurazione completa: Configurazione del Gateway
| Impostazione | Descrizione | Predefinito |
|---|---|---|
channels.feishu.enabled |
Abilita/disabilita il canale | true |
channels.feishu.domain |
Dominio API (feishu o lark) |
feishu |
channels.feishu.connectionMode |
Trasporto degli eventi (websocket o webhook) |
websocket |
channels.feishu.defaultAccount |
Account predefinito per il routing in uscita | default |
channels.feishu.verificationToken |
Richiesto per la modalità Webhook | - |
channels.feishu.encryptKey |
Richiesto per la modalità Webhook | - |
channels.feishu.webhookPath |
Percorso della route Webhook | /feishu/events |
channels.feishu.webhookHost |
Host di binding del Webhook | 127.0.0.1 |
channels.feishu.webhookPort |
Porta di binding del Webhook | 3000 |
channels.feishu.accounts.<id>.appId |
ID app | - |
channels.feishu.accounts.<id>.appSecret |
Segreto app | - |
channels.feishu.accounts.<id>.domain |
Override del dominio per account | feishu |
channels.feishu.accounts.<id>.tts |
Override TTS per account | messages.tts |
channels.feishu.dmPolicy |
Criterio DM | allowlist |
channels.feishu.allowFrom |
Allowlist DM (elenco open_id) | [BotOwnerId] |
channels.feishu.groupPolicy |
Criterio di gruppo | allowlist |
channels.feishu.groupAllowFrom |
Allowlist dei gruppi | - |
channels.feishu.requireMention |
Richiedi @mention nei gruppi | true |
channels.feishu.groups.<chat_id>.requireMention |
Override @mention per gruppo; gli ID espliciti ammettono anche il gruppo in modalità allowlist | ereditato |
channels.feishu.groups.<chat_id>.enabled |
Abilita/disabilita un gruppo specifico | true |
channels.feishu.textChunkLimit |
Dimensione dei blocchi di messaggio | 2000 |
channels.feishu.mediaMaxMb |
Limite di dimensione dei media | 30 |
channels.feishu.streaming |
Output delle schede in streaming | true |
channels.feishu.blockStreaming |
Streaming delle risposte a blocchi completati | false |
channels.feishu.typingIndicator |
Invia reazioni di digitazione | true |
channels.feishu.resolveSenderNames |
Risolvi i nomi visualizzati dei mittenti | true |
Tipi di messaggio supportati
Ricezione
- ✅ Testo
- ✅ Rich text (post)
- ✅ Immagini
- ✅ File
- ✅ Audio
- ✅ Video/media
- ✅ Sticker
I messaggi audio Feishu/Lark in ingresso vengono normalizzati come segnaposto media invece
che come JSON file_key grezzo. Quando tools.media.audio è configurato, OpenClaw
scarica la risorsa della nota vocale ed esegue la trascrizione audio condivisa prima del
turno dell'agente, così l'agente riceve la trascrizione del parlato. Se Feishu include
testo di trascrizione direttamente nel payload audio, quel testo viene usato senza un'altra
chiamata ASR. Senza un provider di trascrizione audio, l'agente riceve comunque un
segnaposto <media:audio> più l'allegato salvato, non il payload grezzo della risorsa
Feishu.
Invio
- ✅ Testo
- ✅ Immagini
- ✅ File
- ✅ Audio
- ✅ Video/media
- ✅ Schede interattive (inclusi aggiornamenti in streaming)
- ⚠️ Rich text (formattazione in stile post; non supporta tutte le funzionalità di authoring Feishu/Lark)
I fumetti audio nativi Feishu/Lark usano il tipo di messaggio Feishu audio e richiedono
media caricati in Ogg/Opus (file_type: "opus"). I media .opus e .ogg esistenti
vengono inviati direttamente come audio nativo. MP3/WAV/M4A e altri formati audio probabili
vengono transcodificati in Ogg/Opus a 48 kHz con ffmpeg solo quando la risposta richiede
la consegna vocale (audioAsVoice / strumento messaggi asVoice, incluse le risposte
con nota vocale TTS). Gli allegati MP3 ordinari restano file normali. Se ffmpeg manca o
la conversione non riesce, OpenClaw ripiega su un allegato file e registra il motivo nei log.
Thread e risposte
- ✅ Risposte in linea
- ✅ Risposte nei thread
- ✅ Le risposte con media restano consapevoli del thread quando rispondono a un messaggio in un thread
Per groupSessionScope: "group_topic" e "group_topic_sender", i gruppi topic nativi
Feishu/Lark usano l'evento thread_id (omt_*) come chiave canonica della sessione
topic. Se un evento starter di topic nativo omette thread_id, OpenClaw lo idrata da
Feishu prima di effettuare il routing del turno. Le normali risposte di gruppo che
OpenClaw trasforma in thread continuano a usare l'ID del messaggio radice della risposta
(om_*), così il primo turno e il turno successivo restano nella stessa sessione.
Correlati
- Panoramica dei canali - tutti i canali supportati
- Abbinamento - autenticazione DM e flusso di abbinamento
- Gruppi - comportamento delle chat di gruppo e gating delle menzioni
- Routing dei canali - routing delle sessioni per i messaggi
- Sicurezza - modello di accesso e hardening