Szybki start
Wymaga OpenClaw 2026.5.29 lub nowszego. Uruchom
openclaw --version, aby sprawdzić wersję. Zaktualizuj poleceniem openclaw update.Uruchom kreator konfiguracji kanału
Kontrola dostępu
Wiadomości prywatne
SkonfigurujdmPolicy, aby kontrolować, kto może wysyłać DM-y do bota:
"pairing"- nieznani użytkownicy otrzymują kod parowania; zatwierdź przez CLI"allowlist"- czatować mogą tylko użytkownicy wymienieni wallowFrom"open"- zezwól na publiczne DM-y tylko wtedy, gdyallowFromzawiera"*"; przy wpisach restrykcyjnych czatować mogą tylko pasujący użytkownicy
Czaty grupowe
Zasady grup (channels.feishu.groupPolicy):
| Wartość | Zachowanie |
|---|---|
"open" | Odpowiadaj na wszystkie wiadomości w grupach |
"allowlist" | Odpowiadaj tylko w grupach z groupAllowFrom lub jawnie skonfigurowanych w groups.<chat_id> |
"disabled" | Wyłącz wszystkie wiadomości grupowe; jawne wpisy groups.<chat_id> tego nie nadpisują |
allowlist
Wymaganie wzmianki (channels.feishu.requireMention):
true- wymagaj @wzmianki (domyślnie)false- odpowiadaj bez @wzmianki- Nadpisanie dla grupy:
channels.feishu.groups.<chat_id>.requireMention - Wzmianki rozgłoszeniowe
@alli@_allnie są traktowane jako wzmianki o bocie. Wiadomość, która zawiera zarówno@all, jak i bezpośrednią wzmiankę o bocie, nadal liczy się jako wzmianka o bocie.
Przykłady konfiguracji grup
Zezwól na wszystkie grupy, bez wymaganej @wzmianki
Zezwól na wszystkie grupy, nadal wymagaj @wzmianki
Zezwól tylko na konkretne grupy
allowlist możesz także dopuścić grupę, dodając jawny wpis groups.<chat_id>. Jawne wpisy nie nadpisują groupPolicy: "disabled". Domyślne wartości z symbolem wieloznacznym w groups.* konfigurują pasujące grupy, ale same ich nie dopuszczają.
Ogranicz nadawców w grupie
Uzyskaj identyfikatory grup/użytkowników
Identyfikatory grup (chat_id, format: oc_xxx)
Otwórz grupę w Feishu/Lark, kliknij ikonę menu w prawym górnym rogu i przejdź do Ustawienia. Identyfikator grupy (chat_id) jest podany na stronie ustawień.

