owner_user_id und erhalten nur die von Ihnen gewährten Token-Berechtigungsbereiche.
Schnelleinrichtung
Öffnen Sie in ClickClack Workspace settings → Integrations → OpenClaw, erstellen Sie mit Setup code (recommended) einen Bot und kopieren Sie den generierten Befehl:localhost und 127.0.0.1 unterstützt.
Wenn OpenClaw bereits ausgeführt wird, stellt ClickClack automatisch eine Verbindung her und es ist kein zweiter
Befehl erforderlich. Starten Sie es andernfalls mit:
Alternative: Manuelles Token
Wählen Sie beim Konfigurieren eines Clients, der nicht OpenClaw verwendet, oder wenn Sie das Token ausdrücklich selbst verwalten müssen, in ClickClack Manual token aus:workspace akzeptiert eine Workspace-ID (wsp_...), einen Slug oder einen Anzeigenamen.
--code kann nicht mit --token, --token-file oder --use-env kombiniert werden.
Alternative: Umgebungsbasiertes Token
Das Standardkonto kannCLICKCLACK_BOT_TOKEN lesen, statt ein Token
in der Konfiguration zu speichern:
JSON5-Referenz
Die entsprechende Konfigurationsstruktur lautet:baseUrl, eine Token-Quelle und
workspace festgelegt sind. Eine Token-Quelle kann für das Standardkonto token, tokenFile oder
CLICKCLACK_BOT_TOKEN sein. workspace akzeptiert eine Workspace-
ID (wsp_...), einen Slug oder einen Namen; das Gateway löst diesen beim Start in die ID auf.
Konfigurationsschlüssel für Konten
Einen öffentlich authentifizierungsgeschützten Hostnamen beibehalten
Verwenden SieapiBaseUrl, wenn ClickClack und das OpenClaw-Gateway auf demselben Host ausgeführt werden,
der öffentliche ClickClack-Hostname jedoch durch ein Authentifizierungs-Gateway
wie Cloudflare Access geschützt ist:
embedUrl und openUrl weiterhin die
öffentliche baseUrl verwenden. Wenn apiBaseUrl weggelassen wird, verwendet der gesamte Datenverkehr
baseUrl, wodurch das bestehende Verhalten beibehalten wird.
Wenn plugins.allow eine nicht leere restriktive Liste ist, wird durch die explizite Auswahl von
ClickClack bei der Kanaleinrichtung oder die Ausführung von openclaw plugins enable clickclack
clickclack an diese Liste angehängt. Die Installation während des Onboardings verwendet dasselbe
Verhalten bei expliziter Auswahl. Diese Pfade überschreiben weder plugins.deny noch eine
globale plugins.enabled: false-Einstellung. Die direkte Ausführung von
openclaw plugins install @openclaw/clickclack folgt der üblichen
Plugin-Installationsrichtlinie und trägt ClickClack ebenfalls in eine vorhandene Zulassungsliste ein.
Mehrere Bots
Jedes Konto öffnet eine eigene ClickClack-Echtzeitverbindung und verwendet sein eigenes Bot-Token.Sitzungsdiskussionen
Aktivieren Sie Diskussionen für ein ClickClack-Konto, damit jede OpenClaw-Sitzung einen eigenen ClickClack-Kanal erhält. Das Konto-Token musschannels:write enthalten (das bot:admin-Paket enthält es); das normale bot:write-
Einrichtungstoken kann keine Kanäle erstellen oder synchronisieren.
discussions.workspace akzeptiert dieselbe Workspace-ID, denselben Slug oder Anzeigenamen
wie workspace auf Kontoebene und verwendet standardmäßig diesen Wert. section steuert
den Abschnitt in der ClickClack-Seitenleiste und verwendet standardmäßig Sessions. Wenn
controlUrlBase festgelegt ist, verweist der verwaltete Kanal zurück auf die tatsächliche Sitzungsroute
der Control UI, /chat?session=<encoded-session-key>.
Aktivieren Sie Diskussionen für genau ein ClickClack-Konto. Der Gateway-Provider besitzt
keine Kontoauswahl, daher werden mehrere Konten mit aktivierten Diskussionen abgelehnt,
statt eines anhand der Konfigurationsreihenfolge auszuwählen.
Beim Öffnen einer Diskussion wird ein öffentlicher ClickClack-Kanal erstellt, der als extern
verwaltet gekennzeichnet ist. Das Plugin hält Sitzungsbezeichnung, Kategorie und Archivierungsstatus
synchron. Beim Wiederherstellen einer Sitzung wird ihr Kanal wiederhergestellt; durch das Leeren der Sitzungskategorie
wird der Kanal wieder in den konfigurierten Standardabschnitt verschoben. Beim Löschen einer
OpenClaw-Sitzung wird der ClickClack-Kanal archiviert statt gelöscht, sodass sein
Verlauf verfügbar bleibt. Das Plugin gleicht Bindungen ab, wenn Diskussions-RPCs
verwendet werden, und ungefähr einmal pro Minute, solange Bindungen vorhanden sind.
Eingehende Nachrichten in einem verwalteten Kanal verwenden eine deterministische Nebensitzung unter
derselben Agenten-ID wie die verknüpfte Hauptsitzung. Dem Nebenagenten wird mitgeteilt, welche
Hauptsitzung er beobachten soll, und er kann sessions_history und session_status verwenden
(changesSince ist für inkrementelle Überprüfungen nützlich). Er verwendet sessions_send nur,
wenn Personen in der Diskussion ihn bitten, Informationen an die Hauptsitzung weiterzuleiten oder sie zu steuern.
Die Bindung, die Referenz auf den verwalteten Eigentümer und die Peer-Identität der Nebensitzung enthalten
die konkrete OpenClaw-Sitzungs-ID sowie den fest zugeordneten ClickClack-Server und
-Kanal. Durch das Zurücksetzen eines wiederverwendbaren Sitzungsschlüssels oder das Neuausrichten eines Kontos wird der
alte Kanal lokal widerrufen, archiviert, wenn die alten Anmeldedaten weiterhin verwendbar sind, und
sein Nebenprotokoll kann nicht wiederverwendet werden. Nachrichten, die über eine
archivierte, zurückgesetzte, deaktivierte oder neu ausgerichtete Bindung eingehen, werden verworfen, statt
auf das normale Kanal-Routing des Kontos zurückzufallen. Freigegebene Bindungen hinterlassen eine dauerhafte
Markierung für widerrufene Kanäle, sodass verzögerte Echtzeitereignisse weiterhin nach dem Fail-Closed-Prinzip behandelt werden. Die entfernte
Eigentümerschaft wird anhand des ClickClack-Servers und der Kanal-ID bestimmt, sodass das Umbenennen des lokalen
Kontos einen verwalteten Kanal nicht in einen gewöhnlichen Kanal umwandeln kann.
Belassen Sie tools.sessions.visibility beim sichereren Standardwert tree. Das Plugin
installiert eine hostbezogene Berechtigung ausschließlich zwischen jeder Nebensitzung und ihrer verknüpften
Hauptsitzung sowie einen Werkzeugrichtlinien-Hook, der Sitzungserkennung und
sitzungsübergreifende Ziele blockiert. Es erlaubt sessions_history, session_status und
sessions_send nur für die verknüpfte Hauptsitzung und verhindert, dass der Statusaufruf
das Modell dieser Sitzung ändert. Diese Werkzeuge müssen weiterhin in der
effektiven Werkzeug-Zulassungsliste des Agenten vorhanden sein. Der System-Prompt dient als Anleitung; die hostbezogene Berechtigung
und der Hook bilden die Autorisierungsgrenze.
Der ClickClack-Server muss bei der Erstellung und
Aktualisierung von Kanälen die Felder für verwaltete Kanäle (external_managed,
external_ref, external_url und sidebar_section) unterstützen und
sie in Kanalantworten zurückgeben. OpenClaw überprüft diesen Vertrag, bevor eine
Bindung dauerhaft gespeichert wird. Geht eine Erstellungsantwort verloren,
übernimmt der nächste Öffnungsvorgang den Kanal anhand seines serverseitig
erzwungenen external_ref, anstatt einen weiteren zu erstellen. Bis dieses
Ergebnis abgeglichen ist, stellt die ausstehende Reservierung ansonsten
ungebundene Ereignisse im Ziel-Workspace unter Quarantäne. Der grobe
Abgleich übernimmt den Kanal, wenn dieselbe Sitzung noch aktiv ist, oder
archiviert ihn nach einem Zurücksetzen; er löscht die Reservierung, wenn kein
Remote-Kanal erstellt wurde. Diese Referenz enthält einen dauerhaften Namespace
pro OpenClaw-Installation sowie einen Hash des Sitzungsschlüssels, die konkrete
Sitzungs-ID, das ClickClack-Ziel und die dauerhafte Bindungsgeneration. Separate
Gateways können die Kanäle der jeweils anderen nicht übernehmen,
zurückgesetzte Sitzungen können keinen alten Kanalverlauf erben und ein
Roundtrip über ein Konto oder einen Workspace kann einen vorherigen Kanal nicht
erneut übernehmen. Bindungen sind außerdem an die konfigurierte
ClickClack-Server-URL gebunden und werden ungültig, wenn das Konto auf ein
anderes Ziel umgestellt wird. Das Ändern oder Entfernen von
controlUrlBase aktualisiert oder löscht die Verknüpfung des verwalteten
Kanals beim nächsten Abgleichdurchlauf. Beim Ändern von
discussions.workspace wird die alte Bindung archiviert und freigegeben, bevor ein
Kanal im neuen Workspace geöffnet werden kann, sofern die Anmeldedaten des
alten Workspace weiterhin konfiguriert sind. Wurde das Token durch auf einen
Workspace beschränkte Anmeldedaten ersetzt, die nicht auf den alten Workspace
zugreifen können, vermerkt OpenClaw den alten Kanal als widerrufen und gibt die
Bindung frei, ohne das Ersatz-Token zu verwenden; archivieren Sie diesen
verbliebenen Kanal in ClickClack.
Die angehängte Hauptsitzung erhält außerdem ein ausschließlich lesendes
discussion-Tool. Es liest die neuesten Nachrichten und kürzlich
eingegangenen Thread-Antworten als jeweils einen maskierten Datensatz mit
Urheberangabe pro Nachricht und hat keine Nebenwirkungen auf Schreibvorgänge
oder den Lebenszyklus. Abfragen von Kanalwurzeln und Threads haben feste
Anfragebudgets; das Ergebnis warnt ausdrücklich, wenn durch diese
Sicherheitsgrenze ein älterer aktiver Thread ausgelassen werden kann.
Antwortmodi
replyMode: "agent"(Standard) leitet eingehende Nachrichten durch die normale Agent-Pipeline, einschließlich Sitzungsaufzeichnung und Tool-Richtlinie.replyMode: "model"überspringt die Agent-Pipeline und verwendetllm.completeder Plugin-Laufzeit für direkte Bot-Antworten, die optional durchmodelundsystemPromptgestaltet werden. Der ausgewählte Provider und das Modell bestimmen das Completion-Budget.
plugins.entries.clickclack.llm.allowAgentIdOverride: true-Vertrauensbit
erforderlich:
agent verwenden; dort wird es nicht benötigt.
Befehlsmenü
Beim Start des Gateway veröffentlicht jedes konfigurierte Konto die nativen Befehle von OpenClaw in ClickClack. Sie erscheinen in der automatischen Vervollständigung des Eingabefelds und sind mit dem Handle des Bots gekennzeichnet. Die veröffentlichte Menge wird bei jedem Start vollständig ersetzt; dies schließt das Löschen eines veralteten Menüs ein, wenn der Katalog nativer Befehle leer ist. Die Synchronisierung des Befehlsmenüs ist standardmäßig aktiviert. Legen Sie für ein KontocommandMenu: false fest, um sie zu deaktivieren:
commands:write. Die aktuellen ClickClack-Pakete
bot:write und bot:admin enthalten diesen
Berechtigungsumfang; er kann auch einzeln gewährt werden. Bei Tokens, die vor
der Einführung von Befehlsmenüs erstellt wurden, muss der Berechtigungsumfang
möglicherweise hinzugefügt oder das Token ersetzt werden.
Die Synchronisierung erfolgt nach bestem Bemühen einmal pro Gateway-Start. Ein
fehlender Berechtigungsumfang oder ein Netzwerkfehler wird als Warnung
protokolliert; bei einem älteren ClickClack-Server ohne den Endpunkt erfolgt die
Protokollierung auf Debug-Ebene. Keiner dieser Fehler blockiert den
Echtzeitstart. Menüs bleiben verfügbar, während der Agent offline ist, und
werden entfernt, wenn der Bot den Workspace verlässt.
Diese Version veröffentlicht ausschließlich Spezifikationen nativer Befehle.
Aliase sowie Kataloge für Skills, Plugins oder benutzerdefinierte Befehle werden
dem Menü nicht hinzugefügt. Wenn ein Name außerdem als HTTP-Slash-Befehl
registriert ist, verarbeitet ClickClack zuerst diese Registrierung; andere
Menübefehle werden weiterhin über die normale Nachrichtenzustellung
übermittelt.
Verwenden Sie den Modus agent als Nachweis für eine
dienstübergreifende Korrelation. Für eine maßgebliche ClickClack-Nachrichten-ID
in ihrer kanonischen Form msg_<ulid> leitet der Kanal die
deterministische OpenClaw-Ausführungs-ID clickclack:<message-id> ab. Jeder
Modellaufruf ist dann in der Diagnose als clickclack:<message-id>:model:<n> sichtbar; wenn
dieser Turn ClawRouter verwendet, wird dieselbe Modellaufruf-ID als
X-Request-ID gesendet. Der Modus model umgeht die normale
Diagnose der Agent-Ausführung und Sitzung und eignet sich daher nicht für
diesen Nachweispfad.
Wenn ein Echtzeitereignis einen validierten payload.correlation_id enthält,
überträgt der Kanal ihn als X-Correlation-ID bei der maßgeblichen
Nachrichtenabfrage und den daraus resultierenden ClickClack-Antwortanfragen.
Die Werte verwenden ClickClacks sicheren Zeichensatz mit 128 Zeichen
(A-Z, a-z, 0-9,
., _, : und
-); ungültige Werte werden ausgelassen. Diese Verknüpfungen
enthalten ausschließlich Bezeichner, niemals Nachrichtentexte, Prompts,
Completions, Anmeldedaten oder Tool-Ausgaben.
Dauerhafte Medienzustellung
Agent-Antworten mit Medien verwenden die erforderliche dauerhafte Zustellung. OpenClaw weist vor dem ersten ClickClack-Schreibvorgang stabile Nachrichten- und Upload-Nonces pro Teil zu, sodass ein erneuter Versuch denselben Upload und dieselbe Nachricht verwendet, anstatt Speicherkontingent zu verbrauchen oder Duplikate zu veröffentlichen. Wenn nach einem Neustart bereits ein Upload vorhanden ist, liest OpenClaw den ursprünglichen lokalen Pfad oder die Remote-Medien-URL nicht erneut. Dieser Wiederherstellungsvertrag erfordert einen ClickClack-Server, der Folgendes unterstützt:GET /api/uploads/by-noncemitX-ClickClack-Upload-Nonce: supportedbei gefundenen und fehlenden Ergebnissen.GET /api/messages/by-noncemitX-ClickClack-Message-Nonce: supportedbei gefundenen und fehlenden Ergebnissen.- Idempotente Nachrichtenerstellung und Zuordnung von Anhängen für dieselbe eigentümerbezogene Nonce und denselben Upload.
Agent-Aktivitätszeilen
Standardmäßig zeigt ein ClickClack-Kanal während eines laufenden Agent-Turns nichts an; nur die endgültige Antwort wird eingestellt. Legen Sie für ein KontoagentActivity: true fest, um während des laufenden Turns dauerhafte Nachrichtenzeilen vom Typ agent_commentary und agent_tool zu veröffentlichen:
- Standardmäßig deaktiviert. Standardkonfigurationen und ältere ClickClack-Server bleiben unverändert.
- Erfordert den Token-Berechtigungsumfang
agent_activity:write. Dieser Berechtigungsumfang ist vonbot:writegetrennt und wird nicht davon übernommen; erstellen Sie das Bot-Token mit--scopes bot:write,agent_activity:write(oder gewähren Sie einem vorhandenen Token den Berechtigungsumfang), bevor Sie die Option aktivieren. - Beeinträchtigung nach bestem Bemühen. Wenn dem Token
agent_activity:writefehlt oder der Server Aktivitätsschreibvorgänge ablehnt, werden die Fehler protokolliert und die endgültige Antwort dennoch normal zugestellt; es erscheinen keine Aktivitätszeilen. - Zeilen werden pro Turn gruppiert (
turn_id) und so zusammengeführt, dass ein logischer Schritt einer Zeile entspricht. Tool-Zeilen verwenden dieselbe Fortschrittsformatierung wie Discord/Slack/Telegram (Tool-Name plus Befehlsdetails). - Attributionsmetadaten. Vom Agent verfasste Beiträge (Aktivitätszeilen und die endgültige Antwort) enthalten die Felder
author_modelundauthor_thinking, die anhand des tatsächlich für den Turn verwendeten Modells aufgelöst werden (auch nach einem Fallback). Server, die diese Spalten nicht definieren, ignorieren die unbekannten JSON-Felder; Server, die sie dauerhaft speichern, können pro Nachricht beantworten, „welches Modell diese Zeile auf welcher Denkstufe ausgegeben hat“.
Ziele
channel:<name-or-id>sendet an einen Workspace-Kanal. Ziele ohne Präfix verwenden standardmäßigchannel:.dm:<user_id>erstellt eine direkte Unterhaltung mit diesem Benutzer oder verwendet eine vorhandene.thread:<message_id>antwortet in dem Thread, dessen Wurzel diese Nachricht ist.
clickclack: oder cc: enthalten.
Ausgehende Medien verwenden die Upload-API von ClickClack und hängen den
dauerhaften Upload anschließend an die erstellte Kanalnachricht, Thread-Antwort
oder Direktnachricht an. Lokale Dateien und unterstützte Remote-Medien-URLs
unterliegen der normalen Medienzugriffsrichtlinie von OpenClaw mit einem Limit
von 64 MiB pro Datei. Dauerhafte Sendevorgänge in der Warteschlange verwenden
separate eigentümerbezogene Nonces für jeden Upload und Nachrichtenteil und
wiederholen anschließend die Zuordnung von Anhängen mit denselben Objekten.
Informationen zum Serververtrag und Wiederherstellungsverhalten finden Sie
unter Dauerhafte Medienzustellung.
Beispiele:
Berechtigungen
Die Berechtigungsumfänge von ClickClack-Tokens werden von der ClickClack-API durchgesetzt.bot:read: Workspace-, Kanal-, Nachrichten-, Thread-, Direktnachrichten-, Echtzeit- und Profildaten lesen.bot:write:bot:readsowie Kanalnachrichten, Thread-Antworten, Direktnachrichten, Uploads und die Veröffentlichung des Befehlsmenüs.bot:admin:bot:writesowie die Kanalerstellung.commands:write: das Befehlsmenü des Bots veröffentlichen. In den aktuellen Paketenbot:writeundbot:adminenthalten und einzeln gewährbar.agent_activity:write: dauerhafte Agent-Aktivitätszeilen (agent_commentary/agent_tool). Wird nicht vonbot:writeoderbot:adminübernommen; nur erforderlich, wennagentActivity: truefestgelegt ist.
bot:write. Fügen Sie
agent_activity:write hinzu, wenn Sie
Agent-Aktivitätszeilen aktivieren.
Fehlerbehebung
ClickClack is not configured for account "<id>": Legen Sie für dieses KontobaseUrl,token(beispielsweise überCLICKCLACK_BOT_TOKEN) undworkspacefest.ClickClack workspace not found: <value>: Legen Sieworkspaceauf die von ClickClack zurückgegebene Workspace-ID, den Slug oder den Namen fest.- Keine eingehenden Antworten: Vergewissern Sie sich, dass das Token über Echtzeit-Lesezugriff verfügt, und beachten Sie, dass der Bot seine eigenen Nachrichten und Nachrichten anderer Bots ignoriert.
- Kanal-Sendevorgänge schlagen fehl: Stellen Sie sicher, dass der Bot Mitglied des Workspace ist und über
bot:writeverfügt. - Kein Befehlsmenü: Vergewissern Sie sich, dass
commandMenunichtfalseist, der ClickClack-ServerPUT /api/bots/self/commandsunterstützt und das Token übercommands:writeverfügt.