Fundamentals
Системний промпт
OpenClaw створює власний системний prompt для кожного запуску агента. Prompt належить OpenClaw і не використовує runtime prompt за замовчуванням.
Prompt збирається OpenClaw та інʼєктується в кожен запуск агента.
Збирання prompt має три шари:
buildAgentSystemPromptрендерить prompt з явних вхідних даних. Він має залишатися чистим рендерером і не повинен читати глобальну конфігурацію напряму.resolveAgentSystemPromptConfigвизначає підкріплені конфігурацією регулятори prompt, як-от відображення власника, підказки TTS, псевдоніми моделей, режим цитування памʼяті та режим делегування субагентам для конкретного агента.- Runtime-адаптери (вбудовані, CLI, попередні перегляди команд/експорту, compaction) збирають поточні факти, як-от інструменти, стан sandbox, можливості каналу, файли контексту та prompt-внески провайдера, а потім викликають налаштований фасад prompt.
Це утримує експортовані/налагоджувальні поверхні prompt узгодженими з живими запусками, не перетворюючи кожну runtime-специфічну деталь на один монолітний builder.
Plugin провайдерів можуть додавати cache-aware prompt-настанови без заміни повного prompt, що належить OpenClaw. Runtime провайдера може:
- замінити невеликий набір іменованих основних розділів (
interaction_style,tool_call_style,execution_bias) - інʼєктувати стабільний префікс над межею prompt-кешу
- інʼєктувати динамічний суфікс під межею prompt-кешу
Використовуйте внески, що належать провайдеру, для налаштування під конкретні сімейства моделей. Залишайте застарілу
мутацію prompt before_prompt_build для сумісності або справді глобальних змін prompt,
а не для звичайної поведінки провайдера.
Оверлей сімейства OpenAI GPT-5 зберігає основне правило виконання малим і додає модель-специфічні настанови для закріплення persona, стислого виводу, дисципліни інструментів, паралельного пошуку, покриття результатів, перевірки, відсутнього контексту та гігієни термінальних інструментів.
Структура
Prompt навмисно компактний і використовує фіксовані розділи:
- Інструменти: нагадування про структурований інструмент як джерело істини плюс runtime-настанови щодо використання інструментів.
- Упередження виконання: компактні настанови для доведення роботи до кінця: діяти в межах поточного turn щодо actionable запитів, продовжувати до завершення або блокування, відновлюватися після слабких результатів інструментів, перевіряти змінний стан наживо та верифікувати перед фіналізацією.
- Безпека: коротке нагадування про guardrail, щоб уникати поведінки пошуку влади або обходу нагляду.
- Skills (коли доступні): пояснює моделі, як завантажувати інструкції Skills на вимогу.
- Керування OpenClaw: пояснює моделі, що слід віддавати перевагу інструменту
gatewayдля роботи з конфігурацією/перезапуском і не вигадувати CLI-команди. - Самооновлення OpenClaw: як безпечно перевіряти конфігурацію за допомогою
config.schema.lookup, змінювати конфігурацію черезconfig.patch, замінювати повну конфігурацію черезconfig.applyі запускатиupdate.runлише за явним запитом користувача. Інструментgateway, видимий агенту, також відмовляється переписуватиtools.exec.ask/tools.exec.security, включно із застарілими псевдонімамиtools.bash.*, які нормалізуються до цих захищених exec-шляхів. - Робочий простір: робочий каталог (
agents.defaults.workspace). - Документація: локальний шлях до docs/source OpenClaw і коли їх читати.
- Файли робочого простору (інʼєктовані): вказує, що bootstrap-файли включено нижче.
- Sandbox (коли увімкнено): вказує на sandboxed runtime, sandbox-шляхи та чи доступний підвищений exec.
- Поточна дата й час: лише часовий пояс (стабільний для кешу; живий годинник надходить із
session_status). - Директиви виводу Assistant: компактний синтаксис вкладень, голосових нотаток і тегів відповіді.
- Сигнали Heartbeat: prompt Heartbeat і поведінка ack, коли Heartbeat увімкнено для агента за замовчуванням.
- Середовище виконання: хост, ОС, node, модель, корінь репозиторію (коли виявлено), рівень мислення (один рядок).
- Міркування: поточний рівень видимості + підказка перемикача /reasoning.
OpenClaw тримає великий стабільний вміст, зокрема Контекст проєкту, над внутрішньою межею prompt-кешу. Мінливі розділи каналу/сесії, як-от настанови для вбудовування Control UI, Повідомлення, Голос, Контекст групового чату, Реакції, Сигнали Heartbeat і Середовище виконання, додаються під цією межею, щоб локальні бекенди з prefix cache могли повторно використовувати стабільний префікс робочого простору між turn каналу. Описи інструментів так само мають уникати вбудовування поточних назв каналів, коли прийнята схема вже несе цю runtime-деталь.
Розділ інструментів також містить runtime-настанови для довготривалої роботи:
- використовуйте cron для майбутнього follow-up (
check back later, нагадування, регулярна робота) замість циклів снуexec, трюків із затримкоюyieldMsабо повторного pollingprocess - використовуйте
exec/processлише для команд, які запускаються зараз і продовжують працювати у фоні - коли увімкнено автоматичне wake після завершення, запустіть команду один раз і покладайтеся на push-based wake-шлях, коли вона виводить дані або завершується з помилкою
- використовуйте
processдля логів, статусу, вводу або втручання, коли потрібно перевірити команду, що виконується - якщо задача більша, віддавайте перевагу
sessions_spawn; завершення субагента є push-based і автоматично оголошує результат запитувачу - не опитуйте
subagents list/sessions_listу циклі лише для очікування завершення
agents.defaults.subagents.delegationMode може посилити ці настанови. Режим
за замовчуванням suggest зберігає базовий натяк. prefer додає окремий
розділ Делегування субагенту, який каже головному агенту діяти як responsive
координатор і спрямовувати все складніше за пряму відповідь через
sessions_spawn. Це лише prompt; політика інструментів усе ще контролює, чи
доступний sessions_spawn.
Коли експериментальний інструмент update_plan увімкнено, розділ інструментів також каже
моделі використовувати його лише для нетривіальної багатоетапної роботи, тримати рівно один
крок in_progress і уникати повторення всього плану після кожного оновлення.
Безпекові guardrails у системному prompt мають дорадчий характер. Вони спрямовують поведінку моделі, але не забезпечують примусового виконання політики. Для жорсткого enforcement використовуйте політику інструментів, exec approvals, sandboxing і allowlists каналів; оператори можуть вимкнути їх за задумом.
На каналах із native approval cards/buttons runtime prompt тепер каже
агенту спершу покладатися на цей native approval UI. Він має включати ручну
команду /approve лише тоді, коли результат інструмента каже, що chat approvals недоступні або
ручне approval є єдиним шляхом.
Режими prompt
OpenClaw може рендерити менші системні prompts для субагентів. Runtime задає
promptMode для кожного запуску (це не конфігурація, видима користувачу):
full(за замовчуванням): включає всі розділи вище.minimal: використовується для субагентів; пропускає Memory Recall, Самооновлення OpenClaw, Псевдоніми моделей, Ідентичність користувача, Директиви виводу Assistant, Повідомлення, Тихі відповіді та Сигнали Heartbeat. Інструменти, Безпека, Skills, коли надані, Робочий простір, Sandbox, Поточна дата й час (коли відомо), Середовище виконання та інʼєктований контекст залишаються доступними.none: повертає лише базовий рядок ідентичності.
Коли promptMode=minimal, додаткові інʼєктовані prompts позначаються як Контекст субагента
замість Контекст групового чату.
Для запусків автовідповідей каналу OpenClaw пропускає загальний розділ Тихі відповіді,
коли прямий, груповий або message-tool-only контекст володіє контрактом видимої відповіді.
Лише старий автоматичний режим group/channel має показувати NO_REPLY; прямі
чати та message-tool-only відповіді не отримують настанов щодо silent token.
Prompt snapshots
OpenClaw зберігає закомічені prompt snapshots для щасливого шляху runtime Codex у
test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/. Вони рендерять
вибрані параметри thread/turn app-server плюс реконструйований model-bound prompt
stack шарів для прямих Telegram, групових Discord і Heartbeat turn. Цей stack
містить зафіксований prompt fixture моделі Codex gpt-5.5, згенерований із форми
каталогу/кешу моделей Codex, developer text дозволів happy-path Codex,
developer instructions OpenClaw, turn-scoped інструкції collaboration-mode,
коли OpenClaw їх надає, ввід user turn і посилання на динамічні tool specs.
Оновіть зафіксований prompt fixture моделі Codex за допомогою
pnpm prompt:snapshots:sync-codex-model. За замовчуванням скрипт шукає
runtime-кеш Codex у $CODEX_HOME/models_cache.json, потім у
~/.codex/models_cache.json, і лише після цього повертається до maintainer Codex
checkout convention у ~/code/codex/codex-rs/models-manager/models.json. Якщо
жодного з цих джерел не існує, команда завершується без зміни закоміченого
fixture. Передайте --catalog <path>, щоб оновити з конкретного файлу models_cache.json
або models.json.
Ці snapshots усе ще не є byte-for-byte сирим захопленням запиту 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, щоб зміни prompt і оновлення snapshot залишалися прикріпленими до одного
PR.
Bootstrap-інʼєкція робочого простору
Bootstrap-файли визначаються з активного робочого простору, а потім маршрутизуються до поверхні prompt, що відповідає їхньому lifetime:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(лише в абсолютно нових робочих просторах)MEMORY.md, коли присутній
У native Codex harness OpenClaw уникає повторення стабільних файлів робочого простору
в кожному user turn. Codex завантажує AGENTS.md через власне
виявлення project-doc. SOUL.md, IDENTITY.md, TOOLS.md і USER.md пересилаються як
developer instructions Codex. Компактний список Skills OpenClaw також пересилається
як turn-scoped collaboration developer instructions. Вміст HEARTBEAT.md
не інʼєктується; Heartbeat turns отримують нотатку collaboration-mode, що вказує на файл,
коли він існує та не порожній. Вміст MEMORY.md з налаштованого agent
workspace не вставляється в кожен native Codex turn; коли memory tools
доступні для цього робочого простору, Codex turns отримують невелику workspace-memory нотатку в
turn-scoped collaboration developer instructions і мають використовувати memory_search
або memory_get, коли durable memory доречна. Якщо інструменти вимкнені, memory
search недоступний або активний робочий простір відрізняється від agent memory
workspace, MEMORY.md повертається до звичайного bounded turn-context шляху. Активний
вміст BOOTSTRAP.md наразі зберігає звичайну роль turn-context.
У non-Codex harnesses bootstrap-файли й далі компонуються в
prompt OpenClaw згідно з наявними gates. HEARTBEAT.md пропускається у
звичайних запусках, коли Heartbeat вимкнено для агента за замовчуванням або
agents.defaults.heartbeat.includeSystemPromptSection дорівнює false. Тримайте інʼєктовані
файли стислими, особливо non-Codex MEMORY.md. MEMORY.md призначений залишатися
кураторським довгостроковим резюме; докладні щоденні нотатки належать до memory/*.md, де
memory_search і memory_get можуть отримувати їх на вимогу. Завеликі
non-Codex файли MEMORY.md збільшують використання prompt і можуть бути частково інʼєктовані
через наведені нижче ліміти bootstrap-файлів.
Великі файли обрізаються з маркером. Максимальний розмір для кожного файлу контролюється
agents.defaults.bootstrapMaxChars (типово: 20000). Загальний інжектований bootstrap-
вміст у всіх файлах обмежено agents.defaults.bootstrapTotalMaxChars
(типово: 60000). Відсутні файли інжектують короткий маркер відсутнього файлу. Коли
відбувається обрізання, OpenClaw може інжектувати стисле попередження в системний prompt;
керуйте цим за допомогою agents.defaults.bootstrapPromptTruncationWarning (off, once, always;
типово: always). Докладні сирі/інжектовані лічильники залишаються в діагностиці, як-от
/context, /status, doctor і журнали.
Для файлів пам’яті обрізання не є втратою даних: файл залишається цілим на диску.
У нативному Codex MEMORY.md читається на вимогу через інструменти пам’яті, коли
вони доступні, з обмеженим fallback prompt, коли інструменти не можуть виконуватися. В інших
harnesses модель бачить лише скорочену інжектовану копію, доки не прочитає або
не знайде пам’ять напряму. Якщо MEMORY.md там неодноразово обрізається, стисніть
його в коротший довготривалий підсумок і перенесіть докладну історію в memory/*.md,
або свідомо збільште bootstrap-ліміти.
Сесії субагентів інжектують лише AGENTS.md і TOOLS.md (інші bootstrap-файли
відфільтровуються, щоб зберегти контекст субагента малим).
Внутрішні hooks можуть перехоплювати цей крок через agent:bootstrap, щоб змінити або замінити
інжектовані bootstrap-файли (наприклад, замінити SOUL.md на альтернативну persona).
Якщо ви хочете зробити звучання агента менш шаблонним, почніть із Посібника з особистості SOUL.md.
Щоб перевірити, скільки додає кожен інжектований файл (сире проти інжектованого, обрізання, плюс накладні витрати схеми інструментів), використовуйте /context list або /context detail. Див. Контекст.
Обробка часу
Системний prompt містить окремий розділ Поточна дата й час, коли відомий часовий пояс користувача. Щоб prompt cache залишався стабільним, тепер він містить лише часовий пояс (без динамічного годинника або формату часу).
Використовуйте session_status, коли агенту потрібен поточний час; картка стану
містить рядок із часовою позначкою. Той самий інструмент може додатково встановити перевизначення моделі
для окремої сесії (model=default скидає його).
Налаштовується за допомогою:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Повні деталі поведінки див. у Дата й час.
Skills
Коли існують придатні Skills, OpenClaw інжектує компактний список доступних Skills
(formatSkillsForPrompt), який містить шлях до файлу і похідний від вмісту
маркер <version> для кожного skill. Prompt вказує моделі використати read,
щоб завантажити SKILL.md у вказаному розташуванні (workspace, managed або bundled),
і перечитати skill, коли його <version> відрізняється від попереднього turn. Якщо
немає придатних Skills, розділ Skills пропускається.
Нативні turn Codex отримують цей список як обмежені поточним turn collaboration developer instructions замість користувацького вводу для кожного turn, крім легких cron turns, які зберігають точний запланований prompt. Інші harnesses зберігають звичайний розділ prompt.
Розташування може вказувати на вкладений skill, наприклад
skills/personal/foo/SKILL.md. Вкладеність є лише організаційною; prompt усе одно
використовує пласку назву skill із frontmatter SKILL.md.
Придатність охоплює gates метаданих skill, перевірки runtime-середовища/конфігурації
і ефективний allowlist Skills агента, коли налаштовано agents.defaults.skills або
agents.list[].skills.
Skills, вбудовані в Plugin, придатні лише тоді, коли їхній власний plugin увімкнено. Це дає змогу tool plugins надавати глибші операційні посібники, не вбудовуючи всі ці настанови безпосередньо в кожен опис інструмента.
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> <version>sha256:...</version> </skill></available_skills>Це зберігає базовий prompt малим і водночас дає змогу цільово використовувати Skills.
Бюджет списку Skills належить підсистемі Skills:
- Глобальне значення типово:
skills.limits.maxSkillsPromptChars - Перевизначення для окремого агента:
agents.list[].skillsLimits.maxSkillsPromptChars
Загальні обмежені runtime-уривки використовують іншу поверхню:
agents.defaults.contextLimits.*agents.list[].contextLimits.*
Такий поділ відокремлює розмір Skills від розміру runtime-читання/інжекції, як-от
memory_get, результати live tool і оновлення AGENTS.md після Compaction.
Документація
Системний prompt містить розділ Документація. Коли локальна документація доступна, він
вказує на локальний каталог документації OpenClaw (docs/ у Git checkout або документація bundled npm
package). Якщо локальна документація недоступна, він повертається до
https://docs.openclaw.ai.
Той самий розділ також містить розташування вихідного коду OpenClaw. Git checkouts показують локальний
корінь вихідного коду, щоб агент міг напряму інспектувати код. Встановлення package містять GitHub
URL вихідного коду й вказують агенту переглядати код там, коли документація неповна або
застаріла. Prompt також згадує публічне дзеркало документації, спільноту Discord і ClawHub
(https://clawhub.ai) для виявлення Skills. Він подає документацію як
авторитетне джерело самознання OpenClaw до того, як модель зрозуміє, як працює OpenClaw,
зокрема пам’ять/щоденні нотатки, сесії, інструменти, Gateway, конфігурацію, команди або контекст
проєкту. Prompt вказує моделі спершу використовувати локальну документацію (або дзеркало документації, коли локальна документація
недоступна) і трактувати AGENTS.md, контекст проєкту, нотатки workspace/profile/memory
і memory_search як контекст інструкцій або пам’ять користувача, а не як знання про дизайн
чи реалізацію OpenClaw. Якщо документація мовчить або застаріла, модель має сказати про це
та інспектувати вихідний код. Prompt також вказує моделі самостійно запускати openclaw status, коли
це можливо, питаючи користувача лише тоді, коли вона не має доступу.
Для конфігурації зокрема він спрямовує агентів до дії інструмента gateway
config.schema.lookup для точних документів і обмежень на рівні полів, а потім до
docs/gateway/configuration.md і docs/gateway/configuration-reference.md
для ширших настанов.