Regional platforms
Feishu
OpenClaw łączy się z Feishu/Lark (kompleksową platformą współpracy) za pośrednictwem oficjalnego pluginu @openclaw/feishu: wiadomości prywatne z botem, czaty grupowe, strumieniowe odpowiedzi w kartach oraz narzędzia Feishu do dokumentów, wiki, dysku i Bitable.
Stan: gotowe do użytku produkcyjnego w przypadku wiadomości prywatnych z botem i czatów grupowych. WebSocket jest domyślnym transportem zdarzeń (publiczny adres URL nie jest wymagany); tryb webhooka jest opcjonalny.
Szybki start
Uruchom kreator konfiguracji kanału
openclaw channels login --channel feishuSpowoduje to zainstalowanie pluginu @openclaw/feishu, jeśli go brakuje, a następnie przeprowadzenie przez konfigurację:
- Konfiguracja ręczna: wklej App ID i App Secret z Feishu Open Platform (
https://open.feishu.cn) lub Lark Developer (https://open.larksuite.com). - Konfiguracja za pomocą kodu QR: zeskanuj kod QR w aplikacji Feishu, aby automatycznie utworzyć bota. Ten proces ogranicza wiadomości prywatne do własnego konta (
dmPolicy: "allowlist"z własnymopen_id).
Kreator zapyta również o domenę API (Feishu lub Lark) oraz zasady grup. Jeśli krajowa aplikacja mobilna Feishu nie reaguje na kod QR, uruchom konfigurację ponownie i wybierz konfigurację ręczną.
Po zakończeniu konfiguracji uruchom ponownie Gateway, aby zastosować zmiany
openclaw gateway restartKontrola dostępu
Wiadomości prywatne
Skonfiguruj channels.feishu.dmPolicy (domyślnie: pairing), aby określić, kto może wysyłać botowi wiadomości prywatne:
| Wartość | Zachowanie |
|---|---|
"pairing" |
Nieznani użytkownicy otrzymują kod parowania; zatwierdzenie odbywa się przez CLI |
"allowlist" |
Rozmawiać mogą tylko użytkownicy wymienieni w allowFrom |
"open" |
Publiczne wiadomości prywatne; walidacja konfiguracji wymaga, aby allowFrom zawierało "*". Wpisy inne niż symbole wieloznaczne nadal zawężają dostęp |
Zatwierdzanie żądania parowania:
openclaw pairing list feishuopenclaw pairing approve feishu <CODE>Czaty grupowe
Zasady grup (channels.feishu.groupPolicy, domyślnie: allowlist):
| Wartość | Zachowanie |
|---|---|
"open" |
Odpowiadanie na wszystkie wiadomości w grupach |
"allowlist" |
Odpowiadanie tylko w grupach wymienionych w groupAllowFrom lub jawnie skonfigurowanych w groups.<chat_id> |
"disabled" |
Wyłączenie wszystkich wiadomości grupowych; jawne wpisy groups.<chat_id> nie zastępują tego ustawienia |
Wymóg wzmianki (channels.feishu.requireMention):
- Domyślnie: wymagana jest @wzmianka, z wyjątkiem sytuacji, gdy obowiązującą zasadą grup jest
"open"; wtedy wartością domyślną jestfalse, dzięki czemu wiadomości, które nie mogą zawierać wzmianek (na przykład obrazy), nadal docierają do agenta. - Aby zastąpić to ustawienie, jawnie ustaw
truelubfalse; ustawienie dla poszczególnych grup:channels.feishu.groups.<chat_id>.requireMention. - Wzmianki służące wyłącznie do rozgłaszania,
@alli@_all, nie są traktowane jako wzmianki o bocie. Wiadomość zawierająca zarówno wzmiankę@all, jak i bezpośrednią wzmiankę o bocie nadal jest uznawana za wzmiankę o bocie.
Przykłady konfiguracji grup
Zezwalanie na wszystkie grupy bez wymagania @wzmianki
{ channels: { feishu: { groupPolicy: "open", // requireMention ma domyślnie wartość false przy ustawieniu "open" }, },}Zezwalanie na wszystkie grupy z nadal wymaganą @wzmianką
{ channels: { feishu: { groupPolicy: "open", requireMention: true, }, },}Zezwalanie tylko na określone grupy
{ channels: { feishu: { groupPolicy: "allowlist", // Identyfikatory grup mają postać: oc_xxx groupAllowFrom: ["oc_xxx", "oc_yyy"], }, },}W trybie allowlist można również dopuścić grupę, dodając jawny wpis groups.<chat_id>. Jawne wpisy nie zastępują groupPolicy: "disabled". Domyślne ustawienia z symbolem wieloznacznym w groups.* konfigurują pasujące grupy, ale same ich nie dopuszczają.
{ channels: { feishu: { groupPolicy: "allowlist", groups: { oc_xxx: { requireMention: false, }, }, }, },}Ograniczanie nadawców w grupie
{ channels: { feishu: { groupPolicy: "allowlist", groupAllowFrom: ["oc_xxx"], groups: { oc_xxx: { // Identyfikatory open_id użytkowników mają postać: ou_xxx allowFrom: ["ou_user1", "ou_user2"], }, }, }, },}channels.feishu.groupSenderAllowFrom ustawia tę samą listę dozwolonych nadawców dla wszystkich grup; ustawienie allowFrom dla konkretnej grupy ma pierwszeństwo.
Uzyskiwanie identyfikatorów grup i 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 Settings. Identyfikator grupy (chat_id) znajduje się na stronie ustawień.

Identyfikatory użytkowników (open_id, format: ou_xxx)
Uruchom Gateway, wyślij botowi wiadomość prywatną, a następnie sprawdź dzienniki:
openclaw logs --followW danych wyjściowych dziennika wyszukaj open_id. Można również sprawdzić oczekujące żądania parowania:
openclaw pairing list feishuTypowe polecenia
| Polecenie | Opis |
|---|---|
/status |
Wyświetla stan bota |
/reset |
Resetuje bieżącą sesję |
/model |
Wyświetla lub przełącza model AI |
Rozwiązywanie problemów
Bot nie odpowiada na czatach grupowych
- Upewnij się, że bot został dodany do grupy
- Upewnij się, że użyto @wzmianki o bocie (domyślnie wymagane)
- Sprawdź, czy
groupPolicynie ma wartości"disabled" - Sprawdź dzienniki:
openclaw logs --follow
Bot nie otrzymuje 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 persistent connection (WebSocket)
- Upewnij się, że przyznano wszystkie wymagane zakresy uprawnień
- Upewnij się, że Gateway działa:
openclaw gateway status - Sprawdź dzienniki:
openclaw logs --follow
Konfiguracja za pomocą kodu QR nie wywołuje reakcji 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 dane uwierzytelniające w kreatorze konfiguracji
Wyciek App Secret
- Zresetuj App Secret w Feishu Open Platform / Lark Developer
- Zaktualizuj wartość w konfiguracji
- Uruchom ponownie Gateway:
openclaw gateway restart
Konfiguracja zaawansowana
Wiele kont
{ channels: { feishu: { defaultAccount: "main", accounts: { main: { appId: "cli_xxx", appSecret: "xxx", name: "Główny bot", tts: { providers: { openai: { voice: "shimmer" }, }, }, }, backup: { appId: "cli_yyy", appSecret: "yyy", name: "Bot zapasowy", enabled: false, }, }, }, },}defaultAccount określa, które konto jest używane, gdy wychodzące interfejsy API nie podają accountId. Wpisy kont dziedziczą ustawienia najwyższego poziomu; większość kluczy najwyższego poziomu można zastąpić dla poszczególnych kont.
accounts.<id>.tts ma taką samą strukturę jak messages.tts i jest głęboko scalane z globalną konfiguracją TTS, dzięki czemu konfiguracje Feishu z wieloma botami mogą przechowywać wspólne dane uwierzytelniające dostawców globalnie, zastępując dla poszczególnych kont tylko głos, model, personę lub tryb automatyczny.
Limity wiadomości
textChunkLimit— rozmiar fragmentu tekstu wychodzącego (domyślnie:4000znaków)streaming.chunkMode—"length"(domyślnie) dzieli tekst po osiągnięciu limitu;"newline"preferuje granice nowych wierszymediaMaxMb— limit wysyłania i pobierania multimediów (domyślnie:30MB)
Przesyłanie strumieniowe
Feishu/Lark obsługuje odpowiedzi strumieniowe za pomocą kart interaktywnych (interfejs API przesyłania strumieniowego Card Kit). Po włączeniu bot aktualizuje kartę w czasie rzeczywistym podczas generowania tekstu.
{ channels: { feishu: { streaming: { mode: "partial", // strumieniowe dane wyjściowe w karcie (domyślnie: "partial") block: { enabled: true }, // włącza przesyłanie strumieniowe ukończonych bloków }, }, },}Ustaw streaming.mode: "off", aby wysyłać pełną odpowiedź w jednej wiadomości; renderMode: "raw" (zwykły tekst zamiast kart) również wyłącza karty strumieniowe. streaming.block.enabled jest domyślnie wyłączone; należy je włączyć tylko wtedy, gdy ukończone bloki asystenta mają być wysyłane przed odpowiedzią końcową. Starsza wartość logiczna streaming oraz płaskie klucze blockStreaming / blockStreamingCoalesce / chunkMode są migrowane do tej zagnieżdżonej struktury za pomocą openclaw doctor --fix.
Optymalizacja limitu użycia
Liczbę wywołań interfejsu API Feishu/Lark można ograniczyć za pomocą dwóch opcjonalnych flag:
typingIndicator(domyślnietrue): ustawfalse, aby pomijać wywołania reakcji sygnalizującej pisanieresolveSenderNames(domyślnietrue): ustawfalse, aby pomijać wyszukiwanie profilu nadawcy
{ channels: { feishu: { typingIndicator: false, resolveSenderNames: false, }, },}Zakres sesji grupowej i wątki tematyczne
channels.feishu.groupSessionScope (na najwyższym poziomie, dla poszczególnych kont lub grup) określa sposób mapowania wiadomości grupowych na sesje agenta:
| Wartość | Sesja |
|---|---|
"group" (domyślnie) |
Jedna sesja na czat grupowy |
"group_sender" |
Jedna sesja na każdą parę (grupa + nadawca) |
"group_topic" |
Jedna sesja na wątek tematyczny; w razie braku używana jest sesja grupowa |
"group_topic_sender" |
Jedna sesja na każdą parę (temat + nadawca); w razie braku używana jest para (grupa + nadawca) |
W przypadku zakresów tematycznych natywne grupy tematyczne Feishu/Lark używają zdarzenia thread_id (omt_*) jako kanonicznego klucza sesji tematu. Jeśli natywne zdarzenie rozpoczynające temat nie zawiera thread_id, OpenClaw pobiera tę wartość z Feishu przed przekierowaniem tury. Zwykłe odpowiedzi grupowe przekształcane przez OpenClaw w wątki nadal używają identyfikatora wiadomości głównej odpowiedzi (om_*), dzięki czemu pierwsza i kolejne tury pozostają w tej samej sesji.
Ustaw replyInThread: "enabled" (na najwyższym poziomie lub dla poszczególnych grup), aby odpowiedzi bota tworzyły lub kontynuowały wątek tematyczny Feishu zamiast odpowiadać bezpośrednio. topicSessionMode jest przestarzałym poprzednikiem groupSessionScope; preferowane jest groupSessionScope.
Narzędzia przestrzeni roboczej Feishu
Plugin zawiera narzędzia agenta do dokumentów Feishu, czatów, bazy wiedzy, pamięci masowej w chmurze, uprawnień i Bitable, a także odpowiadające im Skills (feishu-doc, feishu-drive, feishu-perm, feishu-wiki). Rodziny narzędzi są kontrolowane przez channels.feishu.tools:
| Klucz | Narzędzia | Domyślnie |
|---|---|---|
tools.doc |
Operacje na dokumentach feishu_doc |
true |
tools.chat |
Informacje o czacie feishu_chat i zapytania o członków |
true |
tools.wiki |
Baza wiedzy feishu_wiki (wymaga doc) |
true |
tools.drive |
Przechowywanie w chmurze feishu_drive |
true |
tools.perm |
Zarządzanie uprawnieniami feishu_perm |
false (wrażliwe) |
tools.scopes |
Diagnostyka zakresów aplikacji feishu_app_scopes |
true |
tools.bitable |
Operacje Bitable/Base feishu_bitable_* |
true |
tools.base jest aliasem tools.bitable; gdy ustawiono obie wartości, pierwszeństwo ma jawna wartość bitable. Ograniczenia dla poszczególnych kont znajdują się w accounts.<id>.tools.
Należy przyznać drive:drive.metadata:readonly na potrzeby bezpośrednich wyszukiwań feishu_drive info poza katalogiem głównym,
chyba że aplikacja ma już pełny zakres drive:drive. Bez żadnego z tych zakresów info
zachowuje dotychczasowe wyszukiwanie w katalogu głównym dostępne przez drive:drive:readonly.
Sesje ACP
Feishu/Lark obsługuje ACP dla wiadomości prywatnych i wiadomości w wątkach grupowych. ACP w Feishu/Lark jest sterowane poleceniami tekstowymi — nie ma natywnych menu poleceń z ukośnikiem, dlatego wiadomości /acp ... należy wpisywać bezpośrednio w rozmowie.
Trwałe powiązanie ACP
{ 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" }, }, ],}Uruchamianie ACP z czatu
W wiadomości prywatnej lub wątku Feishu/Lark:
/acp spawn codex --thread here--thread here działa w wiadomościach prywatnych i wiadomościach w wątkach Feishu/Lark. Kolejne wiadomości w powiązanej rozmowie są kierowane bezpośrednio do tej sesji ACP.
Kierowanie do wielu agentów
Należy użyć bindings, aby kierować wiadomości prywatne lub grupy Feishu/Lark do różnych agentów.
{ 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" }, }, }, ],}Pola kierowania:
match.channel:"feishu"match.peer.kind:"direct"(wiadomość prywatna) lub"group"(czat grupowy)match.peer.id: identyfikator Open ID użytkownika (ou_xxx) lub identyfikator grupy (oc_xxx)
Wskazówki dotyczące wyszukiwania zawiera sekcja Uzyskiwanie identyfikatorów grup i użytkowników.
Izolacja agenta dla każdego użytkownika (dynamiczne tworzenie agentów)
Należy włączyć dynamicAgentCreation, aby automatycznie tworzyć izolowane instancje agentów dla każdego użytkownika wiadomości prywatnych. Każdy użytkownik otrzymuje własne:
- Niezależny katalog przestrzeni roboczej
- Oddzielne
USER.md/SOUL.md/MEMORY.md - Prywatną historię rozmów
- Izolowane umiejętności i stan
Jest to niezbędne w przypadku publicznych botów, gdy każdy użytkownik ma korzystać z własnego, prywatnego asystenta AI.
Szybka konfiguracja
{ channels: { feishu: { dmPolicy: "open", allowFrom: ["*"], dynamicAgentCreation: { enabled: true, workspaceTemplate: "~/.openclaw/workspace-{agentId}", agentDirTemplate: "~/.openclaw/agents/{agentId}/agent", }, }, }, session: { // Kluczowe: ustawia wiadomości prywatne każdego użytkownika jako jego „sesję główną” // Automatycznie wczytuje USER.md / SOUL.md / MEMORY.md // Aby uzyskać silniejszą izolację, należy zamiast tego użyć "per-channel-peer" dmScope: "main", },}Jak to działa
Gdy nowy użytkownik wysyła pierwszą wiadomość prywatną:
- Kanał generuje unikatowy
agentId:feishu-{user_open_id}dla konta domyślnego albo ograniczony skrót tożsamości z prefiksem konta dla konta nazwanego - Tworzy nową przestrzeń roboczą w ścieżce
workspaceTemplate - Rejestruje agenta i tworzy powiązanie dla tego użytkownika
- Przy pierwszym dostępie pomocnik przestrzeni roboczej zapewnia obecność plików inicjalizacyjnych (
AGENTS.md,SOUL.md,USER.mditd.) - Kieruje wszystkie przyszłe wiadomości tego użytkownika do jego dedykowanego agenta
Opcje konfiguracji
| Ustawienie | Opis | Domyślnie |
|---|---|---|
channels.feishu.dynamicAgentCreation.enabled |
Włącza automatyczne tworzenie agenta dla każdego użytkownika | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate |
Szablon ścieżki przestrzeni roboczych dynamicznych 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ń |
Zmienne szablonu:
{agentId}— wygenerowany identyfikator agenta (np.feishu-ou_xxxxxxlubfeishu-support-<identity_digest>){userId}— identyfikator open_id nadawcy w Feishu (np.ou_xxxxxx)
Zakres sesji
session.dmScope określa sposób mapowania wiadomości prywatnych na sesje agentów. Jest to ustawienie globalne, które wpływa na wszystkie kanały.
| Wartość | Zachowanie | Najlepsze zastosowanie |
|---|---|---|
"main" |
Wiadomości prywatne każdego użytkownika są mapowane na główną sesję jego agenta | Boty dla jednego użytkownika, w których USER.md / SOUL.md mają być wczytywane automatycznie |
"per-peer" |
Każdy rozmówca otrzymuje oddzielną sesję (niezależnie od kanału) | Izolacja oparta wyłącznie na tożsamości nadawcy |
"per-channel-peer" |
Każda kombinacja (kanał + użytkownik) otrzymuje oddzielną sesję | Publiczne boty dla wielu użytkowników wymagające silniejszej izolacji |
"per-account-channel-peer" |
Każda kombinacja (konto + kanał + użytkownik) otrzymuje oddzielną sesję | Boty obsługujące wiele kont, wymagające izolacji sesji na poziomie konta |
Kompromis: użycie "main" umożliwia automatyczne wczytywanie plików inicjalizacyjnych (USER.md, SOUL.md, MEMORY.md), ale oznacza, że wszystkie wiadomości prywatne we wszystkich kanałach korzystają z tego samego wzorca klucza sesji. W przypadku publicznych botów dla wielu użytkowników, w których izolacja jest ważniejsza niż automatyczne wczytywanie plików inicjalizacyjnych, warto rozważyć "per-channel-peer" i zarządzać plikami inicjalizacyjnymi ręcznie.
Typowe wdrożenie dla wielu użytkowników
{ channels: { feishu: { appId: "cli_xxx", appSecret: "xxx", dmPolicy: "open", allowFrom: ["*"], groupPolicy: "open", requireMention: true, dynamicAgentCreation: { enabled: true, workspaceTemplate: "~/.openclaw/workspace-{agentId}", agentDirTemplate: "~/.openclaw/agents/{agentId}/agent", }, }, }, session: { // Wybierz dmScope zgodnie z potrzebami dotyczącymi izolacji: // "main" zapewnia automatyczne wczytywanie plików inicjalizacyjnych, a "per-channel-peer" silniejszą izolację dmScope: "main", }, bindings: [], // Puste — dynamiczni agenci tworzą powiązania automatycznie}Weryfikacja
Należy sprawdzić dzienniki Gateway, aby potwierdzić, że dynamiczne tworzenie działa:
feishu: tworzenie dynamicznego agenta "feishu-ou_xxxxxx" dla użytkownika ou_xxxxxx przestrzeń robocza: /home/user/.openclaw/workspace-feishu-ou_xxxxxx katalog agenta: /home/user/.openclaw/agents/feishu-ou_xxxxxx/agentWyświetlenie wszystkich utworzonych przestrzeni roboczych:
ls -la ~/.openclaw/workspace-*Uwagi
- Izolacja przestrzeni roboczej: każdy użytkownik otrzymuje własny katalog przestrzeni roboczej i instancję agenta. W normalnym przepływie wiadomości użytkownicy nie mogą przeglądać historii rozmów ani plików innych użytkowników.
- Granica bezpieczeństwa: jest to mechanizm izolacji kontekstu wiadomości, a nie granica bezpieczeństwa chroniąca przed wrogimi współdzierżawcami. Proces agenta i środowisko hosta są współdzielone.
- Zapisywanie konfiguracji musi pozostać włączone: dynamiczne tworzenie agentów zapisuje agentów i powiązania w konfiguracji; jest pomijane, gdy
channels.feishu.configWritesma wartośćfalse(domyślnie: włączone). bindingspowinno być puste: dynamiczni agenci automatycznie rejestrują własne powiązania- Ścieżka uaktualnienia: 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 | Wartość domyślna |
|---|---|---|
channels.feishu.enabled |
Włącza/wyłącza kanał | true |
channels.feishu.domain |
Domena API (feishu, lark lub bazowy adres URL https://) |
feishu |
channels.feishu.connectionMode |
Transport zdarzeń (websocket lub webhook) |
websocket |
channels.feishu.defaultAccount |
Domyślne konto do routingu wychodzącego | default |
channels.feishu.verificationToken |
Wymagane w trybie webhooka | - |
channels.feishu.encryptKey |
Wymagane w trybie webhooka | - |
channels.feishu.webhookPath |
Ścieżka routingu webhooka | /feishu/events |
channels.feishu.webhookHost |
Host nasłuchiwania webhooka | 127.0.0.1 |
channels.feishu.webhookPort |
Port nasłuchiwania webhooka | 3000 |
channels.feishu.accounts.<id>.appId |
Identyfikator 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 wiadomości prywatnych (pairing, allowlist, open) |
pairing |
channels.feishu.allowFrom |
Lista dozwolonych nadawców wiadomości prywatnych (lista open_id) | - |
channels.feishu.groupPolicy |
Zasady grup (open, allowlist, disabled) |
allowlist |
channels.feishu.groupAllowFrom |
Lista dozwolonych grup | - |
channels.feishu.groupSenderAllowFrom |
Lista dozwolonych nadawców stosowana we wszystkich grupach | - |
channels.feishu.requireMention |
Wymaga wzmianki @ w grupach | true (false, gdy zasada to open) |
channels.feishu.groups.<chat_id>.requireMention |
Nadpisanie wymogu wzmianki @ dla grupy; jawne identyfikatory także dopuszczają grupę w trybie listy dozwolonych | dziedziczone |
channels.feishu.groups.<chat_id>.enabled |
Włącza/wyłącza określoną grupę | true |
channels.feishu.groups.<chat_id>.allowFrom |
Lista dozwolonych nadawców dla grupy (nadpisuje groupSenderAllowFrom) |
- |
channels.feishu.groupSessionScope |
Mapowanie sesji grupowych (group, group_sender, group_topic, group_topic_sender) |
group |
channels.feishu.replyInThread |
Odpowiedzi bota tworzą lub kontynuują wątki tematyczne (disabled, enabled) |
disabled |
channels.feishu.reactionNotifications |
Zdarzenia reakcji przychodzących (off, own, all) |
own |
channels.feishu.dynamicAgentCreation.enabled |
Włącza automatyczne tworzenie agentów dla poszczególnych użytkowników | false |
channels.feishu.dynamicAgentCreation.workspaceTemplate |
Szablon ścieżki obszarów roboczych agentów dynamicznych | ~/.openclaw/workspace-{agentId} |
channels.feishu.dynamicAgentCreation.agentDirTemplate |
Szablon nazwy katalogu agenta | ~/.openclaw/agents/{agentId}/agent |
channels.feishu.dynamicAgentCreation.maxAgents |
Maksymalna liczba agentów dynamicznych do utworzenia | bez ograniczeń |
channels.feishu.textChunkLimit |
Rozmiar fragmentu wiadomości | 4000 |
channels.feishu.streaming.chunkMode |
Dzielenie na fragmenty (length lub newline) |
length |
channels.feishu.mediaMaxMb |
Limit rozmiaru multimediów | 30 |
channels.feishu.renderMode |
Renderowanie odpowiedzi (auto, raw, card) |
auto |
channels.feishu.streaming.mode |
Strumieniowe wysyłanie kart (partial lub off) |
partial |
channels.feishu.streaming.block.enabled |
Strumieniowe wysyłanie odpowiedzi w ukończonych blokach | false |
channels.feishu.typingIndicator |
Wysyła reakcje informujące o pisaniu | true |
channels.feishu.resolveSenderNames |
Ustala wyświetlane nazwy nadawców | true |
channels.feishu.configWrites |
Zezwala kanałowi na zapisywanie konfiguracji (wymagane przez agentów dynamicznych) | true |
channels.feishu.tools.doc |
Włącza narzędzia dokumentów | true |
channels.feishu.tools.chat |
Włącza narzędzia informacji o czacie | true |
channels.feishu.tools.wiki |
Włącza narzędzia bazy wiedzy (wymaga doc) |
true |
channels.feishu.tools.drive |
Włącza narzędzia pamięci masowej w chmurze | true |
channels.feishu.tools.perm |
Włącza narzędzia do zarządzania uprawnieniami | false |
channels.feishu.tools.scopes |
Włącza narzędzie diagnostyczne zakresów aplikacji | true |
channels.feishu.tools.bitable |
Włącza narzędzia Bitable/Base | true |
channels.feishu.tools.base |
Alias dla channels.feishu.tools.bitable; jawne ustawienie bitable ma pierwszeństwo, gdy ustawiono oba |
true |
channels.feishu.accounts.<id>.tools.bitable |
Przełącznik narzędzi Bitable/Base dla konta | dziedziczone |
channels.feishu.accounts.<id>.tools.base |
Alias tools.bitable dla konta |
dziedziczone |
Obsługiwane typy wiadomości
Odbieranie
- ✅ Tekst
- ✅ Tekst sformatowany (post)
- ✅ Obrazy
- ✅ Pliki
- ✅ Dźwięk
- ✅ Wideo/multimedia
- ✅ Naklejki
Przychodzące wiadomości dźwiękowe Feishu/Lark są normalizowane jako symbole zastępcze multimediów zamiast
surowych danych JSON file_key. Gdy skonfigurowano tools.media.audio, OpenClaw
pobiera zasób notatki głosowej i przed turą agenta uruchamia współdzieloną transkrypcję dźwięku,
dzięki czemu agent otrzymuje transkrypcję wypowiedzi. Jeśli Feishu umieszcza
tekst transkrypcji bezpośrednio w ładunku dźwiękowym, jest on używany bez kolejnego
wywołania ASR. Bez dostawcy transkrypcji dźwięku agent nadal otrzymuje
symbol zastępczy <media:audio> wraz z zapisanym załącznikiem, a nie surowy ładunek
zasobu Feishu.
Wysyłanie
- ✅ Tekst
- ✅ Obrazy
- ✅ Pliki
- ✅ Dźwięk
- ✅ Wideo/multimedia
- ✅ Karty interaktywne (w tym aktualizacje strumieniowe)
- ⚠️ Tekst sformatowany (formatowanie w stylu postu; nie obsługuje wszystkich możliwości tworzenia treści Feishu/Lark)
Natywne dymki dźwiękowe Feishu/Lark używają typu wiadomości Feishu audio i wymagają
przesłania multimediów Ogg/Opus (file_type: "opus"). Istniejące multimedia .opus i .ogg
są wysyłane bezpośrednio jako natywny dźwięk. Pliki MP3/WAV/M4A i inne prawdopodobne formaty dźwiękowe są
transkodowane do Ogg/Opus 48 kHz za pomocą ffmpeg tylko wtedy, gdy odpowiedź wymaga dostarczenia
głosowego (audioAsVoice / narzędzie wiadomości asVoice, w tym odpowiedzi TTS jako notatki
głosowe). Zwykłe załączniki MP3 pozostają zwykłymi plikami. Jeśli brakuje ffmpeg lub
konwersja się nie powiedzie, OpenClaw używa załącznika plikowego i zapisuje przyczynę w dzienniku.
Wątki i odpowiedzi
- ✅ Odpowiedzi w tekście
- ✅ Odpowiedzi w wątkach
- ✅ Odpowiedzi multimedialne zachowują powiązanie z wątkiem podczas odpowiadania na wiadomość w wątku
Routing sesji grup tematycznych opisano w sekcji Zakres sesji grupowej i wątki tematyczne.
Powiązane materiały
- Przegląd kanałów - wszystkie obsługiwane kanały
- Parowanie - uwierzytelnianie wiadomości prywatnych i proces parowania
- Grupy - zachowanie czatu grupowego i wymaganie wzmianek
- Routing kanałów - routing sesji dla wiadomości
- Bezpieczeństwo - model dostępu i wzmacnianie zabezpieczeń