Fundamentals

Системний промпт

OpenClaw створює власний системний промпт для кожного запуску агента. Промпт належить OpenClaw і не використовує типовий промпт pi-coding-agent.

Промпт збирається OpenClaw і впроваджується в кожен запуск агента.

Provider Plugin-и можуть додавати cache-aware вказівки для промпта, не замінюючи повний промпт, що належить OpenClaw. Runtime провайдера може:

  • замінити невеликий набір іменованих основних секцій (interaction_style, tool_call_style, execution_bias)
  • впровадити стабільний префікс над межею кешу промпта
  • впровадити динамічний суфікс під межею кешу промпта

Використовуйте внески, що належать провайдеру, для налаштування під конкретні сімейства моделей. Залишайте застарілу мутацію промпта before_prompt_build для сумісності або справді глобальних змін промпта, а не для звичайної поведінки провайдера.

Оверлей сімейства OpenAI GPT-5 зберігає основне правило виконання невеликим і додає модель-специфічні вказівки для фіксації персони, стислого виводу, дисципліни інструментів, паралельного пошуку, повноти результатів, перевірки, відсутнього контексту та гігієни термінальних інструментів.

Структура

Промпт навмисно компактний і використовує фіксовані секції:

  • Інструменти: нагадування про джерело істини для структурованих інструментів плюс runtime-вказівки щодо використання інструментів.
  • Схильність до виконання: компактні вказівки для доведення роботи до кінця: діяти в межах поточного ходу за actionable-запитами, продовжувати до завершення або блокування, відновлюватися після слабких результатів інструментів, перевіряти змінний стан наживо й верифікувати перед фіналізацією.
  • Безпека: коротке нагадування про обмеження, щоб уникати поведінки, спрямованої на здобуття влади, або обходу нагляду.
  • Skills (коли доступні): пояснює моделі, як завантажувати інструкції Skills на вимогу.
  • Самооновлення OpenClaw: як безпечно перевіряти config за допомогою config.schema.lookup, виправляти config через config.patch, замінювати повний config через config.apply і запускати update.run лише за явним запитом користувача. Інструмент gateway, доступний лише власнику, також відмовляється переписувати tools.exec.ask / tools.exec.security, включно із застарілими псевдонімами tools.bash.*, які нормалізуються до цих захищених exec-шляхів.
  • Робочий простір: робочий каталог (agents.defaults.workspace).
  • Документація: локальний шлях до документації OpenClaw (repo або npm-пакет) і коли її читати.
  • Файли робочого простору (впроваджено): вказує, що bootstrap-файли включено нижче.
  • Пісочниця (коли ввімкнено): вказує sandboxed runtime, шляхи sandbox і чи доступний elevated exec.
  • Поточна дата й час: лише часовий пояс (стабільний для кешу; живий годинник надходить із session_status).
  • Теги відповіді: необов’язковий синтаксис тегів відповіді для підтримуваних провайдерів.
  • Heartbeats: промпт Heartbeat і поведінка ack, коли Heartbeat-и ввімкнені для агента за замовчуванням.
  • Runtime: хост, ОС, Node, модель, корінь repo (коли виявлено), рівень thinking (один рядок).
  • Міркування: поточний рівень видимості + підказка перемикача /reasoning.

OpenClaw тримає великий стабільний вміст, включно з Контекстом проєкту, над внутрішньою межею кешу промпта. Мінливі секції каналу/сесії, як-от вказівки для вбудованого Control UI, Повідомлення, Голос, Контекст групового чату, Реакції, Heartbeats і Runtime, додаються під цією межею, щоб локальні бекенди з кешами префікса могли повторно використовувати стабільний префікс робочого простору між ходами каналу. Описи інструментів так само мають уникати вбудовування поточних назв каналів, коли прийнята схема вже передає цю runtime-деталь.

Секція інструментів також містить runtime-вказівки для довготривалої роботи:

  • використовуйте Cron для майбутнього follow-up (check back later, нагадування, повторювана робота) замість циклів сну через exec, трюків із затримкою yieldMs або повторного опитування process
  • використовуйте exec / process лише для команд, які запускаються зараз і продовжують працювати у фоновому режимі
  • коли ввімкнено автоматичне пробудження після завершення, запустіть команду один раз і покладайтеся на push-based шлях пробудження, коли вона виводить дані або завершується помилкою
  • використовуйте process для логів, статусу, вводу або втручання, коли потрібно перевірити команду, що виконується
  • якщо завдання більше, віддавайте перевагу sessions_spawn; завершення sub-agent є push-based і автоматично оголошується назад requester-у
  • не опитуйте subagents list / sessions_list у циклі лише для очікування завершення

Коли експериментальний інструмент update_plan ввімкнено, секція інструментів також каже моделі використовувати його лише для нетривіальної багатоетапної роботи, тримати рівно один крок in_progress і уникати повторення всього плану після кожного оновлення.