Identyfikatory użytkowników (open_id, format: ou_xxx)
Uruchom Gateway, wyślij DM do bota, a następnie sprawdź logi:
open_id w danych wyjściowych logu. Możesz też sprawdzić oczekujące prośby o sparowanie:
Typowe polecenia
| Polecenie | Opis |
|---|---|
/status | Pokaż status bota |
/reset | Zresetuj bieżącą sesję |
/model | Pokaż lub przełącz model AI |
Feishu/Lark nie obsługuje natywnych menu poleceń ukośnikowych, więc wysyłaj je jako zwykłe wiadomości tekstowe.
Rozwiązywanie problemów
Bot nie odpowiada w czatach grupowych
- Upewnij się, że bot został dodany do grupy
- Upewnij się, że używasz @wzmianki o bocie (domyślnie wymagane)
- Sprawdź, czy
groupPolicynie ma wartości"disabled" - Sprawdź logi:
openclaw logs --follow
Bot nie odbiera wiadomości
- Upewnij się, że bot został opublikowany i zatwierdzony w Feishu Open Platform / Lark Developer
- Upewnij się, że subskrypcja zdarzeń obejmuje
im.message.receive_v1 - Upewnij się, że wybrano połączenie trwałe (WebSocket)
- Upewnij się, że przyznano wszystkie wymagane zakresy uprawnień
- Upewnij się, że Gateway działa:
openclaw gateway status - Sprawdź logi:
openclaw logs --follow
Konfiguracja QR nie reaguje w aplikacji mobilnej Feishu
- Uruchom konfigurację ponownie:
openclaw channels login --channel feishu - Wybierz konfigurację ręczną
- W Feishu Open Platform utwórz aplikację własną i skopiuj jej App ID oraz App Secret
- Wklej te poświadczenia do kreatora konfiguracji
Wyciekł App Secret
- Zresetuj App Secret w Feishu Open Platform / Lark Developer
- Zaktualizuj wartość w swojej konfiguracji
- Uruchom ponownie Gateway:
openclaw gateway restart
Konfiguracja zaawansowana
Wiele kont
defaultAccount kontroluje, które konto jest używane, gdy wychodzące API nie określają accountId.
accounts.<id>.tts używa tego samego kształtu co messages.tts i jest głęboko scalane z
globalną konfiguracją TTS, dzięki czemu konfiguracje Feishu z wieloma botami mogą zachować współdzielone
poświadczenia dostawcy globalnie, nadpisując tylko głos, model, personę lub tryb automatyczny
dla danego konta.
Limity wiadomości
textChunkLimit- rozmiar wychodzącego fragmentu tekstu (domyślnie:2000znaków)mediaMaxMb- limit przesyłania/pobierania multimediów (domyślnie:30MB)
Strumieniowanie
Feishu/Lark obsługuje odpowiedzi strumieniowe przez interaktywne karty. Po włączeniu bot aktualizuje kartę w czasie rzeczywistym podczas generowania tekstu.streaming: false, aby wysłać pełną odpowiedź w jednej wiadomości. blockStreaming jest domyślnie wyłączone; włącz je tylko wtedy, gdy chcesz wysyłać ukończone bloki asystenta przed końcową odpowiedzią.
Optymalizacja limitów
Zmniejsz liczbę wywołań API Feishu/Lark za pomocą dwóch opcjonalnych flag:typingIndicator(domyślnietrue): ustawfalse, aby pominąć wywołania reakcji pisaniaresolveSenderNames(domyślnietrue): ustawfalse, aby pominąć wyszukiwanie profili nadawców
Sesje ACP
Feishu/Lark obsługuje ACP dla DM-ów i wiadomości w wątkach grupowych. ACP w Feishu/Lark działa przez polecenia tekstowe - nie ma natywnych menu poleceń ukośnikowych, więc używaj wiadomości/acp ... bezpośrednio w rozmowie.
Trwałe powiązanie ACP
Uruchom ACP z czatu
W DM-ie lub wątku Feishu/Lark:--thread here działa dla DM-ów i wiadomości wątków Feishu/Lark. Kolejne wiadomości w powiązanej rozmowie są kierowane bezpośrednio do tej sesji ACP.
Routing wielu agentów
Użyjbindings, aby kierować DM-y lub grupy Feishu/Lark do różnych agentów.
match.channel:"feishu"match.peer.kind:"direct"(DM) lub"group"(czat grupowy)match.peer.id: Open ID użytkownika (ou_xxx) lub identyfikator grupy (oc_xxx)
Izolacja agentów dla poszczególnych użytkowników (dynamiczne tworzenie agentów)
WłączdynamicAgentCreation, aby automatycznie tworzyć izolowane instancje agentów dla każdego użytkownika DM. Każdy użytkownik otrzymuje własne:
- Niezależny katalog workspace
- Osobne
USER.md/SOUL.md/MEMORY.md - Prywatną historię rozmów
- Izolowane Skills i stan
Dynamiczne powiązania obejmują znormalizowane
accountId Feishu, więc konta domyślne i nazwane kierują każdego nadawcę do właściwego agenta dynamicznego.Jeśli nazwane konto utworzyło nieskopowanego agenta dynamicznego w starszej wersji, ten agent legacy nadal wlicza się do maxAgents. Upewnij się, że nie jest używany przez konto domyślne, zanim go usuniesz, albo tymczasowo zwiększ maxAgents; OpenClaw nie może bezpiecznie wywnioskować, które konto jest właścicielem niejednoznacznego stanu legacy.Szybka konfiguracja
Jak to działa
Gdy nowy użytkownik wysyła pierwszy DM:- Kanał generuje unikalne
agentId:feishu-{user_open_id}dla konta domyślnego albo ograniczony skrót tożsamości z prefiksem konta dla konta nazwanego - Tworzy nowy workspace w ścieżce
workspaceTemplate - Rejestruje agenta i tworzy powiązanie dla tego użytkownika
- Pomocnik workspace zapewnia pliki inicjalizacyjne (
AGENTS.md,SOUL.md,USER.mditd.) przy pierwszym dostępie - Kieruje wszystkie przyszłe wiadomości od tego użytkownika do jego dedykowanego agenta
Opcje konfiguracji
| Ustawienie | Opis | Domyślnie |
|---|---|---|
channels.feishu.dynamicAgentCreation.enabled | Włącz automatyczne tworzenie agentów na użytkownika | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate | Szablon ścieżki dla dynamicznych obszarów roboczych agentów | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate | Szablon nazwy katalogu agenta | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents | Maksymalna liczba dynamicznych agentów do utworzenia | bez ograniczeń |
{agentId}- wygenerowany identyfikator agenta (np.feishu-ou_xxxxxxlubfeishu-support-<identity_digest>){userId}- Feishuopen_idnadawcy (np.ou_xxxxxx)
Zakres sesji
session.dmScope kontroluje sposób mapowania wiadomości bezpośrednich na sesje agentów. To jest ustawienie globalne, które wpływa na wszystkie kanały.
| Wartość | Zachowanie | Najlepsze dla |
|---|---|---|
"main" | DM każdego użytkownika mapuje się na główną sesję jego agenta | Boty jednego użytkownika, gdy chcesz automatycznie ładować USER.md / SOUL.md |
"per-channel-peer" | Każda kombinacja (kanał + użytkownik) otrzymuje osobną sesję | Publiczne boty wieloużytkownikowe wymagające silniejszej izolacji |
"per-account-channel-peer" | Każda kombinacja (konto + kanał + użytkownik) otrzymuje osobną sesję | Boty wielokontowe wymagające izolacji sesji na poziomie konta |
"main" włącza automatyczne ładowanie plików startowych (USER.md, SOUL.md, MEMORY.md), ale oznacza, że wszystkie DM we wszystkich kanałach współdzielą ten sam wzorzec klucza sesji. W przypadku publicznych botów wieloużytkownikowych, gdzie izolacja jest ważniejsza niż automatyczne ładowanie plików startowych, rozważ "per-channel-peer" i zarządzaj plikami startowymi ręcznie.
Użyj
"per-account-channel-peer", gdy nazwane konta Feishu powinny zachowywać osobne sesje dla tego samego nadawcy. Dynamiczne powiązania zachowują zakres konta.Typowe wdrożenie wieloużytkownikowe
Weryfikacja
Sprawdź logi Gateway, aby potwierdzić, że dynamiczne tworzenie działa:Uwagi
- Izolacja obszaru roboczego: każdy użytkownik otrzymuje własny katalog obszaru roboczego i instancję agenta. Użytkownicy nie widzą historii rozmów ani plików innych użytkowników w normalnym przepływie wiadomości.
- Granica bezpieczeństwa: to mechanizm izolacji kontekstu wiadomości, a nie granica bezpieczeństwa między wrogimi współdzierżawcami. Proces agenta i środowisko hosta są współdzielone.
bindingspowinno być puste: dynamiczni agenci automatycznie rejestrują własne powiązania- Ścieżka aktualizacji: istniejące ręczne powiązania nadal działają równolegle z dynamicznymi agentami
session.dmScopejest globalne: wpływa to na wszystkie kanały, nie tylko Feishu
Dokumentacja konfiguracji
Pełna konfiguracja: Konfiguracja Gateway| Ustawienie | Opis | Domyślnie |
|---|---|---|
channels.feishu.enabled | Włącz/wyłącz kanał | true |
channels.feishu.domain | Domena API (feishu lub lark) | feishu |
channels.feishu.connectionMode | Transport zdarzeń (websocket lub webhook) | websocket |
channels.feishu.defaultAccount | Domyślne konto dla routingu wychodzącego | default |
channels.feishu.verificationToken | Wymagane w trybie Webhook | - |
channels.feishu.encryptKey | Wymagane w trybie Webhook | - |
channels.feishu.webhookPath | Ścieżka trasy Webhook | /feishu/events |
channels.feishu.webhookHost | Host powiązania Webhook | 127.0.0.1 |
channels.feishu.webhookPort | Port powiązania Webhook | 3000 |
channels.feishu.accounts.<id>.appId | ID aplikacji | - |
channels.feishu.accounts.<id>.appSecret | Sekret aplikacji | - |
channels.feishu.accounts.<id>.domain | Nadpisanie domeny dla konta | feishu |
channels.feishu.accounts.<id>.tts | Nadpisanie TTS dla konta | messages.tts |
channels.feishu.dmPolicy | Zasady DM | pairing |
channels.feishu.allowFrom | Lista dozwolonych DM (lista open_id) | - |
channels.feishu.groupPolicy | Zasady grup | allowlist |
channels.feishu.groupAllowFrom | Lista dozwolonych grup | - |
channels.feishu.requireMention | Wymagaj @wzmianki w grupach | true |
channels.feishu.groups.<chat_id>.requireMention | Nadpisanie @wzmianki dla grupy; jawne identyfikatory dopuszczają też grupę w trybie listy dozwolonych | dziedziczone |
channels.feishu.groups.<chat_id>.enabled | Włącz/wyłącz konkretną grupę | true |
channels.feishu.dynamicAgentCreation.enabled | Włącz automatyczne tworzenie agentów na użytkownika | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate | Szablon ścieżki dla dynamicznych obszarów roboczych agentów | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate | Szablon nazwy katalogu agenta | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents | Maksymalna liczba dynamicznych agentów do utworzenia | bez ograniczeń |
channels.feishu.textChunkLimit | Rozmiar fragmentu wiadomości | 2000 |
channels.feishu.mediaMaxMb | Limit rozmiaru mediów | 30 |
channels.feishu.streaming | Wyjście kart strumieniowych | true |
channels.feishu.blockStreaming | Strumieniowanie odpowiedzi w ukończonych blokach | false |
channels.feishu.typingIndicator | Wysyłaj reakcje pisania | true |
channels.feishu.resolveSenderNames | Rozwiązuj wyświetlane nazwy nadawców | true |
channels.feishu.tools.bitable | Włącz narzędzia Bitable/Base | true |
channels.feishu.tools.base | Alias dla channels.feishu.tools.bitable; jawne bitable wygrywa, gdy ustawione są oba | true |
channels.feishu.accounts.<id>.tools.bitable | Bramka narzędzi Bitable/Base dla konta | dziedziczone |
channels.feishu.accounts.<id>.tools.base | Alias dla tools.bitable dla konta | dziedziczone |
Obsługiwane typy wiadomości
Odbieranie
- ✅ Tekst
- ✅ Tekst sformatowany (post)
- ✅ Obrazy
- ✅ Pliki
- ✅ Audio
- ✅ Wideo/media
- ✅ Naklejki
file_key. Gdy skonfigurowane jest tools.media.audio, OpenClaw pobiera zasób notatki głosowej i uruchamia współdzieloną transkrypcję audio przed turą agenta, dzięki czemu agent otrzymuje transkrypcję wypowiedzi. Jeśli Feishu zawiera tekst transkrypcji bezpośrednio w ładunku audio, ten tekst jest używany bez kolejnego wywołania ASR. Bez dostawcy transkrypcji audio agent nadal otrzymuje symbol zastępczy <media:audio> oraz zapisany załącznik, a nie surowy ładunek zasobu Feishu.
Wysyłanie
- ✅ Tekst
- ✅ Obrazy
- ✅ Pliki
- ✅ Audio
- ✅ Wideo/media
- ✅ Karty interaktywne (w tym aktualizacje strumieniowe)
- ⚠️ Tekst sformatowany (formatowanie w stylu posta; nie obsługuje pełnych możliwości autorskich Feishu/Lark)
audio i wymagają
przesłania multimediów Ogg/Opus (file_type: "opus"). Istniejące multimedia .opus i .ogg
są wysyłane bezpośrednio jako natywne audio. MP3/WAV/M4A i inne prawdopodobne formaty audio są
transkodowane do Ogg/Opus 48 kHz za pomocą ffmpeg tylko wtedy, gdy odpowiedź żąda dostarczenia głosowego
(audioAsVoice / narzędzie wiadomości asVoice, w tym odpowiedzi TTS w formie notatki głosowej).
Zwykłe załączniki MP3 pozostają zwykłymi plikami. Jeśli brakuje ffmpeg lub
konwersja się nie powiedzie, OpenClaw wraca do załącznika plikowego i rejestruje powód.
Wątki i odpowiedzi
- ✅ Odpowiedzi w linii
- ✅ Odpowiedzi w wątku
- ✅ Odpowiedzi z mediami zachowują świadomość wątku podczas odpowiadania na wiadomość w wątku
groupSessionScope: "group_topic" i "group_topic_sender" natywne
grupy tematów Feishu/Lark używają zdarzenia thread_id (omt_*) jako kanonicznego
klucza sesji tematu. Jeśli natywne zdarzenie rozpoczynające temat pomija thread_id, OpenClaw
uzupełnia je z Feishu przed skierowaniem tury. Zwykłe odpowiedzi grupowe, które
OpenClaw przekształca w wątki, nadal używają identyfikatora wiadomości głównej odpowiedzi (om_*), aby
pierwsza tura i tura uzupełniająca pozostały w tej samej sesji.
Powiązane
- Przegląd kanałów - wszystkie obsługiwane kanały
- Parowanie - przepływ uwierzytelniania i parowania w DM
- Grupy - zachowanie czatu grupowego i bramkowanie wzmianek
- Routing kanałów - routing sesji dla wiadomości
- Bezpieczeństwo - model dostępu i utwardzanie