Feishu-Bot
Feishu (Lark) ist eine Team-Chat-Plattform für Messaging und Zusammenarbeit in Unternehmen. Dieses Plugin verbindet OpenClaw mit einem Feishu/Lark-Bot über die WebSocket-Event-Subscription der Plattform, sodass Nachrichten empfangen werden können, ohne eine öffentliche Webhook-URL zu exponieren.
Mitgeliefertes Plugin
Feishu wird mit aktuellen OpenClaw-Releases mitgeliefert, sodass keine separate Plugin-Installation erforderlich ist.
Wenn du einen älteren Build oder eine benutzerdefinierte Installation ohne gebündeltes Feishu verwendest, installiere es manuell:
openclaw plugins install @openclaw/feishu
Schnellstart
Es gibt zwei Wege, den Feishu-Kanal hinzuzufügen:
Methode 1: Onboarding-Assistent (empfohlen)
Wenn du OpenClaw gerade installiert hast, starte den Assistenten:
openclaw onboard
Der Assistent führt dich durch:
- Erstellen einer Feishu-App und Sammeln der Zugangsdaten
- Konfiguration der App-Zugangsdaten in OpenClaw
- Starten des Gateways
Nach der Konfiguration den Gateway-Status prüfen:
openclaw gateway statusopenclaw logs --follow
Methode 2: CLI-Einrichtung
Wenn du die Erstinstallation bereits abgeschlossen hast, füge den Kanal über CLI hinzu:
openclaw channels add
Wähle Feishu und gib dann App ID und App Secret ein.
Nach der Konfiguration das Gateway verwalten:
openclaw gateway statusopenclaw gateway restartopenclaw logs --follow
Schritt 1: Feishu-App erstellen
1. Feishu Open Platform öffnen
Besuche Feishu Open Platform und melde dich an.
Lark (global) Tenants sollten https://open.larksuite.com/app verwenden und domain: "lark" in der Feishu-Konfiguration setzen.
2. App erstellen
- Klicke auf Create enterprise app
- Fülle App-Name + Beschreibung aus
- Wähle ein App-Symbol

3. Zugangsdaten kopieren
Unter Credentials & Basic Info kopiere:
- App ID (Format:
cli_xxx) - App Secret
Warnung: Halte das App Secret privat.

4. Berechtigungen konfigurieren
Unter Permissions klicke auf Batch import und füge ein:
{
"scopes": {
"tenant": [
"aily:file:read",
"aily:file:write",
"application:application.app_message_stats.overview:readonly",
"application:application:self_manage",
"application:bot.menu:write",
"cardkit:card:read",
"cardkit:card:write",
"contact:user.employee_id:readonly",
"corehr:file:download",
"event:ip_list",
"im:chat.access_event.bot_p2p_chat:read",
"im:chat.members:bot_access",
"im:message",
"im:message.group_at_msg:readonly",
"im:message.p2p_msg:readonly",
"im:message:readonly",
"im:message:send_as_bot",
"im:resource"
],
"user": ["aily:file:read", "aily:file:write", "im:chat.access_event.bot_p2p_chat:read"]
}
}

5. Bot-Fähigkeit aktivieren
In App Capability > Bot:
- Bot-Fähigkeit aktivieren
- Bot-Namen setzen

6. Event-Subscription konfigurieren
Warnung: Stelle vor dem Setzen der Event-Subscription sicher, dass:
- Du bereits
openclaw channels addfür Feishu ausgeführt hast - Das Gateway läuft (
openclaw gateway status)
In Event Subscription:
- Wähle Use long connection to receive events (WebSocket)
- Füge das Event hinzu:
im.message.receive_v1
Wenn das Gateway nicht läuft, kann das Speichern der Long-Connection-Einrichtung fehlschlagen.

