Get started
ClickClack
ClickClack з’єднує OpenClaw із самостійно розміщеним робочим простором ClickClack за допомогою повноцінних токенів ботів ClickClack.
Використовуйте це, якщо потрібно, щоб агент OpenClaw відображався як користувач-бот ClickClack. ClickClack підтримує незалежних службових ботів і ботів, що належать користувачам; боти користувачів зберігають owner_user_id й отримують лише надані вами області дії токена.
Швидке налаштування
Створіть токен бота на сервері ClickClack:
clickclack admin bot create \ --workspace <workspace_id> \ --name "OpenClaw" \ --handle openclaw \ --scopes bot:write \ --plainДля бота, що належить користувачу, додайте --owner <user_id>.
Налаштуйте OpenClaw:
{ channels: { clickclack: { enabled: true, baseUrl: "https://clickclack.example.com", token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", defaultTo: "channel:general", }, },}Потім виконайте:
export CLICKCLACK_BOT_TOKEN="ccb_..."openclaw gatewayОбліковий запис вважається налаштованим, лише коли задано всі параметри: baseUrl, token і workspace. workspace приймає ідентифікатор робочого простору (wsp_...), коротке ім’я або назву; під час запуску Gateway перетворює значення на ідентифікатор.
Ключі конфігурації облікового запису
| Ключ | Типове значення | Примітки |
|---|---|---|
baseUrl |
немає (обов’язково) | URL-адреса сервера ClickClack. |
token |
немає (обов’язково) | Звичайний рядок або посилання на секрет (source: "env" | "file" | "exec"). |
workspace |
немає (обов’язково) | Ідентифікатор, коротке ім’я або назва робочого простору. |
replyMode |
"agent" |
"agent" запускає повний конвеєр агента; "model" надсилає короткі прямі відповіді моделі. |
defaultTo |
"channel:general" |
Ціль, яку використовують, коли шлях вихідного повідомлення не вказує ціль. |
allowFrom |
["*"] |
Список дозволених ідентифікаторів користувачів для вхідних приватних повідомлень і повідомлень каналів. |
botUserId |
визначається автоматично | Визначається за ідентичністю токена бота під час запуску. |
agentId |
типове значення маршруту | Закріплює вхідні повідомлення цього облікового запису за одним агентом. |
toolsAllow |
немає | Список дозволених інструментів для відповідей агента з цього облікового запису. |
model, systemPrompt |
немає | Використовуються для відповідей у режимі replyMode: "model". |
reconnectMs |
1500 |
Затримка повторного підключення в реальному часі (від 100 до 60000). |
Якщо plugins.allow є непорожнім обмежувальним списком, явний вибір
ClickClack під час налаштування каналу або виконання openclaw plugins enable clickclack
додає clickclack до цього списку. Встановлення під час початкового налаштування використовує
таку саму поведінку явного вибору. Ці шляхи не перевизначають plugins.deny або
глобальне налаштування plugins.enabled: false. Безпосереднє виконання
openclaw plugins install @openclaw/clickclack дотримується звичайної політики
встановлення Plugin, а також реєструє ClickClack у наявному списку дозволених.
Кілька ботів
Кожен обліковий запис відкриває власне з’єднання ClickClack у реальному часі й використовує власний токен бота.
{ 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", }, }, }, },}Режими відповіді
replyMode: "agent"(типове значення) передає вхідні повідомлення через звичайний конвеєр агента, включно із записуванням сеансу та політикою інструментів.replyMode: "model"оминає конвеєр агента й використовуєllm.completeсередовища виконання Plugin для коротких прямих відповідей бота (які за потреби визначаються параметрамиmodelіsystemPrompt).
Режим моделі виконує запити до моделі від імені визначеного ідентифікатора агента бота, що потребує
явного біта довіри plugins.entries.clickclack.llm.allowAgentIdOverride: true:
{ plugins: { entries: { clickclack: { llm: { allowAgentIdOverride: true, }, }, }, },}Залиште біт довіри вимкненим, якщо використовуєте лише типовий режим відповіді agent;
у ньому він не потрібен.
Використовуйте режим agent для доказів кореляції між сервісами. Для авторитетного
ідентифікатора повідомлення ClickClack у канонічному форматі msg_<ulid> канал формує
детермінований ідентифікатор запуску OpenClaw clickclack:<message-id>. Кожен виклик моделі
після цього відображається в діагностиці як clickclack:<message-id>:model:<n>; коли цей
хід використовує ClawRouter, той самий ідентифікатор виклику моделі надсилається як X-Request-ID.
Режим model оминає звичайну діагностику запуску агента та сеансу, тому
не придатний для цього способу підтвердження.
Коли подія реального часу містить перевірений payload.correlation_id, канал
передає його як X-Correlation-ID під час авторитетного отримання повідомлення та
у відповідних запитах ClickClack. Значення використовують безпечний набір ClickClack
із 128 символів (A-Z, a-z, 0-9, ., _, : і -); недійсні значення
пропускаються. Ці зв’язки містять лише ідентифікатори, але ніколи не тіла повідомлень,
запити, відповіді моделі, облікові дані чи вивід інструментів.
Рядки активності агента
Типово канал ClickClack нічого не показує, поки виконується хід агента; з’являється лише остаточна відповідь. Установіть agentActivity: true для облікового запису, щоб публікувати постійні рядки повідомлень agent_commentary і agent_tool під час виконання ходу:
{ channels: { clickclack: { enabled: true, token: { source: "env", provider: "default", id: "CLICKCLACK_BOT_TOKEN" }, workspace: "default", agentActivity: true, }, },}Вимоги та поведінка:
- Типово вимкнено. Стандартні конфігурації та старіші сервери ClickClack залишаються без змін.
- Потребує області дії токена
agent_activity:write. Ця область дії відокремлена відbot:writeі не успадковується від неї; створіть токен бота з--scopes bot:write,agent_activity:write(або надайте цю область дії наявному токену), перш ніж вмикати параметр. - Поступове погіршення за принципом докладання зусиль. Якщо токен не має
agent_activity:writeабо сервер відхиляє запис активності, помилки реєструються в журналі, а остаточна відповідь усе одно надсилається як звичайно; рядки активності не з’являються. - Рядки групуються за ходом (
turn_id) і об’єднуються так, щоб одному логічному кроку відповідав один рядок, а рядки інструментів використовують те саме форматування перебігу виконання, що й Discord/Slack/Telegram (назва інструмента та відомості про команду). - Метадані авторства. Дописи, створені агентом (рядки активності й остаточна відповідь), містять поля
author_modelіauthor_thinking, визначені за фактичною моделлю, використаною для ходу (зокрема після переходу на резервну модель). Сервери, які не визначають ці стовпці, ігнорують невідомі поля JSON; сервери, які їх зберігають, можуть для кожного повідомлення відповісти на запитання «яка модель створила цей рядок і з яким рівнем міркування».
Цілі
channel:<name-or-id>надсилає повідомлення до каналу робочого простору. Цілі без префікса типово отримуютьchannel:.dm:<user_id>створює або повторно використовує приватну розмову з цим користувачем.thread:<message_id>відповідає в гілці, коренем якої є це повідомлення.
Явні цілі вихідних повідомлень також можуть містити префікс постачальника clickclack: або cc:.
Приклади:
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"Дозволи
Області дії токена ClickClack контролюються API ClickClack.
bot:read: читання даних робочих просторів, каналів, повідомлень, гілок, приватних розмов, подій реального часу та профілів.bot:write: можливостіbot:read, а також повідомлення каналів, відповіді в гілках, приватні повідомлення й завантаження файлів.bot:admin: можливостіbot:write, а також створення каналів.agent_activity:write: постійні рядки активності агента (agent_commentary/agent_tool). Не успадковується відbot:writeабоbot:admin; потрібна лише тоді, коли встановленоagentActivity: true.
Для звичайного спілкування з агентом OpenClaw потрібна лише область дії bot:write. Додайте agent_activity:write, коли вмикаєте рядки активності агента.
Усунення несправностей
ClickClack is not configured for account "<id>": задайтеbaseUrl,token(наприклад, черезCLICKCLACK_BOT_TOKEN) іworkspaceдля цього облікового запису.ClickClack workspace not found: <value>: задайте дляworkspaceідентифікатор, коротке ім’я або назву робочого простору, повернуті ClickClack.- Немає відповідей на вхідні повідомлення: переконайтеся, що токен має доступ до читання подій у реальному часі, і врахуйте, що бот ігнорує власні повідомлення та повідомлення інших ботів.
- Не вдається надсилати повідомлення до каналів: переконайтеся, що бот є учасником робочого простору й має область дії
bot:write.