channels.*. Obejmuje dostęp DM i grupowy,
konfiguracje wielu kont, bramkowanie wzmiankami oraz klucze poszczególnych kanałów dla Slack, Discord,
Telegram, WhatsApp, Matrix, iMessage i innych dołączonych pluginów kanałów.
Informacje o agentach, narzędziach, środowisku uruchomieniowym Gateway i innych kluczach najwyższego poziomu znajdziesz w
Dokumentacji konfiguracji.
Kanały
Każdy kanał uruchamia się automatycznie, gdy istnieje jego sekcja konfiguracji (chyba że ustawionoenabled: false).
Dostęp DM i grupowy
Wszystkie kanały obsługują zasady DM i zasady grupowe:| Zasada DM | Zachowanie |
|---|---|
pairing (domyślna) | Nieznani nadawcy otrzymują jednorazowy kod parowania; właściciel musi zatwierdzić |
allowlist | Tylko nadawcy w allowFrom (lub sparowanym magazynie zezwoleń) |
open | Zezwalaj na wszystkie przychodzące DM (wymaga allowFrom: ["*"]) |
disabled | Ignoruj wszystkie przychodzące DM |
| Zasada grupowa | Zachowanie |
|---|---|
allowlist (domyślna) | Tylko grupy pasujące do skonfigurowanej listy zezwoleń |
open | Pomijaj grupowe listy zezwoleń (bramkowanie wzmiankami nadal obowiązuje) |
disabled | Blokuj wszystkie wiadomości grupowe/z pokoi |
channels.defaults.groupPolicy ustawia wartość domyślną, gdy groupPolicy dostawcy nie jest ustawione.
Kody parowania wygasają po 1 godzinie. Oczekujące żądania parowania DM są ograniczone do 3 na kanał.
Jeśli blok dostawcy całkowicie nie istnieje (brak channels.<provider>), zasada grupowa środowiska uruchomieniowego wraca do allowlist (fail-closed) z ostrzeżeniem przy uruchomieniu.Nadpisania modelu kanału
Użyjchannels.modelByChannel, aby przypiąć konkretne identyfikatory kanałów lub rozmówców w wiadomościach bezpośrednich do modelu. Wartości akceptują provider/model lub skonfigurowane aliasy modeli. Mapowanie kanału ma zastosowanie, gdy sesja nie ma już nadpisania modelu (na przykład ustawionego przez /model).
Dla rozmów grupowych/wątków kluczami są specyficzne dla kanału identyfikatory grup, identyfikatory tematów lub nazwy kanałów. Dla rozmów w wiadomościach bezpośrednich (DM) kluczami są identyfikatory rozmówców pochodzące z tożsamości nadawcy kanału (nativeDirectUserId, origin.from, origin.to, OriginatingTo, From lub SenderId). Dokładna postać klucza zależy od kanału:
| Kanał | Postać klucza DM | Przykład |
|---|---|---|
| Slack | user:U... | user:U12345 |
| Telegram | surowy identyfikator użytkownika | 123456789 |
| Discord | surowy identyfikator użytkownika | 987654321 |
| numer telefonu lub JID | 15551234567 | |
| Matrix | identyfikator użytkownika Matrix | @user:matrix.org |
| Feishu | feishu:ou_... | feishu:ou_a8b6cab7e945387de5f253775d9b4d85 |
Domyślne ustawienia kanałów i Heartbeat
Użyjchannels.defaults dla współdzielonego zachowania zasad grupowych i Heartbeat u różnych dostawców:
channels.defaults.groupPolicy: zapasowa zasada grupowa, gdygroupPolicyna poziomie dostawcy nie jest ustawione.channels.defaults.contextVisibility: domyślny tryb widoczności dodatkowego kontekstu dla wszystkich kanałów. Wartości:all(domyślnie, uwzględnia cały cytowany/wątkowy/historyczny kontekst),allowlist(uwzględnia tylko kontekst od nadawców z listy zezwoleń),allowlist_quote(tak samo jak allowlist, ale zachowuje jawny kontekst cytatu/odpowiedzi). Nadpisanie dla kanału:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: uwzględniaj zdrowe statusy kanałów w wyjściu Heartbeat.channels.defaults.heartbeat.showAlerts: uwzględniaj statusy zdegradowane/błędów w wyjściu Heartbeat.channels.defaults.heartbeat.useIndicator: renderuj kompaktowe wyjście Heartbeat w stylu wskaźnika.
- Wpisy najwyższego poziomu
bindings[]ztype: "acp"konfigurują trwałe powiązania ACP dla DM i grup WhatsApp. Użyj bezpośredniego numeru E.164 lub JID grupy WhatsApp wmatch.peer.id. Semantyka pól jest wspólna w Agentach ACP.
Wiele kont WhatsApp
Wiele kont WhatsApp
- Polecenia wychodzące domyślnie używają konta
default, jeśli istnieje; w przeciwnym razie pierwszego skonfigurowanego identyfikatora konta (po sortowaniu). - Opcjonalne
channels.whatsapp.defaultAccountnadpisuje ten zapasowy wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta. - Starszy katalog uwierzytelniania Baileys dla jednego konta jest migrowany przez
openclaw doctordowhatsapp/default. - Nadpisania dla konta:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Token bota:
channels.telegram.botTokenlubchannels.telegram.tokenFile(tylko zwykły plik; dowiązania symboliczne są odrzucane), zTELEGRAM_BOT_TOKENjako wartością zapasową dla konta domyślnego. apiRootto tylko korzeń Telegram Bot API. Użyjhttps://api.telegram.orgalbo własnego hostowanego/proxy korzenia, a niehttps://api.telegram.org/bot<TOKEN>;openclaw doctor --fixusuwa przypadkowy końcowy sufiks/bot<TOKEN>.- Opcjonalne
channels.telegram.defaultAccountnadpisuje wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta. - W konfiguracjach wielu kont (2+ identyfikatory kont) ustaw jawne domyślne konto (
channels.telegram.defaultAccountlubchannels.telegram.accounts.default), aby uniknąć zapasowego trasowania;openclaw doctorostrzega, gdy tego brakuje albo jest nieprawidłowe. configWrites: falseblokuje zapisy konfiguracji inicjowane przez Telegram (migracje identyfikatorów supergrup,/config set|unset).- Wpisy najwyższego poziomu
bindings[]ztype: "acp"konfigurują trwałe powiązania ACP dla tematów forum (użyj kanonicznegochatId:topic:topicIdwmatch.peer.id). Semantyka pól jest wspólna w Agentach ACP. - Podglądy strumieni Telegram używają
sendMessage+editMessageText(działa w czatach bezpośrednich i grupowych). - Zasada ponawiania: zobacz Zasadę ponawiania.
Discord
- Token:
channels.discord.token, zDISCORD_BOT_TOKENjako wartością zastępczą dla domyślnego konta. - Bezpośrednie wywołania wychodzące, które podają jawny
tokenDiscord, używają tego tokenu dla wywołania; ustawienia ponawiania i zasad konta nadal pochodzą z wybranego konta w aktywnej migawce środowiska uruchomieniowego. - Opcjonalne
channels.discord.defaultAccountnadpisuje wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta. - Użyj
user:<id>(DM) lubchannel:<id>(kanał gildii) jako celów dostarczania; same numeryczne identyfikatory są odrzucane. - Slugi gildii są pisane małymi literami, ze spacjami zastąpionymi przez
-; klucze kanałów używają nazwy w formie sluga (bez#). Preferuj identyfikatory gildii. - Wiadomości utworzone przez boty są domyślnie ignorowane.
allowBots: trueje włącza; użyjallowBots: "mentions", aby akceptować tylko wiadomości botów, które wspominają bota (własne wiadomości nadal są filtrowane). - Kanały obsługujące przychodzące wiadomości utworzone przez boty mogą używać wspólnej ochrony przed pętlą botów. Ustaw
channels.defaults.botLoopProtectiondla bazowych budżetów par, a następnie nadpisz kanał lub konto tylko wtedy, gdy jedna powierzchnia wymaga innych limitów. channels.discord.guilds.<id>.ignoreOtherMentions(oraz nadpisania kanałów) odrzuca wiadomości, które wspominają innego użytkownika lub rolę, ale nie bota (z wyłączeniem @everyone/@here).channels.discord.mentionAliasesmapuje stabilny tekst wychodzący@handlena identyfikatory użytkowników Discord przed wysłaniem, dzięki czemu znani członkowie zespołu mogą być wspominani deterministycznie nawet wtedy, gdy przejściowy cache katalogu jest pusty. Nadpisania dla poszczególnych kont znajdują się wchannels.discord.accounts.<accountId>.mentionAliases.maxLinesPerMessage(domyślnie 17) dzieli wysokie wiadomości nawet wtedy, gdy mają mniej niż 2000 znaków.channels.discord.suppressEmbedsdomyślnie ma wartośćtrue, więc wychodzące adresy URL nie rozwijają się w podglądy linków Discord, chyba że zostanie to wyłączone. Jawne ładunkiembedsnadal są wysyłane normalnie; wywołania narzędzi dla pojedynczych wiadomości mogą nadpisać to przezsuppressEmbeds.channels.discord.threadBindingssteruje routingiem powiązanym z wątkami Discord:enabled: nadpisanie Discord dla funkcji sesji powiązanych z wątkami (/focus,/unfocus,/agents,/session idle,/session max-ageoraz powiązane dostarczanie/routing)idleHours: nadpisanie Discord dla automatycznego cofnięcia skupienia po braku aktywności w godzinach (0wyłącza)maxAgeHours: nadpisanie Discord dla twardego maksymalnego wieku w godzinach (0wyłącza)spawnSessions: przełącznik dlasessions_spawn({ thread: true })oraz automatycznego tworzenia/powiązania wątków przez ACP thread-spawn (domyślnie:true)defaultSpawnContext: natywny kontekst subagenta dla uruchomień powiązanych z wątkami (domyślnie"fork")
- Wpisy najwyższego poziomu
bindings[]ztype: "acp"konfigurują trwałe powiązania ACP dla kanałów i wątków (użyj identyfikatora kanału/wątku wmatch.peer.id). Semantyka pól jest wspólna w Agentach ACP. channels.discord.ui.components.accentColorustawia kolor akcentu dla kontenerów komponentów Discord v2.channels.discord.agentComponents.ttlMsokreśla, jak długo wysłane callbacki komponentów Discord pozostają zarejestrowane. Wartość domyślna to1800000(30 minut), maksimum to86400000(24 godziny), a nadpisania dla poszczególnych kont znajdują się wchannels.discord.accounts.<accountId>.agentComponents.ttlMs. Dłuższe wartości pozwalają dłużej używać starych przycisków, selektorów i formularzy, więc preferuj najkrótszy TTL pasujący do przepływu pracy.channels.discord.voicewłącza rozmowy na kanałach głosowych Discord oraz opcjonalne nadpisania automatycznego dołączania, LLM i TTS. Konfiguracje Discord tylko tekstowe domyślnie pozostawiają głos wyłączony; ustawchannels.discord.voice.enabled=true, aby go włączyć.channels.discord.voice.modelopcjonalnie nadpisuje model LLM używany dla odpowiedzi na kanałach głosowych Discord.channels.discord.voice.daveEncryptionichannels.discord.voice.decryptionFailureTolerancesą przekazywane do opcji DAVE@discordjs/voice(domyślnietruei24).channels.discord.voice.connectTimeoutMssteruje początkowym oczekiwaniem na Ready@discordjs/voicedla/vc joinoraz prób automatycznego dołączania (domyślnie30000).channels.discord.voice.reconnectGraceMsokreśla, jak długo rozłączona sesja głosowa może wejść w sygnalizację ponownego połączenia, zanim OpenClaw ją zniszczy (domyślnie15000).- Odtwarzanie głosu Discord nie jest przerywane przez zdarzenie rozpoczęcia mówienia innego użytkownika. Aby uniknąć pętli sprzężenia zwrotnego, OpenClaw ignoruje nowe przechwytywanie głosu podczas odtwarzania TTS.
- OpenClaw dodatkowo próbuje odzyskać odbiór głosu przez opuszczenie i ponowne dołączenie do sesji głosowej po powtarzających się niepowodzeniach deszyfrowania.
channels.discord.streamingjest kanonicznym kluczem trybu strumienia. Discord domyślnie używastreaming.mode: "progress", dzięki czemu postęp narzędzi/pracy pojawia się w jednej edytowanej wiadomości podglądu; ustawstreaming.mode: "off", aby to wyłączyć. Starsze wartościstreamModei logicznestreamingpozostają aliasami środowiska uruchomieniowego; uruchomopenclaw doctor --fix, aby przepisać utrwaloną konfigurację.channels.discord.autoPresencemapuje dostępność środowiska uruchomieniowego na obecność bota (healthy => online, degraded => idle, exhausted => dnd) i pozwala na opcjonalne nadpisania tekstu statusu.channels.discord.dangerouslyAllowNameMatchingponownie włącza dopasowywanie po zmiennej nazwie/tagu (awaryjny tryb kompatybilności).channels.discord.execApprovals: natywne dla Discord dostarczanie zatwierdzeń exec i autoryzacja zatwierdzających.enabled:true,falselub"auto"(domyślnie). W trybie automatycznym zatwierdzenia exec aktywują się, gdy zatwierdzający mogą zostać ustaleni zapproverslubcommands.ownerAllowFrom.approvers: identyfikatory użytkowników Discord uprawnionych do zatwierdzania żądań exec. Gdy pominięte, używa wartości zastępczej zcommands.ownerAllowFrom.agentFilter: opcjonalna lista dozwolonych identyfikatorów agentów. Pomiń, aby przekazywać zatwierdzenia dla wszystkich agentów.sessionFilter: opcjonalne wzorce kluczy sesji (podciąg lub regex).target: gdzie wysyłać monity o zatwierdzenie."dm"(domyślnie) wysyła do DM zatwierdzających,"channel"wysyła do kanału źródłowego,"both"wysyła do obu. Gdy cel zawiera"channel", przyciski mogą być używane tylko przez ustalonych zatwierdzających.cleanupAfterResolve: gdytrue, usuwa DM z zatwierdzeniami po zatwierdzeniu, odmowie lub przekroczeniu czasu.
off (brak), own (wiadomości bota, domyślnie), all (wszystkie wiadomości), allowlist (z guilds.<id>.users we wszystkich wiadomościach).
Google Chat
- JSON konta usługi: wbudowany (
serviceAccount) lub oparty na pliku (serviceAccountFile). - SecretRef konta usługi jest również obsługiwany (
serviceAccountRef). - Wartości zastępcze env:
GOOGLE_CHAT_SERVICE_ACCOUNTlubGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Użyj
spaces/<spaceId>lubusers/<userId>jako celów dostarczania. channels.googlechat.dangerouslyAllowNameMatchingponownie włącza dopasowywanie zmiennego podmiotu e-mail (awaryjny tryb kompatybilności).
Slack
- Tryb Socket wymaga zarówno
botToken, jak iappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENjako domyślny awaryjny env konta). - Tryb HTTP wymaga
botTokenorazsigningSecret(na poziomie głównym lub dla konta). socketModeprzekazuje dostrajanie transportu Slack SDK Socket Mode do publicznego API odbiornika Bolt. Używaj go tylko podczas badania timeoutów ping/pong lub zachowania nieaktualnego websocketu.clientPingTimeoutma domyślną wartość15000;serverPingTimeoutipingPongLoggingEnabledsą przekazywane tylko wtedy, gdy są skonfigurowane.botToken,appToken,signingSecretiuserTokenakceptują zwykły tekst lub obiekty SecretRef.- Migawki kont Slack ujawniają pola źródła/statusu dla poszczególnych danych
uwierzytelniających, takie jak
botTokenSource,botTokenStatus,appTokenStatusoraz, w trybie HTTP,signingSecretStatus.configured_unavailableoznacza, że konto jest skonfigurowane przez SecretRef, ale bieżąca ścieżka polecenia/runtime nie mogła rozwiązać wartości sekretu. configWrites: falseblokuje zapisy konfiguracji inicjowane przez Slack.- Opcjonalne
channels.slack.defaultAccountzastępuje wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta. channels.slack.streaming.modejest kanonicznym kluczem trybu strumienia Slack.channels.slack.streaming.nativeTransportkontroluje natywny transport strumieniowania Slack. Starsze wartościstreamMode, logicznestreaminginativeStreamingpozostają aliasami runtime; uruchomopenclaw doctor --fix, aby przepisać utrwaloną konfigurację.unfurlLinksiunfurlMediaprzekazują wartości logiczne rozwijania linków i mediów zchat.postMessageSlack dla odpowiedzi bota.unfurlLinksma domyślną wartośćfalse, aby wychodzące linki bota nie rozwijały się inline, chyba że zostanie to włączone;unfurlMediajest pomijane, chyba że jest skonfigurowane. Ustaw dowolną z tych wartości wchannels.slack.accounts.<accountId>, aby zastąpić wartość najwyższego poziomu dla jednego konta.- Użyj
user:<id>(DM) lubchannel:<id>jako celów dostarczania.
off, own (domyślnie), all, allowlist (z reactionAllowlist).
Izolacja sesji wątku: thread.historyScope działa dla wątku (domyślnie) albo jest współdzielone w kanale. thread.inheritParent kopiuje transkrypt kanału nadrzędnego do nowych wątków.
- Natywne strumieniowanie Slack oraz status wątku w stylu asystenta Slack „pisze…” wymagają docelowego wątku odpowiedzi. DM-y najwyższego poziomu domyślnie pozostają poza wątkiem, więc nadal mogą strumieniować przez szkicowe podglądy publikowania i edycji Slack zamiast pokazywać podgląd natywnego strumienia/statusu w stylu wątku.
typingReactiondodaje tymczasową reakcję do przychodzącej wiadomości Slack, gdy odpowiedź jest uruchomiona, a następnie usuwa ją po zakończeniu. Użyj krótkiego kodu emoji Slack, takiego jak"hourglass_flowing_sand".channels.slack.execApprovals: natywne dla Slack dostarczanie klienta zatwierdzeń i autoryzacja zatwierdzającego exec. Ten sam schemat co w Discord:enabled(true/false/"auto"),approvers(identyfikatory użytkowników Slack),agentFilter,sessionFilteritarget("dm","channel"lub"both"). Zatwierdzenia Plugin mogą używać tej natywnej ścieżki klienta dla żądań pochodzących ze Slack, gdy zatwierdzający Plugin Slack zostaną rozwiązani; natywne dla Slack dostarczanie zatwierdzeń Plugin można także włączyć przezapprovals.plugindla sesji pochodzących ze Slack lub celów Slack. Zatwierdzenia Plugin używają zatwierdzających Plugin Slack zallowFromi domyślnego routingu, a nie zatwierdzających exec.
| Grupa akcji | Domyślnie | Uwagi |
|---|---|---|
| reactions | włączone | Reaguj + wyświetl reakcje |
| messages | włączone | Czytaj/wysyłaj/edytuj/usuwaj |
| pins | włączone | Przypnij/odepnij/wyświetl |
| memberInfo | włączone | Informacje o członku |
| emojiList | włączone | Lista niestandardowych emoji |
Mattermost
Mattermost jest dostarczany jako dołączony Plugin w bieżących wydaniach OpenClaw. Starsze lub niestandardowe kompilacje mogą zainstalować bieżący pakiet npm za pomocąopenclaw plugins install @openclaw/mattermost. Sprawdź
npmjs.com/package/@openclaw/mattermost
pod kątem bieżących dist-tagów przed przypięciem wersji.
oncall (odpowiada przy @-wzmiance, domyślnie), onmessage (każda wiadomość), onchar (wiadomości zaczynające się od prefiksu wyzwalacza).
Gdy natywne polecenia Mattermost są włączone:
commands.callbackPathmusi być ścieżką (na przykład/api/channels/mattermost/command), a nie pełnym adresem URL.commands.callbackUrlmusi wskazywać endpoint Gateway OpenClaw i być osiągalne z serwera Mattermost.- Natywne wywołania zwrotne slash są uwierzytelniane tokenami dla poszczególnych poleceń zwracanymi
przez Mattermost podczas rejestracji polecenia slash. Jeśli rejestracja się nie powiedzie lub żadne
polecenia nie zostaną aktywowane, OpenClaw odrzuca wywołania zwrotne z komunikatem
Unauthorized: invalid command token. - Dla prywatnych/tailnet/internal hostów wywołań zwrotnych Mattermost może wymagać, aby
ServiceSettings.AllowedUntrustedInternalConnectionsobejmowało host/domenę wywołania zwrotnego. Używaj wartości hosta/domeny, a nie pełnych adresów URL. channels.mattermost.configWrites: zezwól lub odmów zapisów konfiguracji inicjowanych przez Mattermost.channels.mattermost.requireMention: wymagaj@mentionprzed odpowiedzią w kanałach.channels.mattermost.groups.<channelId>.requireMention: nadpisanie bramkowania wzmianki dla kanału ("*"jako domyślne).- Opcjonalne
channels.mattermost.defaultAccountzastępuje wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta.
Signal
off, own (domyślnie), all, allowlist (z reactionAllowlist).
channels.signal.account: przypnij uruchamianie kanału do określonej tożsamości konta Signal.channels.signal.configWrites: zezwól lub odmów zapisów konfiguracji inicjowanych przez Signal.- Opcjonalne
channels.signal.defaultAccountzastępuje wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta.
iMessage
OpenClaw uruchamiaimsg rpc (JSON-RPC przez stdio). Nie jest wymagany żaden daemon ani port. To preferowana ścieżka dla nowych konfiguracji iMessage OpenClaw, gdy host może przyznać uprawnienia do bazy danych Wiadomości i Automatyzacji.
Obsługa BlueBubbles została usunięta. channels.bluebubbles nie jest obsługiwaną powierzchnią konfiguracji runtime w bieżącym OpenClaw. Przenieś stare konfiguracje do channels.imessage; użyj Usunięcie BlueBubbles i ścieżka imsg iMessage jako krótkiej wersji oraz Przejście z BlueBubbles jako pełnej tabeli tłumaczeń.
Jeśli Gateway nie działa na Macu zalogowanym w Wiadomościach, pozostaw channels.imessage.enabled=true i ustaw channels.imessage.cliPath na wrapper SSH, który uruchamia imsg "$@" na tym Macu. Domyślna lokalna ścieżka imsg jest dostępna tylko na macOS.
Zanim zaczniesz polegać na wrapperze SSH przy wysyłkach produkcyjnych, zweryfikuj wychodzące imsg send przez dokładnie ten wrapper. Niektóre stany TCC macOS przypisują Automatyzację Wiadomości do /usr/libexec/sshd-keygen-wrapper, co może sprawić, że odczyty i próby działają, a wysyłki kończą się niepowodzeniem z AppleEvents -1743; zobacz Wysyłki przez wrapper SSH kończą się niepowodzeniem z AppleEvents -1743.
-
Opcjonalne
channels.imessage.defaultAccountzastępuje wybór domyślnego konta, gdy pasuje do skonfigurowanego identyfikatora konta. - Wymaga pełnego dostępu do dysku dla bazy danych Wiadomości.
-
Preferuj cele
chat_id:<id>. Użyjimsg chats --limit 20, aby wyświetlić czaty. -
cliPathmoże wskazywać wrapper SSH; ustawremoteHost(hostlubuser@host) do pobierania załączników przez SCP. -
attachmentRootsiremoteAttachmentRootsograniczają ścieżki załączników przychodzących (domyślnie:/Users/*/Library/Messages/Attachments). -
SCP używa ścisłego sprawdzania klucza hosta, więc upewnij się, że klucz hosta przekaźnika już istnieje w
~/.ssh/known_hosts. -
channels.imessage.configWrites: zezwól lub odmów zapisów konfiguracji inicjowanych przez iMessage. -
channels.imessage.sendTransport: preferowany transport wysyłki RPCimsgdla zwykłych odpowiedzi wychodzących.auto(domyślnie) używa mostka IMCore dla istniejących czatów, gdy jest uruchomiony, a następnie przełącza się na AppleScript;bridgewymaga dostarczania przez prywatne API;applescriptwymusza publiczną ścieżkę automatyzacji Wiadomości. -
channels.imessage.actions.*: włącz akcje prywatnego API, które są również bramkowane przezimsg status/openclaw channels status --probe. -
channels.imessage.includeAttachmentsjest domyślnie wyłączone; ustaw je natrue, zanim zaczniesz oczekiwać mediów przychodzących w turach agenta. -
Odzyskiwanie wiadomości przychodzących po restarcie mostka/gateway jest automatyczne (deduplikacja GUID plus ograniczenie wieku nieaktualnego backlogu). Istniejące konfiguracje
channels.imessage.catchup.enabled: truesą nadal honorowane jako przestarzały profil zgodności. -
channels.imessage.groups: rejestr grup i ustawienia dla grup. PrzygroupPolicy: "allowlist"skonfiguruj jawne kluczechat_idalbo wpis wieloznaczny"*", aby wiadomości grupowe mogły przejść przez bramkę rejestru. -
Wpisy najwyższego poziomu
bindings[]ztype: "acp"mogą wiązać konwersacje iMessage z trwałymi sesjami ACP. Użyj znormalizowanego uchwytu lub jawnego celu czatu (chat_id:*,chat_guid:*,chat_identifier:*) wmatch.peer.id. Wspólna semantyka pól: Agenci ACP.
Przykład wrappera SSH iMessage
Przykład wrappera SSH iMessage
Matrix
Matrix działa z użyciem Plugin i jest konfigurowany wchannels.matrix.
- Uwierzytelnianie tokenem używa
accessToken; uwierzytelnianie hasłem używauserId+password. channels.matrix.proxykieruje ruch HTTP Matrix przez jawny proxy HTTP(S). Nazwane konta mogą go zastąpić za pomocąchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkzezwala na prywatne/wewnętrzne homeserwery.proxyi ta opcja sieciowa są niezależnymi mechanizmami kontroli.channels.matrix.defaultAccountwybiera preferowane konto w konfiguracjach wielokontowych.channels.matrix.autoJoindomyślnie ma wartośćoff, więc zaproszone pokoje i nowe zaproszenia w stylu DM są ignorowane, dopóki nie ustawiszautoJoin: "allowlist"zautoJoinAllowlistalboautoJoin: "always".channels.matrix.execApprovals: natywne dla Matrix dostarczanie zatwierdzeń exec i autoryzacja zatwierdzających.enabled:true,falsealbo"auto"(domyślnie). W trybie auto zatwierdzenia exec aktywują się, gdy zatwierdzających można rozpoznać zapproverslubcommands.ownerAllowFrom.approvers: identyfikatory użytkowników Matrix (np.@owner:example.org) uprawnione do zatwierdzania żądań exec.agentFilter: opcjonalna lista dozwolonych identyfikatorów agentów. Pomiń, aby przekazywać zatwierdzenia dla wszystkich agentów.sessionFilter: opcjonalne wzorce kluczy sesji (podciąg lub regex).target: miejsce wysyłania monitów o zatwierdzenie."dm"(domyślnie),"channel"(pokój źródłowy) albo"both".- Zastąpienia dla konta:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopekontroluje, jak DM-y Matrix są grupowane w sesje:per-user(domyślnie) współdzieli według trasowanego rozmówcy, aper-roomizoluje każdy pokój DM.- Sondy statusu Matrix i wyszukiwania w katalogu na żywo używają tej samej polityki proxy co ruch w czasie działania.
- Pełna konfiguracja Matrix, reguły kierowania i przykłady konfiguracji są udokumentowane w Matrix.
Microsoft Teams
Microsoft Teams jest obsługiwany przez Plugin i konfigurowany podchannels.msteams.
- Główne ścieżki kluczy opisane tutaj:
channels.msteams,channels.msteams.configWrites. - Pełna konfiguracja Teams (poświadczenia, webhook, polityka DM/grup, zastąpienia dla zespołów/kanałów) jest udokumentowana w Microsoft Teams.
IRC
IRC jest obsługiwany przez Plugin i konfigurowany podchannels.irc.
- Główne ścieżki kluczy opisane tutaj:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. - Opcjonalne
channels.irc.defaultAccountzastępuje wybór konta domyślnego, gdy pasuje do skonfigurowanego identyfikatora konta. - Pełna konfiguracja kanału IRC (host/port/TLS/kanały/listy dozwolonych/bramkowanie wzmianek) jest udokumentowana w IRC.
Wiele kont (wszystkie kanały)
Uruchamiaj wiele kont na kanał (każde z własnymaccountId):
defaultjest używane, gdyaccountIdjest pominięte (CLI + routing).- Tokeny env dotyczą tylko konta default.
- Podstawowe ustawienia kanału dotyczą wszystkich kont, chyba że zostaną zastąpione dla danego konta.
- Użyj
bindings[].match.accountId, aby kierować każde konto do innego agenta. - Jeśli dodasz konto inne niż domyślne przez
openclaw channels add(albo onboarding kanału), mając nadal jednokontową konfigurację kanału najwyższego poziomu, OpenClaw najpierw promuje jednokontowe wartości najwyższego poziomu o zakresie konta do mapy kont kanału, aby pierwotne konto nadal działało. Większość kanałów przenosi je dochannels.<channel>.accounts.default; Matrix może zamiast tego zachować istniejący pasujący nazwany/domyślny cel. - Istniejące powiązania tylko kanału (bez
accountId) nadal pasują do konta domyślnego; powiązania o zakresie konta pozostają opcjonalne. openclaw doctor --fixnaprawia także mieszane kształty, przenosząc jednokontowe wartości najwyższego poziomu o zakresie konta do wypromowanego konta wybranego dla tego kanału. Większość kanałów używaaccounts.default; Matrix może zamiast tego zachować istniejący pasujący nazwany/domyślny cel.
Inne kanały Plugin
Wiele kanałów Plugin jest konfigurowanych jakochannels.<id> i udokumentowanych na dedykowanych stronach kanałów (na przykład Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat i Twitch).
Zobacz pełny indeks kanałów: Kanały.
Bramkowanie wzmianek na czacie grupowym
Wiadomości grupowe domyślnie wymagają wzmianki (wzmianki w metadanych lub bezpiecznych wzorców regex). Dotyczy to czatów grupowych WhatsApp, Telegram, Discord, Google Chat i iMessage. Widoczne odpowiedzi są kontrolowane osobno. Normalne żądania bezpośrednie grupy, kanału i wewnętrznego WebChat domyślnie używają automatycznego dostarczania końcowego: końcowy tekst asystenta jest publikowany przez starszą ścieżkę widocznej odpowiedzi. Włączmessages.visibleReplies: "message_tool" lub messages.groupChat.visibleReplies: "message_tool", gdy widoczne wyjście ma być publikowane dopiero po wywołaniu przez agenta message(action=send). Jeśli model zwróci końcowy tekst bez wywołania narzędzia wiadomości w trybie tylko narzędzi, ten końcowy tekst pozostanie prywatny, a szczegółowy dziennik Gateway zapisze metadane wstrzymanego ładunku.
Widoczne odpowiedzi tylko przez narzędzie wymagają modelu/środowiska uruchomieniowego, które niezawodnie wywołuje narzędzia, i są zalecane dla współdzielonych pokojów otoczenia na modelach najnowszej generacji, takich jak GPT 5.5. Niektóre słabsze modele potrafią odpowiedzieć tekstem końcowym, ale nie rozumieją, że wyjście widoczne dla źródła musi zostać wysłane przez message(action=send). Dla tych modeli użyj "automatic", aby końcowa tura asystenta była ścieżką widocznej odpowiedzi. Jeśli dziennik sesji pokazuje tekst asystenta z didSendViaMessagingTool: false, model wygenerował prywatny tekst końcowy zamiast wywołać narzędzie wiadomości. Przełącz na silniejszy model wywołujący narzędzia dla tego kanału, sprawdź szczegółowy dziennik Gateway pod kątem podsumowania wstrzymanego ładunku albo ustaw messages.groupChat.visibleReplies: "automatic", aby używać widocznych odpowiedzi końcowych dla każdego żądania grupy/kanału.
Jeśli narzędzie wiadomości jest niedostępne w ramach aktywnej polityki narzędzi, OpenClaw wraca do automatycznych widocznych odpowiedzi zamiast po cichu wstrzymywać odpowiedź. openclaw doctor ostrzega o tej niezgodności.
Ta reguła dotyczy normalnego końcowego tekstu agenta. Powiązania konwersacji należące do Plugin używają odpowiedzi zwróconej przez właścicielski Plugin jako widocznej odpowiedzi dla przejętych tur powiązanego wątku; Plugin nie musi wywoływać message(action=send) dla tych odpowiedzi powiązań.
Rozwiązywanie problemów: grupowa @wzmianka uruchamia pisanie, a potem cisza (bez błędu)
Objaw: grupowa/kanałowa @wzmianka pokazuje wskaźnik pisania, a dziennik Gateway raportuje dispatch complete (queuedFinal=false, replies=0), ale żadna wiadomość nie trafia do pokoju. DM-y do tego samego agenta odpowiadają normalnie.
Przyczyna: tryb widocznej odpowiedzi grupy/kanału rozwiązuje się do "message_tool", więc OpenClaw wykonuje turę, ale wstrzymuje końcowy tekst asystenta, chyba że agent wywoła message(action=send). W tym trybie nie ma kontraktu NO_REPLY; brak wywołania narzędzia wiadomości oznacza brak odpowiedzi źródłowej. Nie ma błędu, ponieważ wstrzymanie jest skonfigurowanym zachowaniem. Normalne tury grupy i kanału domyślnie używają "automatic", więc ten objaw pojawia się tylko wtedy, gdy messages.groupChat.visibleReplies (albo globalne messages.visibleReplies) jest jawnie ustawione na "message_tool". Harness defaultVisibleReplies nie ma tu zastosowania — resolver grupy/kanału go ignoruje; wpływa tylko na czaty bezpośrednie/źródłowe (harness Codex w ten sposób wstrzymuje finały czatu bezpośredniego).
Naprawa: wybierz silniejszy model wywołujący narzędzia, usuń jawne zastąpienie "message_tool", aby wrócić do domyślnego "automatic", albo ustaw messages.groupChat.visibleReplies: "automatic", aby wymusić widoczne odpowiedzi dla każdego żądania grupy/kanału. Gateway przeładowuje konfigurację messages na gorąco po zapisaniu pliku; uruchom Gateway ponownie tylko wtedy, gdy obserwowanie plików lub przeładowywanie konfiguracji jest wyłączone we wdrożeniu.
Typy wzmianek:
- Wzmianki w metadanych: natywne @wzmianki platformy. Ignorowane w trybie self-chat WhatsApp.
- Wzorce tekstowe: bezpieczne wzorce regex w
agents.list[].groupChat.mentionPatterns. Nieprawidłowe wzorce i niebezpieczne zagnieżdżone powtórzenia są ignorowane. - Bramkowanie wzmianek jest egzekwowane tylko wtedy, gdy wykrywanie jest możliwe (natywne wzmianki lub co najmniej jeden wzorzec).
messages.groupChat.historyLimit ustawia globalną wartość domyślną. Kanały mogą ją zastąpić za pomocą channels.<channel>.historyLimit (albo dla konta). Ustaw 0, aby wyłączyć.
messages.groupChat.unmentionedInbound: "room_event" przesyła niewspomniane, zawsze włączone wiadomości grupowe/kanałowe jako cichy kontekst pokoju w obsługiwanych kanałach. Wspomniane wiadomości, polecenia i wiadomości bezpośrednie pozostają żądaniami użytkownika. Zobacz Zdarzenia pokoju otoczenia, aby uzyskać kompletne przykłady Discord, Slack i Telegram.
messages.visibleReplies jest globalną wartością domyślną zdarzeń źródłowych; messages.groupChat.visibleReplies zastępuje ją dla zdarzeń źródłowych grupy/kanału. Gdy messages.visibleReplies nie jest ustawione, czaty bezpośrednie/źródłowe używają wybranego środowiska uruchomieniowego lub domyślnej wartości harnessu, ale wewnętrzne bezpośrednie tury WebChat używają automatycznego dostarczania końcowego dla parytetu monitów Pi/Codex. Ustaw messages.visibleReplies: "message_tool", aby celowo wymagać message(action=send) dla widocznego wyjścia. Listy dozwolonych kanałów i bramkowanie wzmianek nadal decydują, czy zdarzenie jest przetwarzane.
Limity historii DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Tryb self-chat
Uwzględnij własny numer wallowFrom, aby włączyć tryb self-chat (ignoruje natywne @wzmianki, odpowiada tylko na wzorce tekstowe):
Polecenia (obsługa poleceń czatu)
Szczegóły poleceń
Szczegóły poleceń
- Ten blok konfiguruje powierzchnie poleceń. Aktualny wbudowany i dołączony katalog poleceń znajdziesz w Poleceniach slash.
- Ta strona jest dokumentacją kluczy konfiguracji, a nie pełnym katalogiem poleceń. Polecenia należące do kanałów/Plugin, takie jak QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, parowanie urządzeń/pair, pamięć/dreaming, sterowanie telefonem/phoneoraz Talk/voice, są udokumentowane na stronach ich kanałów/Plugin oraz w Poleceniach slash. - Polecenia tekstowe muszą być samodzielnymi wiadomościami z początkowym
/. native: "auto"włącza polecenia natywne dla Discord/Telegram, pozostawia Slack wyłączony.nativeSkills: "auto"włącza natywne polecenia Skills dla Discord/Telegram, pozostawia Slack wyłączony.- Nadpisanie dla kanału:
channels.discord.commands.native(bool lub"auto"). W przypadku Discordfalsepomija rejestrację i czyszczenie poleceń natywnych podczas uruchamiania. - Nadpisz rejestrację natywnych Skills dla kanału za pomocą
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsdodaje dodatkowe wpisy menu bota Telegram.bash: truewłącza! <cmd>dla powłoki hosta. Wymagatools.elevated.enabledoraz nadawcy wtools.elevated.allowFrom.<channel>.config: truewłącza/config(odczytuje/zapisujeopenclaw.json). W przypadku klientów gatewaychat.sendtrwałe zapisy/config set|unsetwymagają równieżoperator.admin; tylko do odczytu/config showpozostaje dostępne dla zwykłych klientów operatora z zakresem zapisu.mcp: truewłącza/mcpdla konfiguracji serwera MCP zarządzanej przez OpenClaw wmcp.servers.plugins: truewłącza/pluginsdo wykrywania Plugin, instalacji oraz kontroli włączania/wyłączania.channels.<provider>.configWritesogranicza mutacje konfiguracji dla kanału (domyślnie: true).- W przypadku kanałów z wieloma kontami
channels.<provider>.accounts.<id>.configWritesrównież ogranicza zapisy skierowane do tego konta (na przykład/allowlist --config --account <id>lub/config set channels.<provider>.accounts.<id>...). restart: falsewyłącza/restartoraz akcje narzędzi restartu gateway. Domyślnie:true.ownerAllowFromto jawna lista dozwolonych właścicieli dla poleceń tylko dla właściciela oraz akcji kanałów ograniczonych do właściciela. Jest oddzielna odallowFrom.ownerDisplay: "hash"haszuje identyfikatory właścicieli w prompcie systemowym. UstawownerDisplaySecret, aby kontrolować haszowanie.allowFromjest konfigurowane per dostawca. Gdy jest ustawione, jest jedynym źródłem autoryzacji (listy dozwolonych kanałów/parowanie iuseAccessGroupssą ignorowane).useAccessGroups: falsepozwala poleceniom ominąć polityki grup dostępu, gdyallowFromnie jest ustawione.- Mapa dokumentacji poleceń:
Powiązane
- Dokumentacja konfiguracji — klucze najwyższego poziomu
- Konfiguracja — agenci
- Przegląd kanałów