Get started
ClickClack
ClickClack menghubungkan OpenClaw ke ruang kerja ClickClack yang dihosting sendiri melalui token bot ClickClack kelas utama.
Gunakan ini ketika Anda ingin agen OpenClaw tampil sebagai pengguna bot ClickClack. ClickClack mendukung bot layanan independen dan bot milik pengguna; bot milik pengguna mempertahankan owner_user_id dan hanya menerima cakupan token yang Anda berikan.
Penyiapan cepat
Buat token bot di server ClickClack:
clickclack admin bot create \ --workspace <workspace_id> \ --name "OpenClaw" \ --handle openclaw \ --scopes bot:write \ --plainUntuk bot milik pengguna, tambahkan --owner <user_id>.
Konfigurasikan OpenClaw:
{ channels: { clickclack: { enabled: true, baseUrl: "https://clickclack.example.com", token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", defaultTo: "channel:general", }, },}Kemudian jalankan:
export CLICKCLACK_BOT_TOKEN="ccb_..."openclaw gatewaySebuah akun dianggap terkonfigurasi hanya jika baseUrl, token, dan workspace semuanya telah ditetapkan. workspace menerima id ruang kerja (wsp_...), slug, atau nama; Gateway mengubahnya menjadi id saat dimulai.
Kunci konfigurasi akun
| Kunci | Nilai bawaan | Catatan |
|---|---|---|
baseUrl |
tidak ada (wajib) | URL server ClickClack. |
token |
tidak ada (wajib) | String biasa atau referensi rahasia (source: "env" | "file" | "exec"). |
workspace |
tidak ada (wajib) | Id, slug, atau nama ruang kerja. |
replyMode |
"agent" |
"agent" menjalankan seluruh alur agen; "model" mengirim penyelesaian model langsung singkat. |
defaultTo |
"channel:general" |
Target yang digunakan ketika jalur keluar tidak memberikan target. |
allowFrom |
["*"] |
Daftar izin id pengguna untuk DM dan pesan kanal masuk. |
botUserId |
terdeteksi otomatis | Ditentukan dari identitas token bot saat dimulai. |
agentId |
bawaan rute | Tetapkan pesan masuk akun ini ke satu agen. |
toolsAllow |
tidak ada | Daftar izin alat untuk balasan agen dari akun ini. |
model, systemPrompt |
tidak ada | Digunakan oleh penyelesaian replyMode: "model". |
reconnectMs |
1500 |
Penundaan penyambungan ulang waktu nyata (100 hingga 60000). |
Jika plugins.allow adalah daftar pembatas yang tidak kosong, memilih ClickClack
secara eksplisit dalam penyiapan kanal atau menjalankan openclaw plugins enable clickclack
akan menambahkan clickclack ke daftar tersebut. Instalasi saat orientasi awal menggunakan
perilaku pemilihan eksplisit yang sama. Jalur-jalur ini tidak mengganti plugins.deny atau
pengaturan global plugins.enabled: false. Menjalankan
openclaw plugins install @openclaw/clickclack secara langsung mengikuti kebijakan
instalasi plugin biasa dan juga mencatat ClickClack dalam daftar izin yang sudah ada.
Beberapa bot
Setiap akun membuka koneksi waktu nyata ClickClack sendiri dan menggunakan token botnya sendiri.
{ 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", }, }, }, },}Mode balasan
replyMode: "agent"(bawaan) meneruskan pesan masuk melalui alur agen normal, termasuk perekaman sesi dan kebijakan alat.replyMode: "model"melewati alur agen dan menggunakanllm.completedari runtime plugin untuk balasan bot langsung yang singkat (secara opsional dibentuk olehmodeldansystemPrompt).
Mode model menjalankan penyelesaian terhadap id agen bot yang telah ditentukan, yang memerlukan
bit kepercayaan eksplisit plugins.entries.clickclack.llm.allowAgentIdOverride: true:
{ plugins: { entries: { clickclack: { llm: { allowAgentIdOverride: true, }, }, }, },}Biarkan bit kepercayaan tetap nonaktif jika Anda hanya menggunakan mode balasan agent
bawaan; bit tersebut tidak diperlukan dalam mode itu.
Gunakan mode agent untuk bukti korelasi lintas layanan. Untuk id pesan ClickClack otoritatif
dalam bentuk kanonis msg_<ulid>, kanal memperoleh id proses OpenClaw deterministik
clickclack:<message-id>. Setiap panggilan model kemudian terlihat dalam diagnostik sebagai
clickclack:<message-id>:model:<n>; ketika giliran tersebut menggunakan ClawRouter, id
panggilan model yang sama dikirim sebagai X-Request-ID. Mode model melewati diagnostik
proses/sesi agen normal sehingga tidak cocok untuk jalur bukti ini.
Ketika peristiwa waktu nyata berisi payload.correlation_id yang telah divalidasi, kanal
meneruskannya sebagai X-Correlation-ID pada pengambilan pesan otoritatif dan permintaan
balasan ClickClack yang dihasilkan. Nilai menggunakan kumpulan karakter aman 128 karakter
milik ClickClack (A-Z, a-z, 0-9, ., _, :, dan -); nilai yang tidak valid
dihilangkan. Penggabungan ini hanya berisi pengidentifikasi, tidak pernah berisi isi pesan,
prompt, penyelesaian, kredensial, atau keluaran alat.
Baris aktivitas agen
Secara bawaan, kanal ClickClack tidak menampilkan apa pun saat giliran agen berjalan; hanya balasan akhir yang dikirim. Tetapkan agentActivity: true pada akun untuk menerbitkan baris pesan agent_commentary dan agent_tool yang persisten selama giliran berlangsung:
{ channels: { clickclack: { enabled: true, token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", agentActivity: true, }, },}Persyaratan dan perilaku:
- Nonaktif secara bawaan. Penyiapan standar dan server ClickClack lama tidak terpengaruh.
- Memerlukan cakupan token
agent_activity:write. Cakupan ini terpisah daribot:writedan tidak diwarisi darinya; buat token bot dengan--scopes bot:write,agent_activity:write(atau berikan cakupan tersebut kepada token yang sudah ada) sebelum mengaktifkan opsi ini. - Degradasi upaya terbaik. Jika token tidak memiliki
agent_activity:writeatau server menolak penulisan aktivitas, kegagalan dicatat dan balasan akhir tetap dikirim seperti biasa; baris aktivitas tidak muncul. - Baris dikelompokkan per giliran (
turn_id), digabungkan sehingga satu langkah logis menjadi satu baris, dan baris alat menggunakan pemformatan progres yang sama seperti Discord/Slack/Telegram (nama alat beserta detail perintah). - Metadata atribusi. Kiriman yang dibuat agen (baris aktivitas dan balasan akhir) membawa kolom
author_modeldanauthor_thinkingyang ditentukan dari model aktual yang digunakan untuk giliran tersebut (termasuk setelah pengalihan). Server yang tidak mendefinisikan kolom ini mengabaikan kolom JSON yang tidak dikenal; server yang menyimpannya dapat menjawab "model mana yang mengatakan baris ini, pada tingkat pemikiran mana" untuk setiap pesan.
Target
channel:<name-or-id>mengirim ke kanal ruang kerja. Target tanpa awalan secara bawaan menggunakanchannel:.dm:<user_id>membuat atau menggunakan kembali percakapan langsung dengan pengguna tersebut.thread:<message_id>membalas di utas yang berakar pada pesan tersebut.
Target keluar eksplisit juga dapat membawa prefiks penyedia clickclack: atau cc:.
Contoh:
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"Izin
Cakupan token ClickClack diberlakukan oleh API ClickClack.
bot:read: membaca data ruang kerja/kanal/pesan/utas/DM/waktu nyata/profil.bot:write:bot:readditambah pesan kanal, balasan utas, DM, dan unggahan.bot:admin:bot:writeditambah pembuatan kanal.agent_activity:write: baris aktivitas agen yang persisten (agent_commentary/agent_tool). Tidak diwarisi olehbot:writeataubot:admin; hanya diperlukan ketikaagentActivity: trueditetapkan.
OpenClaw hanya memerlukan bot:write untuk percakapan agen normal. Tambahkan agent_activity:write ketika mengaktifkan baris aktivitas agen.
Pemecahan masalah
ClickClack is not configured for account "<id>": tetapkanbaseUrl,token(misalnya melaluiCLICKCLACK_BOT_TOKEN), danworkspaceuntuk akun tersebut.ClickClack workspace not found: <value>: tetapkanworkspaceke id, slug, atau nama ruang kerja yang dikembalikan oleh ClickClack.- Tidak ada balasan masuk: pastikan token memiliki akses baca waktu nyata dan perhatikan bahwa bot mengabaikan pesannya sendiri serta pesan dari bot lain.
- Pengiriman ke kanal gagal: pastikan bot adalah anggota ruang kerja dan memiliki
bot:write.