Get started
ClickClack
ClickClack, birinci sınıf ClickClack bot belirteçleri aracılığıyla OpenClaw'u kendi barındırdığınız bir ClickClack çalışma alanına bağlar.
Bir OpenClaw aracısının ClickClack bot kullanıcısı olarak görünmesini istediğinizde bunu kullanın. ClickClack, bağımsız hizmet botlarını ve kullanıcıya ait botları destekler; kullanıcıya ait botlar bir owner_user_id tutar ve yalnızca verdiğiniz belirteç kapsamlarını alır.
Hızlı kurulum
ClickClack sunucusunda bir bot belirteci oluşturun:
clickclack admin bot create \ --workspace <workspace_id> \ --name "OpenClaw" \ --handle openclaw \ --scopes bot:write \ --plainKullanıcıya ait bir bot için --owner <user_id> ekleyin.
OpenClaw'u yapılandırın:
{ channels: { clickclack: { enabled: true, baseUrl: "https://clickclack.example.com", token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", defaultTo: "channel:general", }, },}Ardından şunu çalıştırın:
export CLICKCLACK_BOT_TOKEN="ccb_..."openclaw gatewayBir hesap yalnızca baseUrl, token ve workspace değerlerinin tümü ayarlandığında yapılandırılmış sayılır. workspace, çalışma alanı kimliğini (wsp_...), kısa adını veya adını kabul eder; Gateway bunu başlangıçta kimliğe çözümler.
Hesap yapılandırma anahtarları
| Anahtar | Varsayılan | Notlar |
|---|---|---|
baseUrl |
yok (gerekli) | ClickClack sunucu URL'si. |
token |
yok (gerekli) | Düz metin veya gizli değer başvurusu (source: "env" | "file" | "exec"). |
workspace |
yok (gerekli) | Çalışma alanı kimliği, kısa adı veya adı. |
replyMode |
"agent" |
"agent" tam aracı işlem hattını çalıştırır; "model" kısa ve doğrudan model tamamlamaları yollar. |
defaultTo |
"channel:general" |
Giden bir yol hedef belirtmediğinde kullanılan hedef. |
allowFrom |
["*"] |
Gelen DM'ler ve kanal mesajları için kullanıcı kimliği izin listesi. |
botUserId |
otomatik algılanır | Başlangıçta bot belirteci kimliğinden çözümlenir. |
agentId |
rota varsayılanı | Bu hesabın gelen mesajlarını tek bir aracıya sabitler. |
toolsAllow |
yok | Bu hesaptan gelen aracı yanıtları için araç izin listesi. |
model, systemPrompt |
yok | replyMode: "model" tamamlamalarında kullanılır. |
reconnectMs |
1500 |
Gerçek zamanlı yeniden bağlanma gecikmesi (100 ile 60000 arası). |
plugins.allow boş olmayan kısıtlayıcı bir listeyse kanal kurulumunda ClickClack'i açıkça seçmek veya openclaw plugins enable clickclack komutunu çalıştırmak, bu listeye clickclack ekler. İlk katılım kurulumu da aynı açık seçim davranışını kullanır. Bu yollar plugins.deny ayarını veya genel bir plugins.enabled: false ayarını geçersiz kılmaz. Doğrudan openclaw plugins install @openclaw/clickclack komutu normal Plugin kurulum politikasını izler ve ClickClack'i mevcut bir izin listesine de kaydeder.
Birden fazla bot
Her hesap kendi ClickClack gerçek zamanlı bağlantısını açar ve kendi bot belirtecini kullanır.
{ 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", }, }, }, },}Yanıt modları
replyMode: "agent"(varsayılan), gelen mesajları oturum kaydı ve araç politikası dâhil olmak üzere normal aracı işlem hattından geçirir.replyMode: "model", aracı işlem hattını atlar ve kısa, doğrudan bot yanıtları için Plugin çalışma zamanınınllm.completeişlevini kullanır (isteğe bağlı olarakmodelvesystemPromptile biçimlendirilir).
Model modu, tamamlamaları çözümlenmiş bot aracısı kimliğiyle çalıştırır ve bunun için açık plugins.entries.clickclack.llm.allowAgentIdOverride: true güven bitinin ayarlanması gerekir:
{ plugins: { entries: { clickclack: { llm: { allowAgentIdOverride: true, }, }, }, },}Yalnızca varsayılan agent yanıt modunu kullanıyorsanız güven bitini kapalı tutun; bu modda gerekli değildir.
Hizmetler arası ilişkilendirme kanıtı için agent modunu kullanın. Standart msg_<ulid> biçimindeki yetkili bir ClickClack mesaj kimliği için kanal, belirlenimci OpenClaw çalıştırma kimliği clickclack:<message-id> değerini türetir. Ardından her model çağrısı tanılamalarda clickclack:<message-id>:model:<n> olarak görünür; bu tur ClawRouter kullandığında aynı model çağrısı kimliği X-Request-ID olarak gönderilir. model modu normal aracı çalıştırma/oturum tanılamalarını atladığından bu kanıt yolu için uygun değildir.
Gerçek zamanlı bir olay doğrulanmış bir payload.correlation_id içerdiğinde kanal, bunu yetkili mesaj getirme isteğinde ve bunun sonucunda oluşan ClickClack yanıt isteklerinde X-Correlation-ID olarak taşır. Değerler ClickClack'in güvenli 128 karakterlik kümesini (A-Z, a-z, 0-9, ., _, : ve -) kullanır; geçersiz değerler atlanır. Bu birleştirmeler yalnızca tanımlayıcıları içerir; hiçbir zaman mesaj gövdelerini, istemleri, tamamlamaları, kimlik bilgilerini veya araç çıktısını içermez.
Aracı etkinliği satırları
Varsayılan olarak, bir aracı turu çalışırken ClickClack kanalı hiçbir şey göstermez; yalnızca son yanıt iletilir. Tur devam ederken kalıcı agent_commentary ve agent_tool mesaj satırlarını yayımlamak için bir hesapta agentActivity: true ayarını kullanın:
{ channels: { clickclack: { enabled: true, token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", agentActivity: true, }, },}Gereksinimler ve davranış:
- Varsayılan olarak kapalıdır. Standart kurulumlara ve eski ClickClack sunucularına dokunulmaz.
agent_activity:writebelirteç kapsamını gerektirir. Bu kapsambot:writekapsamından ayrıdır ve ondan devralınmaz; seçeneği etkinleştirmeden önce bot belirtecini--scopes bot:write,agent_activity:writeile oluşturun (veya kapsamı mevcut bir belirtece verin).- En iyi çabayla çalışmayı sürdürme. Belirteçte
agent_activity:writeyoksa veya sunucu etkinlik yazma işlemlerini reddederse hatalar günlüğe kaydedilir ve son yanıt yine normal şekilde iletilir; etkinlik satırları görünmez. - Satırlar tur başına (
turn_id) gruplandırılır, mantıksal her adım tek satır olacak şekilde birleştirilir ve araç satırları Discord/Slack/Telegram ile aynı ilerleme biçimlendirmesini kullanır (araç adı ve komut ayrıntısı). - Atıf meta verileri. Aracı tarafından yazılan gönderiler (etkinlik satırları ve son yanıt), turda gerçekten kullanılan modelden çözümlenen
author_modelveauthor_thinkingalanlarını taşır (yedek modele geçildikten sonraki durum dâhil). Bu sütunları tanımlamayan sunucular bilinmeyen JSON alanlarını yok sayar; bunları kalıcılaştıran sunucular mesaj başına "bu satırı hangi model, hangi düşünme düzeyinde söyledi" sorusunu yanıtlayabilir.
Hedefler
channel:<name-or-id>, bir çalışma alanı kanalına gönderir. Öneksiz hedefler varsayılan olarakchannel:kullanır.dm:<user_id>, bu kullanıcıyla doğrudan bir görüşme oluşturur veya mevcut görüşmeyi yeniden kullanır.thread:<message_id>, belirtilen mesajın kök olduğu ileti dizisinde yanıt verir.
Açık giden hedefler ayrıca clickclack: veya cc: sağlayıcı önekini taşıyabilir.
Örnekler:
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"İzinler
ClickClack belirteç kapsamları ClickClack API'si tarafından uygulanır.
bot:read: çalışma alanı/kanal/mesaj/ileti dizisi/DM/gerçek zamanlı/profil verilerini okur.bot:write:bot:readkapsamına ek olarak kanal mesajları, ileti dizisi yanıtları, DM'ler ve yüklemeler sağlar.bot:admin:bot:writekapsamına ek olarak kanal oluşturma yetkisi sağlar.agent_activity:write: kalıcı aracı etkinliği satırları (agent_commentary/agent_tool).bot:writeveyabot:admintarafından devralınmaz; yalnızcaagentActivity: trueayarlandığında gereklidir.
OpenClaw'un normal aracı sohbeti için yalnızca bot:write kapsamına ihtiyacı vardır. Aracı etkinliği satırlarını etkinleştirirken agent_activity:write ekleyin.
Sorun giderme
ClickClack is not configured for account "<id>": bu hesap içinbaseUrl,token(örneğinCLICKCLACK_BOT_TOKENaracılığıyla) veworkspacedeğerlerini ayarlayın.ClickClack workspace not found: <value>:workspacedeğerini ClickClack tarafından döndürülen çalışma alanı kimliği, kısa adı veya adı olarak ayarlayın.- Gelen yanıt yoksa: belirtecin gerçek zamanlı okuma erişimine sahip olduğunu doğrulayın ve botun kendi mesajlarını ve diğer botlardan gelen mesajları yok saydığını unutmayın.
- Kanala gönderimler başarısız oluyorsa: botun çalışma alanının üyesi olduğunu ve
bot:writekapsamına sahip olduğunu doğrulayın.