Довідник конфігурації
Основний довідник конфігурації для~/.openclaw/openclaw.json. Огляд, орієнтований на завдання, див. у Configuration.
Ця сторінка охоплює основні поверхні конфігурації OpenClaw і дає посилання назовні, коли підсистема має власний, глибший довідник. Вона не намагається вбудувати на одну сторінку кожен каталог команд, що належить каналу/плагіну, або кожен глибокий параметр пам’яті/QMD.
Джерело істини в коді:
openclaw config schemaвиводить актуальну JSON Schema, що використовується для валідації та Control UI, з об’єднаними метаданими bundled/plugin/channel, коли вони доступніconfig.schema.lookupповертає один вузол схеми з обмеженням за шляхом для інструментів деталізаціїpnpm config:docs:check/pnpm config:docs:genперевіряють хеш базового рівня документації конфігурації щодо поточної поверхні схеми
- Memory configuration reference для
agents.defaults.memorySearch.*,memory.qmd.*,memory.citationsі конфігурації dreaming уplugins.entries.memory-core.config.dreaming - Slash Commands для поточного каталогу вбудованих + bundled команд
- сторінки відповідного каналу/плагіну для поверхонь команд, специфічних для каналу
Канали
Кожен канал запускається автоматично, коли його розділ конфігурації існує (якщо не вказаноenabled: false).
Доступ до особистих повідомлень і груп
Усі канали підтримують політики особистих повідомлень і політики груп:| Політика DM | Поведінка |
|---|---|
pairing (типово) | Невідомі відправники отримують одноразовий код сполучення; власник має схвалити |
allowlist | Лише відправники з allowFrom (або зі сховища дозволів після сполучення) |
open | Дозволити всі вхідні особисті повідомлення (потрібно allowFrom: ["*"]) |
disabled | Ігнорувати всі вхідні особисті повідомлення |
| Політика груп | Поведінка |
|---|---|
allowlist (типово) | Лише групи, що відповідають налаштованому списку дозволів |
open | Обійти списки дозволів груп (контроль за згадуванням усе ще застосовується) |
disabled | Блокувати всі повідомлення груп/кімнат |
channels.defaults.groupPolicy задає типове значення, коли groupPolicy постачальника не встановлено.
Коди сполучення спливають через 1 годину. Очікувальні запити на сполучення DM обмежені 3 на канал.
Якщо блок постачальника повністю відсутній (channels.<provider> відсутній), політика груп під час виконання повертається до allowlist (fail-closed) із попередженням під час запуску.Перевизначення моделі для каналів
Використовуйтеchannels.modelByChannel, щоб прив’язати конкретні ідентифікатори каналів до моделі. Значення приймають provider/model або налаштовані псевдоніми моделей. Відображення каналу застосовується, коли сеанс ще не має перевизначення моделі (наприклад, встановленого через /model).
Типові значення каналу та heartbeat
Використовуйтеchannels.defaults для спільної поведінки політики груп і heartbeat між постачальниками:
channels.defaults.groupPolicy: резервна політика груп, колиgroupPolicyна рівні постачальника не встановлено.channels.defaults.contextVisibility: типовий режим видимості додаткового контексту для всіх каналів. Значення:all(типово, включати весь цитований/гілковий/історичний контекст),allowlist(включати контекст лише від відправників зі списку дозволів),allowlist_quote(те саме, що allowlist, але зберігати явний контекст цитати/відповіді). Перевизначення на рівні каналу:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: включати статуси справних каналів у вивід heartbeat.channels.defaults.heartbeat.showAlerts: включати деградовані/помилкові статуси у вивід heartbeat.channels.defaults.heartbeat.useIndicator: відображати компактний вивід heartbeat у стилі індикатора.
Багатообліковий WhatsApp
Багатообліковий WhatsApp
- Команди на вихід типово використовують обліковий запис
default, якщо він існує; інакше — перший налаштований ідентифікатор облікового запису (відсортований). - Необов’язковий
channels.whatsapp.defaultAccountперевизначає цей резервний вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. - Застарілий каталог автентифікації Baileys для одного облікового запису мігрується командою
openclaw doctorуwhatsapp/default. - Перевизначення на рівні облікового запису:
channels.whatsapp.accounts.<id>.sendReadReceipts,channels.whatsapp.accounts.<id>.dmPolicy,channels.whatsapp.accounts.<id>.allowFrom.
Telegram
- Токен бота:
channels.telegram.botTokenабоchannels.telegram.tokenFile(лише звичайний файл; символьні посилання відхиляються), зTELEGRAM_BOT_TOKENяк резервним варіантом для типового облікового запису. - Необов’язковий
channels.telegram.defaultAccountперевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. - У багатооблікових конфігураціях (2+ ідентифікаторів облікових записів) задайте явний типово вибраний обліковий запис (
channels.telegram.defaultAccountабоchannels.telegram.accounts.default), щоб уникнути резервної маршрутизації;openclaw doctorпопереджає, якщо його немає або він некоректний. configWrites: falseблокує ініційовані з Telegram записи конфігурації (міграції ID супергруп,/config set|unset).- Записи верхнього рівня
bindings[]ізtype: "acp"налаштовують постійні ACP-прив’язки для тем форуму (використовуйте канонічнийchatId:topic:topicIdуmatch.peer.id). Семантика полів є спільною в ACP Agents. - Попередній перегляд потокової передачі в Telegram використовує
sendMessage+editMessageText(працює в особистих і групових чатах). - Політика повторних спроб: див. Retry policy.
Discord
- Токен:
channels.discord.token, зDISCORD_BOT_TOKENяк резервним варіантом для типового облікового запису. - Прямі вихідні виклики, що надають явний Discord
token, використовують цей токен для виклику; налаштування повторних спроб/політик облікового запису все одно беруться з вибраного облікового запису в активному знімку runtime. - Необов’язковий
channels.discord.defaultAccountперевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. - Використовуйте
user:<id>(DM) абоchannel:<id>(канал guild) для цілей доставки; прості числові ID відхиляються. - Slug-и guild — у нижньому регістрі, а пробіли замінюються на
-; ключі каналів використовують slug-ім’я (без#). Надавайте перевагу ID guild. - Повідомлення, створені ботом, типово ігноруються.
allowBots: trueвмикає їх; використовуйтеallowBots: "mentions", щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно відфільтровуються). channels.discord.guilds.<id>.ignoreOtherMentions(і перевизначення каналу) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (крім @everyone/@here).maxLinesPerMessage(типово 17) розбиває високі повідомлення навіть тоді, коли вони не перевищують 2000 символів.channels.discord.threadBindingsкерує маршрутизацією, прив’язаною до гілок Discord:enabled: перевизначення Discord для функцій сеансів, прив’язаних до гілок (/focus,/unfocus,/agents,/session idle,/session max-ageі прив’язана доставка/маршрутизація)idleHours: перевизначення Discord для автоматичного зняття фокуса через неактивність у годинах (0вимикає)maxAgeHours: перевизначення Discord для жорсткого максимального віку в годинах (0вимикає)spawnSubagentSessions: перемикач opt-in для автоматичного створення/прив’язки гілок уsessions_spawn({ thread: true })
- Записи верхнього рівня
bindings[]ізtype: "acp"налаштовують постійні ACP-прив’язки для каналів і гілок (використовуйте id каналу/гілки вmatch.peer.id). Семантика полів є спільною в ACP Agents. channels.discord.ui.components.accentColorзадає колір акценту для контейнерів компонентів Discord v2.channels.discord.voiceвмикає розмови в голосових каналах Discord і необов’язкові перевизначення auto-join + TTS.channels.discord.voice.daveEncryptionіchannels.discord.voice.decryptionFailureToleranceнапряму передаються до параметрів DAVE у@discordjs/voice(типовоtrueі24).- OpenClaw також намагається відновити голосовий прийом, виходячи та повторно приєднуючись до голосового сеансу після повторних збоїв дешифрування.
channels.discord.streaming— це канонічний ключ режиму потоку. ЗастаріліstreamModeі булеві значенняstreamingмігруються автоматично.channels.discord.autoPresenceвідображає доступність runtime на присутність бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.channels.discord.dangerouslyAllowNameMatchingзнову вмикає зіставлення за змінюваними іменами/тегами (режим сумісності break-glass).channels.discord.execApprovals: доставка схвалень exec у стилі Discord і авторизація тих, хто схвалює.enabled:true,falseабо"auto"(типово). У режимі auto схвалення exec активуються, коли тих, хто схвалює, можна визначити зapproversабоcommands.ownerAllowFrom.approvers: ID користувачів Discord, яким дозволено схвалювати запити exec. Якщо не вказано, використовуєтьсяcommands.ownerAllowFrom.agentFilter: необов’язковий список дозволених ID агентів. Не вказуйте, щоб пересилати схвалення для всіх агентів.sessionFilter: необов’язкові шаблони ключів сеансів (підрядок або regex).target: куди надсилати запити на схвалення."dm"(типово) надсилає в DM тим, хто схвалює,"channel"надсилає у вихідний канал,"both"надсилає в обидва місця. Коли target включає"channel", кнопками можуть користуватися лише визначені як такі, що схвалюють.cleanupAfterResolve: якщоtrue, видаляє DM зі схваленням після схвалення, відхилення або тайм-ауту.
off (немає), own (повідомлення бота, типово), all (усі повідомлення), allowlist (від guilds.<id>.users для всіх повідомлень).
Google Chat
- JSON облікового запису служби: вбудований (
serviceAccount) або з файла (serviceAccountFile). - Також підтримується SecretRef облікового запису служби (
serviceAccountRef). - Резервні варіанти через env:
GOOGLE_CHAT_SERVICE_ACCOUNTабоGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - Використовуйте
spaces/<spaceId>абоusers/<userId>для цілей доставки. channels.googlechat.dangerouslyAllowNameMatchingзнову вмикає зіставлення за змінюваним email principal (режим сумісності break-glass).
Slack
- Режим Socket вимагає і
botToken, іappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENяк резервний варіант env для типового облікового запису). - Режим HTTP вимагає
botTokenплюсsigningSecret(у корені або для кожного облікового запису). botToken,appToken,signingSecretіuserTokenприймають відкриті рядки або об’єкти SecretRef.- Знімки облікових записів Slack показують поля джерела/статусу для кожного облікового даного, наприклад
botTokenSource,botTokenStatus,appTokenStatus, а в режимі HTTP —signingSecretStatus.configured_unavailableозначає, що обліковий запис налаштований через SecretRef, але поточний шлях команди/runtime не зміг визначити значення секрету. configWrites: falseблокує записи конфігурації, ініційовані зі Slack.- Необов’язковий
channels.slack.defaultAccountперевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. channels.slack.streaming.mode— канонічний ключ режиму потоку Slack.channels.slack.streaming.nativeTransportкерує власним транспортом потокової передачі Slack. ЗастаріліstreamMode, булеві значенняstreamingіnativeStreamingмігруються автоматично.- Використовуйте
user:<id>(DM) абоchannel:<id>для цілей доставки.
off, own (типово), all, allowlist (з reactionAllowlist).
Ізоляція сеансів гілок: thread.historyScope — окремо для кожної гілки (типово) або спільно на рівні каналу. thread.inheritParent копіює стенограму батьківського каналу в нові гілки.
- Власна потокова передача Slack разом зі статусом гілки Slack у стилі помічника “is typing…” вимагають ціль відповіді у гілці. DM верхнього рівня типово залишаються поза гілкою, тому вони використовують
typingReactionабо звичайну доставку замість попереднього перегляду у стилі гілки. typingReactionдодає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а потім видаляє її після завершення. Використовуйте shortcode емодзі Slack, наприклад"hourglass_flowing_sand".channels.slack.execApprovals: доставка схвалень exec у стилі Slack і авторизація тих, хто схвалює. Та сама схема, що й у Discord:enabled(true/false/"auto"),approvers(ID користувачів Slack),agentFilter,sessionFilterіtarget("dm","channel"або"both").
| Група дій | Типово | Примітки |
|---|---|---|
| reactions | увімкнено | Реакції + список реакцій |
| messages | увімкнено | Читання/надсилання/редагування/видалення |
| pins | увімкнено | Закріпити/відкріпити/список |
| memberInfo | увімкнено | Інформація про учасника |
| emojiList | увімкнено | Список користувацьких емодзі |
Mattermost
Mattermost постачається як плагін:openclaw plugins install @openclaw/mattermost.
oncall (відповідати на @-згадування, типово), onmessage (кожне повідомлення), onchar (повідомлення, що починаються з префікса-тригера).
Коли власні команди Mattermost увімкнено:
commands.callbackPathмає бути шляхом (наприклад/api/channels/mattermost/command), а не повною URL-адресою.commands.callbackUrlмає вказувати на endpoint шлюзу OpenClaw і бути доступною з сервера Mattermost.- Власні slash callback-обробники автентифікуються за токенами кожної
команди, які Mattermost повертає під час реєстрації slash command. Якщо
реєстрація не вдається або жодну команду не активовано, OpenClaw відхиляє
callback-и з помилкою
Unauthorized: invalid command token. - Для приватних/tailnet/internal callback-хостів Mattermost може вимагати,
щоб
ServiceSettings.AllowedUntrustedInternalConnectionsвключав callback-хост/домен. Використовуйте значення хоста/домену, а не повні URL-адреси. channels.mattermost.configWrites: дозволяти або забороняти записи конфігурації, ініційовані з Mattermost.channels.mattermost.requireMention: вимагати@mentionперед відповіддю в каналах.channels.mattermost.groups.<channelId>.requireMention: перевизначення контролю згадування для конкретного каналу ("*"для типового значення).- Необов’язковий
channels.mattermost.defaultAccountперевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
Signal
off, own (типово), all, allowlist (з reactionAllowlist).
channels.signal.account: прив’язати запуск каналу до конкретної ідентичності облікового запису Signal.channels.signal.configWrites: дозволяти або забороняти записи конфігурації, ініційовані з Signal.- Необов’язковий
channels.signal.defaultAccountперевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису.
BlueBubbles
BlueBubbles — рекомендований шлях для iMessage (на основі плагіна, налаштовується вchannels.bluebubbles).
- Основні шляхи ключів, охоплені тут:
channels.bluebubbles,channels.bluebubbles.dmPolicy. - Необов’язковий
channels.bluebubbles.defaultAccountперевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. - Записи верхнього рівня
bindings[]ізtype: "acp"можуть прив’язувати розмови BlueBubbles до постійних сеансів ACP. Використовуйте handle BlueBubbles або рядок цілі (chat_id:*,chat_guid:*,chat_identifier:*) уmatch.peer.id. Спільна семантика полів: ACP Agents. - Повну конфігурацію каналу BlueBubbles описано в BlueBubbles.
iMessage
OpenClaw запускаєimsg rpc (JSON-RPC через stdio). Демон або порт не потрібні.
-
Необов’язковий
channels.imessage.defaultAccountперевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. - Потрібен Full Disk Access до БД Messages.
-
Надавайте перевагу цілям
chat_id:<id>. Використовуйтеimsg chats --limit 20, щоб переглянути список чатів. -
cliPathможе вказувати на SSH-обгортку; задайтеremoteHost(hostабоuser@host) для отримання вкладень через SCP. -
attachmentRootsіremoteAttachmentRootsобмежують шляхи вхідних вкладень (типово:/Users/*/Library/Messages/Attachments). -
SCP використовує сувору перевірку ключа хоста, тому переконайтеся, що ключ relay-хоста вже існує в
~/.ssh/known_hosts. -
channels.imessage.configWrites: дозволяти або забороняти записи конфігурації, ініційовані з iMessage. -
Записи верхнього рівня
bindings[]ізtype: "acp"можуть прив’язувати розмови iMessage до постійних сеансів ACP. Використовуйте нормалізований handle або явну ціль чату (chat_id:*,chat_guid:*,chat_identifier:*) уmatch.peer.id. Спільна семантика полів: ACP Agents.
Приклад SSH-обгортки iMessage
Приклад SSH-обгортки iMessage
Matrix
Matrix підтримується розширенням і налаштовується вchannels.matrix.
- Автентифікація за токеном використовує
accessToken; автентифікація за паролем використовуєuserId+password. channels.matrix.proxyмаршрутизує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані облікові записи можуть перевизначити це черезchannels.matrix.accounts.<id>.proxy.channels.matrix.network.dangerouslyAllowPrivateNetworkдозволяє приватні/internal homeserver-и.proxyі цей мережевий opt-in — незалежні елементи керування.channels.matrix.defaultAccountвибирає бажаний обліковий запис у багатооблікових конфігураціях.channels.matrix.autoJoinтипово має значенняoff, тому запрошені кімнати й нові запрошення у стилі DM ігноруються, доки ви не встановитеautoJoin: "allowlist"разом ізautoJoinAllowlistабоautoJoin: "always".channels.matrix.execApprovals: доставка схвалень exec у стилі Matrix і авторизація тих, хто схвалює.enabled:true,falseабо"auto"(типово). У режимі auto схвалення exec активуються, коли тих, хто схвалює, можна визначити зapproversабоcommands.ownerAllowFrom.approvers: ID користувачів Matrix (наприклад@owner:example.org), яким дозволено схвалювати запити exec.agentFilter: необов’язковий список дозволених ID агентів. Не вказуйте, щоб пересилати схвалення для всіх агентів.sessionFilter: необов’язкові шаблони ключів сеансів (підрядок або regex).target: куди надсилати запити на схвалення."dm"(типово),"channel"(вихідна кімната) або"both".- Перевизначення для облікового запису:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopeкерує тим, як DM у Matrix групуються в сеанси:per-user(типово) спільний для маршрутизованого peer, тоді якper-roomізолює кожну DM-кімнату.- Перевірки статусу Matrix і live-пошуки в каталозі використовують ту саму політику proxy, що й runtime-трафік.
- Повну конфігурацію Matrix, правила таргетингу й приклади налаштування описано в Matrix.
Microsoft Teams
Microsoft Teams підтримується розширенням і налаштовується вchannels.msteams.
- Основні шляхи ключів, охоплені тут:
channels.msteams,channels.msteams.configWrites. - Повну конфігурацію Teams (облікові дані, webhook, політика DM/груп, перевизначення для окремих team/channel) описано в Microsoft Teams.
IRC
IRC підтримується розширенням і налаштовується вchannels.irc.
- Основні шляхи ключів, охоплені тут:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. - Необов’язковий
channels.irc.defaultAccountперевизначає вибір типового облікового запису, коли він збігається з налаштованим ідентифікатором облікового запису. - Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/контроль згадувань) описано в IRC.
Багато облікових записів (усі канали)
Запускайте кілька облікових записів на канал (кожен зі своїмaccountId):
defaultвикористовується, колиaccountIdпропущено (CLI + маршрутизація).- Токени env застосовуються лише до облікового запису default.
- Базові налаштування каналу застосовуються до всіх облікових записів, якщо їх не перевизначено для конкретного облікового запису.
- Використовуйте
bindings[].match.accountId, щоб маршрутизувати кожен обліковий запис до іншого агента. - Якщо ви додаєте не-default обліковий запис через
openclaw channels add(або onboarding каналу), залишаючись у топології одноканальної конфігурації верхнього рівня, OpenClaw спочатку переносить значення верхнього рівня для одного облікового запису, прив’язані до облікового запису, у карту облікових записів каналу, щоб початковий обліковий запис продовжив працювати. Більшість каналів переносять їх уchannels.<channel>.accounts.default; Matrix натомість може зберегти наявну відповідну іменовану/default ціль. - Наявні прив’язки лише для каналу (без
accountId) і далі відповідатимуть default обліковому запису; прив’язки з областю дії облікового запису залишаються необов’язковими. openclaw doctor --fixтакож виправляє змішані форми, переміщуючи значення верхнього рівня для одного облікового запису, прив’язані до облікового запису, у promoted account, вибраний для цього каналу. Більшість каналів використовуютьaccounts.default; Matrix натомість може зберегти наявну відповідну іменовану/default ціль.
Інші канали розширень
Багато каналів розширень налаштовуються якchannels.<id> і описані на їхніх окремих сторінках каналів (наприклад, Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
Див. повний індекс каналів: Channels.
Контроль згадувань у групових чатах
Для групових повідомлень типово потрібна згадка (метадані згадки або безпечні regex-шаблони). Це застосовується до групових чатів WhatsApp, Telegram, Discord, Google Chat і iMessage. Типи згадок:- Згадки в метаданих: нативні @-згадки платформи. Ігноруються в режимі self-chat WhatsApp.
- Текстові шаблони: безпечні regex-шаблони в
agents.list[].groupChat.mentionPatterns. Недійсні шаблони й небезпечні вкладені повторення ігноруються. - Контроль згадувань застосовується лише тоді, коли виявлення можливе (нативні згадки або принаймні один шаблон).
messages.groupChat.historyLimit задає глобальне типове значення. Канали можуть перевизначити його через channels.<channel>.historyLimit (або для окремого облікового запису). Встановіть 0, щоб вимкнути.
Ліміти історії DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Режим self-chat
Додайте власний номер уallowFrom, щоб увімкнути режим self-chat (ігнорує нативні @-згадки, відповідає лише на текстові шаблони):
Команди (обробка команд чату)
Деталі команд
Деталі команд
- Цей блок налаштовує поверхні команд. Поточний каталог вбудованих + bundled команд див. у Slash Commands.
- Ця сторінка — довідник ключів конфігурації, а не повний каталог команд. Команди, що належать каналу/плагіну, такі як QQ Bot
/bot-ping/bot-help/bot-logs, LINE/card, device-pair/pair, memory/dreaming, phone-control/phoneі Talk/voice, задокументовано на сторінках відповідних каналів/плагінів, а також у Slash Commands. - Текстові команди мають бути окремими повідомленнями, що починаються з
/. native: "auto"вмикає нативні команди для Discord/Telegram, залишаючи Slack вимкненим.nativeSkills: "auto"вмикає нативні команди Skills для Discord/Telegram, залишаючи Slack вимкненим.- Перевизначення для каналу:
channels.discord.commands.native(bool або"auto").falseочищає раніше зареєстровані команди. - Перевизначуйте реєстрацію нативних команд Skills для каналу через
channels.<provider>.commands.nativeSkills. channels.telegram.customCommandsдодає додаткові записи меню бота Telegram.bash: trueвмикає! <cmd>для оболонки хоста. Потрібніtools.elevated.enabledі відправник уtools.elevated.allowFrom.<channel>.config: trueвмикає/config(читання/записopenclaw.json). Для клієнтів шлюзуchat.sendпостійні записи/config set|unsetтакож потребуютьoperator.admin; доступний лише для читання/config showзалишається доступним для звичайних клієнтів оператора з областю запису.mcp: trueвмикає/mcpдля конфігурації сервера MCP, яким керує OpenClaw, уmcp.servers.plugins: trueвмикає/pluginsдля виявлення плагінів, встановлення та елементів керування ввімкненням/вимкненням.channels.<provider>.configWritesкерує мутаціями конфігурації для каналу (типово: true).- Для багатооблікових каналів
channels.<provider>.accounts.<id>.configWritesтакож керує записами, націленими на цей обліковий запис (наприклад/allowlist --config --account <id>або/config set channels.<provider>.accounts.<id>...). restart: falseвимикає/restartі дії інструмента перезапуску шлюзу. Типове значення:true.ownerAllowFrom— це явний список дозволів власника для команд/інструментів лише для власника. Він відокремлений відallowFrom.ownerDisplay: "hash"хешує id власника в системному prompt. ВстановітьownerDisplaySecret, щоб керувати хешуванням.allowFromзадається для кожного постачальника. Якщо встановлено, це єдине джерело авторизації (списки дозволів/сполучення каналу таuseAccessGroupsігноруються).useAccessGroups: falseдозволяє командам обходити політики access-group, колиallowFromне встановлено.- Карта документації команд:
Типові значення агента
agents.defaults.workspace
Типове значення: ~/.openclaw/workspace.
agents.defaults.repoRoot
Необов’язковий корінь репозиторію, який показується в рядку Runtime системного prompt. Якщо не встановлено, OpenClaw автоматично визначає його, піднімаючись угору від workspace.
agents.defaults.skills
Необов’язковий типовий список дозволів Skills для агентів, які не задають
agents.list[].skills.
- Пропустіть
agents.defaults.skills, щоб типово не обмежувати Skills. - Пропустіть
agents.list[].skills, щоб успадкувати типові значення. - Встановіть
agents.list[].skills: [], щоб не використовувати Skills. - Непорожній список
agents.list[].skillsє остаточним набором для цього агента; він не об’єднується з типовими значеннями.
agents.defaults.skipBootstrap
Вимикає автоматичне створення bootstrap-файлів workspace (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
agents.defaults.contextInjection
Керує тим, коли bootstrap-файли workspace вставляються в системний prompt. Типове значення: "always".
"continuation-skip": безпечні ходи продовження (після завершеної відповіді асистента) пропускають повторну вставку bootstrap workspace, зменшуючи розмір prompt. Запуски heartbeat і повторні спроби після ущільнення все одно перебудовують контекст.
agents.defaults.bootstrapMaxChars
Максимальна кількість символів на bootstrap-файл workspace до обрізання. Типове значення: 20000.
agents.defaults.bootstrapTotalMaxChars
Максимальна сумарна кількість символів, що вставляються через всі bootstrap-файли workspace. Типове значення: 150000.
agents.defaults.bootstrapPromptTruncationWarning
Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізається.
Типове значення: "once".
"off": ніколи не вставляти текст попередження в системний prompt."once": вставляти попередження один раз для кожного унікального сигнатурного обрізання (рекомендовано)."always": вставляти попередження під час кожного запуску, коли є обрізання.
agents.defaults.imageMaxDimensionPx
Максимальний розмір у пікселях для найдовшого боку зображення в блоках зображень transcript/tool перед викликами постачальника.
Типове значення: 1200.
Нижчі значення зазвичай зменшують використання vision-token і розмір payload запиту для сценаріїв із великою кількістю знімків екрана.
Вищі значення зберігають більше візуальних деталей.
agents.defaults.userTimezone
Часовий пояс для контексту системного prompt (не для часових міток повідомлень). Якщо не задано, використовується часовий пояс хоста.
agents.defaults.timeFormat
Формат часу в системному prompt. Типове значення: auto (параметр ОС).
agents.defaults.model
model: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Рядкова форма задає лише основну модель.
- Об’єктна форма задає основну модель плюс упорядковані failover-моделі.
imageModel: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Використовується шляхом інструмента
imageяк його конфігурація vision-моделі. - Також використовується як резервна маршрутизація, коли вибрана/типова модель не може приймати вхідні зображення.
- Використовується шляхом інструмента
imageGenerationModel: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею інструмента/плагіна, що генерує зображення.
- Типові значення:
google/gemini-3.1-flash-image-previewдля нативної генерації зображень Gemini,fal/fal-ai/flux/devдля fal абоopenai/gpt-image-1для OpenAI Images. - Якщо ви вибираєте
provider/modelнапряму, також налаштуйте відповідну автентифікацію постачальника/API key (наприкладGEMINI_API_KEYабоGOOGLE_API_KEYдляgoogle/*,OPENAI_API_KEYдляopenai/*,FAL_KEYдляfal/*). - Якщо не вказано,
image_generateусе одно може визначити типове значення постачальника з автентифікацією. Спочатку він пробує поточного типового постачальника, а потім — решту зареєстрованих постачальників генерації зображень у порядку provider-id.
musicGenerationModel: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Використовується спільною можливістю генерації музики та вбудованим інструментом
music_generate. - Типові значення:
google/lyria-3-clip-preview,google/lyria-3-pro-previewабоminimax/music-2.5+. - Якщо не вказано,
music_generateусе одно може визначити типове значення постачальника з автентифікацією. Спочатку він пробує поточного типового постачальника, а потім — решту зареєстрованих постачальників генерації музики в порядку provider-id. - Якщо ви вибираєте
provider/modelнапряму, також налаштуйте відповідну автентифікацію постачальника/API key.
- Використовується спільною можливістю генерації музики та вбудованим інструментом
videoGenerationModel: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Використовується спільною можливістю генерації відео та вбудованим інструментом
video_generate. - Типові значення:
qwen/wan2.6-t2v,qwen/wan2.6-i2v,qwen/wan2.6-r2v,qwen/wan2.6-r2v-flashабоqwen/wan2.7-r2v. - Якщо не вказано,
video_generateусе одно може визначити типове значення постачальника з автентифікацією. Спочатку він пробує поточного типового постачальника, а потім — решту зареєстрованих постачальників генерації відео в порядку provider-id. - Якщо ви вибираєте
provider/modelнапряму, також налаштуйте відповідну автентифікацію постачальника/API key. - Вбудований постачальник генерації відео Qwen підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість до 10 секунд і параметри рівня постачальника
size,aspectRatio,resolution,audioтаwatermark.
- Використовується спільною можливістю генерації відео та вбудованим інструментом
pdfModel: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Використовується інструментом
pdfдля маршрутизації моделі. - Якщо не вказано, інструмент PDF резервно використовує
imageModel, а потім визначену модель сеансу/типову модель.
- Використовується інструментом
pdfMaxBytesMb: типовий ліміт розміру PDF для інструментаpdf, колиmaxBytesMbне передано під час виклику.pdfMaxPages: типова максимальна кількість сторінок, що враховуються в режимі резервного вилучення інструментаpdf.verboseDefault: типовий рівень verbose для агентів. Значення:"off","on","full". Типове значення:"off".elevatedDefault: типовий рівень elevated-output для агентів. Значення:"off","on","ask","full". Типове значення:"on".model.primary: форматprovider/model(наприкладopenai/gpt-5.4). Якщо ви пропускаєте постачальника, OpenClaw спочатку намагається знайти псевдонім, потім — унікальний збіг точно цього model id серед налаштованих постачальників, і лише після цього резервно використовує налаштованого типового постачальника (застаріла поведінка сумісності, тому надавайте перевагу явномуprovider/model). Якщо цей постачальник більше не надає налаштовану типову модель, OpenClaw резервно переходить до першого налаштованогоprovider/modelзамість показу застарілого типового значення видаленого постачальника.models: налаштований каталог моделей і список дозволів для/model. Кожен запис може міститиalias(скорочення) іparams(специфічні для постачальника, наприкладtemperature,maxTokens,cacheRetention,context1m).params: глобальні типові параметри постачальника, які застосовуються до всіх моделей. Задаються вagents.defaults.params(наприклад{ cacheRetention: "long" }).- Пріоритет злиття
params(конфігурація):agents.defaults.params(глобальна база) перевизначаєтьсяagents.defaults.models["provider/model"].params(для конкретної моделі), а потімagents.list[].params(для відповідного id агента) перевизначає за ключем. Докладніше див. у Prompt Caching. embeddedHarness: типова політика низькорівневого runtime вбудованого агента. Використовуйтеruntime: "auto", щоб дозволити зареєстрованим plugin harness-ам перехоплювати підтримувані моделі,runtime: "pi"— щоб примусово використовувати вбудований PI harness, або зареєстрований id harness, наприкладruntime: "codex". Встановітьfallback: "none", щоб вимкнути автоматичний резервний перехід на PI.- Засоби запису конфігурації, які змінюють ці поля (наприклад
/models set,/models set-imageі команди додавання/видалення fallback), зберігають канонічну об’єктну форму та за можливості зберігають наявні списки fallback. maxConcurrent: максимальна кількість паралельних запусків агентів між сеансами (кожен сеанс усе одно серіалізується). Типове значення: 4.
agents.defaults.embeddedHarness
embeddedHarness керує тим, який низькорівневий виконавець запускає ходи вбудованого агента.
Для більшості розгортань слід залишити типове значення { runtime: "auto", fallback: "pi" }.
Використовуйте це, коли довірений плагін надає нативний harness, наприклад bundled
harness app-server Codex.
runtime:"auto","pi"або id зареєстрованого plugin harness. Bundled плагін Codex реєструєcodex.fallback:"pi"або"none"."pi"зберігає вбудований PI harness як резервний варіант сумісності."none"змушує помилку при відсутньому або непідтримуваному виборі plugin harness замість тихого переходу на PI.- Перевизначення через середовище:
OPENCLAW_AGENT_RUNTIME=<id|auto|pi>перевизначаєruntime;OPENCLAW_AGENT_HARNESS_FALLBACK=noneвимикає резервний перехід на PI для цього процесу. - Для розгортань лише з Codex встановіть
model: "codex/gpt-5.4",embeddedHarness.runtime: "codex"іembeddedHarness.fallback: "none". - Це керує лише вбудованим chat harness. Генерація медіа, vision, PDF, музика, відео та TTS усе одно використовують власні налаштування
provider/model.
agents.defaults.models):
| Псевдонім | Модель |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.4 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off або самостійно не визначите agents.defaults.models["zai/<model>"].params.thinking.
Для моделей Z.AI tool_stream типово ввімкнено для потокової передачі викликів інструментів. Установіть agents.defaults.models["zai/<model>"].params.tool_stream у false, щоб вимкнути його.
Для моделей Anthropic Claude 4.6 типово використовується adaptive thinking, коли явний рівень thinking не задано.
agents.defaults.cliBackends
Необов’язкові CLI-бекенди для резервних запусків лише з текстом (без викликів інструментів). Корисно як запасний варіант, коли API-постачальники не працюють.
- CLI-бекенди орієнтовані насамперед на текст; інструменти завжди вимкнені.
- Сеанси підтримуються, коли встановлено
sessionArg. - Передача зображень підтримується, коли
imageArgприймає шляхи до файлів.
agents.defaults.systemPromptOverride
Замінює весь системний prompt, зібраний OpenClaw, на фіксований рядок. Задається на типовому рівні (agents.defaults.systemPromptOverride) або для окремого агента (agents.list[].systemPromptOverride). Значення для окремого агента мають пріоритет; порожнє значення або значення лише з пробілами ігнорується. Корисно для контрольованих експериментів із prompt.
agents.defaults.heartbeat
Періодичні запуски heartbeat.
every: рядок тривалості (ms/s/m/h). Типове значення:30m(автентифікація через API key) або1h(автентифікація через OAuth). Встановіть0m, щоб вимкнути.includeSystemPromptSection: якщо false, прибирає розділ Heartbeat із системного prompt і пропускає вставкуHEARTBEAT.mdу bootstrap-контекст. Типове значення:true.suppressToolErrorWarnings: якщо true, пригнічує payload-и попереджень про помилки інструментів під час запусків heartbeat.timeoutSeconds: максимальний час у секундах, дозволений для ходу агента heartbeat до його примусового переривання. Якщо не вказано, використовуєтьсяagents.defaults.timeoutSeconds.directPolicy: політика прямої/DM-доставки.allow(типово) дозволяє доставку на пряму ціль.blockпригнічує доставку на пряму ціль і генеруєreason=dm-blocked.lightContext: якщо true, запуски heartbeat використовують полегшений bootstrap-контекст і зберігають лишеHEARTBEAT.mdіз bootstrap-файлів workspace.isolatedSession: якщо true, кожен heartbeat запускається в новому сеансі без попередньої історії розмов. Така сама схема ізоляції, як у cronsessionTarget: "isolated". Зменшує вартість одного heartbeat у токенах приблизно зі ~100K до ~2-5K токенів.- Для окремого агента: задайте
agents.list[].heartbeat. Якщо будь-який агент визначаєheartbeat, heartbeat запускаються лише для цих агентів. - Heartbeat запускає повні ходи агента — коротші інтервали витрачають більше токенів.
agents.defaults.compaction
mode:defaultабоsafeguard(підсумовування шматками для довгих історій). Див. Compaction.provider: id зареєстрованого плагіна-постачальника compaction. Якщо встановлено, замість вбудованого LLM-підсумовування викликаєтьсяsummarize()постачальника. У разі помилки використовується вбудований варіант. Встановлення постачальника примусово задаєmode: "safeguard". Див. Compaction.timeoutSeconds: максимальна кількість секунд, дозволена для однієї операції compaction, після чого OpenClaw її перериває. Типове значення:900.identifierPolicy:strict(типово),offабоcustom.strictдодає вбудовані вказівки щодо збереження непрозорих ідентифікаторів під час підсумовування compaction.identifierInstructions: необов’язковий власний текст щодо збереження ідентифікаторів, який використовується, колиidentifierPolicy=custom.postCompactionSections: необов’язкові назви розділів H2/H3 у AGENTS.md, які потрібно повторно вставити після compaction. Типове значення —["Session Startup", "Red Lines"]; встановіть[], щоб вимкнути повторну вставку. Якщо не встановлено або явно встановлено цю типову пару, старі заголовкиEvery Session/Safetyтакож приймаються як застарілий резервний варіант.model: необов’язкове перевизначенняprovider/model-idлише для підсумовування compaction. Використовуйте це, коли основний сеанс має залишатися на одній моделі, а підсумки compaction мають виконуватися на іншій; якщо не встановлено, compaction використовує основну модель сеансу.notifyUser: колиtrue, надсилає користувачу коротке сповіщення, коли починається compaction (наприклад, “Compacting context…”). Типово вимкнено, щоб compaction залишався тихим.memoryFlush: тихий агентний хід перед auto-compaction для збереження довготривалих спогадів. Пропускається, коли workspace доступний лише для читання.
agents.defaults.contextPruning
Обрізає старі результати інструментів із контексту в пам’яті перед надсиланням до LLM. Не змінює історію сеансу на диску.
Поведінка режиму cache-ttl
Поведінка режиму cache-ttl
mode: "cache-ttl"вмикає проходи обрізання.ttlкерує тим, як часто обрізання може запускатися знову (після останнього торкання кешу).- Обрізання спочатку м’яко скорочує завеликі результати інструментів, а потім за потреби повністю очищує старіші результати інструментів.
....Повне очищення замінює весь результат інструмента заповнювачем.Примітки:- Блоки зображень ніколи не обрізаються й не очищуються.
- Співвідношення рахуються за символами (приблизно), а не за точною кількістю токенів.
- Якщо повідомлень assistant менше, ніж
keepLastAssistants, обрізання пропускається.
Блокова потокова передача
- Канали, крім Telegram, потребують явного
*.blockStreaming: true, щоб увімкнути блокові відповіді. - Перевизначення для каналу:
channels.<channel>.blockStreamingCoalesce(і варіанти для окремих облікових записів). Для Signal/Slack/Discord/Google Chat типовоminChars: 1500. humanDelay: випадкова пауза між блоковими відповідями.natural= 800–2500 мс. Перевизначення для окремого агента:agents.list[].humanDelay.
Індикатори набору тексту
- Типові значення:
instantдля прямих чатів/згадок,messageдля групових чатів без згадки. - Перевизначення для сеансу:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Необов’язкова ізоляція для вбудованого агента. Повний посібник див. у Sandboxing.
Деталі sandbox
Деталі sandbox
Бекенд:Режим OpenShell:
docker: локальний Docker runtime (типово)ssh: універсальний віддалений runtime на базі SSHopenshell: runtime OpenShell
backend: "openshell", налаштування, специфічні для runtime, переносяться в
plugins.entries.openshell.config.Конфігурація SSH-бекенда:target: SSH-ціль у форматіuser@host[:port]command: команда SSH-клієнта (типово:ssh)workspaceRoot: абсолютний віддалений корінь, що використовується для workspace за кожною областюidentityFile/certificateFile/knownHostsFile: наявні локальні файли, що передаються в OpenSSHidentityData/certificateData/knownHostsData: вбудований вміст або SecretRef, які OpenClaw матеріалізує у тимчасові файли під час runtimestrictHostKeyChecking/updateHostKeys: параметри політики ключів хоста OpenSSH
identityDataмає пріоритет надidentityFilecertificateDataмає пріоритет надcertificateFileknownHostsDataмає пріоритет надknownHostsFile- Значення
*Dataна базі SecretRef визначаються з активного знімка runtime secrets до початку сеансу sandbox
- один раз ініціалізує віддалений workspace після створення або повторного створення
- далі зберігає віддалений SSH-workspace як канонічний
- маршрутизує
exec, файлові інструменти й шляхи медіа через SSH - не синхронізує віддалені зміни назад на хост автоматично
- не підтримує браузерні контейнери sandbox
none: workspace sandbox для кожної області в~/.openclaw/sandboxesro: workspace sandbox у/workspace, workspace агента монтується лише для читання в/agentrw: workspace агента монтується для читання/запису в/workspace
session: контейнер + workspace для кожного сеансуagent: один контейнер + workspace на агента (типово)shared: спільний контейнер і workspace (без міжсеансової ізоляції)
mirror: ініціалізувати віддалений із локального перед exec, синхронізувати назад після exec; локальний workspace залишається канонічнимremote: один раз ініціалізувати віддалений при створенні sandbox, далі віддалений workspace залишається канонічним
remote локальні правки на хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після етапу початкової ініціалізації.
Транспорт — SSH до sandbox OpenShell, але життєвим циклом sandbox і необов’язковою синхронізацією mirror керує плагін.setupCommand виконується один раз після створення контейнера (через sh -lc). Потребує вихідного доступу в мережу, кореневої файлової системи для запису та користувача root.Контейнери типово мають network: "none" — встановіть "bridge" (або користувацьку bridge-мережу), якщо агенту потрібен вихідний доступ.
"host" заблоковано. "container:<id>" типово заблоковано, якщо ви явно не встановите
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (режим break-glass).Вхідні вкладення розміщуються в media/inbound/* в активному workspace.docker.binds монтує додаткові каталоги хоста; глобальні прив’язки та прив’язки для окремих агентів об’єднуються.Браузер у sandbox (sandbox.browser.enabled): Chromium + CDP у контейнері. URL noVNC вставляється в системний prompt. Не потребує browser.enabled у openclaw.json.
Доступ спостерігача через noVNC типово використовує VNC-автентифікацію, а OpenClaw видає URL із короткоживучим токеном (замість розкриття пароля в спільному URL).allowHostControl: false(типово) блокує для сеансів у sandbox націлювання на браузер хоста.networkтипово має значенняopenclaw-sandbox-browser(виділена bridge-мережа). Встановлюйтеbridgeлише тоді, коли вам явно потрібна глобальна bridge-зв’язність.cdpSourceRangeза бажанням обмежує вхідний CDP-трафік на межі контейнера діапазоном CIDR (наприклад172.21.0.1/32).sandbox.browser.bindsмонтує додаткові каталоги хоста лише в контейнер браузера sandbox. Якщо встановлено (включно з[]), воно замінюєdocker.bindsдля контейнера браузера.- Типові параметри запуску визначено в
scripts/sandbox-browser-entrypoint.shі налаштовано для хостів контейнерів:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(типово ввімкнено)--disable-3d-apis,--disable-software-rasterizerі--disable-gpuтипово ввімкнені, і їх можна вимкнути черезOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0, якщо для WebGL/3D це потрібно.OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0знову вмикає розширення, якщо ваш робочий процес залежить від них.--renderer-process-limit=2можна змінити черезOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; встановіть0, щоб використовувати типове обмеження кількості процесів Chromium.- а також
--no-sandboxі--disable-setuid-sandbox, коли ввімкненоnoSandbox. - Типові значення є базовим рівнем образу контейнера; використовуйте власний образ браузера з власним entrypoint, щоб змінити типові значення контейнера.
sandbox.docker.binds підтримуються лише для Docker.
Зібрати образи:
agents.list (перевизначення для окремого агента)
id: стабільний id агента (обов’язково).default: якщо встановлено для кількох агентів, перемагає перший (записується попередження). Якщо не встановлено ніде, типово використовується перший елемент списку.model: рядкова форма перевизначає лишеprimary; об’єктна форма{ primary, fallbacks }перевизначає обидва ([]вимикає глобальні fallback-и). Cron jobs, які перевизначають лишеprimary, усе ще успадковують типові fallback-и, якщо ви не встановитеfallbacks: [].params: параметри потоку для окремого агента, що зливаються поверх вибраного запису моделі вagents.defaults.models. Використовуйте це для перевизначень на рівні агента, таких якcacheRetention,temperatureабоmaxTokens, без дублювання всього каталогу моделей.skills: необов’язковий список дозволів Skills для окремого агента. Якщо не вказано, агент успадковуєagents.defaults.skills, коли їх задано; явний список замінює типові значення замість злиття, а[]означає відсутність Skills.thinkingDefault: необов’язковий типовий рівень thinking для окремого агента (off | minimal | low | medium | high | xhigh | adaptive). Перевизначаєagents.defaults.thinkingDefaultдля цього агента, коли не задано перевизначення для повідомлення або сеансу.reasoningDefault: необов’язковий типовий рівень видимості reasoning для окремого агента (on | off | stream). Застосовується, коли не задано перевизначення reasoning для повідомлення або сеансу.fastModeDefault: необов’язкове типове значення fast mode для окремого агента (true | false). Застосовується, коли не задано перевизначення fast-mode для повідомлення або сеансу.embeddedHarness: необов’язкове перевизначення політики низькорівневого harness для окремого агента. Використовуйте{ runtime: "codex", fallback: "none" }, щоб зробити один агент лише Codex, тоді як інші агенти зберігатимуть типовий резервний варіант PI.runtime: необов’язковий дескриптор runtime для окремого агента. Використовуйтеtype: "acp"з типовими значеннямиruntime.acp(agent,backend,mode,cwd), коли агент має типово використовувати сеанси ACP harness.identity.avatar: шлях відносно workspace, URLhttp(s)або URIdata:.identityвиводить типові значення:ackReactionізemoji,mentionPatternsізname/emoji.subagents.allowAgents: список дозволених id агентів дляsessions_spawn(["*"]= будь-який; типово: лише той самий агент).- Захист успадкування sandbox: якщо сеанс-запитувач виконується в sandbox,
sessions_spawnвідхиляє цілі, які працювали б без sandbox. subagents.requireAgentId: якщо true, блокує викликиsessions_spawn, у яких пропущеноagentId(примушує явний вибір профілю; типово: false).
Маршрутизація кількох агентів
Запускайте кілька ізольованих агентів в одному Gateway. Див. Multi-Agent.Поля відповідності binding
type(необов’язково):routeдля звичайної маршрутизації (якщо тип не вказано, використовується route),acpдля постійних ACP-прив’язок розмов.match.channel(обов’язково)match.accountId(необов’язково;*= будь-який обліковий запис; якщо пропущено = типовий обліковий запис)match.peer(необов’язково;{ kind: direct|group|channel, id })match.guildId/match.teamId(необов’язково; специфічно для каналу)acp(необов’язково; лише для записівtype: "acp"):{ mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(точний збіг, без peer/guild/team)match.accountId: "*"(на рівні каналу)- Типовий агент
bindings.
Для записів type: "acp" OpenClaw виконує зіставлення за точною ідентичністю розмови (match.channel + обліковий запис + match.peer.id) і не використовує наведений вище порядок рівнів route binding.
Профілі доступу для окремих агентів
Повний доступ (без sandbox)
Повний доступ (без sandbox)
Інструменти лише для читання + workspace
Інструменти лише для читання + workspace
Без доступу до файлової системи (лише обмін повідомленнями)
Без доступу до файлової системи (лише обмін повідомленнями)
Сеанс
Деталі полів сеансу
Деталі полів сеансу
scope: базова стратегія групування сеансів для контекстів групового чату.per-sender(типово): кожен відправник отримує ізольований сеанс у межах контексту каналу.global: усі учасники в контексті каналу спільно використовують один сеанс (використовуйте лише тоді, коли потрібен спільний контекст).
dmScope: спосіб групування DM.main: усі DM використовують спільний основний сеанс.per-peer: ізоляція за id відправника між каналами.per-channel-peer: ізоляція за каналом + відправником (рекомендовано для спільних вхідних скриньок кількох користувачів).per-account-channel-peer: ізоляція за обліковим записом + каналом + відправником (рекомендовано для багатооблікових конфігурацій).
identityLinks: відображає канонічні id на peers із префіксом постачальника для спільного використання сеансів між каналами.reset: основна політика скидання.dailyскидає оatHourза місцевим часом;idleскидає післяidleMinutes. Якщо налаштовано обидва, перемагає те, що спливає раніше.resetByType: перевизначення за типом (direct,group,thread). Застарілеdmприймається як псевдонім дляdirect.parentForkMaxTokens: максимальне значенняtotalTokensбатьківського сеансу, дозволене під час створення fork-сеансу гілки (типово100000).- Якщо
totalTokensбатьківського сеансу перевищує це значення, OpenClaw запускає новий сеанс гілки замість успадкування історії стенограми батьківського сеансу. - Встановіть
0, щоб вимкнути цей захист і завжди дозволяти fork від батьківського сеансу.
- Якщо
mainKey: застаріле поле. Runtime завжди використовує"main"для основного сегмента прямого чату.agentToAgent.maxPingPongTurns: максимальна кількість зворотних ходів відповіді між агентами під час обміну agent-to-agent (ціле число, діапазон:0–5).0вимикає ланцюжки ping-pong.sendPolicy: зіставлення заchannel,chatType(direct|group|channel, із застарілим псевдонімомdm),keyPrefixабоrawKeyPrefix. Перша заборона перемагає.maintenance: керування очищенням сховища сеансів + збереженням.mode:warnвидає лише попередження;enforceзастосовує очищення.pruneAfter: віковий поріг для застарілих записів (типово30d).maxEntries: максимальна кількість записів уsessions.json(типово500).rotateBytes: ротуєsessions.json, коли він перевищує цей розмір (типово10mb).resetArchiveRetention: строк зберігання для архівів стенограм*.reset.<timestamp>. Типово дорівнюєpruneAfter; встановітьfalse, щоб вимкнути.maxDiskBytes: необов’язковий бюджет диска для каталогу сеансів. У режиміwarnзаписує попередження в журнал; у режиміenforceспочатку видаляє найстаріші артефакти/сеанси.highWaterBytes: необов’язкова ціль після очищення бюджету. Типово80%відmaxDiskBytes.
threadBindings: глобальні типові значення для функцій сеансу, прив’язаних до гілок.enabled: головний типовий перемикач (постачальники можуть перевизначати; Discord використовуєchannels.discord.threadBindings.enabled)idleHours: типове автоматичне зняття фокуса через неактивність у годинах (0вимикає; постачальники можуть перевизначати)maxAgeHours: типовий жорсткий максимальний вік у годинах (0вимикає; постачальники можуть перевизначати)
Повідомлення
Префікс відповіді
Перевизначення для каналу/облікового запису:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Вирішення (перемагає найспецифічніше): обліковий запис → канал → глобальний. "" вимикає і зупиняє каскад. "auto" виводить [{identity.name}].
Змінні шаблону:
| Змінна | Опис | Приклад |
|---|---|---|
{model} | Коротка назва моделі | claude-opus-4-6 |
{modelFull} | Повний ідентифікатор моделі | anthropic/claude-opus-4-6 |
{provider} | Назва постачальника | anthropic |
{thinkingLevel} | Поточний рівень thinking | high, low, off |
{identity.name} | Назва identity агента | (те саме, що "auto") |
{think} є псевдонімом для {thinkingLevel}.
Реакція-підтвердження
- Типово береться з
identity.emojiактивного агента, інакше"👀". Встановіть"", щоб вимкнути. - Перевизначення для каналу:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Порядок вирішення: обліковий запис → канал →
messages.ackReaction→ резервне значення identity. - Область:
group-mentions(типово),group-all,direct,all. removeAckAfterReply: видаляє ack після відповіді у Slack, Discord і Telegram.messages.statusReactions.enabled: вмикає реакції життєвого циклу статусу у Slack, Discord і Telegram. У Slack і Discord, якщо не встановлено, реакції статусу залишаються ввімкненими, коли активні реакції ack. У Telegram встановіть це явно вtrue, щоб увімкнути реакції життєвого циклу статусу.
Debounce для вхідних повідомлень
Об’єднує швидкі текстові повідомлення від того самого відправника в один хід агента. Медіа/вкладення скидаються негайно. Керувальні команди обходять debounce.TTS (перетворення тексту на мовлення)
autoкерує типовим режимом auto-TTS:off,always,inboundабоtagged./tts on|offможе перевизначити локальні налаштування, а/tts statusпоказує ефективний стан.summaryModelперевизначаєagents.defaults.model.primaryдля auto-summary.modelOverridesтипово ввімкнено;modelOverrides.allowProviderтипово має значенняfalse(потрібне явне увімкнення).- Для API key використовуються резервні значення
ELEVENLABS_API_KEY/XI_API_KEYіOPENAI_API_KEY. openai.baseUrlперевизначає endpoint OpenAI TTS. Порядок вирішення: конфігурація, потімOPENAI_TTS_BASE_URL, потімhttps://api.openai.com/v1.- Коли
openai.baseUrlвказує на endpoint, відмінний від OpenAI, OpenClaw трактує його як OpenAI-сумісний TTS-сервер і послаблює валідацію моделі/голосу.
Talk
Типові значення для режиму Talk (macOS/iOS/Android).talk.providerмає збігатися з ключем уtalk.providers, коли налаштовано кілька постачальників Talk.- Застарілі плоскі ключі Talk (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) призначені лише для сумісності й автоматично мігруються вtalk.providers.<provider>. - Для Voice ID використовуються резервні значення
ELEVENLABS_VOICE_IDабоSAG_VOICE_ID. providers.*.apiKeyприймає відкриті рядки або об’єкти SecretRef.- Резервне значення
ELEVENLABS_API_KEYзастосовується лише тоді, коли не налаштовано API key для Talk. providers.*.voiceAliasesдозволяє директивам Talk використовувати дружні імена.silenceTimeoutMsкерує тим, як довго режим Talk чекає після тиші користувача, перш ніж надіслати стенограму. Якщо не встановлено, зберігається типове вікно паузи платформи (700 ms на macOS і Android, 900 ms на iOS).
Інструменти
Профілі інструментів
tools.profile задає базовий список дозволів перед tools.allow/tools.deny:
Локальний onboarding за замовчуванням встановлює для нових локальних конфігурацій tools.profile: "coding", якщо його не задано (наявні явно вказані профілі зберігаються).
| Профіль | Містить |
|---|---|
minimal | лише session_status |
coding | group:fs, group:runtime, group:web, group:sessions, group:memory, cron, image, image_generate, video_generate |
messaging | group:messaging, sessions_list, sessions_history, sessions_send, session_status |
full | Без обмежень (те саме, що не задано) |
Групи інструментів
| Група | Інструменти |
|---|---|
group:runtime | exec, process, code_execution (bash приймається як псевдонім для exec) |
group:fs | read, write, edit, apply_patch |
group:sessions | sessions_list, sessions_history, sessions_send, sessions_spawn, sessions_yield, subagents, session_status |
group:memory | memory_search, memory_get |
group:web | web_search, x_search, web_fetch |
group:ui | browser, canvas |
group:automation | cron, gateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image, image_generate, video_generate, tts |
group:openclaw | Усі вбудовані інструменти (без урахування provider plugins) |
tools.allow / tools.deny
Глобальна політика дозволу/заборони інструментів (заборона має пріоритет). Нечутлива до регістру, підтримує шаблони *. Застосовується навіть тоді, коли Docker sandbox вимкнено.
tools.byProvider
Додатково обмежує інструменти для конкретних постачальників або моделей. Порядок: базовий профіль → профіль постачальника → allow/deny.
tools.elevated
Керує elevated-доступом exec поза sandbox:
- Перевизначення для окремого агента (
agents.list[].tools.elevated) може лише додатково обмежувати. /elevated on|off|ask|fullзберігає стан для кожного сеансу; вбудовані директиви застосовуються до одного повідомлення.- Elevated
execобходить sandbox і використовує налаштований шлях виходу (gatewayтипово абоnode, коли ціллю exec єnode).
tools.exec
tools.loopDetection
Перевірки безпеки циклів інструментів типово вимкнені. Встановіть enabled: true, щоб увімкнути виявлення.
Налаштування можна визначати глобально в tools.loopDetection і перевизначати для окремого агента в agents.list[].tools.loopDetection.
historySize: максимальний обсяг історії викликів інструментів, що зберігається для аналізу циклів.warningThreshold: поріг повторюваного шаблону без прогресу для попереджень.criticalThreshold: вищий поріг повторення для блокування критичних циклів.globalCircuitBreakerThreshold: поріг жорсткої зупинки для будь-якого запуску без прогресу.detectors.genericRepeat: попереджати про повторні виклики того самого інструмента з тими самими аргументами.detectors.knownPollNoProgress: попереджати/блокувати відомі poll-інструменти (process.poll,command_statusтощо).detectors.pingPong: попереджати/блокувати шаблони чергування пар без прогресу.- Якщо
warningThreshold >= criticalThresholdабоcriticalThreshold >= globalCircuitBreakerThreshold, валідація завершується помилкою.
tools.web
tools.media
Налаштовує розуміння вхідних медіа (зображення/аудіо/відео):
Поля запису моделі медіа
Поля запису моделі медіа
Запис постачальника (
type: "provider" або пропущено):provider: id API-постачальника (openai,anthropic,google/gemini,groqтощо)model: перевизначення id моделіprofile/preferredProfile: вибір профілюauth-profiles.json
type: "cli"):command: виконуваний файл для запускуargs: шаблонізовані аргументи (підтримуються{{MediaPath}},{{Prompt}},{{MaxChars}}тощо)
capabilities: необов’язковий список (image,audio,video). Типові значення:openai/anthropic/minimax→ image,google→ image+audio+video,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: перевизначення для окремого запису.- У разі збою використовується наступний запис.
auth-profiles.json → env vars → models.providers.*.apiKey.Поля асинхронного завершення:asyncCompletion.directSend: колиtrue, завершені асинхронні завданняmusic_generateіvideo_generateспочатку намагаються доставлятися безпосередньо в канал. Типове значення:false(застарілий шлях пробудження requester-session/model-delivery).
tools.agentToAgent
tools.sessions
Керує тим, які сеанси можуть бути ціллю для session tools (sessions_list, sessions_history, sessions_send).
Типове значення: tree (поточний сеанс + сеанси, породжені ним, наприклад subagents).
self: лише ключ поточного сеансу.tree: поточний сеанс + сеанси, породжені поточним сеансом (subagents).agent: будь-який сеанс, що належить поточному id агента (може включати інших користувачів, якщо ви запускаєте сеанси per-sender під тим самим id агента).all: будь-який сеанс. Націлювання між агентами все одно потребуєtools.agentToAgent.- Обмеження sandbox: коли поточний сеанс виконується в sandbox і
agents.defaults.sandbox.sessionToolsVisibility="spawned", видимість примусово встановлюється наtree, навіть якщоtools.sessions.visibility="all".
tools.sessions_spawn
Керує підтримкою вбудованих вкладень для sessions_spawn.
- Вкладення підтримуються лише для
runtime: "subagent". Runtime ACP їх відхиляє. - Файли матеріалізуються в дочірньому workspace за шляхом
.openclaw/attachments/<uuid>/разом із.manifest.json. - Вміст вкладень автоматично редагується під час збереження стенограми.
- Входи base64 перевіряються з суворою перевіркою алфавіту/відступів і попереднім обмеженням розміру до декодування.
- Права доступу до файлів:
0700для каталогів і0600для файлів. - Очищення підпорядковується політиці
cleanup:deleteзавжди видаляє вкладення;keepзберігає їх лише тоді, колиretainOnSessionKeep: true.
tools.experimental
Експериментальні прапорці вбудованих інструментів. Типово вимкнено, якщо не застосовується правило автоматичного ввімкнення strict-agentic GPT-5.
planTool: вмикає структурований інструментupdate_planдля відстеження нетривіальної багатокрокової роботи.- Типове значення:
false, якщо тількиagents.defaults.embeddedPi.executionContract(або перевизначення для окремого агента) не встановлено в"strict-agentic"для запуску OpenAI або OpenAI Codex сімейства GPT-5. Встановітьtrue, щоб примусово ввімкнути інструмент поза цією областю, абоfalse, щоб залишити його вимкненим навіть для запусків strict-agentic GPT-5. - Коли інструмент увімкнено, системний prompt також додає вказівки з використання, щоб модель застосовувала його лише для суттєвої роботи і тримала не більше одного кроку
in_progress.
agents.defaults.subagents
model: типова модель для породжених sub-agents. Якщо не вказано, sub-agents успадковують модель викликача.allowAgents: типовий список дозволених id цільових агентів дляsessions_spawn, коли агент-запитувач не задає власнийsubagents.allowAgents(["*"]= будь-який; типово: лише той самий агент).runTimeoutSeconds: типовий тайм-аут (у секундах) дляsessions_spawn, коли виклик інструмента не передаєrunTimeoutSeconds.0означає відсутність тайм-ауту.- Політика інструментів для окремого subagent:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Власні постачальники та base URL
OpenClaw використовує вбудований каталог моделей. Додавайте власних постачальників черезmodels.providers у конфігурації або ~/.openclaw/agents/<agentId>/agent/models.json.
- Використовуйте
authHeader: true+headersдля власних потреб автентифікації. - Перевизначте корінь конфігурації агента через
OPENCLAW_AGENT_DIR(абоPI_CODING_AGENT_DIR, застарілий псевдонім змінної середовища). - Пріоритет злиття для provider ID, що збігаються:
- Непорожні значення
baseUrlв agentmodels.jsonмають пріоритет. - Непорожні значення
apiKeyагента мають пріоритет лише тоді, коли цей постачальник не керується через SecretRef у поточному контексті config/auth-profile. - Значення
apiKeyпостачальника, керовані SecretRef, оновлюються з маркерів джерела (ENV_VAR_NAMEдля env-посилань,secretref-managedдля file/exec-посилань) замість збереження визначених секретів. - Значення заголовків постачальника, керовані SecretRef, оновлюються з маркерів джерела (
secretref-env:ENV_VAR_NAMEдля env-посилань,secretref-managedдля file/exec-посилань). - Порожні або відсутні
apiKey/baseUrlагента резервно беруться зmodels.providersу конфігурації. - Для однакових моделей
contextWindow/maxTokensвикористовують вище значення між явною конфігурацією та неявними значеннями каталогу. - Для однакових моделей
contextTokensзберігають явне обмеження runtime, якщо воно задано; використовуйте це, щоб обмежити ефективний контекст без зміни нативних метаданих моделі. - Використовуйте
models.mode: "replace", коли хочете, щоб конфігурація повністю переписалаmodels.json. - Збереження маркерів є авторитетним на рівні джерела: маркери записуються з активного знімка конфігурації джерела (до визначення значень), а не з визначених значень секретів під час runtime.
- Непорожні значення
Деталі полів постачальника
models.mode: поведінка каталогу постачальників (mergeабоreplace).models.providers: карта власних постачальників, ключем якої є id постачальника.models.providers.*.api: адаптер запитів (openai-completions,openai-responses,anthropic-messages,google-generative-aiтощо).models.providers.*.apiKey: облікові дані постачальника (надавайте перевагу SecretRef/env substitution).models.providers.*.auth: стратегія автентифікації (api-key,token,oauth,aws-sdk).models.providers.*.injectNumCtxForOpenAICompat: для Ollama +openai-completionsвставляєoptions.num_ctxу запити (типово:true).models.providers.*.authHeader: примусово передавати облікові дані в заголовкуAuthorization, коли це потрібно.models.providers.*.baseUrl: базова URL-адреса API upstream.models.providers.*.headers: додаткові статичні заголовки для маршрутизації proxy/tenant.models.providers.*.request: перевизначення транспорту для HTTP-запитів model-provider.request.headers: додаткові заголовки (об’єднуються з типовими значеннями постачальника). Значення приймають SecretRef.request.auth: перевизначення стратегії автентифікації. Режими:"provider-default"(використовувати вбудовану автентифікацію постачальника),"authorization-bearer"(зtoken),"header"(зheaderName,value, необов’язковимprefix).request.proxy: перевизначення HTTP proxy. Режими:"env-proxy"(використовувати змінні середовищаHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(зurl). Обидва режими приймають необов’язковий підоб’єктtls.request.tls: перевизначення TLS для прямих з’єднань. Поля:ca,cert,key,passphrase(усі приймають SecretRef),serverName,insecureSkipVerify.request.allowPrivateNetwork: колиtrue, дозволяє HTTPS доbaseUrl, якщо DNS резолвиться в приватні, CGNAT або подібні діапазони, через HTTP fetch guard постачальника (operator opt-in для довірених self-hosted OpenAI-сумісних endpoint-ів). WebSocket використовує той самийrequestдля заголовків/TLS, але не цей SSRF gate fetch. Типове значенняfalse.
models.providers.*.models: явні записи каталогу моделей постачальника.models.providers.*.models.*.contextWindow: метадані нативного контекстного вікна моделі.models.providers.*.models.*.contextTokens: необов’язкове обмеження контексту runtime. Використовуйте це, коли хочете менший ефективний бюджет контексту, ніж нативнеcontextWindowмоделі.models.providers.*.models.*.compat.supportsDeveloperRole: необов’язкова підказка сумісності. Дляapi: "openai-completions"із непорожнім ненативнимbaseUrl(host неapi.openai.com) OpenClaw примусово встановлює це вfalseпід час runtime. Порожнє/пропущенеbaseUrlзберігає типову поведінку OpenAI.models.providers.*.models.*.compat.requiresStringContent: необов’язкова підказка сумісності для OpenAI-сумісних chat endpoint-ів, що приймають лише рядок. Колиtrue, OpenClaw сплющує масивиmessages[].content, що містять лише текст, у звичайні рядки перед надсиланням запиту.plugins.entries.amazon-bedrock.config.discovery: кореневий розділ налаштувань auto-discovery Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: увімкнути/вимкнути неявне виявлення.plugins.entries.amazon-bedrock.config.discovery.region: AWS region для виявлення.plugins.entries.amazon-bedrock.config.discovery.providerFilter: необов’язковий фільтр provider-id для цільового виявлення.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: інтервал опитування для оновлення виявлення.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: резервне контекстне вікно для виявлених моделей.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: резервний максимум вихідних токенів для виявлених моделей.
Приклади постачальників
Cerebras (GLM 4.6 / 4.7)
Cerebras (GLM 4.6 / 4.7)
cerebras/zai-glm-4.7 для Cerebras; zai/glm-4.7 — для прямого Z.AI.OpenCode
OpenCode
OPENCODE_API_KEY (або OPENCODE_ZEN_API_KEY). Використовуйте посилання opencode/... для каталогу Zen або opencode-go/... для каталогу Go. Скорочення: openclaw onboard --auth-choice opencode-zen або openclaw onboard --auth-choice opencode-go.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. z.ai/* і z-ai/* приймаються як псевдоніми. Скорочення: openclaw onboard --auth-choice zai-api-key.- Загальний endpoint:
https://api.z.ai/api/paas/v4 - Endpoint для кодування (типовий):
https://api.z.ai/api/coding/paas/v4 - Для загального endpoint визначте власного постачальника з перевизначенням base URL.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" або openclaw onboard --auth-choice moonshot-api-key-cn.Нативні endpoint-и Moonshot оголошують сумісність використання потокової передачі на спільному
транспорті openai-completions, і OpenClaw спирається на можливості endpoint-а,
а не лише на вбудований id постачальника.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Synthetic (сумісний з Anthropic)
Synthetic (сумісний з Anthropic)
/v1 (клієнт Anthropic додає його). Скорочення: openclaw onboard --auth-choice synthetic-api-key.MiniMax M2.7 (direct)
MiniMax M2.7 (direct)
MINIMAX_API_KEY. Скорочення:
openclaw onboard --auth-choice minimax-global-api або
openclaw onboard --auth-choice minimax-cn-api.
Каталог моделей типово містить лише M2.7.
На Anthropic-сумісному шляху потокової передачі OpenClaw типово вимикає thinking MiniMax,
якщо ви явно не встановите thinking самостійно. /fast on або
params.fastMode: true переписує MiniMax-M2.7 на
MiniMax-M2.7-highspeed.Локальні моделі (LM Studio)
Локальні моделі (LM Studio)
Див. Local Models. Коротко: запускайте велику локальну модель через LM Studio Responses API на серйозному обладнанні; залишайте hosted models об’єднаними для резервного використання.
Skills
allowBundled: необов’язковий список дозволів лише для bundled Skills (керовані/workspace Skills це не зачіпає).load.extraDirs: додаткові спільні корені Skills (найнижчий пріоритет).install.preferBrew: коли true, надавати перевагу інсталяторам Homebrew, якщоbrewдоступний, перш ніж переходити до інших типів інсталяторів.install.nodeManager: перевага node-інсталятора для специфікаційmetadata.openclaw.install(npm|pnpm|yarn|bun).entries.<skillKey>.enabled: falseвимикає Skill, навіть якщо він bundled/встановлений.entries.<skillKey>.apiKey: зручний спосіб для Skills, які оголошують основну env-змінну (відкритий рядок або об’єкт SecretRef).
Плагіни
- Завантажується з
~/.openclaw/extensions,<workspace>/.openclaw/extensions, а такожplugins.load.paths. - Виявлення приймає нативні плагіни OpenClaw, а також сумісні bundles Codex і Claude, включно з bundle Claude стандартного макета без маніфесту.
- Зміни конфігурації потребують перезапуску шлюзу.
allow: необов’язковий список дозволів (завантажуються лише перелічені плагіни).denyмає пріоритет.plugins.entries.<id>.apiKey: зручне поле API key на рівні плагіна (коли це підтримує плагін).plugins.entries.<id>.env: карта env-змінних в області плагіна.plugins.entries.<id>.hooks.allowPromptInjection: колиfalse, core блокуєbefore_prompt_buildта ігнорує поля, що змінюють prompt, зі застарілогоbefore_agent_start, зберігаючи при цьому застаріліmodelOverrideіproviderOverride. Застосовується до нативних plugin hooks і підтримуваних каталогів hooks, наданих bundle.plugins.entries.<id>.subagent.allowModelOverride: явно довіряти цьому плагіну запитувати перевизначенняproviderіmodelдля одного запуску фонових subagent.plugins.entries.<id>.subagent.allowedModels: необов’язковий список дозволених канонічних цілейprovider/modelдля довірених перевизначень subagent. Використовуйте"*"лише тоді, коли свідомо хочете дозволити будь-яку модель.plugins.entries.<id>.config: об’єкт конфігурації, визначений плагіном (валідується за схемою нативного плагіна OpenClaw, якщо вона доступна).plugins.entries.firecrawl.config.webFetch: налаштування постачальника web-fetch Firecrawl.apiKey: API key Firecrawl (приймає SecretRef). Резервно береться зplugins.entries.firecrawl.config.webSearch.apiKey, застарілогоtools.web.fetch.firecrawl.apiKeyабо env varFIRECRAWL_API_KEY.baseUrl: базова URL-адреса API Firecrawl (типово:https://api.firecrawl.dev).onlyMainContent: витягувати лише основний вміст сторінок (типово:true).maxAgeMs: максимальний вік кешу в мілісекундах (типово:172800000/ 2 дні).timeoutSeconds: тайм-аут запиту scrape у секундах (типово:60).
plugins.entries.xai.config.xSearch: налаштування xAI X Search (вебпошук Grok).enabled: увімкнути постачальника X Search.model: модель Grok для пошуку (наприклад"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: налаштування memory dreaming (експериментально). Фази й пороги див. у Dreaming.enabled: головний перемикач dreaming (типовоfalse).frequency: cron-каденція для кожного повного проходу dreaming ("0 3 * * *"типово).- політика фаз і пороги є деталями реалізації (не користувацькими ключами конфігурації).
- Повна конфігурація пам’яті міститься в Memory configuration reference:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- Увімкнені Claude bundle plugins також можуть вносити вбудовані типові значення Pi із
settings.json; OpenClaw застосовує їх як санітизовані налаштування агента, а не як сирі патчі конфігурації OpenClaw. plugins.slots.memory: вибрати id активного плагіна пам’яті або"none", щоб вимкнути плагіни пам’яті.plugins.slots.contextEngine: вибрати id активного плагіна рушія контексту; типово"legacy", якщо ви не встановите й не виберете інший рушій.plugins.installs: метадані встановлення, керовані CLI, які використовуєopenclaw plugins update.- Містить
source,spec,sourcePath,installPath,version,resolvedName,resolvedVersion,resolvedSpec,integrity,shasum,resolvedAt,installedAt. - Розглядайте
plugins.installs.*як керований стан; надавайте перевагу командам CLI над ручним редагуванням.
- Містить
Browser
evaluateEnabled: falseвимикаєact:evaluateіwait --fn.ssrfPolicy.dangerouslyAllowPrivateNetworkвимкнено, якщо не встановлено, тому навігація browser типово залишається суворою.- Встановлюйте
ssrfPolicy.dangerouslyAllowPrivateNetwork: trueлише тоді, коли ви свідомо довіряєте навігації browser у приватній мережі. - У суворому режимі endpoint-и віддалених CDP-профілів (
profiles.*.cdpUrl) підлягають тому самому блокуванню приватної мережі під час перевірок досяжності/виявлення. ssrfPolicy.allowPrivateNetworkзалишається підтримуваним як застарілий псевдонім.- У суворому режимі використовуйте
ssrfPolicy.hostnameAllowlistіssrfPolicy.allowedHostnamesдля явних винятків. - Віддалені профілі є лише attach-only (start/stop/reset вимкнено).
profiles.*.cdpUrlприймаєhttp://,https://,ws://іwss://. Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявив/json/version; використовуйте WS(S), коли ваш постачальник дає вам пряму URL DevTools WebSocket.- Профілі
existing-sessionпрацюють лише на хості та використовують Chrome MCP замість CDP. - Профілі
existing-sessionможуть задаватиuserDataDir, щоб націлюватися на конкретний профіль браузера на базі Chromium, наприклад Brave або Edge. - Профілі
existing-sessionзберігають поточні обмеження маршруту Chrome MCP: дії на основі snapshot/ref замість націлювання CSS-селекторами, хуки для завантаження одного файла, відсутність перевизначення тайм-аутів діалогів, відсутністьwait --load networkidle, а також відсутністьresponsebody, експорту PDF, перехоплення завантажень або пакетних дій. - Локальні керовані профілі
openclawавтоматично призначаютьcdpPortіcdpUrl; явно задавайтеcdpUrlлише для віддаленого CDP. - Порядок auto-detect: типовий браузер, якщо він на базі Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- Служба керування: лише loopback (порт виводиться з
gateway.port, типово18791). extraArgsдодає додаткові прапорці запуску до локального старту Chromium (наприклад--disable-gpu, розміри вікна або прапорці налагодження).
UI
seamColor: колір акценту для chrome нативного UI застосунку (відтінок бульбашки Talk Mode тощо).assistant: перевизначення identity для Control UI. Якщо не задано, використовується identity активного агента.
Gateway
Деталі полів Gateway
Деталі полів Gateway
mode:local(запустити gateway) абоremote(підключитися до віддаленого gateway). Gateway відмовляється запускатися, якщо неlocal.port: один мультиплексований порт для WS + HTTP. Пріоритет:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:auto,loopback(типово),lan(0.0.0.0),tailnet(лише IP Tailscale) абоcustom.- Застарілі псевдоніми bind: використовуйте значення режиму bind у
gateway.bind(auto,loopback,lan,tailnet,custom), а не псевдоніми host (0.0.0.0,127.0.0.1,localhost,::,::1). - Примітка про Docker: типовий bind
loopbackслухає127.0.0.1усередині контейнера. Із bridge-мережею Docker (-p 18789:18789) трафік надходить черезeth0, тому gateway недосяжний. Використовуйте--network hostабо встановітьbind: "lan"(абоbind: "custom"зcustomBindHost: "0.0.0.0"), щоб слухати на всіх інтерфейсах. - Auth: типово обов’язкова. Для bind, відмінного від loopback, потрібна auth gateway. На практиці це означає спільний token/password або reverse proxy з урахуванням identity з
gateway.auth.mode: "trusted-proxy". Майстер onboarding типово генерує token. - Якщо налаштовано і
gateway.auth.token, іgateway.auth.password(включно з SecretRef), явно встановітьgateway.auth.modeуtokenабоpassword. Під час запуску та у потоках встановлення/відновлення сервісу виникає помилка, якщо обидва налаштовані, а mode не встановлено. gateway.auth.mode: "none": явний режим без auth. Використовуйте лише для довірених локальних конфігурацій loopback; цей варіант навмисно не пропонується в підказках onboarding.gateway.auth.mode: "trusted-proxy": делегувати auth reverse proxy з урахуванням identity та довіряти заголовкам identity відgateway.trustedProxies(див. Trusted Proxy Auth). Цей режим очікує не-loopback джерело proxy; reverse proxy loopback на тому самому хості не задовольняє auth trusted-proxy.gateway.auth.allowTailscale: колиtrue, заголовки identity Tailscale Serve можуть задовольняти auth для Control UI/WebSocket (перевіряється черезtailscale whois). Endpoint-и HTTP API не використовують цю auth за заголовками Tailscale; вони дотримуються звичайного режиму HTTP auth gateway. Цей безтокеновий потік передбачає, що хост gateway є довіреним. Типовоtrue, колиtailscale.mode = "serve".gateway.auth.rateLimit: необов’язковий лімітатор невдалих спроб auth. Застосовується для кожної IP-адреси клієнта і для кожної області auth (спільний секрет і токен пристрою відстежуються окремо). Заблоковані спроби повертають429+Retry-After.- На асинхронному шляху Control UI через Tailscale Serve невдалі спроби для того самого
{scope, clientIp}серіалізуються перед записом про збій. Тому паралельні хибні спроби від одного клієнта можуть спровокувати лімітатор на другому запиті, замість того щоб обидва пройшли як звичайні невідповідності. gateway.auth.rateLimit.exemptLoopbackтипово має значенняtrue; установітьfalse, якщо ви свідомо хочете також обмежувати localhost-трафік (для тестових конфігурацій або суворих розгортань через proxy).
- На асинхронному шляху Control UI через Tailscale Serve невдалі спроби для того самого
- Спроби WS auth із browser-origin завжди обмежуються без винятку для loopback (захист у глибину від брутфорсу localhost через браузер).
- На loopback ці блокування для browser-origin ізолюються за нормалізованим значенням
Origin, тому повторні збої з одного localhost origin не блокують автоматично інший origin. tailscale.mode:serve(лише tailnet, bind loopback) абоfunnel(публічний доступ, потрібна auth).controlUi.allowedOrigins: явний список дозволених browser-origin для підключень Gateway WebSocket. Обов’язковий, коли клієнти браузера очікуються не з loopback-origin.controlUi.dangerouslyAllowHostHeaderOriginFallback: небезпечний режим, який вмикає резервне визначення origin через Host-header для розгортань, що навмисно покладаються на політику origin на основі Host-header.remote.transport:ssh(типово) абоdirect(ws/wss). Дляdirectremote.urlмає бутиws://абоwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: клієнтське перевизначення break-glass, яке дозволяє відкритийws://до довірених IP приватної мережі; типовим значенням для відкритого з’єднання залишається лише loopback.gateway.remote.token/.password— це поля облікових даних віддаленого клієнта. Вони самі по собі не налаштовують auth gateway.gateway.push.apns.relay.baseUrl: базова HTTPS URL зовнішнього APNs relay, який використовують офіційні/TestFlight збірки iOS після публікації gateway реєстрацій на основі relay. Ця URL має збігатися з URL relay, вбудованою в збірку iOS.gateway.push.apns.relay.timeoutMs: тайм-аут надсилання gateway-to-relay у мілісекундах. Типове значення:10000.- Реєстрації на основі relay делегуються конкретній identity gateway. Спарений застосунок iOS викликає
gateway.identity.get, включає цю identity в реєстрацію relay і передає gateway дозвіл на надсилання в межах реєстрації. Інший gateway не може повторно використати цю збережену реєстрацію. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: тимчасові перевизначення через env для наведеної вище конфігурації relay.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: escape hatch лише для розробки для loopback HTTP relay URL. У production URL relay мають залишатися на HTTPS.gateway.channelHealthCheckMinutes: інтервал моніторингу здоров’я каналів у хвилинах. Встановіть0, щоб глобально вимкнути перезапуски health-monitor. Типове значення:5.gateway.channelStaleEventThresholdMinutes: поріг застарілого сокета в хвилинах. Тримайте це значення більшим або рівнимgateway.channelHealthCheckMinutes. Типове значення:30.gateway.channelMaxRestartsPerHour: максимальна кількість перезапусків health-monitor на канал/обліковий запис у ковзній годині. Типове значення:10.channels.<provider>.healthMonitor.enabled: відмова для конкретного каналу від перезапусків health-monitor зі збереженням глобального монітора.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: перевизначення для окремого облікового запису в багатооблікових каналах. Якщо встановлено, воно має пріоритет над перевизначенням рівня каналу.- Локальні шляхи викликів gateway можуть використовувати
gateway.remote.*як резервний варіант лише тоді, колиgateway.auth.*не встановлено. - Якщо
gateway.auth.token/gateway.auth.passwordявно налаштовано через SecretRef і не визначено, визначення завершується fail-closed (без маскування резервним переходом на remote). trustedProxies: IP-адреси reverse proxy, які завершують TLS або вставляють заголовки forwarded-client. Додавайте лише proxy, якими ви керуєте. Записи loopback усе ще коректні для налаштувань proxy на тому самому хості/локального виявлення (наприклад Tailscale Serve або локальний reverse proxy), але вони не роблять loopback-запити придатними дляgateway.auth.mode: "trusted-proxy".allowRealIpFallback: колиtrue, gateway приймаєX-Real-IP, якщоX-Forwarded-Forвідсутній. Типове значенняfalseдля fail-closed-поведінки.gateway.tools.deny: додаткові назви інструментів, заблоковані для HTTPPOST /tools/invoke(розширює типовий список заборон).gateway.tools.allow: прибрати назви інструментів із типового HTTP-списку заборон.
OpenAI-сумісні endpoint-и
- Chat Completions: типово вимкнено. Увімкніть через
gateway.http.endpoints.chatCompletions.enabled: true. - Responses API:
gateway.http.endpoints.responses.enabled. - Захист URL-входів Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistПорожні allowlist-и трактуються як не встановлені; використовуйтеgateway.http.endpoints.responses.files.allowUrl=falseта/абоgateway.http.endpoints.responses.images.allowUrl=false, щоб вимкнути вибірку URL.
- Необов’язковий заголовок захисту відповіді:
gateway.http.securityHeaders.strictTransportSecurity(встановлюйте лише для HTTPS-origin, якими ви керуєте; див. Trusted Proxy Auth)
Ізоляція кількох екземплярів
Запускайте кілька gateway на одному хості з унікальними портами й каталогами стану:--dev (використовує ~/.openclaw-dev + порт 19001), --profile <name> (використовує ~/.openclaw-<name>).
Див. Multiple Gateways.
gateway.tls
enabled: вмикає завершення TLS на слухачі gateway (HTTPS/WSS) (типово:false).autoGenerate: автоматично генерує локальну самопідписану пару cert/key, коли явні файли не налаштовано; лише для локального/dev використання.certPath: шлях файлової системи до файла сертифіката TLS.keyPath: шлях файлової системи до файла приватного ключа TLS; обмежте доступ правами.caPath: необов’язковий шлях до bundle CA для перевірки клієнта або власних ланцюжків довіри.
gateway.reload
mode: керує тим, як зміни конфігурації застосовуються під час runtime."off": ігнорувати live-редагування; зміни потребують явного перезапуску."restart": завжди перезапускати процес gateway при зміні конфігурації."hot": застосовувати зміни в процесі без перезапуску."hybrid"(типово): спочатку намагатися виконати hot reload; за потреби переходити до перезапуску.
debounceMs: вікно debounce у мс перед застосуванням змін конфігурації (невід’ємне ціле число).deferralTimeoutMs: максимальний час у мс очікування завершення активних операцій перед примусовим перезапуском (типово:300000= 5 хвилин).
Hooks
Authorization: Bearer <token> або x-openclaw-token: <token>.
Токени hook у рядку запиту відхиляються.
Примітки щодо валідації та безпеки:
hooks.enabled=trueвимагає непорожнійhooks.token.hooks.tokenмає відрізнятися відgateway.auth.token; повторне використання Gateway token відхиляється.hooks.pathне може бути/; використовуйте окремий підшлях, наприклад/hooks.- Якщо
hooks.allowRequestSessionKey=true, обмежтеhooks.allowedSessionKeyPrefixes(наприклад["hook:"]).
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }sessionKeyз payload запиту приймається лише тоді, колиhooks.allowRequestSessionKey=true(типово:false).
POST /hooks/<name>→ визначається черезhooks.mappings
Деталі mapping
Деталі mapping
match.pathзіставляє підшлях після/hooks(наприклад/hooks/gmail→gmail).match.sourceзіставляє поле payload для узагальнених шляхів.- Шаблони на кшталт
{{messages[0].subject}}читаються з payload. transformможе вказувати на модуль JS/TS, що повертає дію hook.transform.moduleмає бути відносним шляхом і залишатися в межахhooks.transformsDir(абсолютні шляхи й traversal відхиляються).
agentIdмаршрутизує до конкретного агента; невідомі ID резервно переходять до типового.allowedAgentIds: обмежує явну маршрутизацію (*або пропущено = дозволити все,[]= заборонити все).defaultSessionKey: необов’язковий фіксований ключ сеансу для запусків hook agent без явногоsessionKey.allowRequestSessionKey: дозволити викликачам/hooks/agentзадаватиsessionKey(типово:false).allowedSessionKeyPrefixes: необов’язковий список дозволених префіксів для явних значеньsessionKey(запит + mapping), наприклад["hook:"].deliver: trueнадсилає фінальну відповідь у канал;channelтипово має значенняlast.modelперевизначає LLM для цього запуску hook (має бути дозволено, якщо налаштовано каталог моделей).
Інтеграція Gmail
- Gateway автоматично запускає
gog gmail watch serveпід час завантаження, якщо його налаштовано. УстановітьOPENCLAW_SKIP_GMAIL_WATCHER=1, щоб вимкнути. - Не запускайте окремий
gog gmail watch serveпаралельно з Gateway.
Canvas host
- Обслуговує HTML/CSS/JS, які може редагувати агент, і A2UI через HTTP на порту Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- Лише локально: залишайте
gateway.bind: "loopback"(типово). - Для bind, відмінних від loopback: маршрути canvas потребують auth Gateway (token/password/trusted-proxy), так само як і інші HTTP-поверхні Gateway.
- Node WebViews зазвичай не надсилають заголовки auth; після сполучення та підключення вузла Gateway рекламує URL можливостей, прив’язані до вузла, для доступу до canvas/A2UI.
- URL можливостей прив’язані до активного WS-сеансу вузла і швидко спливають. Резервний варіант на основі IP не використовується.
- Вставляє клієнт live-reload в HTML, що обслуговується.
- Автоматично створює стартовий
index.html, якщо каталог порожній. - Також обслуговує A2UI за адресою
/__openclaw__/a2ui/. - Зміни потребують перезапуску gateway.
- Вимкніть live reload для великих каталогів або при помилках
EMFILE.
Discovery
mDNS (Bonjour)
minimal(типово): пропускаєcliPath+sshPortіз TXT-записів.full: включаєcliPath+sshPort.- Ім’я хоста типово
openclaw. Перевизначається черезOPENCLAW_MDNS_HOSTNAME.
Wide-area (DNS-SD)
~/.openclaw/dns/. Для виявлення між мережами поєднуйте з DNS-сервером (рекомендовано CoreDNS) + split DNS Tailscale.
Налаштування: openclaw dns setup --apply.
Environment
env (вбудовані env vars)
- Вбудовані env vars застосовуються лише тоді, коли у process env відсутній ключ.
- Файли
.env:.envпоточної робочої теки +~/.openclaw/.env(жоден із них не перевизначає наявні змінні). shellEnv: імпортує відсутні очікувані ключі з профілю вашої login shell.- Повний пріоритет див. у Environment.
Підстановка env var
Посилайтеся на env vars у будь-якому рядку конфігурації через${VAR_NAME}:
- Зіставляються лише назви у верхньому регістрі:
[A-Z_][A-Z0-9_]*. - Відсутні/порожні змінні спричиняють помилку під час завантаження конфігурації.
- Екрануйте через
$${VAR}для буквального${VAR}. - Працює з
$include.
Секрети
Посилання на секрети є адитивними: відкриті значення теж продовжують працювати.SecretRef
Використовуйте одну форму об’єкта:
- шаблон
provider:^[a-z][a-z0-9_-]{0,63}$ - шаблон id для
source: "env":^[A-Z][A-Z0-9_]{0,127}$ source: "file"id: абсолютний JSON pointer (наприклад"/providers/openai/apiKey")- шаблон id для
source: "exec":^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ source: "exec"id не мають містити сегменти шляху.або.., розділені/(наприкладa/../bвідхиляється)
Підтримувана поверхня облікових даних
- Канонічна матриця: SecretRef Credential Surface
secrets applyнацілюється на підтримувані шляхи облікових даних уopenclaw.json.- Посилання
auth-profiles.jsonвключені у визначення під час runtime та в покриття аудиту.
Конфігурація постачальників секретів
- Постачальник
fileпідтримуєmode: "json"іmode: "singleValue"(у режимі singleValueidмає бути"value"). - Постачальник
execвимагає абсолютний шляхcommandі використовує протокольні payload-и через stdin/stdout. - Типово шляхи команд-символічних посилань відхиляються. Установіть
allowSymlinkCommand: true, щоб дозволити шляхи-символічні посилання з перевіркою визначеного цільового шляху. - Якщо налаштовано
trustedDirs, перевірка trusted-dir застосовується до визначеного цільового шляху. - Середовище дочірнього процесу
execтипово мінімальне; явно передавайте потрібні змінні черезpassEnv. - Посилання на секрети визначаються під час активації в знімок у пам’яті, після чого шляхи запитів читають лише цей знімок.
- Під час активації застосовується фільтрація активної поверхні: невизначені посилання на увімкнених поверхнях спричиняють помилку запуску/перезавантаження, тоді як неактивні поверхні пропускаються з діагностикою.
Сховище auth
- Профілі для окремого агента зберігаються в
<agentDir>/auth-profiles.json. auth-profiles.jsonпідтримує посилання на рівні значень (keyRefдляapi_key,tokenRefдляtoken) для статичних режимів облікових даних.- Профілі режиму OAuth (
auth.profiles.<id>.mode = "oauth") не підтримують облікові даніauth-profileна базі SecretRef. - Статичні облікові дані runtime беруться з визначених знімків у пам’яті; застарілі статичні записи
auth.jsonочищаються при виявленні. - Застарілий імпорт OAuth — з
~/.openclaw/credentials/oauth.json. - Див. OAuth.
- Поведінка runtime секретів і інструменти
audit/configure/apply: Secrets Management.
auth.cooldowns
billingBackoffHours: базовий backoff у годинах, коли профіль завершується помилкою через справжні помилки білінгу/недостатнього кредиту (типово:5). Явний текст про білінг усе ще може потрапляти сюди навіть при відповідях401/403, але зіставлення тексту, специфічне для постачальника, залишається обмеженим постачальником, якому воно належить (наприклад OpenRouterKey limit exceeded). Повідомлення retryable HTTP402про вікно використання або ліміт витрат організації/workspace натомість залишаються в шляхуrate_limit.billingBackoffHoursByProvider: необов’язкові перевизначення годин billing backoff для окремих постачальників.billingMaxHours: обмеження в годинах для експоненційного зростання billing backoff (типово:24).authPermanentBackoffMinutes: базовий backoff у хвилинах для високодовірених збоївauth_permanent(типово:10).authPermanentMaxMinutes: обмеження в хвилинах для зростання backoffauth_permanent(типово:60).failureWindowHours: ковзне вікно в годинах, яке використовується для лічильників backoff (типово:24).overloadedProfileRotations: максимальна кількість ротацій auth-profile того самого постачальника для помилок перевантаження перед переходом до резервної моделі (типово:1). Сюди потрапляють форми на кшталтModelNotReadyException, коли постачальник зайнятий.overloadedBackoffMs: фіксована затримка перед повторною спробою ротації перевантаженого постачальника/профілю (типово:0).rateLimitedProfileRotations: максимальна кількість ротацій auth-profile того самого постачальника для помилок rate-limit перед переходом до резервної моделі (типово:1). Цей bucket rate-limit включає текстові форми, характерні для постачальника, такі якToo many concurrent requests,ThrottlingException,concurrency limit reached,workers_ai ... quota limit exceededіresource exhausted.
Логування
- Типовий файл журналу:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - Встановіть
logging.fileдля стабільного шляху. consoleLevelпідвищується доdebugпри--verbose.maxFileBytes: максимальний розмір файла журналу в байтах, після якого запис припиняється (додатне ціле число; типово:524288000= 500 MB). Для production-розгортань використовуйте зовнішню ротацію журналів.
Діагностика
enabled: головний перемикач виводу інструментування (типово:true).flags: масив рядків прапорців, що вмикають цільовий вивід журналів (підтримує шаблони з підстановкою, як-от"telegram.*"або"*").stuckSessionWarnMs: поріг віку в мс для виведення попереджень про завислий сеанс, поки сеанс залишається в стані обробки.otel.enabled: вмикає конвеєр експорту OpenTelemetry (типово:false).otel.endpoint: URL колектора для експорту OTel.otel.protocol:"http/protobuf"(типово) або"grpc".otel.headers: додаткові заголовки метаданих HTTP/gRPC, що надсилаються із запитами експорту OTel.otel.serviceName: назва сервісу для атрибутів ресурсу.otel.traces/otel.metrics/otel.logs: увімкнути експорт trace, metrics або logs.otel.sampleRate: частота вибірки trace0–1.otel.flushIntervalMs: інтервал періодичного скидання телеметрії в мс.cacheTrace.enabled: журналювати знімки cache trace для вбудованих запусків (типово:false).cacheTrace.filePath: шлях виводу для JSONL cache trace (типово:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: керують тим, що включається у вивід cache trace (усі типово:true).
Оновлення
channel: канал випусків для npm/git-установок —"stable","beta"або"dev".checkOnStart: перевіряти оновлення npm під час запуску gateway (типово:true).auto.enabled: увімкнути фонове автооновлення для пакетних установок (типово:false).auto.stableDelayHours: мінімальна затримка в годинах перед автоматичним застосуванням stable-каналу (типово:6; максимум:168).auto.stableJitterHours: додаткове вікно розподілу в годинах для розгортання stable-каналу (типово:12; максимум:168).auto.betaCheckIntervalHours: як часто виконуються перевірки beta-каналу, у годинах (типово:1; максимум:24).
ACP
enabled: глобальний feature gate для ACP (типово:false).dispatch.enabled: незалежний перемикач для диспетчеризації ходів ACP-сеансу (типово:true). Установітьfalse, щоб команди ACP залишалися доступними, але виконання блокувалося.backend: id типового runtime-бекенда ACP (має збігатися із зареєстрованим плагіном ACP runtime).defaultAgent: резервний id цільового агента ACP, коли spawn-и не задають явну ціль.allowedAgents: список дозволених id агентів для ACP runtime-сеансів; порожнє значення означає відсутність додаткових обмежень.maxConcurrentSessions: максимальна кількість одночасно активних ACP-сеансів.stream.coalesceIdleMs: вікно idle flush у мс для потокового тексту.stream.maxChunkChars: максимальний розмір фрагмента перед розбиттям проєкції потокового блока.stream.repeatSuppression: пригнічувати повторювані рядки статусу/інструментів на хід (типово:true).stream.deliveryMode:"live"передає потік поступово;"final_only"буферизує до термінальних подій ходу.stream.hiddenBoundarySeparator: роздільник перед видимим текстом після прихованих подій інструментів (типово:"paragraph").stream.maxOutputChars: максимальна кількість символів виводу assistant, проєктованих на хід ACP.stream.maxSessionUpdateChars: максимальна кількість символів для проєктованих рядків статусу/оновлення ACP.stream.tagVisibility: запис відповідності назв тегів булевим перевизначенням видимості для потокових подій.runtime.ttlMinutes: idle TTL у хвилинах для робітників ACP-сеансу до можливого очищення.runtime.installCommand: необов’язкова команда встановлення для запуску під час початкового налаштування середовища ACP runtime.
CLI
cli.banner.taglineModeкерує стилем слогана банера:"random"(типово): змінні кумедні/сезонні слогани."default": фіксований нейтральний слоган (Усі ваші чати, один OpenClaw.)."off": без тексту слогана (заголовок/версія банера все одно показуються).
- Щоб приховати весь банер (а не лише слогани), встановіть env
OPENCLAW_HIDE_BANNER=1.
Wizard
Метадані, які записують потоки покрокового налаштування CLI (onboard, configure, doctor):
Identity
Див. поля identity вagents.list у розділі Типові значення агента.
Bridge (застарілий, вилучений)
Поточні збірки більше не містять TCP bridge. Вузли підключаються через Gateway WebSocket. Ключіbridge.* більше не є частиною схеми конфігурації (валідація завершується помилкою, доки їх не буде видалено; openclaw doctor --fix може прибрати невідомі ключі).
Застаріла конфігурація bridge (історична довідка)
Застаріла конфігурація bridge (історична довідка)
Cron
sessionRetention: як довго зберігати завершені сеанси ізольованих запусків cron перед очищенням ізsessions.json. Також керує очищенням архівованих видалених стенограм cron. Типове значення:24h; установітьfalse, щоб вимкнути.runLog.maxBytes: максимальний розмір файла журналу одного запуску (cron/runs/<jobId>.jsonl) перед очищенням. Типове значення:2_000_000байтів.runLog.keepLines: кількість найновіших рядків, що зберігаються під час очищення журналу запуску. Типове значення:2000.webhookToken: bearer token, який використовується для доставлення cron webhook через POST (delivery.mode = "webhook"); якщо пропущено, заголовок auth не надсилається.webhook: застаріла резервна URL webhook (http/https), яка використовується лише для збережених завдань, що все ще маютьnotify: true.
cron.retry
maxAttempts: максимальна кількість повторних спроб для одноразових завдань при тимчасових помилках (типово:3; діапазон:0–10).backoffMs: масив затримок backoff у мс для кожної повторної спроби (типово:[30000, 60000, 300000]; 1–10 записів).retryOn: типи помилок, що запускають повторні спроби —"rate_limit","overloaded","network","timeout","server_error". Пропустіть, щоб повторювати всі тимчасові типи.
cron.failureAlert
enabled: увімкнути сповіщення про збої для cron jobs (типово:false).after: кількість послідовних збоїв перед спрацюванням сповіщення (додатне ціле число, мінімум:1).cooldownMs: мінімальна кількість мілісекунд між повторними сповіщеннями для тієї самої job.mode: режим доставки —"announce"надсилає через повідомлення каналу;"webhook"надсилає POST на налаштований webhook.accountId: необов’язковий id облікового запису або каналу для обмеження області доставки сповіщення.
cron.failureDestination
- Типова ціль для сповіщень про збої cron для всіх jobs.
mode:"announce"або"webhook"; типово"announce", коли є достатньо даних про ціль.channel: перевизначення каналу для доставки announce."last"повторно використовує останній відомий канал доставки.to: явна ціль announce або URL webhook. Обов’язково для режиму webhook.accountId: необов’язкове перевизначення облікового запису для доставки.delivery.failureDestinationдля конкретної job перевизначає це глобальне типове значення.- Коли не задано ні глобальної, ні специфічної для job цілі збою, jobs, які вже доставляють через
announce, у разі збою резервно використовують цю основну announce-ціль. delivery.failureDestinationпідтримується лише для jobs ізsessionTarget="isolated", якщо тільки основнийdelivery.modejob не дорівнює"webhook".
Змінні шаблону моделі медіа
Заповнювачі шаблонів, що розгортаються вtools.media.models[].args:
| Змінна | Опис |
|---|---|
{{Body}} | Повне тіло вхідного повідомлення |
{{RawBody}} | Сире тіло (без обгорток історії/відправника) |
{{BodyStripped}} | Тіло без згадок у групі |
{{From}} | Ідентифікатор відправника |
{{To}} | Ідентифікатор призначення |
{{MessageSid}} | ID повідомлення каналу |
{{SessionId}} | UUID поточного сеансу |
{{IsNewSession}} | "true", коли створено новий сеанс |
{{MediaUrl}} | Псевдо-URL вхідного медіа |
{{MediaPath}} | Локальний шлях до медіа |
{{MediaType}} | Тип медіа (image/audio/document/…) |
{{Transcript}} | Стенограма аудіо |
{{Prompt}} | Визначений media prompt для записів CLI |
{{MaxChars}} | Визначений максимум вихідних символів для записів CLI |
{{ChatType}} | "direct" або "group" |
{{GroupSubject}} | Назва групи (best effort) |
{{GroupMembers}} | Попередній список учасників групи (best effort) |
{{SenderName}} | Відображуване ім’я відправника (best effort) |
{{SenderE164}} | Номер телефону відправника (best effort) |
{{Provider}} | Підказка постачальника (whatsapp, telegram, discord тощо) |
Включення конфігурації ($include)
Розділяйте конфігурацію на кілька файлів:
- Один файл: замінює об’єкт, у якому міститься.
- Масив файлів: глибоко зливається по порядку (пізніші перевизначають раніші).
- Сусідні ключі: зливаються після включень (перевизначають включені значення).
- Вкладені включення: до 10 рівнів глибини.
- Шляхи: визначаються відносно файла, що включає, але мають залишатися в межах каталогу конфігурації верхнього рівня (
dirnameвідopenclaw.json). Абсолютні форми/форми з../дозволені лише тоді, коли вони все одно визначаються в межах цієї границі. - Помилки: зрозумілі повідомлення для відсутніх файлів, помилок розбору та циклічних включень.
Пов’язане: Configuration · Configuration Examples · Doctor