7. App veröffentlichen
- Erstelle eine Version in Version Management & Release
- Zur Prüfung einreichen und veröffentlichen
- Auf Admin-Genehmigung warten (Enterprise-Apps werden normalerweise automatisch genehmigt)
Schritt 2: OpenClaw konfigurieren
Mit dem Assistenten konfigurieren (empfohlen)
openclaw channels add
Wähle Feishu und füge deine App ID + App Secret ein.
Über Konfigurationsdatei
Bearbeite ~/.openclaw/openclaw.json:
{
channels: {
feishu: {
enabled: true,
dmPolicy: "pairing",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "My AI assistant",
},
},
},
},
}
Wenn du connectionMode: "webhook" verwendest, setze sowohl verificationToken als auch encryptKey. Der Feishu-Webhook-Server bindet standardmäßig an 127.0.0.1; setze webhookHost nur, wenn du absichtlich eine andere Bind-Adresse benötigst.
Verification Token und Encrypt Key (Webhook-Modus)
Bei Verwendung des Webhook-Modus setze sowohl channels.feishu.verificationToken als auch channels.feishu.encryptKey in deiner Konfiguration. Um die Werte zu erhalten:
- Öffne auf der Feishu Open Platform deine App
- Gehe zu Development -> Events & Callbacks (Entwicklungskonfiguration -> Events & Callbacks)
- Öffne den Tab Encryption (Verschlüsselungsstrategie)
- Kopiere Verification Token und Encrypt Key
Der Screenshot unten zeigt, wo der Verification Token zu finden ist. Der Encrypt Key steht im selben Encryption-Abschnitt.