Запобіжники безпеки в системному промпті є рекомендаційними. Вони спрямовують поведінку моделі, але не забезпечують примусового виконання політики. Для жорсткого забезпечення використовуйте політику інструментів, схвалення exec, sandboxing і allowlist-и каналів; оператори можуть вимикати їх за задумом.

На каналах із нативними картками/кнопками схвалення runtime-промпт тепер каже агенту спершу покладатися на цей нативний UI схвалення. Він має включати ручну команду /approve лише коли результат інструмента каже, що chat-схвалення недоступні або ручне схвалення є єдиним шляхом.

Режими промпта

OpenClaw може рендерити менші системні промпти для sub-agent-ів. Runtime встановлює promptMode для кожного запуску (це не користувацький config):

  • full (за замовчуванням): включає всі секції вище.
  • minimal: використовується для sub-agent-ів; пропускає Skills, Memory Recall, Самооновлення OpenClaw, Псевдоніми моделей, Ідентичність користувача, Теги відповіді, Повідомлення, Тихі відповіді та Heartbeats. Інструменти, Безпека, Робочий простір, Пісочниця, Поточна дата й час (коли відомо), Runtime та впроваджений контекст залишаються доступними.
  • none: повертає лише базовий рядок ідентичності.

Коли promptMode=minimal, додаткові впроваджені промпти позначаються як Контекст subagent-а замість Контекст групового чату.

Для запусків auto-reply у каналі OpenClaw може пропускати загальну секцію Тихі відповіді, коли контекст direct/group chat уже включає розв’язану поведінку NO_REPLY, специфічну для розмови. Це уникає повторення механіки token-ів і в глобальному системному промпті, і в контексті каналу.

Знімки промптів

OpenClaw зберігає закомічені знімки промптів для happy path runtime Codex у test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/. Вони рендерять вибрані app-server параметри thread/turn плюс реконструйований прив’язаний до моделі стек шарів промпта для Telegram direct, Discord group і Heartbeat-ходів. Цей стек містить зафіксований fixture промпта моделі Codex gpt-5.5, згенерований із форми model catalog/cache Codex, developer-текст дозволів happy path Codex, developer-інструкції OpenClaw, turn-scoped інструкції collaboration-mode, коли OpenClaw їх надає, ввід ходу користувача та посилання на динамічні специфікації інструментів.

Оновіть зафіксований fixture промпта моделі Codex за допомогою pnpm prompt:snapshots:sync-codex-model. За замовчуванням скрипт шукає runtime-кеш Codex у $CODEX_HOME/models_cache.json, потім ~/.codex/models_cache.json, і лише після цього переходить до convention checkout-у Codex maintainer-а в ~/code/codex/codex-rs/models-manager/models.json. Якщо жодного з цих джерел не існує, команда завершується без зміни закоміченого fixture. Передайте --catalog <path>, щоб оновити з конкретного файлу models_cache.json або models.json.

Ці знімки все ще не є побайтовим raw-захопленням запиту OpenAI. Codex може додавати runtime-owned контекст робочого простору, як-от AGENTS.md, контекст середовища, memories, інструкції app/plugin і вбудовані Default інструкції collaboration-mode усередині runtime Codex після того, як OpenClaw надсилає параметри thread і turn.

Перегенеруйте їх за допомогою pnpm prompt:snapshots:gen і перевірте drift через pnpm prompt:snapshots:check. CI запускає перевірку drift у додатковому boundary shard, щоб зміни промптів і оновлення знімків залишалися прив’язаними до того самого PR.

Впровадження bootstrap у робочий простір

Bootstrap-файли обрізаються й додаються під Контекст проєкту, щоб модель бачила контекст ідентичності та профілю без потреби в явному читанні:

  • AGENTS.md
  • SOUL.md
  • TOOLS.md
  • IDENTITY.md
  • USER.md
  • HEARTBEAT.md
  • BOOTSTRAP.md (лише в зовсім нових робочих просторах)
  • MEMORY.md, коли присутній

Усі ці файли впроваджуються у вікно контексту на кожному ході, якщо не застосовується file-specific gate. HEARTBEAT.md пропускається у звичайних запусках, коли Heartbeats вимкнені для агента за замовчуванням або agents.defaults.heartbeat.includeSystemPromptSection дорівнює false. Тримайте впроваджені файли стислими — особливо MEMORY.md, який може зростати з часом і призводити до неочікувано високого використання контексту та частішої Compaction.

Коли сесія виконується на нативному harness Codex, Codex завантажує AGENTS.md через власне виявлення project-doc. OpenClaw все ще розв’язує решту bootstrap-файлів і передає їх як config-інструкції Codex, тому SOUL.md, TOOLS.md, IDENTITY.md, USER.md, HEARTBEAT.md, BOOTSTRAP.md і MEMORY.md зберігають ту саму роль контексту робочого простору без дублювання AGENTS.md.

