chore(i18n): refresh uk translations
This commit is contained in:
parent
95b122cba6
commit
c40e7afbaf
@ -1,81 +1,123 @@
|
||||
---
|
||||
read_when:
|
||||
- Редагування тексту системного промпту, списку інструментів або розділів про час/Heartbeat
|
||||
- Зміна початкового налаштування робочого простору або поведінки впровадження Skills
|
||||
summary: Що містить системний промпт OpenClaw і як його зібрано
|
||||
- Редагування тексту системного промпта, списку інструментів або розділів часу/Heartbeat
|
||||
- Зміна поведінки ініціалізації робочого простору або впровадження Skills
|
||||
summary: Що містить системний промпт OpenClaw і як його збирають
|
||||
title: Системний промпт
|
||||
x-i18n:
|
||||
generated_at: "2026-04-27T22:37:53Z"
|
||||
model: gpt-5.4
|
||||
generated_at: "2026-04-28T23:57:29Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 28339bd25e79c152448d66e4e0c679ff384913e12890f6f67c9c97ddacd4ddbe
|
||||
source_hash: 8c6258ad35d679eaa2bb4d2446e9edfc6bb129888681a0e5d5527c54c5476971
|
||||
source_path: concepts/system-prompt.md
|
||||
workflow: 15
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
OpenClaw створює власний системний промпт для кожного запуску агента. Промпт **належить OpenClaw** і не використовує типовий промпт pi-coding-agent.
|
||||
OpenClaw створює власний системний prompt для кожного запуску агента. Prompt **належить OpenClaw** і не використовує стандартний prompt pi-coding-agent.
|
||||
|
||||
Промпт збирається OpenClaw і впроваджується в кожен запуск агента.
|
||||
Prompt збирається OpenClaw і вставляється в кожен запуск агента.
|
||||
|
||||
Плагіни провайдерів можуть додавати кеш-орієнтовані вказівки для промпту, не замінюючи весь промпт, що належить OpenClaw. Середовище виконання провайдера може:
|
||||
Provider plugins можуть додавати cache-aware вказівки для prompt, не замінюючи
|
||||
повний prompt, що належить OpenClaw. Provider runtime може:
|
||||
|
||||
- замінювати невеликий набір іменованих базових розділів (`interaction_style`, `tool_call_style`, `execution_bias`)
|
||||
- впроваджувати **стабільний префікс** над межею кешу промпту
|
||||
- впроваджувати **динамічний суфікс** під межею кешу промпту
|
||||
- замінювати невеликий набір іменованих основних секцій (`interaction_style`,
|
||||
`tool_call_style`, `execution_bias`)
|
||||
- вставляти **стабільний префікс** над межею кешу prompt
|
||||
- вставляти **динамічний суфікс** під межею кешу prompt
|
||||
|
||||
Використовуйте внески, що належать провайдеру, для налаштування під конкретне сімейство моделей. Зберігайте застарілу мутацію промпту `before_prompt_build` для сумісності або справді глобальних змін промпту, а не для звичайної поведінки провайдера.
|
||||
Використовуйте provider-owned внески для налаштування, специфічного для родин моделей. Залишайте застарілу
|
||||
мутацію prompt `before_prompt_build` для сумісності або справді глобальних змін prompt,
|
||||
а не для звичайної поведінки провайдера.
|
||||
|
||||
Накладка для сімейства OpenAI GPT-5 зберігає базове правило виконання компактним і додає специфічні для моделі вказівки щодо фіксації персони, стислого виводу, дисципліни використання інструментів, паралельного пошуку, повноти результату, перевірки, відсутнього контексту та гігієни інструментів термінала.
|
||||
Оверлей родини OpenAI GPT-5 зберігає основне правило виконання невеликим і додає
|
||||
модельно-специфічні вказівки щодо persona latching, стислого виводу, дисципліни інструментів,
|
||||
паралельного пошуку, покриття deliverable, перевірки, відсутнього контексту та
|
||||
гігієни terminal-tool.
|
||||
|
||||
## Структура
|
||||
|
||||
Промпт навмисно компактний і використовує фіксовані розділи:
|
||||
Prompt навмисно компактний і використовує фіксовані секції:
|
||||
|
||||
- **Tooling**: нагадування про структуровані інструменти як джерело істини плюс вказівки щодо використання інструментів під час виконання.
|
||||
- **Execution Bias**: компактні вказівки для доведення справ до кінця: виконувати дієві запити в межах поточного ходу, продовжувати до завершення або блокування, відновлюватися після слабких результатів інструментів, перевіряти змінний стан наживо та верифікувати перед фіналізацією.
|
||||
- **Safety**: коротке нагадування про запобіжники, щоб уникати поведінки, спрямованої на здобуття влади, або обходу нагляду.
|
||||
- **Skills** (коли доступні): пояснює моделі, як завантажувати інструкції Skills за потреби.
|
||||
- **OpenClaw Self-Update**: як безпечно перевіряти конфігурацію через `config.schema.lookup`, вносити зміни в конфігурацію через `config.patch`, замінювати повну конфігурацію через `config.apply` і запускати `update.run` лише за явним запитом користувача. Інструмент `gateway`, доступний лише власнику, також відмовляється переписувати `tools.exec.ask` / `tools.exec.security`, включно із застарілими псевдонімами `tools.bash.*`, які нормалізуються до цих захищених шляхів exec.
|
||||
- **Workspace**: робочий каталог (`agents.defaults.workspace`).
|
||||
- **Documentation**: локальний шлях до документації OpenClaw (репозиторій або npm-пакет) і коли її читати.
|
||||
- **Workspace Files (injected)**: вказує, що нижче включено файли початкового налаштування.
|
||||
- **Sandbox** (коли увімкнено): вказує на ізольоване середовище виконання, шляхи пісочниці та чи доступний exec з підвищеними правами.
|
||||
- **Current Date & Time**: локальний час користувача, часовий пояс і формат часу.
|
||||
- **Reply Tags**: необов’язковий синтаксис тегів відповіді для підтримуваних провайдерів.
|
||||
- **Heartbeats**: промпт Heartbeat і поведінка підтвердження, коли Heartbeat увімкнено для типового агента.
|
||||
- **Runtime**: хост, ОС, Node, модель, корінь репозиторію (якщо виявлено), рівень міркування (один рядок).
|
||||
- **Reasoning**: поточний рівень видимості + підказка щодо перемикача /reasoning.
|
||||
- **Інструменти**: нагадування про structured-tool як source-of-truth плюс runtime-вказівки щодо використання інструментів.
|
||||
- **Ухил виконання**: компактні вказівки щодо доведення до кінця: діяти в межах поточного ходу для
|
||||
actionable requests, продовжувати до завершення або блокування, відновлюватися після слабких результатів інструментів,
|
||||
перевіряти змінний стан наживо та перевіряти перед фіналізацією.
|
||||
- **Безпека**: коротке нагадування про guardrail, щоб уникати power-seeking behavior або обходу нагляду.
|
||||
- **Skills** (коли доступні): повідомляє моделі, як завантажувати інструкції Skills на вимогу.
|
||||
- **Самооновлення OpenClaw**: як безпечно переглядати config за допомогою
|
||||
`config.schema.lookup`, виправляти config через `config.patch`, замінювати повний
|
||||
config через `config.apply` і запускати `update.run` лише за явним запитом користувача.
|
||||
Owner-only інструмент `gateway` також відмовляється переписувати
|
||||
`tools.exec.ask` / `tools.exec.security`, зокрема застарілі псевдоніми `tools.bash.*`,
|
||||
які нормалізуються до цих захищених exec-шляхів.
|
||||
- **Робоча область**: робочий каталог (`agents.defaults.workspace`).
|
||||
- **Документація**: локальний шлях до документації OpenClaw (репозиторій або npm-пакет) і коли її читати.
|
||||
- **Файли робочої області (вставлені)**: вказує, що bootstrap-файли включено нижче.
|
||||
- **Sandbox** (коли ввімкнено): вказує sandboxed runtime, sandbox-шляхи та чи доступний elevated exec.
|
||||
- **Поточна дата й час**: локальний час користувача, часовий пояс і формат часу.
|
||||
- **Теги відповіді**: необов’язковий синтаксис тегів відповіді для підтримуваних провайдерів.
|
||||
- **Heartbeats**: Heartbeat prompt і поведінка ack, коли Heartbeats увімкнено для агента за замовчуванням.
|
||||
- **Runtime**: host, OS, node, model, корінь репозиторію (коли виявлено), рівень thinking (один рядок).
|
||||
- **Reasoning**: поточний рівень видимості + підказка перемикача /reasoning.
|
||||
|
||||
Розділ Tooling також містить вказівки під час виконання для довготривалої роботи:
|
||||
OpenClaw тримає великий стабільний вміст, зокрема **Контекст проєкту**, над
|
||||
внутрішньою межею кешу prompt. Мінливі секції каналу/сесії, як-от
|
||||
вбудовані вказівки Control UI, **Messaging**, **Voice**, **Контекст групового чату**,
|
||||
**Reactions**, **Heartbeats** і **Runtime**, додаються під цією межею,
|
||||
щоб локальні бекенди з prefix caches могли повторно використовувати стабільний префікс робочої області
|
||||
між ходами каналу. Описи інструментів так само мають уникати вбудовування поточних
|
||||
назв каналів, коли прийнята схема вже містить цю runtime-деталь.
|
||||
|
||||
- використовуйте Cron для подальших дій у майбутньому (`check back later`, нагадування, періодична робота) замість циклів сну `exec`, трюків із затримкою `yieldMs` або повторного опитування `process`
|
||||
- використовуйте `exec` / `process` лише для команд, які запускаються зараз і продовжують працювати у фоновому режимі
|
||||
- коли ввімкнено автоматичне пробудження після завершення, запустіть команду один раз і покладайтеся на push-орієнтований шлях пробудження, коли вона виводить результат або завершується з помилкою
|
||||
- використовуйте `process` для журналів, стану, введення або втручання, коли потрібно перевірити команду, що виконується
|
||||
- якщо завдання більше, надавайте перевагу `sessions_spawn`; завершення субагента працює через push і автоматично оголошується назад запитувачу
|
||||
- не опитуйте `subagents list` / `sessions_list` у циклі лише для очікування завершення
|
||||
Секція Інструменти також містить runtime-вказівки для тривалої роботи:
|
||||
|
||||
Коли увімкнено експериментальний інструмент `update_plan`, Tooling також повідомляє моделі використовувати його лише для нетривіальної багатокрокової роботи, підтримувати рівно один крок `in_progress` і не повторювати весь план після кожного оновлення.
|
||||
- використовуйте cron для майбутнього follow-up (`check back later`, нагадування, повторювана робота)
|
||||
замість циклів `exec` sleep, трюків із затримкою `yieldMs` або повторного опитування `process`
|
||||
- використовуйте `exec` / `process` лише для команд, які стартують зараз і продовжують виконуватися
|
||||
у фоні
|
||||
- коли ввімкнено автоматичне пробудження після завершення, запускайте команду один раз і покладайтеся на
|
||||
push-based wake path, коли вона видає вивід або завершується помилкою
|
||||
- використовуйте `process` для логів, статусу, вводу або втручання, коли потрібно
|
||||
оглянути запущену команду
|
||||
- якщо завдання більше, віддавайте перевагу `sessions_spawn`; завершення sub-agent є
|
||||
push-based і автоматично повідомляє requester
|
||||
- не опитуйте `subagents list` / `sessions_list` у циклі лише для очікування
|
||||
завершення
|
||||
|
||||
Запобіжники безпеки в системному промпті мають рекомендаційний характер. Вони спрямовують поведінку моделі, але не забезпечують примусове виконання політики. Для жорсткого забезпечення використовуйте політику інструментів, погодження exec, пісочницю та allowlist каналів; оператори можуть навмисно вимикати це.
|
||||
Коли експериментальний інструмент `update_plan` увімкнено, Інструменти також повідомляють
|
||||
моделі використовувати його лише для нетривіальної багатокрокової роботи, тримати рівно один
|
||||
крок `in_progress` і не повторювати весь план після кожного оновлення.
|
||||
|
||||
У каналах із нативними картками/кнопками погодження промпт середовища виконання тепер вказує агенту спершу покладатися на цей нативний інтерфейс погодження. Він має включати ручну команду `/approve` лише тоді, коли результат інструмента вказує, що погодження в чаті недоступні або ручне погодження — єдиний шлях.
|
||||
Safety guardrails у системному prompt мають рекомендаційний характер. Вони спрямовують поведінку моделі, але не забезпечують примусове дотримання політики. Для жорсткого enforcement використовуйте policy інструментів, exec approvals, sandboxing і channel allowlists; оператори можуть вимикати їх за дизайном.
|
||||
|
||||
## Режими промпту
|
||||
На каналах із native approval cards/buttons runtime prompt тепер повідомляє
|
||||
агенту спершу покладатися на цей native approval UI. Він має включати ручну
|
||||
команду `/approve` лише тоді, коли результат інструмента каже, що chat approvals недоступні або
|
||||
ручне approval є єдиним шляхом.
|
||||
|
||||
OpenClaw може рендерити менші системні промпти для субагентів. Середовище виконання встановлює `promptMode` для кожного запуску (це не користувацький параметр конфігурації):
|
||||
## Режими prompt
|
||||
|
||||
- `full` (типово): включає всі розділи вище.
|
||||
- `minimal`: використовується для субагентів; опускає **Skills**, **Memory Recall**, **OpenClaw Self-Update**, **Model Aliases**, **User Identity**, **Reply Tags**, **Messaging**, **Silent Replies** і **Heartbeats**. Tooling, **Safety**, Workspace, Sandbox, Current Date & Time (коли відомо), Runtime та впроваджений контекст залишаються доступними.
|
||||
OpenClaw може рендерити менші системні prompts для sub-agents. Runtime задає
|
||||
`promptMode` для кожного запуску (це не user-facing config):
|
||||
|
||||
- `full` (за замовчуванням): містить усі секції вище.
|
||||
- `minimal`: використовується для sub-agents; пропускає **Skills**, **Memory Recall**, **Самооновлення OpenClaw**,
|
||||
**Model Aliases**, **User Identity**, **Теги відповіді**,
|
||||
**Messaging**, **Silent Replies** і **Heartbeats**. Інструменти, **Безпека**,
|
||||
робоча область, Sandbox, Поточна дата й час (коли відомо), Runtime і вставлений
|
||||
контекст залишаються доступними.
|
||||
- `none`: повертає лише базовий рядок ідентичності.
|
||||
|
||||
Коли `promptMode=minimal`, додатково впроваджені промпти позначаються як **Subagent Context** замість **Group Chat Context**.
|
||||
Коли `promptMode=minimal`, додаткові вставлені prompts позначаються як **Контекст subagent**
|
||||
замість **Контекст групового чату**.
|
||||
|
||||
Для запусків автоматичної відповіді в каналі OpenClaw може опускати загальний розділ **Silent Replies**, коли контекст прямого/групового чату вже містить визначену для конкретної розмови поведінку `NO_REPLY`. Це дозволяє уникнути дублювання механіки токенів і в глобальному системному промпті, і в контексті каналу.
|
||||
Для запусків channel auto-reply OpenClaw може пропускати загальну секцію **Silent Replies**,
|
||||
коли контекст direct/group chat уже містить розв’язану
|
||||
conversation-specific поведінку `NO_REPLY`. Це дає змогу уникнути повторення token mechanics
|
||||
і в глобальному системному prompt, і в контексті каналу.
|
||||
|
||||
## Впровадження початкового налаштування робочого простору
|
||||
## Bootstrap-вставлення робочої області
|
||||
|
||||
Файли початкового налаштування обрізаються і додаються в **Project Context**, щоб модель бачила контекст ідентичності та профілю без потреби в явному читанні:
|
||||
Bootstrap-файли обрізаються й додаються під **Контекст проєкту**, щоб модель бачила ідентичність і профільний контекст без явних читань:
|
||||
|
||||
- `AGENTS.md`
|
||||
- `SOUL.md`
|
||||
@ -83,45 +125,71 @@ OpenClaw може рендерити менші системні промпти
|
||||
- `IDENTITY.md`
|
||||
- `USER.md`
|
||||
- `HEARTBEAT.md`
|
||||
- `BOOTSTRAP.md` (лише в абсолютно нових робочих просторах)
|
||||
- `MEMORY.md`, якщо присутній
|
||||
- `BOOTSTRAP.md` (лише для абсолютно нових робочих областей)
|
||||
- `MEMORY.md`, коли присутній
|
||||
|
||||
Усі ці файли **впроваджуються у вікно контексту** на кожному ході, якщо не застосовується окремий фільтр для файлу. `HEARTBEAT.md` пропускається у звичайних запусках, коли Heartbeat вимкнено для типового агента або `agents.defaults.heartbeat.includeSystemPromptSection` має значення false. Тримайте впроваджені файли стислими — особливо `MEMORY.md`, який із часом може розростатися й призводити до неочікувано високого використання контексту та частішої Compaction.
|
||||
Усі ці файли **вставляються у вікно контексту** на кожному ході, якщо
|
||||
не застосовується file-specific gate. `HEARTBEAT.md` пропускається у звичайних запусках, коли
|
||||
Heartbeats вимкнено для агента за замовчуванням або
|
||||
`agents.defaults.heartbeat.includeSystemPromptSection` має значення false. Тримайте вставлені
|
||||
файли стислими — особливо `MEMORY.md`, який може зростати з часом і призводити до
|
||||
неочікувано високого використання контексту та частішої Compaction.
|
||||
|
||||
<Note>
|
||||
Щоденні файли `memory/*.md` **не** є частиною звичайного початкового Project Context. У звичайних ходах доступ до них здійснюється за потреби через інструменти `memory_search` і `memory_get`, тому вони не займають місце у вікні контексту, якщо модель явно їх не читає. Виняток — порожні ходи `/new` і `/reset`: у цьому разі середовище виконання може додати нещодавню щоденну пам’ять як одноразовий блок стартового контексту для цього першого ходу.
|
||||
Щоденні файли `memory/*.md` **не** є частиною звичайного bootstrap Контексту проєкту. У звичайних ходах до них звертаються на вимогу через інструменти `memory_search` і `memory_get`, тому вони не враховуються у вікні контексту, якщо модель явно їх не читає. Голі ходи `/new` і `/reset` є винятком: runtime може додати недавню щоденну пам’ять як одноразовий блок startup-context для цього першого ходу.
|
||||
</Note>
|
||||
|
||||
Великі файли обрізаються з маркером. Максимальний розмір для одного файлу контролюється параметром `agents.defaults.bootstrapMaxChars` (типово: 12000). Загальний обсяг впровадженого початкового вмісту для всіх файлів обмежується параметром `agents.defaults.bootstrapTotalMaxChars` (типово: 60000). Відсутні файли впроваджуються як короткий маркер відсутнього файлу. Коли відбувається обрізання, OpenClaw може впровадити блок попередження в Project Context; це керується через `agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`; типово: `once`).
|
||||
Великі файли обрізаються з маркером. Максимальний розмір на файл керується
|
||||
`agents.defaults.bootstrapMaxChars` (за замовчуванням: 12000). Загальний вставлений bootstrap
|
||||
вміст у всіх файлах обмежено `agents.defaults.bootstrapTotalMaxChars`
|
||||
(за замовчуванням: 60000). Відсутні файли вставляють короткий маркер missing-file. Коли відбувається обрізання,
|
||||
OpenClaw може вставити warning block у Контекст проєкту; керуйте цим через
|
||||
`agents.defaults.bootstrapPromptTruncationWarning` (`off`, `once`, `always`;
|
||||
за замовчуванням: `once`).
|
||||
|
||||
Сеанси субагентів впроваджують лише `AGENTS.md` і `TOOLS.md` (інші файли початкового налаштування відфільтровуються, щоб контекст субагента залишався компактним).
|
||||
Сесії sub-agent вставляють лише `AGENTS.md` і `TOOLS.md` (інші bootstrap-файли
|
||||
відфільтровуються, щоб зберегти контекст sub-agent невеликим).
|
||||
|
||||
Внутрішні хуки можуть перехоплювати цей крок через `agent:bootstrap`, щоб змінювати або замінювати впроваджені файли початкового налаштування (наприклад, замінювати `SOUL.md` альтернативною персоною).
|
||||
Внутрішні hooks можуть перехопити цей крок через `agent:bootstrap`, щоб змінити або замінити
|
||||
вставлені bootstrap-файли (наприклад, замінити `SOUL.md` на альтернативну persona).
|
||||
|
||||
Якщо ви хочете, щоб агент звучав менш узагальнено, почніть із [SOUL.md Personality Guide](/uk/concepts/soul).
|
||||
Якщо ви хочете, щоб агент звучав менш generic, почніть із
|
||||
[Посібника з особистості SOUL.md](/uk/concepts/soul).
|
||||
|
||||
Щоб перевірити, який внесок робить кожен впроваджений файл (сирий чи впроваджений розмір, обрізання, а також накладні витрати схеми інструментів), використовуйте `/context list` або `/context detail`. Див. [Context](/uk/concepts/context).
|
||||
Щоб перевірити, скільки додає кожен вставлений файл (raw vs injected, truncation, плюс tool schema overhead), використовуйте `/context list` або `/context detail`. Див. [Контекст](/uk/concepts/context).
|
||||
|
||||
## Обробка часу
|
||||
|
||||
Системний промпт містить окремий розділ **Current Date & Time**, коли часовий пояс користувача відомий. Щоб зберігати кеш промпту стабільним, тепер він містить лише **часовий пояс** (без динамічного годинника або формату часу).
|
||||
Системний prompt містить окрему секцію **Поточна дата й час**, коли
|
||||
часовий пояс користувача відомий. Щоб зберегти cache-stable prompt, тепер вона містить лише
|
||||
**часовий пояс** (без динамічного годинника або формату часу).
|
||||
|
||||
Використовуйте `session_status`, коли агенту потрібен поточний час; картка статусу містить рядок із часовою міткою. Той самий інструмент також може за потреби встановлювати перевизначення моделі для сеансу (`model=default` очищає його).
|
||||
Використовуйте `session_status`, коли агенту потрібен поточний час; status card
|
||||
містить рядок timestamp. Той самий інструмент може необов’язково встановлювати per-session model
|
||||
override (`model=default` очищає його).
|
||||
|
||||
Налаштовується через:
|
||||
Налаштовуйте через:
|
||||
|
||||
- `agents.defaults.userTimezone`
|
||||
- `agents.defaults.timeFormat` (`auto` | `12` | `24`)
|
||||
|
||||
Повну інформацію про поведінку див. у [Date & Time](/uk/date-time).
|
||||
Повні подробиці поведінки див. у [Дата й час](/uk/date-time).
|
||||
|
||||
## Skills
|
||||
|
||||
Коли існують відповідні Skills, OpenClaw впроваджує компактний **список доступних Skills** (`formatSkillsForPrompt`), який включає **шлях до файлу** для кожного Skill. Промпт інструктує модель використовувати `read`, щоб завантажити SKILL.md у вказаному місці (робочий простір, кероване або вбудоване розташування). Якщо жоден Skill не підходить, розділ Skills опускається.
|
||||
Коли існують eligible Skills, OpenClaw вставляє компактний **список доступних Skills**
|
||||
(`formatSkillsForPrompt`), який містить **шлях до файлу** для кожної Skill. Prompt
|
||||
інструктує модель використовувати `read`, щоб завантажити SKILL.md у вказаному
|
||||
розташуванні (workspace, managed або bundled). Якщо eligible Skills немає, секція
|
||||
Skills пропускається.
|
||||
|
||||
Відповідність включає фільтри метаданих Skill, перевірки середовища виконання/конфігурації та ефективний allowlist Skills агента, коли налаштовано `agents.defaults.skills` або `agents.list[].skills`.
|
||||
Eligibility включає skill metadata gates, runtime environment/config checks
|
||||
і effective agent skill allowlist, коли налаштовано `agents.defaults.skills` або
|
||||
`agents.list[].skills`.
|
||||
|
||||
Skills, вбудовані в плагін, підходять лише тоді, коли плагін-власник увімкнений. Це дозволяє плагінам інструментів надавати глибші операційні інструкції, не вбудовуючи всі ці вказівки безпосередньо в опис кожного інструмента.
|
||||
Plugin-bundled Skills eligible лише тоді, коли їхній owning plugin увімкнено.
|
||||
Це дає tool plugins змогу надавати глибші operating guides без вбудовування всіх
|
||||
цих вказівок безпосередньо в кожен опис інструмента.
|
||||
|
||||
```
|
||||
<available_skills>
|
||||
@ -133,33 +201,42 @@ Skills, вбудовані в плагін, підходять лише тоді
|
||||
</available_skills>
|
||||
```
|
||||
|
||||
Це зберігає базовий промпт компактним і водночас дає змогу цільово використовувати Skills.
|
||||
Це зберігає base prompt малим, водночас даючи змогу targeted skill usage.
|
||||
|
||||
Бюджет списку Skills належить підсистемі Skills:
|
||||
|
||||
- Глобальне типове значення: `skills.limits.maxSkillsPromptChars`
|
||||
- Перевизначення для окремого агента: `agents.list[].skillsLimits.maxSkillsPromptChars`
|
||||
- Глобальне значення за замовчуванням: `skills.limits.maxSkillsPromptChars`
|
||||
- Перевизначення на агента: `agents.list[].skillsLimits.maxSkillsPromptChars`
|
||||
|
||||
Загальні обмежені витяги середовища виконання використовують іншу поверхню:
|
||||
Generic bounded runtime excerpts використовують іншу surface:
|
||||
|
||||
- `agents.defaults.contextLimits.*`
|
||||
- `agents.list[].contextLimits.*`
|
||||
|
||||
Такий поділ зберігає розмір Skills окремим від розміру читання/впровадження під час виконання, наприклад для `memory_get`, результатів живих інструментів і оновлення AGENTS.md після Compaction.
|
||||
Такий поділ тримає sizing Skills окремо від runtime read/injection sizing, як-от
|
||||
`memory_get`, live tool results і оновлення AGENTS.md після Compaction.
|
||||
|
||||
## Documentation
|
||||
## Документація
|
||||
|
||||
Системний промпт містить розділ **Documentation**. Коли локальна документація доступна, він указує на локальний каталог документації OpenClaw (`docs/` у Git checkout або документація вбудованого npm-пакета). Якщо локальна документація недоступна, використовується резервний варіант:
|
||||
Системний prompt містить секцію **Документація**. Коли локальна документація доступна, вона
|
||||
вказує на локальний каталог документації OpenClaw (`docs/` у Git checkout або bundled npm
|
||||
package docs). Якщо локальна документація недоступна, використовується fallback на
|
||||
[https://docs.openclaw.ai](https://docs.openclaw.ai).
|
||||
|
||||
Той самий розділ також містить розташування вихідного коду OpenClaw. Git checkout надають локальний корінь вихідного коду, щоб агент міг безпосередньо перевіряти код. Установки з пакета містять URL вихідного коду GitHub і вказують агенту переглядати код там, коли документація неповна або застаріла. Промпт також згадує публічне дзеркало документації, спільноту Discord і ClawHub ([https://clawhub.ai](https://clawhub.ai)) для пошуку Skills. Він інструктує модель спершу звертатися до документації щодо поведінки OpenClaw, команд, конфігурації чи архітектури, а також самостійно запускати `openclaw status`, коли це можливо (звертаючись до користувача лише тоді, коли доступу бракує).
|
||||
Зокрема для конфігурації він спрямовує агентів до дії інструмента `gateway`
|
||||
`config.schema.lookup` для точної документації та обмежень на рівні полів, а потім до
|
||||
Та сама секція також містить розташування source OpenClaw. Git checkouts показують локальний
|
||||
source root, щоб агент міг безпосередньо переглядати код. Package installs містять GitHub
|
||||
source URL і повідомляють агенту переглядати source там, коли документація неповна або
|
||||
застаріла. Prompt також згадує public docs mirror, community Discord і ClawHub
|
||||
([https://clawhub.ai](https://clawhub.ai)) для пошуку Skills. Він повідомляє моделі
|
||||
спершу звертатися до документації щодо поведінки OpenClaw, команд, конфігурації або архітектури, а також
|
||||
самостійно запускати `openclaw status`, коли можливо (питаючи користувача лише тоді, коли не має доступу).
|
||||
Спеціально для configuration він спрямовує агентів до дії інструмента `gateway`
|
||||
`config.schema.lookup` для точних field-level docs і constraints, а потім до
|
||||
`docs/gateway/configuration.md` і `docs/gateway/configuration-reference.md`
|
||||
для ширших рекомендацій.
|
||||
для ширших вказівок.
|
||||
|
||||
## Пов’язане
|
||||
|
||||
- [Середовище виконання агента](/uk/concepts/agent)
|
||||
- [Робочий простір агента](/uk/concepts/agent-workspace)
|
||||
- [Runtime агента](/uk/concepts/agent)
|
||||
- [Робоча область агента](/uk/concepts/agent-workspace)
|
||||
- [Рушій контексту](/uk/concepts/context-engine)
|
||||
|
||||
@ -1,53 +1,53 @@
|
||||
---
|
||||
read_when:
|
||||
- Налагодження проблем виявлення Bonjour на macOS/iOS
|
||||
- Зміна типів сервісів mDNS, TXT-записів або UX виявлення
|
||||
summary: Виявлення та налагодження Bonjour/mDNS (маяки Gateway, клієнти та поширені режими збоїв)
|
||||
- Налагодження проблем із виявленням Bonjour у macOS/iOS
|
||||
- Зміна типів служб mDNS, записів TXT або UX виявлення
|
||||
summary: Виявлення + налагодження Bonjour/mDNS (маячки Gateway, клієнти та типові сценарії збоїв)
|
||||
title: Виявлення Bonjour
|
||||
x-i18n:
|
||||
generated_at: "2026-04-27T10:59:00Z"
|
||||
model: gpt-5.4
|
||||
generated_at: "2026-04-28T23:57:28Z"
|
||||
model: gpt-5.5
|
||||
provider: openai
|
||||
source_hash: 8d00812e18ffa34cd829af88acf5c52966669cf42d4f01f7ad566587b8605ded
|
||||
source_hash: 0720451843aae0509949324e51f3a23dc69e366e68de851c595ce76c8ab0eec9
|
||||
source_path: gateway/bonjour.md
|
||||
workflow: 15
|
||||
workflow: 16
|
||||
---
|
||||
|
||||
# Виявлення Bonjour / mDNS
|
||||
|
||||
OpenClaw використовує Bonjour (mDNS / DNS‑SD), щоб виявити активний Gateway (кінцеву точку WebSocket).
|
||||
Multicast-пошук у `local.` — це **зручний механізм лише для LAN**. Вбудований
|
||||
плагін `bonjour` відповідає за оголошення в LAN і ввімкнений за замовчуванням. Для міжмережевого виявлення
|
||||
той самий маяк також може публікуватися через налаштований wide-area домен DNS-SD.
|
||||
Виявлення все одно працює за принципом best-effort і **не** замінює підключення через SSH або Tailnet.
|
||||
OpenClaw використовує Bonjour (mDNS / DNS‑SD) для виявлення активного Gateway (кінцевої точки WebSocket).
|
||||
Перегляд multicast `local.` — це **зручність лише для LAN**. Вбудований Plugin `bonjour`
|
||||
відповідає за оголошення в LAN і ввімкнений за замовчуванням. Для виявлення між різними мережами
|
||||
той самий маяк також можна опублікувати через налаштований домен широкозонної DNS-SD.
|
||||
Виявлення все одно працює за принципом best-effort і **не** замінює SSH або підключення на основі Tailnet.
|
||||
|
||||
## Wide-area Bonjour (Unicast DNS-SD) через Tailscale
|
||||
## Широкозонний Bonjour (Unicast DNS-SD) через Tailscale
|
||||
|
||||
Якщо Node і Gateway перебувають у різних мережах, multicast mDNS не перетне
|
||||
цю межу. Ви можете зберегти той самий UX виявлення, переключившись на **unicast DNS‑SD**
|
||||
Якщо вузол і gateway перебувають у різних мережах, multicast mDNS не перетне
|
||||
межу. Можна зберегти той самий UX виявлення, перемкнувшись на **unicast DNS‑SD**
|
||||
("Wide‑Area Bonjour") через Tailscale.
|
||||
|
||||
Кроки на високому рівні:
|
||||
Загальні кроки:
|
||||
|
||||
1. Запустіть DNS-сервер на хості Gateway (доступний через Tailnet).
|
||||
2. Опублікуйте записи DNS‑SD для `_openclaw-gw._tcp` у виділеній зоні
|
||||
1. Запустіть DNS-сервер на хості gateway (доступний через Tailnet).
|
||||
2. Опублікуйте DNS‑SD-записи для `_openclaw-gw._tcp` у виділеній зоні
|
||||
(приклад: `openclaw.internal.`).
|
||||
3. Налаштуйте в Tailscale **split DNS**, щоб вибраний домен резолвився через цей
|
||||
DNS-сервер для клієнтів (зокрема для iOS).
|
||||
3. Налаштуйте **split DNS** у Tailscale, щоб вибраний домен для клієнтів
|
||||
(зокрема iOS) розв’язувався через цей DNS-сервер.
|
||||
|
||||
OpenClaw підтримує будь-який домен виявлення; `openclaw.internal.` — лише приклад.
|
||||
Node на iOS/Android переглядають і `local.`, і ваш налаштований wide-area домен.
|
||||
Вузли iOS/Android переглядають і `local.`, і ваш налаштований широкозонний домен.
|
||||
|
||||
### Конфігурація Gateway (рекомендовано)
|
||||
|
||||
```json5
|
||||
{
|
||||
gateway: { bind: "tailnet" }, // лише tailnet (рекомендовано)
|
||||
discovery: { wideArea: { enabled: true } }, // вмикає публікацію wide-area DNS-SD
|
||||
gateway: { bind: "tailnet" }, // tailnet-only (recommended)
|
||||
discovery: { wideArea: { enabled: true } }, // enables wide-area DNS-SD publishing
|
||||
}
|
||||
```
|
||||
|
||||
### Одноразове налаштування DNS-сервера (хост Gateway)
|
||||
### Одноразове налаштування DNS-сервера (хост gateway)
|
||||
|
||||
```bash
|
||||
openclaw dns setup --apply
|
||||
@ -55,8 +55,8 @@ openclaw dns setup --apply
|
||||
|
||||
Це встановлює CoreDNS і налаштовує його так, щоб він:
|
||||
|
||||
- слухав порт 53 лише на Tailscale-інтерфейсах Gateway
|
||||
- обслуговував вибраний вами домен (приклад: `openclaw.internal.`) з `~/.openclaw/dns/<domain>.db`
|
||||
- слухав порт 53 лише на інтерфейсах Tailscale gateway
|
||||
- обслуговував вибраний домен (приклад: `openclaw.internal.`) з `~/.openclaw/dns/<domain>.db`
|
||||
|
||||
Перевірте з машини, підключеної до tailnet:
|
||||
|
||||
@ -69,55 +69,55 @@ dig @<TAILNET_IPV4> -p 53 _openclaw-gw._tcp.openclaw.internal PTR +short
|
||||
|
||||
У консолі адміністратора Tailscale:
|
||||
|
||||
- Додайте nameserver, що вказує на tailnet IP Gateway (UDP/TCP 53).
|
||||
- Додайте nameserver, що вказує на tailnet IP gateway (UDP/TCP 53).
|
||||
- Додайте split DNS, щоб ваш домен виявлення використовував цей nameserver.
|
||||
|
||||
Щойно клієнти приймуть DNS tailnet, Node на iOS і виявлення через CLI зможуть переглядати
|
||||
Щойно клієнти приймуть tailnet DNS, вузли iOS і CLI-виявлення зможуть переглядати
|
||||
`_openclaw-gw._tcp` у вашому домені виявлення без multicast.
|
||||
|
||||
### Безпека слухача Gateway (рекомендовано)
|
||||
|
||||
Порт Gateway WS (типово `18789`) типово прив’язується до loopback. Для доступу з LAN/tailnet
|
||||
вкажіть bind явно й залиште автентифікацію ввімкненою.
|
||||
Порт WS Gateway (за замовчуванням `18789`) типово прив’язується до loopback. Для доступу
|
||||
через LAN/tailnet явно задайте прив’язку й залиште автентифікацію ввімкненою.
|
||||
|
||||
Для конфігурацій лише з tailnet:
|
||||
Для налаштувань лише через tailnet:
|
||||
|
||||
- Установіть `gateway.bind: "tailnet"` у `~/.openclaw/openclaw.json`.
|
||||
- Перезапустіть Gateway (або перезапустіть застосунок macOS у рядку меню).
|
||||
- Перезапустіть Gateway (або перезапустіть застосунок у menubar macOS).
|
||||
|
||||
## Що оголошується
|
||||
|
||||
Лише Gateway оголошує `_openclaw-gw._tcp`. Оголошення multicast у LAN
|
||||
забезпечується вбудованим плагіном `bonjour`; публікація wide-area DNS-SD
|
||||
залишається у власності Gateway.
|
||||
Лише Gateway оголошує `_openclaw-gw._tcp`. LAN multicast-оголошення
|
||||
надає вбудований Plugin `bonjour`; публікація широкозонної DNS-SD залишається
|
||||
у власності Gateway.
|
||||
|
||||
## Типи сервісів
|
||||
|
||||
- `_openclaw-gw._tcp` — транспортний маяк gateway (використовується Node на macOS/iOS/Android).
|
||||
- `_openclaw-gw._tcp` — маяк транспорту gateway (використовується вузлами macOS/iOS/Android).
|
||||
|
||||
## Ключі TXT (не секретні підказки)
|
||||
## TXT-ключі (несекретні підказки)
|
||||
|
||||
Gateway оголошує невеликі не секретні підказки, щоб спростити UI-потоки:
|
||||
Gateway оголошує невеликі несекретні підказки, щоб зробити UI-потоки зручними:
|
||||
|
||||
- `role=gateway`
|
||||
- `displayName=<дружня назва>`
|
||||
- `displayName=<friendly name>`
|
||||
- `lanHost=<hostname>.local`
|
||||
- `gatewayPort=<port>` (Gateway WS + HTTP)
|
||||
- `gatewayTls=1` (лише коли ввімкнено TLS)
|
||||
- `gatewayTlsSha256=<sha256>` (лише коли ввімкнено TLS і доступний відбиток)
|
||||
- `canvasPort=<port>` (лише коли ввімкнено хост canvas; наразі це той самий `gatewayPort`)
|
||||
- `gatewayTls=1` (лише коли TLS увімкнено)
|
||||
- `gatewayTlsSha256=<sha256>` (лише коли TLS увімкнено й fingerprint доступний)
|
||||
- `canvasPort=<port>` (лише коли canvas host увімкнено; наразі такий самий, як `gatewayPort`)
|
||||
- `transport=gateway`
|
||||
- `tailnetDns=<magicdns>` (лише в повному режимі mDNS, необов’язкова підказка, коли доступний Tailnet)
|
||||
- `sshPort=<port>` (лише в повному режимі mDNS; wide-area DNS-SD може його не включати)
|
||||
- `cliPath=<path>` (лише в повному режимі mDNS; wide-area DNS-SD все одно записує його як підказку для віддаленого встановлення)
|
||||
- `tailnetDns=<magicdns>` (лише повний режим mDNS, необов’язкова підказка, коли Tailnet доступний)
|
||||
- `sshPort=<port>` (лише повний режим mDNS; широкозонна DNS-SD може його пропускати)
|
||||
- `cliPath=<path>` (лише повний режим mDNS; широкозонна DNS-SD все одно записує його як підказку для віддаленого встановлення)
|
||||
|
||||
Примітки щодо безпеки:
|
||||
Нотатки щодо безпеки:
|
||||
|
||||
- TXT-записи Bonjour/mDNS **неавтентифіковані**. Клієнти не повинні вважати TXT авторитетним джерелом маршрутизації.
|
||||
- Клієнти повинні маршрутизуватися, використовуючи резолвлену кінцеву точку сервісу (SRV + A/AAAA). Розглядайте `lanHost`, `tailnetDns`, `gatewayPort` і `gatewayTlsSha256` лише як підказки.
|
||||
- Автоматичне націлювання SSH так само має використовувати резолвлений хост сервісу, а не лише підказки з TXT.
|
||||
- TXT-записи Bonjour/mDNS **не автентифіковані**. Клієнти не повинні вважати TXT авторитетним джерелом маршрутизації.
|
||||
- Клієнти мають маршрутизувати, використовуючи розв’язану кінцеву точку сервісу (SRV + A/AAAA). Вважайте `lanHost`, `tailnetDns`, `gatewayPort` і `gatewayTlsSha256` лише підказками.
|
||||
- SSH auto-targeting так само має використовувати розв’язаний хост сервісу, а не підказки лише з TXT.
|
||||
- TLS pinning ніколи не повинен дозволяти оголошеному `gatewayTlsSha256` перевизначати раніше збережений pin.
|
||||
- Node на iOS/Android мають розглядати прямі підключення на основі виявлення як **лише TLS** і вимагати явного підтвердження користувача перед довірою до відбитка при першому підключенні.
|
||||
- Вузли iOS/Android мають вважати прямі підключення на основі виявлення **лише TLS** і вимагати явного підтвердження користувача перед довірою до fingerprint уперше.
|
||||
|
||||
## Налагодження на macOS
|
||||
|
||||
@ -129,62 +129,63 @@ Gateway оголошує невеликі не секретні підказки
|
||||
dns-sd -B _openclaw-gw._tcp local.
|
||||
```
|
||||
|
||||
- Резолв одного екземпляра (замініть `<instance>`):
|
||||
- Розв’язання одного екземпляра (замініть `<instance>`):
|
||||
|
||||
```bash
|
||||
dns-sd -L "<instance>" _openclaw-gw._tcp local.
|
||||
```
|
||||
|
||||
Якщо перегляд працює, але резолв — ні, зазвичай це означає проблему політики LAN або
|
||||
резолвера mDNS.
|
||||
Якщо перегляд працює, але розв’язання не вдається, зазвичай причина в політиці LAN або
|
||||
проблемі резолвера mDNS.
|
||||
|
||||
## Налагодження в журналах Gateway
|
||||
## Налагодження в логах Gateway
|
||||
|
||||
Gateway записує журнал у циклічний лог-файл (виводиться під час запуску як
|
||||
Gateway пише ротаційний файл журналу (друкується під час запуску як
|
||||
`gateway log file: ...`). Шукайте рядки `bonjour:`, особливо:
|
||||
|
||||
- `bonjour: advertise failed ...`
|
||||
- `bonjour: suppressing ciao cancellation ...`
|
||||
- `bonjour: ... name conflict resolved` / `hostname conflict resolved`
|
||||
- `bonjour: watchdog detected non-announced service ...`
|
||||
- `bonjour: disabling advertiser after ... failed restarts ...`
|
||||
|
||||
Bonjour використовує системне ім’я хоста для оголошеного `.local` хоста, якщо воно є
|
||||
коректною DNS-міткою. Якщо системне ім’я хоста містить пробіли, підкреслення або інший
|
||||
некоректний для DNS-мітки символ, OpenClaw використовує `openclaw.local` як резервний варіант. Установіть
|
||||
`OPENCLAW_MDNS_HOSTNAME=<name>` перед запуском Gateway, якщо вам потрібна
|
||||
явна мітка хоста.
|
||||
Bonjour використовує системне ім’я хоста для оголошеного хоста `.local`, коли воно є
|
||||
дійсною DNS-міткою. Якщо системне ім’я хоста містить пробіли, підкреслення або інший
|
||||
недійсний символ DNS-мітки, OpenClaw повертається до `openclaw.local`. Установіть
|
||||
`OPENCLAW_MDNS_HOSTNAME=<name>` перед запуском Gateway, коли потрібна явна
|
||||
мітка хоста.
|
||||
|
||||
## Налагодження на iOS Node
|
||||
## Налагодження на вузлі iOS
|
||||
|
||||
iOS Node використовує `NWBrowser` для виявлення `_openclaw-gw._tcp`.
|
||||
Вузол iOS використовує `NWBrowser` для виявлення `_openclaw-gw._tcp`.
|
||||
|
||||
Щоб зібрати журнали:
|
||||
Щоб зібрати логи:
|
||||
|
||||
- Налаштування → Gateway → Додатково → **Discovery Debug Logs**
|
||||
- Налаштування → Gateway → Додатково → **Discovery Logs** → відтворіть проблему → **Copy**
|
||||
- Settings → Gateway → Advanced → **Discovery Debug Logs**
|
||||
- Settings → Gateway → Advanced → **Discovery Logs** → відтворіть → **Copy**
|
||||
|
||||
Журнал містить переходи станів браузера та зміни в наборі результатів.
|
||||
Журнал містить переходи станів browser і зміни набору результатів.
|
||||
|
||||
## Коли вимикати Bonjour
|
||||
|
||||
Вимикайте Bonjour лише тоді, коли оголошення multicast у LAN недоступне або шкідливе.
|
||||
Вимикайте Bonjour лише тоді, коли LAN multicast-оголошення недоступне або шкідливе.
|
||||
Типовий випадок — Gateway, що працює за Docker bridge networking, WSL або
|
||||
мережевою політикою, яка відкидає multicast mDNS. У таких середовищах Gateway
|
||||
усе ще доступний через свою опубліковану URL-адресу, SSH, Tailnet або wide-area DNS-SD,
|
||||
але автоматичне виявлення в LAN працює ненадійно.
|
||||
мережевою політикою, яка відкидає mDNS multicast. У таких середовищах Gateway
|
||||
усе ще доступний через опублікований URL, SSH, Tailnet або широкозонну DNS-SD,
|
||||
але автоматичне LAN-виявлення ненадійне.
|
||||
|
||||
Якщо проблема пов’язана з середовищем розгортання, надавайте перевагу наявному override змінної середовища:
|
||||
Віддавайте перевагу наявному перевизначенню середовища, коли проблема пов’язана з deployment:
|
||||
|
||||
```bash
|
||||
OPENCLAW_DISABLE_BONJOUR=1
|
||||
```
|
||||
|
||||
Це вимикає оголошення multicast у LAN без зміни конфігурації плагіна.
|
||||
Це безпечно для образів Docker, service files, launch scripts і одноразового
|
||||
налагодження, оскільки параметр зникає разом із середовищем.
|
||||
Це вимикає LAN multicast-оголошення без зміни конфігурації Plugin.
|
||||
Це безпечно для Docker-образів, service files, launch scripts і одноразового
|
||||
налагодження, бо налаштування зникає разом із середовищем.
|
||||
|
||||
Використовуйте конфігурацію плагіна лише тоді, коли ви навмисно хочете вимкнути
|
||||
вбудований плагін виявлення LAN для цієї конфігурації OpenClaw:
|
||||
Використовуйте конфігурацію Plugin лише тоді, коли навмисно хочете вимкнути
|
||||
вбудований LAN discovery Plugin для цієї конфігурації OpenClaw:
|
||||
|
||||
```bash
|
||||
openclaw plugins disable bonjour
|
||||
@ -192,26 +193,27 @@ openclaw plugins disable bonjour
|
||||
|
||||
## Особливості Docker
|
||||
|
||||
Вбудований плагін Bonjour автоматично вимикає оголошення multicast у LAN у виявлених
|
||||
Вбудований Bonjour Plugin автоматично вимикає LAN multicast-оголошення у виявлених
|
||||
контейнерах, коли `OPENCLAW_DISABLE_BONJOUR` не задано. Docker bridge networks
|
||||
зазвичай не пересилають multicast mDNS (`224.0.0.251:5353`) між контейнером
|
||||
і LAN, тому оголошення з контейнера рідко робить виявлення працездатним.
|
||||
зазвичай не пересилають mDNS multicast (`224.0.0.251:5353`) між контейнером
|
||||
і LAN, тому оголошення з контейнера рідко забезпечує роботу виявлення.
|
||||
|
||||
Важливі особливості:
|
||||
|
||||
- Вимкнення Bonjour не зупиняє Gateway. Воно лише зупиняє оголошення multicast у LAN.
|
||||
- Вимкнення Bonjour не змінює `gateway.bind`; Docker усе ще типово використовує
|
||||
- Вимкнення Bonjour не зупиняє Gateway. Воно лише зупиняє LAN multicast
|
||||
оголошення.
|
||||
- Вимкнення Bonjour не змінює `gateway.bind`; Docker усе ще за замовчуванням використовує
|
||||
`OPENCLAW_GATEWAY_BIND=lan`, щоб опублікований порт хоста міг працювати.
|
||||
- Вимкнення Bonjour не вимикає wide-area DNS-SD. Використовуйте wide-area виявлення
|
||||
або Tailnet, коли Gateway і Node не перебувають в одній LAN.
|
||||
- Вимкнення Bonjour не вимикає широкозонну DNS-SD. Використовуйте широкозонне виявлення
|
||||
або Tailnet, коли Gateway і вузол не в одній LAN.
|
||||
- Повторне використання того самого `OPENCLAW_CONFIG_DIR` поза Docker не зберігає
|
||||
політику автовимкнення контейнера.
|
||||
політику автоматичного вимкнення контейнера.
|
||||
- Установлюйте `OPENCLAW_DISABLE_BONJOUR=0` лише для host networking, macvlan або іншої
|
||||
мережі, де точно проходить multicast mDNS; установлюйте `1` для примусового вимкнення.
|
||||
мережі, де відомо, що mDNS multicast проходить; установлюйте `1`, щоб примусово вимкнути.
|
||||
|
||||
## Усунення несправностей вимкненого Bonjour
|
||||
## Усунення проблем із вимкненим Bonjour
|
||||
|
||||
Якщо Node більше не виявляє Gateway автоматично після налаштування Docker:
|
||||
Якщо вузол більше не виявляє Gateway автоматично після налаштування Docker:
|
||||
|
||||
1. Підтвердьте, у якому режимі працює Gateway: auto, forced-on чи forced-off:
|
||||
|
||||
@ -225,60 +227,60 @@ openclaw plugins disable bonjour
|
||||
curl -fsS http://127.0.0.1:18789/healthz
|
||||
```
|
||||
|
||||
3. Використовуйте пряме призначення, коли Bonjour вимкнено:
|
||||
3. Використовуйте прямий target, коли Bonjour вимкнено:
|
||||
- Control UI або локальні інструменти: `http://127.0.0.1:18789`
|
||||
- Клієнти LAN: `http://<gateway-host>:18789`
|
||||
- Міжмережеві клієнти: Tailnet MagicDNS, Tailnet IP, тунель SSH або
|
||||
wide-area DNS-SD
|
||||
- LAN-клієнти: `http://<gateway-host>:18789`
|
||||
- Клієнти між мережами: Tailnet MagicDNS, Tailnet IP, SSH tunnel або
|
||||
широкозонна DNS-SD
|
||||
|
||||
4. Якщо ви навмисно ввімкнули Bonjour у Docker через
|
||||
`OPENCLAW_DISABLE_BONJOUR=0`, перевірте multicast із хоста:
|
||||
`OPENCLAW_DISABLE_BONJOUR=0`, протестуйте multicast з хоста:
|
||||
|
||||
```bash
|
||||
dns-sd -B _openclaw-gw._tcp local.
|
||||
```
|
||||
|
||||
Якщо перегляд порожній або журнали Gateway показують повторні скасування
|
||||
watchdog у ciao, поверніть `OPENCLAW_DISABLE_BONJOUR=1` і використовуйте прямий
|
||||
маршрут або маршрут через Tailnet.
|
||||
Якщо перегляд порожній або логи Gateway показують повторні ciao watchdog
|
||||
cancellations, відновіть `OPENCLAW_DISABLE_BONJOUR=1` і використовуйте прямий
|
||||
або Tailnet-маршрут.
|
||||
|
||||
## Поширені режими збоїв
|
||||
## Поширені режими відмов
|
||||
|
||||
- **Bonjour не працює між мережами**: використовуйте Tailnet або SSH.
|
||||
- **Multicast заблоковано**: деякі Wi‑Fi-мережі вимикають mDNS.
|
||||
- **Оголошувач завис у probing/announcing**: хости із заблокованим multicast,
|
||||
container bridges, WSL або зміни інтерфейсів можуть залишити оголошувач ciao у
|
||||
- **Advertiser застряг у probing/announcing**: хости із заблокованим multicast,
|
||||
container bridges, WSL або зміни інтерфейсів можуть залишити ciao advertiser у
|
||||
неоголошеному стані. OpenClaw повторює спробу кілька разів, а потім вимикає Bonjour
|
||||
для поточного процесу Gateway замість нескінченного перезапуску оголошувача.
|
||||
для поточного процесу Gateway замість нескінченного перезапуску advertiser.
|
||||
- **Docker bridge networking**: Bonjour автоматично вимикається у виявлених контейнерах.
|
||||
Установлюйте `OPENCLAW_DISABLE_BONJOUR=0` лише для host, macvlan або іншої
|
||||
mDNS-сумісної мережі.
|
||||
- **Сон / зміни інтерфейсів**: macOS може тимчасово втрачати результати mDNS; повторіть спробу.
|
||||
- **Перегляд працює, але резолв — ні**: використовуйте прості імена машин (уникайте емодзі або
|
||||
розділових знаків), а потім перезапустіть Gateway. Назва екземпляра сервісу утворюється з
|
||||
імені хоста, тому надто складні назви можуть заплутувати деякі резолвери.
|
||||
мережі з підтримкою mDNS.
|
||||
- **Sleep / зміни інтерфейсів**: macOS може тимчасово втрачати результати mDNS; повторіть спробу.
|
||||
- **Перегляд працює, але розв’язання не вдається**: тримайте імена машин простими (уникайте emoji або
|
||||
пунктуації), потім перезапустіть Gateway. Ім’я екземпляра сервісу походить від
|
||||
імені хоста, тому надто складні імена можуть заплутувати деякі резолвери.
|
||||
|
||||
## Екрановані назви екземплярів (`\032`)
|
||||
## Екрановані імена екземплярів (`\032`)
|
||||
|
||||
Bonjour/DNS‑SD часто екранує байти в назвах екземплярів сервісу як десяткові послідовності `\DDD`
|
||||
(наприклад, пробіли стають `\032`).
|
||||
Bonjour/DNS‑SD часто екранує байти в іменах екземплярів сервісів як десяткові
|
||||
послідовності `\DDD` (наприклад, пробіли стають `\032`).
|
||||
|
||||
- Це нормально на рівні протоколу.
|
||||
- UI мають декодувати їх для відображення (iOS використовує `BonjourEscapes.decode`).
|
||||
- UI має декодувати для відображення (iOS використовує `BonjourEscapes.decode`).
|
||||
|
||||
## Вимкнення / конфігурація
|
||||
|
||||
- `openclaw plugins disable bonjour` вимикає оголошення multicast у LAN шляхом вимкнення вбудованого плагіна.
|
||||
- `openclaw plugins enable bonjour` відновлює типовий плагін виявлення LAN.
|
||||
- `OPENCLAW_DISABLE_BONJOUR=1` вимикає оголошення multicast у LAN без зміни конфігурації плагіна; приймаються truthy-значення `1`, `true`, `yes` і `on` (застаріле: `OPENCLAW_DISABLE_BONJOUR`).
|
||||
- `OPENCLAW_DISABLE_BONJOUR=0` примусово вмикає оголошення multicast у LAN, зокрема у виявлених контейнерах; приймаються falsy-значення `0`, `false`, `no` і `off`.
|
||||
- Коли `OPENCLAW_DISABLE_BONJOUR` не задано, Bonjour оголошується на звичайних хостах і автоматично вимикається у виявлених контейнерах.
|
||||
- `gateway.bind` у `~/.openclaw/openclaw.json` керує режимом bind для Gateway.
|
||||
- `OPENCLAW_SSH_PORT` перевизначає SSH-порт, коли оголошується `sshPort` (застаріле: `OPENCLAW_SSH_PORT`).
|
||||
- `OPENCLAW_TAILNET_DNS` публікує підказку MagicDNS у TXT, коли ввімкнено повний режим mDNS (застаріле: `OPENCLAW_TAILNET_DNS`).
|
||||
- `OPENCLAW_CLI_PATH` перевизначає оголошений шлях CLI (застаріле: `OPENCLAW_CLI_PATH`).
|
||||
- `openclaw plugins disable bonjour` вимикає LAN multicast-оголошення, вимикаючи вбудований Plugin.
|
||||
- `openclaw plugins enable bonjour` відновлює типовий LAN discovery Plugin.
|
||||
- `OPENCLAW_DISABLE_BONJOUR=1` вимикає LAN multicast-оголошення без зміни конфігурації Plugin; прийняті truthy-значення: `1`, `true`, `yes` і `on` (legacy: `OPENCLAW_DISABLE_BONJOUR`).
|
||||
- `OPENCLAW_DISABLE_BONJOUR=0` примусово вмикає LAN multicast-оголошення, зокрема всередині виявлених контейнерів; прийняті falsy-значення: `0`, `false`, `no` і `off`.
|
||||
- Коли `OPENCLAW_DISABLE_BONJOUR` не задано, Bonjour оголошує на звичайних хостах і автоматично вимикається всередині виявлених контейнерів.
|
||||
- `gateway.bind` у `~/.openclaw/openclaw.json` керує режимом прив’язки Gateway.
|
||||
- `OPENCLAW_SSH_PORT` перевизначає SSH-порт, коли `sshPort` оголошується (legacy: `OPENCLAW_SSH_PORT`).
|
||||
- `OPENCLAW_TAILNET_DNS` публікує підказку MagicDNS у TXT, коли ввімкнено повний режим mDNS (legacy: `OPENCLAW_TAILNET_DNS`).
|
||||
- `OPENCLAW_CLI_PATH` перевизначає оголошений шлях CLI (legacy: `OPENCLAW_CLI_PATH`).
|
||||
|
||||
## Пов’язана документація
|
||||
|
||||
- Політика виявлення та вибір транспорту: [Виявлення](/uk/gateway/discovery)
|
||||
- Pairing і підтвердження Node: [Pairing Gateway](/uk/gateway/pairing)
|
||||
- Сполучення вузла + схвалення: [Сполучення Gateway](/uk/gateway/pairing)
|
||||
|
||||
File diff suppressed because one or more lines are too long
Loading…
Reference in New Issue
Block a user