Über Umgebungsvariablen
export FEISHU_APP_ID="cli_xxx"
export FEISHU_APP_SECRET="xxx"
Lark (global) Domain
Wenn dein Tenant auf Lark (international) ist, setze die Domain auf lark (oder einen vollständigen Domain-String). Du kannst sie unter channels.feishu.domain oder pro Konto (channels.feishu.accounts.<id>.domain) setzen.
{
channels: {
feishu: {
domain: "lark",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
},
},
},
},
}
Quota-Optimierungs-Flags
Du kannst die Feishu-API-Nutzung mit zwei optionalen Flags reduzieren:
typingIndicator(Standardtrue): Beifalsewerden Tipp-Reaktionsaufrufe übersprungen.resolveSenderNames(Standardtrue): Beifalsewerden Absenderprofil-Abfrageaufrufe übersprungen.
Setze sie auf Top-Level oder pro Konto:
{
channels: {
feishu: {
typingIndicator: false,
resolveSenderNames: false,
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
typingIndicator: true,
resolveSenderNames: false,
},
},
},
},
}
Schritt 3: Starten + Testen
1. Gateway starten
openclaw gateway
2. Testnachricht senden
Finde in Feishu deinen Bot und sende eine Nachricht.
3. Pairing genehmigen
Standardmäßig antwortet der Bot mit einem Pairing-Code. Genehmige ihn:
openclaw pairing approve feishu <CODE>
Nach der Genehmigung kannst du normal chatten.
Überblick
- Feishu-Bot-Kanal: Feishu-Bot, verwaltet vom Gateway
- Deterministisches Routing: Antworten gehen immer zurück zu Feishu
- Session-Isolation: DMs teilen eine Haupt-Session; Gruppen sind isoliert
- WebSocket-Verbindung: Long Connection via Feishu SDK, keine öffentliche URL nötig
Zugriffssteuerung
Direktnachrichten
-
Standard:
dmPolicy: "pairing"(unbekannte Benutzer erhalten einen Pairing-Code) -
Pairing genehmigen:
openclaw pairing list feishu openclaw pairing approve feishu <CODE> -
Allowlist-Modus: Setze
channels.feishu.allowFrommit erlaubten Open IDs
Gruppenchats
1. Gruppenrichtlinie (channels.feishu.groupPolicy):
"open"= jeden in Gruppen erlauben (Standard)"allowlist"= nurgroupAllowFromerlauben"disabled"= Gruppennachrichten deaktivieren
2. Mention-Anforderung (channels.feishu.groups.<chat_id>.requireMention):
true= @Mention erforderlich (Standard)false= ohne Mention antworten
Gruppen-Konfigurationsbeispiele
Alle Gruppen erlauben, @Mention erforderlich (Standard)
{
channels: {
feishu: {
groupPolicy: "open",
// Standard requireMention: true
},
},
}
Alle Gruppen erlauben, kein @Mention erforderlich
{
channels: {
feishu: {
groups: {
oc_xxx: { requireMention: false },
},
},
},
}
Nur bestimmte Gruppen erlauben
{
channels: {
feishu: {
groupPolicy: "allowlist",
// Feishu Gruppen-IDs (chat_id) sehen so aus: oc_xxx
groupAllowFrom: ["oc_xxx", "oc_yyy"],
},
},
}
Absender in einer Gruppe einschränken (Absender-Allowlist)
Zusätzlich zum Erlauben der Gruppe selbst werden alle Nachrichten in dieser Gruppe nach der Absender-open_id gefiltert: Nur Benutzer in groups.<chat_id>.allowFrom werden verarbeitet; Nachrichten anderer Mitglieder werden ignoriert (dies ist vollständiges Absender-Gating, nicht nur für Steuerbefehle wie /reset oder /new).
{
channels: {
feishu: {
groupPolicy: "allowlist",
groupAllowFrom: ["oc_xxx"],
groups: {
oc_xxx: {
// Feishu Benutzer-IDs (open_id) sehen so aus: ou_xxx
allowFrom: ["ou_user1", "ou_user2"],
},
},
},
},
}
Gruppen-/Benutzer-IDs ermitteln
Gruppen-IDs (chat_id)
Gruppen-IDs sehen so aus: oc_xxx.
Methode 1 (empfohlen)
- Starte das Gateway und @erwähne den Bot in der Gruppe
- Führe
openclaw logs --followaus und suche nachchat_id
Methode 2
Verwende den Feishu-API-Debugger, um Gruppenchats aufzulisten.
Benutzer-IDs (open_id)
Benutzer-IDs sehen so aus: ou_xxx.
Methode 1 (empfohlen)
- Starte das Gateway und sende dem Bot eine DM
- Führe
openclaw logs --followaus und suche nachopen_id
Methode 2
Prüfe Pairing-Anfragen auf Benutzer-Open-IDs:
openclaw pairing list feishu
Häufige Befehle
| Befehl | Beschreibung |
|---|---|
/status | Bot-Status anzeigen |
/reset | Session zurücksetzen |
/model | Modell anzeigen/wechseln |
Hinweis: Feishu unterstützt noch keine nativen Befehlsmenüs, Befehle müssen als Text gesendet werden.
Gateway-Verwaltungsbefehle
| Befehl | Beschreibung |
|---|---|
openclaw gateway status | Gateway-Status anzeigen |
openclaw gateway install | Gateway-Service installieren/starten |
openclaw gateway stop | Gateway-Service stoppen |
openclaw gateway restart | Gateway-Service neustarten |
openclaw logs --follow | Gateway-Logs verfolgen |
Fehlerbehebung
Bot antwortet nicht in Gruppenchats
- Stelle sicher, dass der Bot der Gruppe hinzugefügt ist
- Stelle sicher, dass du den Bot @erwähnst (Standardverhalten)
- Prüfe, ob
groupPolicynicht auf"disabled"gesetzt ist - Prüfe die Logs:
openclaw logs --follow
Bot empfängt keine Nachrichten
- Stelle sicher, dass die App veröffentlicht und genehmigt ist
- Stelle sicher, dass die Event-Subscription
im.message.receive_v1enthält - Stelle sicher, dass Long Connection aktiviert ist
- Stelle sicher, dass die App-Berechtigungen vollständig sind
- Stelle sicher, dass das Gateway läuft:
openclaw gateway status - Prüfe die Logs:
openclaw logs --follow
App-Secret-Leak
- App Secret auf der Feishu Open Platform zurücksetzen
- App Secret in deiner Konfiguration aktualisieren
- Gateway neustarten
Fehler beim Nachrichtenversand
- Stelle sicher, dass die App die Berechtigung
im:message:send_as_bothat - Stelle sicher, dass die App veröffentlicht ist
- Prüfe die Logs auf detaillierte Fehler
Erweiterte Konfiguration
Mehrere Konten
{
channels: {
feishu: {
defaultAccount: "main",
accounts: {
main: {
appId: "cli_xxx",
appSecret: "xxx",
botName: "Primary bot",
},
backup: {
appId: "cli_yyy",
appSecret: "yyy",
botName: "Backup bot",
enabled: false,
},
},
},
},
}
defaultAccount steuert, welches Feishu-Konto verwendet wird, wenn ausgehende APIs keine accountId explizit angeben.
Nachrichtenlimits
textChunkLimit: Ausgehende Textblockgröße (Standard: 2000 Zeichen)mediaMaxMb: Medien-Upload/Download-Limit (Standard: 30MB)
Streaming
Feishu unterstützt Streaming-Antworten über interaktive Karten. Wenn aktiviert, aktualisiert der Bot eine Karte, während er Text generiert.
{
channels: {
feishu: {
streaming: true, // Streaming-Kartenausgabe aktivieren (Standard true)
blockStreaming: true, // Block-Level-Streaming aktivieren (Standard true)
},
},
}
Setze streaming: false, um auf die vollständige Antwort vor dem Senden zu warten.
Multi-Agent-Routing
Verwende bindings, um Feishu-DMs oder -Gruppen verschiedenen Agenten zuzuordnen.
{
agents: {
list: [
{ id: "main" },
{
id: "clawd-fan",
workspace: "/home/user/clawd-fan",
agentDir: "/home/user/.openclaw/agents/clawd-fan/agent",
},
{
id: "clawd-xi",
workspace: "/home/user/clawd-xi",
agentDir: "/home/user/.openclaw/agents/clawd-xi/agent",
},
],
},
bindings: [
{
agentId: "main",
match: {
channel: "feishu",
peer: { kind: "direct", id: "ou_xxx" },
},
},
{
agentId: "clawd-fan",
match: {
channel: "feishu",
peer: { kind: "direct", id: "ou_yyy" },
},
},
{
agentId: "clawd-xi",
match: {
channel: "feishu",
peer: { kind: "group", id: "oc_zzz" },
},
},
],
}
Routing-Felder:
match.channel:"feishu"match.peer.kind:"direct"oder"group"match.peer.id: Benutzer-Open-ID (ou_xxx) oder Gruppen-ID (oc_xxx)
Siehe Gruppen-/Benutzer-IDs ermitteln für Suchtipps.
Konfigurationsreferenz
Vollständige Konfiguration: Gateway configuration
Wichtige Optionen:
| Einstellung | Beschreibung | Standard |
|---|---|---|
channels.feishu.enabled | Kanal aktivieren/deaktivieren | true |
channels.feishu.domain | API-Domain (feishu oder lark) | feishu |
channels.feishu.connectionMode | Event-Transport-Modus | websocket |
channels.feishu.defaultAccount | Standard-Konto-ID für ausgehendes Routing | default |
channels.feishu.verificationToken | Erforderlich für Webhook-Modus | - |
channels.feishu.encryptKey | Erforderlich für Webhook-Modus | - |
channels.feishu.webhookPath | Webhook-Route-Pfad | /feishu/events |
channels.feishu.webhookHost | Webhook-Bind-Host | 127.0.0.1 |
channels.feishu.webhookPort | Webhook-Bind-Port | 3000 |
channels.feishu.accounts.<id>.appId | App ID | - |
channels.feishu.accounts.<id>.appSecret | App Secret | - |
channels.feishu.accounts.<id>.domain | Pro-Konto-API-Domain-Überschreibung | feishu |
channels.feishu.dmPolicy | DM-Richtlinie | pairing |
channels.feishu.allowFrom | DM-Allowlist (open_id-Liste) | - |
channels.feishu.groupPolicy | Gruppenrichtlinie | open |
channels.feishu.groupAllowFrom | Gruppen-Allowlist | - |
channels.feishu.groups.<chat_id>.requireMention | @Mention erforderlich | true |
channels.feishu.groups.<chat_id>.enabled | Gruppe aktivieren | true |
channels.feishu.textChunkLimit | Nachrichtenblockgröße | 2000 |
channels.feishu.mediaMaxMb | Mediengrößenlimit | 30 |
channels.feishu.streaming | Streaming-Kartenausgabe aktivieren | true |
channels.feishu.blockStreaming | Block-Streaming aktivieren | true |
dmPolicy-Referenz
| Wert | Verhalten |
|---|---|
"pairing" | Standard. Unbekannte Benutzer erhalten einen Pairing-Code |
"allowlist" | Nur Benutzer in allowFrom können chatten |
"open" | Alle Benutzer erlauben (erfordert "*" in allowFrom) |
"disabled" | DMs deaktivieren |
Unterstützte Nachrichtentypen
Empfangen
- Text
- Rich Text (Post)
- Bilder
- Dateien
- Audio
- Video
- Sticker
Senden
- Text
- Bilder
- Dateien
- Audio
- Rich Text (teilweise Unterstützung)