Великі файли обрізаються з маркером. Максимальний розмір на файл контролюється agents.defaults.bootstrapMaxChars (за замовчуванням: 12000). Загальний впроваджений bootstrap-вміст усіх файлів обмежено agents.defaults.bootstrapTotalMaxChars (за замовчуванням: 60000). Відсутні файли впроваджують короткий маркер missing-file. Коли відбувається truncation, OpenClaw може впровадити стисле системно-промптове попередження; керуйте цим через agents.defaults.bootstrapPromptTruncationWarning (off, once, always; за замовчуванням: once). Докладні raw/injected лічильники залишаються в діагностиці, як-от /context, /status, doctor і логи.

Сесії sub-agent впроваджують лише AGENTS.md і TOOLS.md (інші bootstrap-файли фільтруються, щоб зберегти контекст sub-agent-а малим).

Внутрішні hooks можуть перехоплювати цей крок через agent:bootstrap, щоб змінити або замінити впроваджені bootstrap-файли (наприклад, замінити SOUL.md на альтернативну персону).

Якщо ви хочете, щоб агент звучав менш шаблонно, почніть із Посібника з особистості SOUL.md.

Щоб перевірити, скільки додає кожен впроваджений файл (raw vs injected, truncation, плюс overhead схем інструментів), використовуйте /context list або /context detail. Див. Контекст.

Обробка часу

Системний промпт включає окрему секцію Поточна дата й час, коли часовий пояс користувача відомий. Щоб промпт залишався стабільним для кешу, тепер вона містить лише часовий пояс (без динамічного годинника або формату часу).

Використовуйте session_status, коли агенту потрібен поточний час; картка статусу містить рядок timestamp. Той самий інструмент може необов’язково встановити per-session model override (model=default очищає його).

Налаштовується через:

  • agents.defaults.userTimezone
  • agents.defaults.timeFormat (auto | 12 | 24)

Див. Дата й час для повних деталей поведінки.

Skills

Коли існують придатні Skills, OpenClaw впроваджує компактний список доступних Skills (formatSkillsForPrompt), який містить шлях до файлу для кожного Skill. Промпт інструктує модель використовувати read, щоб завантажити SKILL.md за вказаним розташуванням (workspace, managed або bundled). Якщо жоден Skill не придатний, секція Skills пропускається.

Придатність включає metadata gates Skills, перевірки runtime environment/config та ефективний allowlist Skills агента, коли налаштовано agents.defaults.skills або agents.list[].skills.

Plugin-bundled Skills придатні лише коли ввімкнено Plugin, якому вони належать. Це дозволяє tool Plugin-ам надавати глибші операційні посібники без вбудовування всіх цих вказівок безпосередньо в кожен опис інструмента.

<available_skills>
  <skill>
    <name>...</name>
    <description>...</description>
    <location>...</location>
  </skill>
</available_skills>

Це зберігає базовий промпт малим, водночас даючи змогу цільово використовувати Skills.

Бюджет списку Skills належить підсистемі Skills:

  • Глобальне значення за замовчуванням: skills.limits.maxSkillsPromptChars
  • Перевизначення для окремого агента: agents.list[].skillsLimits.maxSkillsPromptChars

Загальні обмежені фрагменти середовища виконання використовують іншу поверхню:

  • agents.defaults.contextLimits.*
  • agents.list[].contextLimits.*

Такий поділ зберігає визначення розміру Skills окремо від визначення розміру читання/вставлення середовища виконання, як-от memory_get, результати інструментів у реальному часі та оновлення AGENTS.md після Compaction.

Документація

Системний промпт містить розділ Документація. Коли локальна документація доступна, він вказує на локальний каталог документації OpenClaw (docs/ у Git checkout або документацію пакета npm, що входить до комплекту). Якщо локальна документація недоступна, він переходить до https://docs.openclaw.ai.

Цей самий розділ також містить розташування вихідного коду OpenClaw. Git checkout надає локальний корінь вихідного коду, щоб агент міг безпосередньо переглядати код. Встановлення з пакета містять URL вихідного коду на GitHub і вказують агенту переглядати вихідний код там, коли документація неповна або застаріла. Промпт також згадує публічне дзеркало документації, спільноту Discord і ClawHub (https://clawhub.ai) для пошуку Skills. Він вказує моделі спочатку звертатися до документації щодо поведінки OpenClaw, команд, конфігурації або архітектури, а також самостійно запускати openclaw status, коли це можливо (запитуючи користувача лише тоді, коли не має доступу). Зокрема щодо конфігурації, він спрямовує агентів до дії інструмента gateway config.schema.lookup для точної документації та обмежень на рівні полів, а потім до docs/gateway/configuration.md і docs/gateway/configuration-reference.md для ширших рекомендацій.

Пов’язане