Довідник з конфігурації
Усі поля, доступні в~/.openclaw/openclaw.json. Для огляду, орієнтованого на завдання, див. Configuration.
Формат конфігурації — JSON5 (дозволені коментарі + кінцеві коми). Усі поля необов’язкові — OpenClaw використовує безпечні значення за замовчуванням, якщо їх не вказано.
Канали
Кожен канал запускається автоматично, коли існує його секція конфігурації (якщо не вказаноenabled: false).
Доступ до DM і груп
Усі канали підтримують політики DM і політики груп:| Політика DM | Поведінка |
|---|---|
pairing (default) | Невідомі відправники отримують одноразовий код pairing; власник має підтвердити |
allowlist | Лише відправники з allowFrom (або зі сховища paired allow) |
open | Дозволити всі вхідні DM (потрібно allowFrom: ["*"]) |
disabled | Ігнорувати всі вхідні DM |
| Політика груп | Поведінка |
|---|---|
allowlist (default) | Лише групи, що відповідають налаштованому allowlist |
open | Обійти allowlist груп (гейтінг згадок усе ще діє) |
disabled | Блокувати всі повідомлення груп/кімнат |
channels.defaults.groupPolicy задає значення за замовчуванням, якщо groupPolicy постачальника не встановлено.
Коди pairing спливають через 1 годину. Кількість очікуваних запитів на pairing DM обмежена 3 на канал.
Якщо блок постачальника повністю відсутній (channels.<provider> відсутній), політика груп під час виконання повертається до allowlist (fail-closed) з попередженням під час запуску.Перевизначення моделі для каналів
Використовуйтеchannels.modelByChannel, щоб закріпити конкретні ID каналів за моделлю. Значення приймають provider/model або налаштовані псевдоніми моделей. Відображення каналу застосовується, коли для сесії ще не встановлено перевизначення моделі (наприклад, через /model).
Значення каналів за замовчуванням і heartbeat
Використовуйтеchannels.defaults для спільної політики груп і поведінки heartbeat для всіх постачальників:
channels.defaults.groupPolicy: резервна політика груп, якщоgroupPolicyна рівні постачальника не встановлено.channels.defaults.contextVisibility: режим видимості додаткового контексту за замовчуванням для всіх каналів. Значення:all(default, включати весь процитований/потоковий/історичний контекст),allowlist(включати контекст лише від відправників з 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, якщо він є; інакше — перший налаштований ID акаунта (відсортований). - Необов’язковий
channels.whatsapp.defaultAccountперевизначає цей резервний вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. - Застарілий каталог автентифікації 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(лише звичайний файл; symlink відхиляються), зTELEGRAM_BOT_TOKENяк резервним варіантом для акаунта default. - Необов’язковий
channels.telegram.defaultAccountперевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. - У багатоакаунтних конфігураціях (2+ ID акаунтів) установіть явний default (
channels.telegram.defaultAccountабоchannels.telegram.accounts.default), щоб уникнути резервної маршрутизації;openclaw doctorпопереджає, якщо цього бракує або значення невалідне. configWrites: falseблокує записи конфігурації, ініційовані з Telegram (міграції ID supergroup,/config set|unset).- Записи верхнього рівня
bindings[]зtype: "acp"налаштовують сталі ACP-прив’язки для тем форумів (використовуйте канонічнийchatId:topic:topicIdуmatch.peer.id). Семантика полів спільна з ACP Agents. - Прев’ю потоку Telegram використовують
sendMessage+editMessageText(працює в прямих і групових чатах). - Політика retry: див. Retry policy.
Discord
- Токен:
channels.discord.token, зDISCORD_BOT_TOKENяк резервним варіантом для акаунта default. - Прямі вихідні виклики, що передають явний Discord
token, використовують цей токен для виклику; налаштування retry/політики акаунта все одно беруться з вибраного акаунта в активному знімку runtime. - Необов’язковий
channels.discord.defaultAccountперевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. - Використовуйте
user:<id>(DM) абоchannel:<id>(канал guild) як цілі доставки; прості числові ID відхиляються. - Slug guild — у нижньому регістрі, пробіли замінено на
-; ключі каналів використовують slug-ім’я (без#). Віддавайте перевагу ID guild. - Повідомлення, створені ботом, за замовчуванням ігноруються.
allowBots: trueвмикає їх; використовуйтеallowBots: "mentions", щоб приймати лише повідомлення ботів, які згадують бота (власні повідомлення все одно фільтруються). channels.discord.guilds.<id>.ignoreOtherMentions(і перевизначення каналів) відкидає повідомлення, які згадують іншого користувача або роль, але не бота (за винятком @everyone/@here).maxLinesPerMessage(default 17) розбиває довгі повідомлення, навіть якщо вони коротші за 2000 символів.channels.discord.threadBindingsкерує маршрутизацією, прив’язаною до thread у Discord:enabled: перевизначення Discord для функцій сесій, прив’язаних до thread (/focus,/unfocus,/agents,/session idle,/session max-ageта прив’язана доставка/маршрутизація)idleHours: перевизначення Discord для автоматичного unfocus через неактивність у годинах (0вимикає)maxAgeHours: перевизначення Discord для жорсткого максимального віку в годинах (0вимикає)spawnSubagentSessions: opt-in перемикач для автоматичного створення/прив’язки thread уsessions_spawn({ thread: true })
- Записи верхнього рівня
bindings[]зtype: "acp"налаштовують сталі ACP-прив’язки для каналів і thread (використовуйте ID каналу/thread уmatch.peer.id). Семантика полів спільна з ACP Agents. channels.discord.ui.components.accentColorзадає колір акценту для контейнерів Discord components v2.channels.discord.voiceвмикає розмови у voice channel Discord і необов’язкові auto-join + перевизначення TTS.channels.discord.voice.daveEncryptionіchannels.discord.voice.decryptionFailureToleranceнапряму передаються в параметри DAVE@discordjs/voice(trueі24за замовчуванням).- OpenClaw також намагається відновити voice receive, виходячи й повторно приєднуючись до voice session після повторюваних помилок дешифрування.
channels.discord.streaming— канонічний ключ режиму потоку. ЗастаріліstreamModeі булеві значенняstreamingмігруються автоматично.channels.discord.autoPresenceзіставляє доступність runtime зі статусом бота (healthy => online, degraded => idle, exhausted => dnd) і дозволяє необов’язкові перевизначення тексту статусу.channels.discord.dangerouslyAllowNameMatchingзнову вмикає зіставлення за змінюваним ім’ям/tag (режим break-glass для сумісності).channels.discord.execApprovals: доставка native exec approval у Discord і авторизація погоджувачів.enabled:true,falseабо"auto"(default). У режимі auto exec approvals активуються, коли погоджувачів можна визначити зapproversабоcommands.ownerAllowFrom.approvers: ID користувачів Discord, яким дозволено схвалювати exec requests. Якщо не вказано, використовуєтьсяcommands.ownerAllowFrom.agentFilter: необов’язковий allowlist ID агентів. Якщо пропустити, approvals пересилаються для всіх агентів.sessionFilter: необов’язкові шаблони ключів сесій (підрядок або regex).target: куди надсилати запити на схвалення."dm"(default) надсилає в DM погоджувачів,"channel"— у вихідний канал,"both"— в обидва місця. Коли target включає"channel", кнопки можуть використовувати лише визначені погоджувачі.cleanupAfterResolve: якщоtrue, видаляє approval DM після схвалення, відхилення або timeout.
off (немає), own (повідомлення бота, default), all (усі повідомлення), allowlist (із guilds.<id>.users для всіх повідомлень).
Google Chat
- JSON service account: вбудовано (
serviceAccount) або з файла (serviceAccountFile). - Також підтримується Service account 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 mode потребує і
botToken, іappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENяк резерв через env для акаунта default). - HTTP mode потребує
botTokenплюсsigningSecret(у корені або для кожного акаунта). botToken,appToken,signingSecretіuserTokenприймають прості текстові рядки або об’єкти SecretRef.- Знімки акаунтів Slack показують поля джерела/статусу для кожного облікового
даного, наприклад
botTokenSource,botTokenStatus,appTokenStatus, а в HTTP mode —signingSecretStatus.configured_unavailableозначає, що акаунт налаштований через SecretRef, але поточний шлях command/runtime не зміг розв’язати значення секрету. configWrites: falseблокує записи конфігурації, ініційовані зі Slack.- Необов’язковий
channels.slack.defaultAccountперевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. channels.slack.streaming— канонічний ключ режиму потоку. ЗастаріліstreamModeі булеві значенняstreamingмігруються автоматично.- Використовуйте
user:<id>(DM) абоchannel:<id>як цілі доставки.
off, own (default), all, allowlist (із reactionAllowlist).
Ізоляція thread session: thread.historyScope — для кожного thread окремо (default) або спільний для каналу. thread.inheritParent копіює transcript батьківського каналу в нові threads.
typingReactionдодає тимчасову реакцію до вхідного повідомлення Slack, поки виконується відповідь, а після завершення прибирає її. Використовуйте shortcode emoji Slack, наприклад"hourglass_flowing_sand".channels.slack.execApprovals: доставка native exec approval у Slack і авторизація погоджувачів. Та сама схема, що й у Discord:enabled(true/false/"auto"),approvers(ID користувачів Slack),agentFilter,sessionFilterіtarget("dm","channel"або"both").
| Група дій | Default | Примітки |
|---|---|---|
| reactions | увімкнено | Реагування + список реакцій |
| messages | увімкнено | Читання/надсилання/редагування/видалення |
| pins | увімкнено | Закріпити/відкріпити/список |
| memberInfo | увімкнено | Інформація про учасника |
| emojiList | увімкнено | Список користувацьких emoji |
Mattermost
Mattermost постачається як plugin:openclaw plugins install @openclaw/mattermost.
oncall (відповідати на @-згадку, default), onmessage (на кожне повідомлення), onchar (повідомлення, що починаються з префікса trigger).
Коли native commands Mattermost увімкнено:
commands.callbackPathмає бути шляхом (наприклад/api/channels/mattermost/command), а не повною URL-адресою.commands.callbackUrlмає вказувати на endpoint gateway OpenClaw і бути досяжним із сервера Mattermost.- Native slash callbacks автентифікуються токенами кожної команди,
які Mattermost повертає під час реєстрації slash command. Якщо реєстрація не вдалася або
не активовано жодної команди, OpenClaw відхиляє callbacks із
Unauthorized: invalid command token. - Для private/tailnet/internal callback hosts Mattermost може вимагати,
щоб
ServiceSettings.AllowedUntrustedInternalConnectionsмістив callback host/domain. Використовуйте значення host/domain, а не повні URL. channels.mattermost.configWrites: дозволити або заборонити записи конфігурації, ініційовані з Mattermost.channels.mattermost.requireMention: вимагати@mentionперед відповіддю в каналах.channels.mattermost.groups.<channelId>.requireMention: перевизначення mention-gating для окремого каналу ("*"для default).- Необов’язковий
channels.mattermost.defaultAccountперевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта.
Signal
off, own (default), all, allowlist (із reactionAllowlist).
channels.signal.account: закріпити запуск каналу за конкретною ідентичністю акаунта Signal.channels.signal.configWrites: дозволити або заборонити записи конфігурації, ініційовані із Signal.- Необов’язковий
channels.signal.defaultAccountперевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта.
BlueBubbles
BlueBubbles — рекомендований шлях для iMessage (підтримується plugin, налаштовується вchannels.bluebubbles).
- Основні шляхи ключів, описані тут:
channels.bluebubbles,channels.bluebubbles.dmPolicy. - Необов’язковий
channels.bluebubbles.defaultAccountперевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. - Записи верхнього рівня
bindings[]зtype: "acp"можуть прив’язувати розмови BlueBubbles до сталих ACP session. Використовуйте BlueBubbles handle або target string (chat_id:*,chat_guid:*,chat_identifier:*) уmatch.peer.id. Спільна семантика полів: ACP Agents. - Повну конфігурацію каналу BlueBubbles задокументовано в BlueBubbles.
iMessage
OpenClaw запускаєimsg rpc (JSON-RPC через stdio). Daemon або порт не потрібні.
-
Необов’язковий
channels.imessage.defaultAccountперевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. - Потрібен Full Disk Access до БД Messages.
-
Віддавайте перевагу цілям
chat_id:<id>. Використовуйтеimsg chats --limit 20, щоб переглянути список чатів. -
cliPathможе вказувати на SSH wrapper; установітьremoteHost(hostабоuser@host) для отримання вкладень через SCP. -
attachmentRootsіremoteAttachmentRootsобмежують шляхи вхідних вкладень (default:/Users/*/Library/Messages/Attachments). -
SCP використовує сувору перевірку host key, тому переконайтеся, що host key relay уже є в
~/.ssh/known_hosts. -
channels.imessage.configWrites: дозволити або заборонити записи конфігурації, ініційовані з iMessage. -
Записи верхнього рівня
bindings[]зtype: "acp"можуть прив’язувати розмови iMessage до сталих ACP session. Використовуйте нормалізований handle або явну ціль чату (chat_id:*,chat_guid:*,chat_identifier:*) уmatch.peer.id. Спільна семантика полів: ACP Agents.
Приклад SSH wrapper для iMessage
Приклад SSH wrapper для iMessage
Matrix
Matrix підтримується extension і налаштовується вchannels.matrix.
- Автентифікація токеном використовує
accessToken; автентифікація паролем —userId+password. channels.matrix.proxyспрямовує HTTP-трафік Matrix через явний HTTP(S) proxy. Іменовані акаунти можуть перевизначати це черезchannels.matrix.accounts.<id>.proxy.channels.matrix.allowPrivateNetworkдозволяє private/internal homeservers.proxyіallowPrivateNetwork— незалежні елементи керування.channels.matrix.defaultAccountвибирає бажаний акаунт у багатоакаунтних конфігураціях.channels.matrix.execApprovals: доставка native exec approval у Matrix і авторизація погоджувачів.enabled:true,falseабо"auto"(default). У режимі auto exec approvals активуються, коли погоджувачів можна визначити зapproversабоcommands.ownerAllowFrom.approvers: ID користувачів Matrix (наприклад@owner:example.org), яким дозволено схвалювати exec requests.agentFilter: необов’язковий allowlist ID агентів. Якщо пропустити, approvals пересилаються для всіх агентів.sessionFilter: необов’язкові шаблони ключів сесій (підрядок або regex).target: куди надсилати запити на схвалення."dm"(default),"channel"(вихідна кімната) або"both".- Перевизначення на рівні акаунта:
channels.matrix.accounts.<id>.execApprovals.
channels.matrix.dm.sessionScopeкерує тим, як DM Matrix групуються в session:per-user(default) ділить за маршрутизованим peer, аper-roomізолює кожну DM room.- Matrix status probes і live directory lookups використовують ту саму політику proxy, що й трафік runtime.
- Повну конфігурацію Matrix, правила targeting і приклади налаштування задокументовано в Matrix.
Microsoft Teams
Microsoft Teams підтримується extension і налаштовується вchannels.msteams.
- Основні шляхи ключів, описані тут:
channels.msteams,channels.msteams.configWrites. - Повну конфігурацію Teams (облікові дані, webhook, політика DM/груп, перевизначення для кожної team/channel) задокументовано в Microsoft Teams.
IRC
IRC підтримується extension і налаштовується вchannels.irc.
- Основні шляхи ключів, описані тут:
channels.irc,channels.irc.dmPolicy,channels.irc.configWrites,channels.irc.nickserv.*. - Необов’язковий
channels.irc.defaultAccountперевизначає вибір акаунта за замовчуванням, якщо він збігається з налаштованим ID акаунта. - Повну конфігурацію каналу IRC (host/port/TLS/channels/allowlists/mention gating) задокументовано в IRC.
Багато акаунтів (усі канали)
Запускайте кілька акаунтів на канал (кожен зі своїмaccountId):
defaultвикористовується, колиaccountIdне вказано (CLI + routing).- Токени env застосовуються лише до акаунта default.
- Базові налаштування каналу застосовуються до всіх акаунтів, якщо не перевизначено на рівні акаунта.
- Використовуйте
bindings[].match.accountId, щоб маршрутизувати кожен акаунт до іншого агента. - Якщо ви додаєте не-default акаунт через
openclaw channels add(або onboarding каналу), поки ще використовуєте конфігурацію каналу верхнього рівня для одного акаунта, OpenClaw спочатку піднімає акаунт-орієнтовані значення верхнього рівня до мапи акаунтів каналу, щоб початковий акаунт продовжував працювати. Більшість каналів переміщують їх уchannels.<channel>.accounts.default; Matrix може зберегти наявну відповідну іменовану/default ціль. - Наявні channel-only bindings (без
accountId) і далі відповідатимуть акаунту default; bindings з прив’язкою до акаунта залишаються необов’язковими. openclaw doctor --fixтакож виправляє змішані форми, переміщуючи акаунт-орієнтовані значення верхнього рівня для одного акаунта в підвищений акаунт, вибраний для цього каналу. Більшість каналів використовуютьaccounts.default; Matrix може зберегти наявну відповідну іменовану/default ціль.
Інші extension channels
Багато extension channels налаштовуються якchannels.<id> і задокументовані на окремих сторінках каналів (наприклад Feishu, Matrix, LINE, Nostr, Zalo, Nextcloud Talk, Synology Chat і Twitch).
Дивіться повний індекс каналів: Channels.
Гейтінг згадок у групових чатах
Для групових повідомлень за замовчуванням потрібна згадка (метадані згадки або безпечні regex-шаблони). Це стосується групових чатів WhatsApp, Telegram, Discord, Google Chat та iMessage. Типи згадок:- Metadata mentions: native @-згадки платформи. Ігноруються в режимі self-chat WhatsApp.
- Text patterns: безпечні regex-шаблони в
agents.list[].groupChat.mentionPatterns. Невалідні шаблони і небезпечні вкладені повторення ігноруються. - Mention gating застосовується лише тоді, коли виявлення можливе (native mentions або принаймні один pattern).
messages.groupChat.historyLimit задає глобальне default. Канали можуть перевизначити його через channels.<channel>.historyLimit (або на рівні акаунта). Установіть 0, щоб вимкнути.
Ліміти історії DM
telegram, whatsapp, discord, slack, signal, imessage, msteams.
Режим self-chat
Додайте свій номер доallowFrom, щоб увімкнути режим self-chat (ігнорує native @-згадки, відповідає лише на text patterns):
Commands (обробка chat command)
Деталі command
Деталі command
- Text commands мають бути окремими повідомленнями з початковим
/. native: "auto"вмикає native commands для Discord/Telegram, залишає Slack вимкненим.- Перевизначення для каналу:
channels.discord.commands.native(bool або"auto").falseочищує раніше зареєстровані commands. channels.telegram.customCommandsдодає додаткові записи меню бота Telegram.bash: trueвмикає! <cmd>для shell хоста. Потребуєtools.elevated.enabledі щоб відправник був уtools.elevated.allowFrom.<channel>.config: trueвмикає/config(читає/записуєopenclaw.json). Для клієнтів gatewaychat.sendсталі записи/config set|unsetтакож потребуютьoperator.admin; read-only/config showзалишається доступним для звичайних операторських клієнтів із правом запису.channels.<provider>.configWritesконтролює мутації конфігурації для кожного каналу (default: true).- Для багатоакаунтних каналів
channels.<provider>.accounts.<id>.configWritesтакож контролює записи, що націлені на цей акаунт (наприклад/allowlist --config --account <id>або/config set channels.<provider>.accounts.<id>...). allowFromзадається для кожного постачальника. Якщо встановлено, це єдине джерело авторизації (allowlist/pairing каналу таuseAccessGroupsігноруються).useAccessGroups: falseдозволяє commands обходити політики access-group, колиallowFromне задано.
Значення агента за замовчуванням
agents.defaults.workspace
Default: ~/.openclaw/workspace.
agents.defaults.repoRoot
Необов’язковий корінь репозиторію, який показується в рядку Runtime системного prompt. Якщо не задано, OpenClaw визначає його автоматично, підіймаючись вгору від workspace.
agents.defaults.skills
Необов’язковий default allowlist для Skills для агентів, які не задають
agents.list[].skills.
- Пропустіть
agents.defaults.skills, щоб за замовчуванням Skills не обмежувалися. - Пропустіть
agents.list[].skills, щоб успадкувати defaults. - Установіть
agents.list[].skills: [], щоб не було жодних Skills. - Непорожній список
agents.list[].skills— це фінальний набір для агента; він не зливається з defaults.
agents.defaults.skipBootstrap
Вимикає автоматичне створення bootstrap-файлів workspace (AGENTS.md, SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md).
agents.defaults.bootstrapMaxChars
Максимальна кількість символів у кожному bootstrap-файлі workspace перед обрізанням. Default: 20000.
agents.defaults.bootstrapTotalMaxChars
Максимальна загальна кількість символів, що інжектуються в усі bootstrap-файли workspace. Default: 150000.
agents.defaults.bootstrapPromptTruncationWarning
Керує видимим для агента текстом попередження, коли bootstrap-контекст обрізано.
Default: "once".
"off": ніколи не інжектувати текст попередження в system prompt."once": інжектувати попередження один раз для кожного унікального сигнатурного обрізання (рекомендовано)."always": інжектувати попередження під час кожного запуску, якщо обрізання існує.
agents.defaults.imageMaxDimensionPx
Максимальний розмір у пікселях для найдовшої сторони зображення в блоках image transcript/tool перед викликами постачальника.
Default: 1200.
Нижчі значення зазвичай зменшують використання vision-token і розмір payload запиту для сценаріїв із великою кількістю скриншотів.
Вищі значення зберігають більше візуальних деталей.
agents.defaults.userTimezone
Часовий пояс для контексту system prompt (не для timestamp повідомлень). Якщо не задано, використовується часовий пояс хоста.
agents.defaults.timeFormat
Формат часу в system prompt. Default: auto (налаштування ОС).
agents.defaults.model
model: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Рядкова форма задає лише primary model.
- Форма об’єкта задає primary плюс впорядковані failover models.
imageModel: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Використовується шляхом інструмента
imageяк конфігурація vision model. - Також використовується як резервна маршрутизація, коли вибрана/default model не може приймати image input.
- Використовується шляхом інструмента
imageGenerationModel: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Використовується спільною можливістю генерації зображень і будь-якою майбутньою поверхнею tool/plugin, що генерує зображення.
- Типові значення:
google/gemini-3.1-flash-image-previewдля native Gemini image generation,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все одно може вивести default постачальника з автентифікацією. Спочатку він пробує поточного default provider, а потім решту зареєстрованих постачальників image generation у порядку provider-id.
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усе одно може вивести default постачальника з автентифікацією. Спочатку він пробує поточного default provider, а потім решту зареєстрованих постачальників генерації відео в порядку provider-id. - Якщо ви вибираєте конкретний provider/model, також налаштуйте відповідну автентифікацію/API key постачальника.
- Вбудований постачальник генерації відео Qwen наразі підтримує до 1 вихідного відео, 1 вхідного зображення, 4 вхідних відео, тривалість 10 секунд і параметри постачальника
size,aspectRatio,resolution,audioтаwatermark.
- Використовується спільною можливістю генерації відео та вбудованим інструментом
pdfModel: приймає або рядок ("provider/model"), або об’єкт ({ primary, fallbacks }).- Використовується інструментом
pdfдля маршрутизації моделі. - Якщо параметр пропущено, PDF tool повертається до
imageModel, а потім — до визначеної model session/default.
- Використовується інструментом
pdfMaxBytesMb: default обмеження розміру PDF для інструментаpdf, колиmaxBytesMbне передано під час виклику.pdfMaxPages: default максимальна кількість сторінок, які враховуються режимом fallback extraction в інструментіpdf.verboseDefault: default рівень verbose для агентів. Значення:"off","on","full". Default:"off".elevatedDefault: default рівень elevated-output для агентів. Значення:"off","on","ask","full". Default:"on".model.primary: форматprovider/model(наприкладopenai/gpt-5.4). Якщо пропустити provider, OpenClaw спочатку пробує alias, потім — унікальний match серед налаштованих providers для цього exact model id, і лише потім повертається до налаштованого default provider (застаріла сумісна поведінка, тому краще явно вказуватиprovider/model). Якщо цей provider більше не пропонує налаштовану default model, OpenClaw повертається до першого налаштованого provider/model, а не показує застарілий default видаленого provider.models: налаштований каталог моделей і allowlist для/model. Кожен запис може міститиalias(скорочення) іparams(специфічні для provider, наприкладtemperature,maxTokens,cacheRetention,context1m).params: глобальні default provider parameters, застосовувані до всіх моделей. Задається черезagents.defaults.params(наприклад{ cacheRetention: "long" }).- Пріоритет злиття
params(конфігурація):agents.defaults.params(глобальна база) перевизначаєтьсяagents.defaults.models["provider/model"].params(для моделі), потімagents.list[].params(для відповідного agent id) перевизначає по ключах. Докладніше див. Prompt Caching. - Записувачі конфігурації, які змінюють ці поля (наприклад
/models set,/models set-imageі команди додавання/видалення fallback), зберігають канонічну форму об’єкта й по можливості зберігають наявні списки fallback. maxConcurrent: максимальна кількість паралельних запусків агентів між сесіями (кожна session усе одно серіалізується). Default: 4.
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 для потокової передачі tool call. Щоб вимкнути це, установіть agents.defaults.models["zai/<model>"].params.tool_stream у false.
Для моделей Anthropic Claude 4.6 за замовчуванням використовується adaptive thinking, коли не задано явний рівень thinking.
- Sessions підтримуються, коли встановлено
sessionArg. - Пряме передавання image підтримується, коли
imageArgприймає file paths.
agents.defaults.heartbeat
Періодичні запуски heartbeat.
every: рядок тривалості (ms/s/m/h). Default:30m(автентифікація API key) або1h(автентифікація OAuth). Установіть0m, щоб вимкнути.suppressToolErrorWarnings: якщо true, пригнічує payload попереджень про помилки інструментів під час heartbeat runs.directPolicy: політика доставки direct/DM.allow(default) дозволяє доставку в direct targets.blockпригнічує доставку в direct target і генеруєreason=dm-blocked.lightContext: якщо true, heartbeat runs використовують полегшений bootstrap-контекст і зберігають лишеHEARTBEAT.mdіз bootstrap-файлів workspace.isolatedSession: якщо true, кожен heartbeat run відбувається в новій session без попередньої історії розмов. Той самий шаблон ізоляції, що й у cronsessionTarget: "isolated". Зменшує вартість токенів на heartbeat приблизно зі ~100K до ~2-5K токенів.- Для агента: задайте
agents.list[].heartbeat. Якщо будь-який агент визначаєheartbeat, heartbeat запускаються лише для цих агентів. - Heartbeat виконують повні agent turns — коротші інтервали спалюють більше токенів.
agents.defaults.compaction
mode:defaultабоsafeguard(узагальнення шматками для довгих історій). Див. Compaction.timeoutSeconds: максимальна кількість секунд для однієї операції compaction, після чого OpenClaw її скасовує. Default:900.identifierPolicy:strict(default),offабоcustom.strictдодає вбудовані інструкції щодо збереження непрозорих ідентифікаторів під час summarization у compaction.identifierInstructions: необов’язковий власний текст для збереження ідентифікаторів, який використовується, колиidentifierPolicy=custom.postCompactionSections: необов’язкові назви секцій AGENTS.md рівня H2/H3 для повторного інжектування після compaction. Default:["Session Startup", "Red Lines"]; установіть[], щоб вимкнути повторне інжектування. Коли не задано або явно встановлено цю пару за замовчуванням, старіші заголовкиEvery Session/Safetyтакож приймаються як legacy fallback.model: необов’язкове перевизначенняprovider/model-idлише для summarization у compaction. Використовуйте це, коли основна session має залишатися на одній моделі, а summaries compaction повинні виконуватися на іншій; якщо не задано, compaction використовує primary model session.notifyUser: якщоtrue, надсилає коротке повідомлення користувачу, коли починається compaction (наприклад, “Compacting context…”). За замовчуванням вимкнено, щоб compaction відбувався безшумно.memoryFlush: тихий agentic turn перед auto-compaction для збереження тривалих спогадів. Пропускається, якщо workspace тільки для читання.
agents.defaults.contextPruning
Обрізає старі результати інструментів з in-memory контексту перед надсиланням до LLM. Не змінює історію session на диску.
Поведінка режиму cache-ttl
Поведінка режиму cache-ttl
mode: "cache-ttl"вмикає проходи pruning.ttlвизначає, як часто pruning може запускатися знову (після останнього cache touch).- Pruning спочатку soft-trim обрізає завеликі результати інструментів, а потім hard-clear очищає старіші результати інструментів, якщо потрібно.
... посередині.Hard-clear замінює весь результат інструмента на placeholder.Примітки:- Блоки image ніколи не обрізаються/не очищаються.
- Співвідношення базуються на символах (приблизно), а не на точній кількості токенів.
- Якщо існує менше ніж
keepLastAssistantsassistant messages, pruning пропускається.
Block streaming
- Канали, крім Telegram, потребують явного
*.blockStreaming: true, щоб увімкнути block replies. - Перевизначення на рівні каналу:
channels.<channel>.blockStreamingCoalesce(і варіанти для кожного акаунта). Для Signal/Slack/Discord/Google Chat defaultminChars: 1500. humanDelay: випадкова пауза між block replies.natural= 800–2500ms. Перевизначення для агента:agents.list[].humanDelay.
Індикатори набору
- Defaults:
instantдля direct chats/mentions,messageдля групових чатів без згадки. - Перевизначення для session:
session.typingMode,session.typingIntervalSeconds.
agents.defaults.sandbox
Необов’язковий sandboxing для вбудованого агента. Повний посібник див. у Sandboxing.
Деталі sandbox
Деталі sandbox
Backend:Режим OpenShell:
docker: локальний runtime Docker (default)ssh: універсальний remote runtime на основі SSHopenshell: runtime OpenShell
backend: "openshell", налаштування, специфічні для runtime, переносяться до
plugins.entries.openshell.config.Конфігурація backend SSH:target: ціль SSH у форматіuser@host[:port]command: команда SSH client (default:ssh)workspaceRoot: абсолютний remote root, що використовується для workspace кожного scopeidentityFile/certificateFile/knownHostsFile: наявні локальні файли, передані до OpenSSHidentityData/certificateData/knownHostsData: вбудований вміст або SecretRefs, які OpenClaw матеріалізує у тимчасові файли під час runtimestrictHostKeyChecking/updateHostKeys: параметри політики host-key OpenSSH
identityDataмає пріоритет надidentityFilecertificateDataмає пріоритет надcertificateFileknownHostsDataмає пріоритет надknownHostsFile- Значення
*Data, що використовують SecretRef, розв’язуються з активного знімка secrets runtime до старту sandbox session
- засіває remote workspace один раз після create або recreate
- після цього зберігає remote SSH workspace як канонічний
- маршрутизує
exec, file tools і media paths через SSH - не синхронізує remote changes назад на хост автоматично
- не підтримує sandbox browser containers
none: workspace sandbox для кожного scope у~/.openclaw/sandboxesro: workspace sandbox у/workspace, workspace агента монтується read-only у/agentrw: workspace агента монтується read/write у/workspace
session: окремий container + workspace для кожної sessionagent: один container + workspace на агента (default)shared: спільний container і workspace (без ізоляції між session)
mirror: засіяти remote із local перед exec, синхронізувати назад після exec; local workspace залишається канонічнимremote: засіяти remote один раз під час створення sandbox, після цього remote workspace залишається канонічним
remote зміни на локальному хості, зроблені поза OpenClaw, не синхронізуються в sandbox автоматично після кроку seed.
Транспортом є SSH у sandbox OpenShell, але plugin володіє життєвим циклом sandbox і необов’язковою mirror sync.setupCommand виконується один раз після створення container (через sh -lc). Потребує network egress, writable root, root user.Для containers за замовчуванням використовується network: "none" — установіть "bridge" (або власну bridge network), якщо агенту потрібен вихідний доступ.
"host" заблоковано. "container:<id>" також заблоковано за замовчуванням, якщо ви явно не встановите
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (break-glass).Вхідні вкладення розміщуються у media/inbound/* в активному workspace.docker.binds монтує додаткові каталоги хоста; глобальні binds і binds для конкретного агента зливаються.Sandboxed browser (sandbox.browser.enabled): Chromium + CDP у container. URL noVNC інжектується в system prompt. Не потребує browser.enabled у openclaw.json.
Доступ спостерігача noVNC за замовчуванням використовує VNC auth, а OpenClaw видає short-lived token URL (замість того щоб показувати пароль у спільному URL).allowHostControl: false(default) блокує націлювання sandboxed sessions на browser хоста.networkза замовчуванням —openclaw-sandbox-browser(виділена bridge network). Установлюйтеbridgeлише тоді, коли вам справді потрібна глобальна bridge connectivity.cdpSourceRangeнеобов’язково обмежує вхідний CDP на межі container до діапазону CIDR (наприклад172.21.0.1/32).sandbox.browser.bindsмонтує додаткові каталоги хоста лише в container sandbox browser. Якщо встановлено (включно з[]), це замінюєdocker.bindsдля browser container.- Значення запуску за замовчуванням визначено в
scripts/sandbox-browser-entrypoint.shі налаштовано для container hosts:--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знову вмикає extensions, якщо від них залежить ваш workflow.--renderer-process-limit=2можна змінити черезOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>; установіть0, щоб використовувати стандартне обмеження процесів Chromium.- плюс
--no-sandboxі--disable-setuid-sandbox, коли увімкненоnoSandbox. - Defaults — це базовий рівень container image; щоб змінити defaults container, використовуйте власний browser image із власним entrypoint.
sandbox.docker.binds наразі працюють лише з Docker.
Створення images:
agents.list (перевизначення для агента)
id: стабільний id агента (обов’язково).default: коли їх кілька, перший має пріоритет (логуються warnings). Якщо не вказано жодного, default — перший елемент списку.model: рядкова форма перевизначає лишеprimary; форма об’єкта{ primary, fallbacks }перевизначає обидва ([]вимикає глобальні fallbacks). Cron jobs, які перевизначають лишеprimary, усе одно успадковують default fallbacks, якщо ви не встановитеfallbacks: [].params: stream params для агента, що зливаються поверх вибраного запису моделі вagents.defaults.models. Використовуйте це для специфічних перевизначень агента, таких якcacheRetention,temperatureабоmaxTokens, без дублювання всього каталогу моделей.skills: необов’язковий allowlist Skills для агента. Якщо не задано, агент успадковуєagents.defaults.skills, якщо вони задані; явний список замінює defaults замість злиття, а[]означає відсутність Skills.thinkingDefault: необов’язковий default рівень thinking для агента (off | minimal | low | medium | high | xhigh | adaptive). Перевизначаєagents.defaults.thinkingDefaultдля цього агента, якщо не встановлено перевизначення для повідомлення або session.reasoningDefault: необов’язкове default перевизначення видимості reasoning для агента (on | off | stream). Застосовується, коли не встановлено перевизначення reasoning для повідомлення або session.fastModeDefault: необов’язкове default перевизначення fast mode (true | false). Застосовується, коли не встановлено перевизначення fast mode для повідомлення або session.runtime: необов’язковий дескриптор runtime для агента. Використовуйтеtype: "acp"з defaultsruntime.acp(agent,backend,mode,cwd), коли агент повинен за замовчуванням використовувати sessions harness ACP.identity.avatar: шлях відносно workspace,http(s)URL абоdata:URI.identityвиводить defaults:ackReactionзemoji,mentionPatternsзname/emoji.subagents.allowAgents: allowlist id агентів дляsessions_spawn(["*"]= будь-який; default: лише той самий агент).- Sandbox inheritance guard: якщо session запитувача працює в sandbox,
sessions_spawnвідхиляє цілі, які працювали б без sandbox. subagents.requireAgentId: якщо true, блокує викликиsessions_spawn, у яких пропущеноagentId(примушує до явного вибору профілю; default: false).
Маршрутизація кількох агентів
Запускайте кілька ізольованих агентів в одному Gateway. Див. Multi-Agent.Поля match для binding
type(необов’язково):routeдля звичайної маршрутизації (відсутній type означає route),acpдля сталих ACP bindings розмов.match.channel(обов’язково)match.accountId(необов’язково;*= будь-який акаунт; пропущено = default акаунт)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 лише для читання
Без доступу до файлової системи (лише повідомлення)
Без доступу до файлової системи (лише повідомлення)
Session
Деталі полів session
Деталі полів session
scope: базова стратегія групування session для контекстів group chat.per-sender(default): кожен відправник отримує ізольовану session в межах контексту каналу.global: усі учасники в контексті каналу спільно використовують одну session (використовуйте лише коли справді потрібен спільний контекст).
dmScope: як групуються DM.main: усі DM спільно використовують main session.per-peer: ізоляція за sender id між каналами.per-channel-peer: ізоляція за каналом + sender (рекомендовано для inbox із кількома користувачами).per-account-channel-peer: ізоляція за акаунтом + каналом + sender (рекомендовано для багатоакаунтних конфігурацій).
identityLinks: мапа канонічних id до peer із префіксами постачальника для спільного використання session між каналами.reset: основна політика reset.dailyскидає оatHourза локальним часом;idleскидає післяidleMinutes. Якщо налаштовано обидва, спрацьовує той, у якого раніше настає строк.resetByType: перевизначення для типів (direct,group,thread). Legacydmприймається як alias дляdirect.parentForkMaxTokens: максимальна кількістьtotalTokensу батьківській session, дозволена під час створення forked thread session (default100000).- Якщо
totalTokensбатьківської session перевищує це значення, OpenClaw починає нову thread session замість успадкування історії transcript батьківської session. - Установіть
0, щоб вимкнути цей захист і завжди дозволяти parent forking.
- Якщо
mainKey: legacy field. Runtime тепер завжди використовує"main"для основного bucket direct-chat.agentToAgent.maxPingPongTurns: максимальна кількість reply-back turns між агентами під час обміну agent-to-agent (ціле число, діапазон:0–5).0вимикає ping-pong chaining.sendPolicy: match заchannel,chatType(direct|group|channel, з legacy aliasdm),keyPrefixабоrawKeyPrefix. Перший deny має пріоритет.maintenance: очищення сховища session + керування зберіганням.mode:warnлише показує попередження;enforceзастосовує очищення.pruneAfter: поріг віку для застарілих записів (default30d).maxEntries: максимальна кількість записів уsessions.json(default500).rotateBytes: ротуєsessions.json, коли його розмір перевищує це значення (default10mb).resetArchiveRetention: зберігання для архівів transcript*.reset.<timestamp>. За замовчуванням дорівнюєpruneAfter; установітьfalse, щоб вимкнути.maxDiskBytes: необов’язковий дисковий бюджет для каталогу sessions. У режиміwarnлогуються попередження; у режиміenforceспочатку видаляються найстаріші artifacts/sessions.highWaterBytes: необов’язкова ціль після очищення бюджету. За замовчуванням80%відmaxDiskBytes.
threadBindings: глобальні defaults для функцій session, прив’язаних до thread.enabled: основний default-перемикач (providers можуть перевизначати; Discord використовуєchannels.discord.threadBindings.enabled)idleHours: default auto-unfocus через неактивність у годинах (0вимикає; providers можуть перевизначати)maxAgeHours: default жорсткий максимум віку в годинах (0вимикає; providers можуть перевизначати)
Messages
Префікс відповіді
Перевизначення для каналу/акаунта:channels.<channel>.responsePrefix, channels.<channel>.accounts.<id>.responsePrefix.
Розв’язання (найбільш специфічне перемагає): акаунт → канал → глобальний. "" вимикає й зупиняє cascade. "auto" виводить [{identity.name}].
Змінні шаблону:
| Змінна | Опис | Приклад |
|---|---|---|
{model} | Коротка назва моделі | claude-opus-4-6 |
{modelFull} | Повний ідентифікатор моделі | anthropic/claude-opus-4-6 |
{provider} | Назва постачальника | anthropic |
{thinkingLevel} | Поточний рівень thinking | high, low, off |
{identity.name} | Ім’я ідентичності агента | (те саме, що "auto") |
{think} — alias для {thinkingLevel}.
Ack reaction
- За замовчуванням використовується
identity.emojiактивного агента, інакше"👀". Установіть"", щоб вимкнути. - Перевизначення для каналу:
channels.<channel>.ackReaction,channels.<channel>.accounts.<id>.ackReaction. - Порядок розв’язання: акаунт → канал →
messages.ackReaction→ fallback ідентичності. - Scope:
group-mentions(default),group-all,direct,all. removeAckAfterReply: видаляє ack після reply у Slack, Discord і Telegram.messages.statusReactions.enabled: вмикає lifecycle status reactions у Slack, Discord і Telegram. У Slack і Discord, якщо параметр не встановлено, status reactions залишаються увімкненими, коли активні ack reactions. У Telegram задайте його явно якtrue, щоб увімкнути lifecycle status reactions.
Inbound debounce
Об’єднує швидкі текстові повідомлення від того самого відправника в один agent turn. Media/attachments скидаються негайно. Control commands обходять debouncing.TTS (text-to-speech)
autoкерує auto-TTS./tts off|always|inbound|taggedперевизначає значення для кожної session.summaryModelперевизначаєagents.defaults.model.primaryдля auto-summary.modelOverridesувімкнено за замовчуванням;modelOverrides.allowProviderза замовчуванням дорівнюєfalse(потрібне явне вмикання).- API keys використовують fallback до
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-compatible TTS server і послаблює перевірку model/voice.
Talk
Defaults для режиму Talk (macOS/iOS/Android).talk.providerмає збігатися з ключем уtalk.providers, коли налаштовано кілька Talk providers.- Legacy flat ключі Talk (
talk.voiceId,talk.voiceAliases,talk.modelId,talk.outputFormat,talk.apiKey) підтримуються лише для сумісності й автоматично мігруються вtalk.providers.<provider>. - Для Voice ID fallback —
ELEVENLABS_VOICE_IDабоSAG_VOICE_ID. providers.*.apiKeyприймає прості текстові рядки або об’єкти SecretRef.- Fallback
ELEVENLABS_API_KEYзастосовується лише коли не налаштовано API key для Talk. providers.*.voiceAliasesдозволяє директивам Talk використовувати дружні імена.silenceTimeoutMsвизначає, скільки режим Talk чекатиме після тиші користувача перед надсиланням transcript. Якщо не встановлено, зберігається стандартне вікно паузи для платформи (700 ms на macOS і Android, 900 ms на iOS).
Інструменти
Профілі інструментів
tools.profile задає базовий allowlist перед 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 приймається як alias для 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
Глобальна політика allow/deny для інструментів (deny має пріоритет). Нечутлива до регістру, підтримує wildcard *. Застосовується, навіть коли sandbox Docker вимкнено.
tools.byProvider
Додатково обмежує інструменти для конкретних providers або моделей. Порядок: базовий профіль → профіль provider → allow/deny.
tools.elevated
Керує підвищеним доступом exec поза sandbox:
- Перевизначення для агента (
agents.list[].tools.elevated) може лише ще більше обмежити. /elevated on|off|ask|fullзберігає стан для кожної session; inline directives застосовуються до одного повідомлення.- Elevated
execобходить sandboxing і використовує налаштований шлях escape (gatewayза замовчуванням абоnode, коли exec target —node).
tools.exec
tools.loopDetection
Перевірки безпеки циклів інструментів вимкнені за замовчуванням. Щоб увімкнути виявлення, задайте enabled: true.
Налаштування можна визначати глобально в tools.loopDetection і перевизначати для кожного агента в agents.list[].tools.loopDetection.
historySize: максимальна історія tool-call, що зберігається для аналізу циклів.warningThreshold: поріг повторюваного шаблону без прогресу для попереджень.criticalThreshold: вищий поріг повторення для блокування критичних циклів.globalCircuitBreakerThreshold: жорсткий поріг зупинки для будь-якого запуску без прогресу.detectors.genericRepeat: попереджати про повторні виклики того самого інструмента з тими самими аргументами.detectors.knownPollNoProgress: попереджати/блокувати відомі poll tools без прогресу (process.poll,command_statusтощо).detectors.pingPong: попереджати/блокувати шаблони чергування пар без прогресу.- Якщо
warningThreshold >= criticalThresholdабоcriticalThreshold >= globalCircuitBreakerThreshold, перевірка валідації завершується помилкою.
tools.web
tools.media
Налаштовує розуміння вхідних media (image/audio/video):
Поля запису media model
Поля запису media model
Запис provider (
type: "provider" або пропущено):provider: API provider id (openai,anthropic,google/gemini,groqтощо)model: перевизначення id моделіprofile/preferredProfile: вибір профілюauth-profiles.json
type: "cli"):command: виконуваний файлargs: параметризовані args (підтримує{{MediaPath}},{{Prompt}},{{MaxChars}}тощо)
capabilities: необов’язковий список (image,audio,video). Defaults:openai/anthropic/minimax→ image,google→ image+audio+video,groq→ audio.prompt,maxChars,maxBytes,timeoutSeconds,language: перевизначення для конкретного запису.- У разі помилок використовується наступний запис.
auth-profiles.json → env vars → models.providers.*.apiKey.tools.agentToAgent
tools.sessions
Керує тим, які sessions можуть бути цілями для session tools (sessions_list, sessions_history, sessions_send).
Default: tree (поточна session + sessions, породжені нею, наприклад subagents).
self: лише поточний session key.tree: поточна session + sessions, породжені поточною session (subagents).agent: будь-яка session, що належить поточному agent id (може включати інших користувачів, якщо ви запускаєте per-sender sessions під тим самим agent id).all: будь-яка session. Націлення між агентами все одно потребуєtools.agentToAgent.- Sandbox clamp: коли поточна session працює в sandbox і
agents.defaults.sandbox.sessionToolsVisibility="spawned", видимість примусово встановлюється вtree, навіть якщоtools.sessions.visibility="all".
tools.sessions_spawn
Керує підтримкою inline attachments для sessions_spawn.
- Attachments підтримуються лише для
runtime: "subagent". Runtime ACP відхиляє їх. - Файли матеріалізуються в child workspace у
.openclaw/attachments/<uuid>/разом із.manifest.json. - Вміст attachment автоматично редагується з transcript persistence.
- Base64 inputs проходять перевірку за суворими правилами alphabet/padding і з перевіркою розміру до декодування.
- Права файлів:
0700для каталогів і0600для файлів. - Очищення дотримується політики
cleanup:deleteзавжди видаляє attachments;keepзберігає їх лише колиretainOnSessionKeep: true.
tools.experimental
Експериментальні прапори вбудованих інструментів. За замовчуванням вимкнені, якщо не діє auto-enable rule, специфічне для runtime.
planTool: вмикає структурований інструментupdate_planдля відстеження нетривіальної багатокрокової роботи.- Default:
falseдля не-OpenAI providers. OpenAI і OpenAI Codex runs вмикають його автоматично. - Коли інструмент увімкнено, system prompt також додає підказки щодо використання, щоб модель застосовувала його лише для суттєвої роботи й підтримувала не більше одного кроку
in_progress.
agents.defaults.subagents
model: default model для spawned sub-agents. Якщо параметр пропущено, sub-agents успадковують model викликача.allowAgents: default allowlist цільових agent ids дляsessions_spawn, коли агент-запитувач не задає власнийsubagents.allowAgents(["*"]= будь-який; default: лише той самий агент).runTimeoutSeconds: default timeout (секунди) дляsessions_spawn, коли у виклику інструмента пропущеноrunTimeoutSeconds.0означає без timeout.- Політика інструментів для subagent:
tools.subagents.tools.allow/tools.subagents.tools.deny.
Користувацькі providers і base URLs
OpenClaw використовує вбудований каталог моделей. Додавайте користувацьких providers черезmodels.providers у конфігурації або ~/.openclaw/agents/<agentId>/agent/models.json.
- Використовуйте
authHeader: true+headersдля нестандартних вимог автентифікації. - Перевизначте корінь конфігурації агента через
OPENCLAW_AGENT_DIR(абоPI_CODING_AGENT_DIR, застарілий alias environment variable). - Пріоритет злиття для відповідних provider IDs:
- Непорожні значення
baseUrlв agentmodels.jsonмають пріоритет. - Непорожні значення
apiKeyагента мають пріоритет лише тоді, коли цей provider не керується через SecretRef у поточному контексті config/auth-profile. - Для provider
apiKey, керованих SecretRef, значення оновлюються з source markers (ENV_VAR_NAMEдля env refs,secretref-managedдля file/exec refs), а не шляхом збереження розв’язаних секретів. - Для значень заголовків provider, керованих SecretRef, оновлення також відбувається з source markers (
secretref-env:ENV_VAR_NAMEдля env refs,secretref-managedдля file/exec refs). - Порожні або відсутні
apiKey/baseUrlв agent використовують fallback доmodels.providersу конфігурації. - Для matching models
contextWindow/maxTokensвикористовується вище значення між явною конфігурацією та неявними значеннями каталогу. - Для matching model
contextTokensзберігається явне runtime cap, якщо воно задане; використовуйте його, щоб обмежити ефективний контекст без зміни native metadata моделі. - Використовуйте
models.mode: "replace", коли хочете, щоб конфігурація повністю переписалаmodels.json. - Збереження marker є source-authoritative: markers записуються з активного source config snapshot (до розв’язання), а не з розв’язаних runtime secret values.
- Непорожні значення
Деталі полів provider
models.mode: поведінка каталогу provider (mergeабоreplace).models.providers: мапа користувацьких providers, ключована за provider id.models.providers.*.api: adapter запиту (openai-completions,openai-responses,anthropic-messages,google-generative-aiтощо).models.providers.*.apiKey: credential постачальника (віддавайте перевагу SecretRef/env substitution).models.providers.*.auth: стратегія автентифікації (api-key,token,oauth,aws-sdk).models.providers.*.injectNumCtxForOpenAICompat: для Ollama +openai-completionsінжектуватиoptions.num_ctxу запити (default:true).models.providers.*.authHeader: примусово передавати credential у заголовкуAuthorization, коли це потрібно.models.providers.*.baseUrl: базова URL-адреса upstream API.models.providers.*.headers: додаткові статичні заголовки для proxy/tenant routing.models.providers.*.request: перевизначення transport для HTTP-запитів model-provider.request.headers: додаткові заголовки (зливаються з defaults provider). Значення приймають SecretRef.request.auth: перевизначення стратегії auth. Режими:"provider-default"(використовувати вбудовану auth постачальника),"authorization-bearer"(зtoken),"header"(зheaderName,value, необов’язковимprefix).request.proxy: перевизначення HTTP proxy. Режими:"env-proxy"(використовувати env varsHTTP_PROXY/HTTPS_PROXY),"explicit-proxy"(зurl). Обидва режими приймають необов’язковий підоб’єктtls.request.tls: перевизначення TLS для прямих з’єднань. Поля:ca,cert,key,passphrase(усі приймають SecretRef),serverName,insecureSkipVerify.
models.providers.*.models: явні записи каталогу моделей постачальника.models.providers.*.models.*.contextWindow: metadata native context window моделі.models.providers.*.models.*.contextTokens: необов’язкова runtime cap для контексту. Використовуйте це, коли хочете менший ефективний бюджет контексту, ніж nativecontextWindowмоделі.models.providers.*.models.*.compat.supportsDeveloperRole: необов’язкова compatibility hint. Дляapi: "openai-completions"із непорожнім ненативнимbaseUrl(host неapi.openai.com) OpenClaw примусово встановлює це вfalseпід час runtime. Порожній/пропущенийbaseUrlзберігає стандартну поведінку OpenAI.plugins.entries.amazon-bedrock.config.discovery: кореневі налаштування auto-discovery Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: увімкнути/вимкнути неявне discovery.plugins.entries.amazon-bedrock.config.discovery.region: регіон AWS для discovery.plugins.entries.amazon-bedrock.config.discovery.providerFilter: необов’язковий фільтр provider-id для цільового discovery.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: інтервал опитування для оновлення discovery.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: fallback context window для виявлених моделей.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: fallback max output tokens для виявлених моделей.
Приклади provider
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/* приймаються як aliases. Скорочення: openclaw onboard --auth-choice zai-api-key.- Загальний endpoint:
https://api.z.ai/api/paas/v4 - Endpoint для кодування (default):
https://api.z.ai/api/coding/paas/v4 - Для загального endpoint визначте користувацького provider із перевизначенням base URL.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" або openclaw onboard --auth-choice moonshot-api-key-cn.Native endpoints Moonshot заявляють сумісність із використанням streaming на спільному
транспорті openai-completions, і OpenClaw тепер визначає це за
можливостями endpoint, а не лише за id вбудованого provider.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 (напряму)
MiniMax M2.7 (напряму)
MINIMAX_API_KEY. Скорочення:
openclaw onboard --auth-choice minimax-global-api або
openclaw onboard --auth-choice minimax-cn-api.
Тепер каталог моделей за замовчуванням використовує лише M2.7.
На Anthropic-compatible streaming path 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 злитими для fallback.
Skills
allowBundled: необов’язковий allowlist лише для 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/installed.entries.<skillKey>.apiKey: спрощене поле API key для Skills, які оголошують основну env variable (простий текстовий рядок або об’єкт SecretRef).
Plugins
- Завантажуються з
~/.openclaw/extensions,<workspace>/.openclaw/extensionsіplugins.load.paths. - Discovery приймає native plugins OpenClaw, а також сумісні bundles Codex і Claude, включно з bundle Claude без manifest у стандартному layout.
- Зміни конфігурації потребують restart gateway.
allow: необов’язковий allowlist (завантажуються лише вказані plugins).denyмає пріоритет.plugins.entries.<id>.apiKey: спрощене plugin-level поле API key (коли це підтримується plugin).plugins.entries.<id>.env: мапа env vars у межах plugin.plugins.entries.<id>.hooks.allowPromptInjection: колиfalse, core блокуєbefore_prompt_buildі ігнорує поля зі зміною prompt із legacybefore_agent_start, зберігаючи legacymodelOverrideіproviderOverride. Застосовується до native plugin hooks і підтримуваних директорій hooks, наданих bundles.plugins.entries.<id>.subagent.allowModelOverride: явно довіряти цьому plugin запитувати перевизначенняproviderіmodelдля кожного запуску background subagent.plugins.entries.<id>.subagent.allowedModels: необов’язковий allowlist канонічних цілейprovider/modelдля довірених перевизначень subagent. Використовуйте"*"лише тоді, коли свідомо хочете дозволити будь-яку модель.plugins.entries.<id>.config: об’єкт конфігурації, визначений plugin (валідується native OpenClaw plugin schema, коли вона доступна).plugins.entries.firecrawl.config.webFetch: налаштування постачальника web-fetch Firecrawl.apiKey: API key Firecrawl (приймає SecretRef). Використовує fallback доplugins.entries.firecrawl.config.webSearch.apiKey, legacytools.web.fetch.firecrawl.apiKeyабо env varFIRECRAWL_API_KEY.baseUrl: базова URL-адреса API Firecrawl (default:https://api.firecrawl.dev).onlyMainContent: витягувати лише основний вміст сторінок (default:true).maxAgeMs: максимальний вік кешу в мілісекундах (default:172800000/ 2 дні).timeoutSeconds: timeout запиту scrape у секундах (default: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: налаштування dreaming пам’яті (експериментально). Режими і пороги див. у Dreaming.mode: preset cadence для dreaming ("off","core","rem","deep"). Default:"off".cron: необов’язкове перевизначення cron expression для розкладу dreaming.timezone: часовий пояс для оцінки розкладу (fallback доagents.defaults.userTimezone).limit: максимальна кількість кандидатів на просування за цикл.minScore: мінімальний поріг зваженого score для просування.minRecallCount: мінімальний поріг кількості recall.minUniqueQueries: мінімальна кількість різних запитів.recencyHalfLifeDays: кількість днів, за які recency score зменшується вдвічі. Default:14.maxAgeDays: необов’язковий максимальний вік daily note у днях, дозволений для просування.verboseLogging: виводити детальні dreaming logs для кожного запуску у звичайний потік log gateway.
- Увімкнені Claude bundle plugins також можуть додавати вбудовані Pi defaults із
settings.json; OpenClaw застосовує їх як санітизовані agent settings, а не як сирі patches конфігурації OpenClaw. plugins.slots.memory: виберіть id активного plugin пам’яті або"none", щоб вимкнути memory plugins.plugins.slots.contextEngine: виберіть id активного plugin context engine; default —"legacy", якщо ви не встановили й не вибрали інший engine.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за замовчуванням дорівнюєtrue, якщо не встановлено (модель довіреної мережі).- Установіть
ssrfPolicy.dangerouslyAllowPrivateNetwork: falseдля суворої навігації browser лише по public endpoints. - У суворому режимі endpoints remote CDP profile (
profiles.*.cdpUrl) підпадають під ті самі обмеження private-network під час reachability/discovery checks. ssrfPolicy.allowPrivateNetworkзалишається підтримуваним як legacy alias.- У суворому режимі використовуйте
ssrfPolicy.hostnameAllowlistіssrfPolicy.allowedHostnamesдля явних винятків. - Remote profiles доступні лише для attach (start/stop/reset вимкнено).
profiles.*.cdpUrlприймаєhttp://,https://,ws://іwss://. Використовуйте HTTP(S), коли хочете, щоб OpenClaw виявив/json/version; використовуйте WS(S), коли ваш provider дає вам прямий DevTools WebSocket URL.- Профілі
existing-sessionпрацюють лише на хості та використовують Chrome MCP замість CDP. - Профілі
existing-sessionможуть задаватиuserDataDir, щоб націлюватися на конкретний профіль Chromium-based browser, наприклад Brave або Edge. - Проф