Get started
ClickClack
ClickClack verbindet OpenClaw über erstklassig unterstützte ClickClack-Bot-Tokens mit einem selbst gehosteten ClickClack-Arbeitsbereich.
Verwenden Sie dies, wenn ein OpenClaw-Agent als ClickClack-Bot-Benutzer auftreten soll. ClickClack unterstützt unabhängige Dienst-Bots und benutzereigene Bots; benutzereigene Bots behalten eine owner_user_id und erhalten nur die von Ihnen gewährten Token-Berechtigungsbereiche.
Schnelleinrichtung
Erstellen Sie auf dem ClickClack-Server ein Bot-Token:
clickclack admin bot create \ --workspace <workspace_id> \ --name "OpenClaw" \ --handle openclaw \ --scopes bot:write \ --plainFügen Sie für einen benutzereigenen Bot --owner <user_id> hinzu.
Konfigurieren Sie OpenClaw:
{ channels: { clickclack: { enabled: true, baseUrl: "https://clickclack.example.com", token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", defaultTo: "channel:general", }, },}Führen Sie anschließend Folgendes aus:
export CLICKCLACK_BOT_TOKEN="ccb_..."openclaw gatewayEin Konto gilt nur dann als konfiguriert, wenn baseUrl, token und workspace festgelegt sind. workspace akzeptiert eine Arbeitsbereichs-ID (wsp_...), einen Slug oder einen Namen; der Gateway löst diesen Wert beim Start in die ID auf.
Konfigurationsschlüssel für Konten
| Schlüssel | Standardwert | Hinweise |
|---|---|---|
baseUrl |
keiner (erforderlich) | URL des ClickClack-Servers. |
token |
keiner (erforderlich) | Klartextzeichenfolge oder Geheimnisreferenz (source: "env" | "file" | "exec"). |
workspace |
keiner (erforderlich) | Arbeitsbereichs-ID, Slug oder Name. |
replyMode |
"agent" |
"agent" führt die vollständige Agent-Pipeline aus; "model" sendet kurze direkte Modellvervollständigungen. |
defaultTo |
"channel:general" |
Ziel, das verwendet wird, wenn ein ausgehender Pfad kein Ziel angibt. |
allowFrom |
["*"] |
Zulassungsliste mit Benutzer-IDs für eingehende Direktnachrichten und Kanalnachrichten. |
botUserId |
automatisch erkannt | Wird beim Start aus der Identität des Bot-Tokens aufgelöst. |
agentId |
Routing-Standardwert | Ordnet die eingehenden Nachrichten dieses Kontos einem bestimmten Agenten zu. |
toolsAllow |
keiner | Werkzeug-Zulassungsliste für Agent-Antworten dieses Kontos. |
model, systemPrompt |
keiner | Wird für Vervollständigungen mit replyMode: "model" verwendet. |
reconnectMs |
1500 |
Verzögerung für die Echtzeit-Wiederverbindung (100 bis 60000). |
Wenn plugins.allow eine nicht leere restriktive Liste ist, wird durch die explizite Auswahl von ClickClack bei der Kanaleinrichtung oder durch Ausführen von openclaw plugins enable clickclack der Eintrag clickclack an diese Liste angehängt. Die Installation während des Onboardings verwendet dasselbe Verhalten bei expliziter Auswahl. Diese Pfade setzen weder plugins.deny noch eine globale Einstellung plugins.enabled: false außer Kraft. Die direkte Ausführung von openclaw plugins install @openclaw/clickclack folgt der normalen 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.
{ channels: { clickclack: { enabled: true, baseUrl: "https://clickclack.example.com", defaultAccount: "service", accounts: { service: { token: { source: "env", provider: "default", id: "CLICKCLACK_SERVICE_BOT_TOKEN" }, workspace: "default", defaultTo: "channel:general", agentId: "service-bot", }, support: { token: { source: "env", provider: "default", id: "CLICKCLACK_SUPPORT_BOT_TOKEN" }, workspace: "default", defaultTo: "dm:usr_...", agentId: "support-bot", }, }, }, },}Antwortmodi
replyMode: "agent"(Standardwert) leitet eingehende Nachrichten durch die normale Agent-Pipeline, einschließlich Sitzungsaufzeichnung und Werkzeugrichtlinie.replyMode: "model"überspringt die Agent-Pipeline und verwendetllm.completeder Plugin-Laufzeit für kurze direkte Bot-Antworten, die optional durchmodelundsystemPromptangepasst werden.
Im Modellmodus werden Vervollständigungen für die aufgelöste Bot-Agent-ID ausgeführt. Dafür muss das explizite Vertrauensbit plugins.entries.clickclack.llm.allowAgentIdOverride: true gesetzt sein:
{ plugins: { entries: { clickclack: { llm: { allowAgentIdOverride: true, }, }, }, },}Lassen Sie das Vertrauensbit deaktiviert, wenn Sie nur den standardmäßigen Antwortmodus agent verwenden; dort wird es nicht benötigt.
Verwenden Sie den Modus agent für dienstübergreifende Korrelationsnachweise. 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 Durchlauf ClawRouter verwendet, wird dieselbe Modellaufruf-ID als X-Request-ID gesendet. Der Modus model umgeht die normale Diagnose für Agent-Ausführungen und -Sitzungen und eignet sich daher nicht für diesen Nachweispfad.
Wenn ein Echtzeitereignis eine validierte payload.correlation_id enthält, überträgt der Kanal diese als X-Correlation-ID beim maßgeblichen Abruf der Nachricht und bei den daraus resultierenden ClickClack-Antwortanfragen. Die Werte verwenden den sicheren ClickClack-Zeichensatz mit 128 Zeichen (A-Z, a-z, 0-9, ., _, : und -); ungültige Werte werden ausgelassen. Diese Verknüpfungen enthalten ausschließlich Kennungen und niemals Nachrichteninhalte, Prompts, Vervollständigungen, Anmeldedaten oder Werkzeugausgaben.
Zeilen zur Agent-Aktivität
Standardmäßig zeigt ein ClickClack-Kanal während einer laufenden Agent-Ausführung nichts an; nur die endgültige Antwort wird veröffentlicht. Setzen Sie für ein Konto agentActivity: true, um während der Ausführung dauerhafte Nachrichtenzeilen des Typs agent_commentary und agent_tool zu veröffentlichen:
{ channels: { clickclack: { enabled: true, token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", agentActivity: true, }, },}Anforderungen und Verhalten:
- Standardmäßig deaktiviert. Standardinstallationen und ältere ClickClack-Server bleiben unverändert.
- Erfordert den Token-Berechtigungsbereich
agent_activity:write. Dieser Berechtigungsbereich ist vonbot:writegetrennt und wird nicht davon übernommen; erstellen Sie das Bot-Token mit--scopes bot:write,agent_activity:writeoder gewähren Sie einem vorhandenen Token diesen Berechtigungsbereich, bevor Sie die Option aktivieren. - Bestmögliche Rückstufung. Wenn dem Token
agent_activity:writefehlt oder der Server das Schreiben von Aktivitäten ablehnt, werden Fehler protokolliert und die endgültige Antwort weiterhin normal zugestellt; es erscheinen keine Aktivitätszeilen. - Zeilen werden pro Durchlauf (
turn_id) gruppiert und so zusammengeführt, dass ein logischer Schritt genau einer Zeile entspricht. Werkzeugzeilen verwenden dieselbe Fortschrittsformatierung wie Discord/Slack/Telegram: Werkzeugname plus Befehlsdetails. - Zuordnungsmetadaten. Vom Agenten verfasste Beiträge – Aktivitätszeilen und die endgültige Antwort – enthalten die Felder
author_modelundauthor_thinking, die aus dem tatsächlich für den Durchlauf verwendeten Modell ermittelt werden, auch nach einem Fallback. Server, die diese Spalten nicht definieren, ignorieren die unbekannten JSON-Felder; Server, die sie speichern, können für jede Nachricht beantworten, welches Modell diese Zeile mit welcher Denkstufe erzeugt hat.
Ziele
channel:<name-or-id>sendet an einen Kanal im Arbeitsbereich. 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 Ausgangspunkt diese Nachricht ist.
Explizite ausgehende Ziele können außerdem das Provider-Präfix clickclack: oder cc: enthalten.
Beispiele:
openclaw message send --channel clickclack --target channel:general --message "hello"openclaw message send --channel clickclack --target dm:usr_123 --message "hello"openclaw message send --channel clickclack --target thread:msg_123 --message "following up"Berechtigungen
Die Token-Berechtigungsbereiche von ClickClack werden von der ClickClack-API durchgesetzt.
bot:read: Arbeitsbereichs-, Kanal-, Nachrichten-, Thread-, Direktnachrichten-, Echtzeit- und Profildaten lesen.bot:write:bot:readsowie Kanalnachrichten, Thread-Antworten, Direktnachrichten und Uploads.bot:admin:bot:writesowie das Erstellen von Kanälen.agent_activity:write: dauerhafte Zeilen zur Agent-Aktivität (agent_commentary/agent_tool). Wird weder vonbot:writenoch vonbot:adminübernommen und ist nur erforderlich, wennagentActivity: truefestgelegt ist.
OpenClaw benötigt für normale Agent-Chats nur bot:write. Fügen Sie agent_activity:write hinzu, wenn Sie Zeilen zur Agent-Aktivität 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 Arbeitsbereichs-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 sowie Nachrichten anderer Bots ignoriert.
- Das Senden an Kanäle schlägt fehl: Vergewissern Sie sich, dass der Bot Mitglied des Arbeitsbereichs ist und über
bot:writeverfügt.