Fundamentals
Системный промпт
OpenClaw формирует собственный системный промпт для каждого запуска агента; стандартного промпта среды выполнения не существует.
Сборка состоит из трёх уровней:
buildAgentSystemPromptформирует промпт из явно заданных входных данных. Он остаётся чистым средством отрисовки и не считывает глобальную конфигурацию напрямую.resolveAgentSystemPromptConfigопределяет для конкретного агента параметры промпта, задаваемые конфигурацией (отображаемое имя владельца, подсказки TTS, псевдонимы моделей, режим цитирования памяти, режим делегирования субагентам).- Адаптеры среды выполнения (встроенный, CLI, предварительный просмотр команд/экспорта, Compaction) собирают актуальные данные (инструменты, состояние песочницы, возможности канала, контекстные файлы, дополнения провайдера к промпту) и вызывают настроенный фасад промпта.
Благодаря этому экспортируемые и отладочные представления промпта соответствуют реальным запускам, при этом все подробности среды выполнения не превращаются в единый монолитный построитель.
Плагины провайдеров могут добавлять рекомендации с учётом кеширования, не заменяя промпт, принадлежащий OpenClaw. Среда выполнения провайдера может:
- заменить один из трёх именованных основных разделов:
interaction_style,tool_call_style,execution_bias - вставить стабильный префикс выше границы кеша промпта
- вставить динамический суффикс ниже границы кеша промпта
Используйте дополнения, принадлежащие провайдеру, для настройки под конкретное семейство моделей. Устаревший обработчик before_prompt_build следует использовать только для совместимости или действительно глобальных изменений промпта.
Встроенная надстройка семейства OpenAI/Codex GPT-5 (resolveGpt5SystemPromptContribution) использует этот механизм: контракт поведения stablePrefix (политика выполнения, дисциплина использования инструментов, контракт вывода, контракт завершения) и необязательное переопределение interaction_style для более дружелюбного тона. Она применяется к любому идентификатору модели gpt-5*, маршрутизируемому через плагины OpenAI или Codex, и управляется параметром agents.defaults.promptOverlays.gpt5.personality ("friendly"/"on" или "off").
Структура
Промпт компактен и содержит фиксированные разделы:
- Инструменты: напоминание о том, что структурированные инструменты являются источником истины, а также рекомендации по использованию инструментов в среде выполнения. Когда включён экспериментальный инструмент
update_plan(tools.experimental.planTool), его собственное описание дополнительно предписывает: использовать его только для нетривиальной многоэтапной работы, держать не более одного шагаin_progressи не использовать его для простой одноэтапной работы. - Ориентация на выполнение: выполнять в рамках текущего хода запросы, допускающие непосредственные действия, продолжать до завершения или блокировки, восстанавливаться после слабых результатов инструментов, проверять изменяемое состояние в реальном времени и выполнять проверку перед завершением.
- Безопасность: краткое напоминание об ограничениях, запрещающих стремление к расширению полномочий или обход контроля.
- Skills (при наличии): объясняет модели, как загружать инструкции Skills по мере необходимости.
- Управление OpenClaw: отдавать предпочтение инструменту
gatewayдля работы с конфигурацией и перезапуском; не выдумывать команды CLI. - Самообновление OpenClaw: безопасно проверять конфигурацию с помощью
config.schema.lookup, изменять её с помощьюconfig.patch, полностью заменять с помощьюconfig.applyи запускатьupdate.runтолько по явному запросу пользователя. Доступный агенту инструментgatewayотказывается перезаписыватьtools.exec.ask/tools.exec.security, включая устаревшие псевдонимыtools.bash.*, которые нормализуются в эти защищённые пути. - Рабочая область: рабочий каталог (
agents.defaults.workspace). - Документация: локальный путь к документации/исходному коду и условия, при которых их следует читать.
- Файлы рабочей области (внедрённые): указывает, что загрузочные файлы включены ниже.
- Песочница (когда включена): изолированная среда выполнения, пути песочницы, доступность выполнения с повышенными привилегиями.
- Текущие дата и время: только часовой пояс (стабилен для кеша; текущее время предоставляет
session_status). - Директивы вывода ассистента: компактный синтаксис вложений, голосовых сообщений и тегов ответа.
- Heartbeats: промпт Heartbeat и поведение подтверждения, когда Heartbeat включены для агента по умолчанию.
- Среда выполнения: хост, ОС, Node, модель, корень репозитория (если обнаружен), уровень рассуждений (одна строка).
- Рассуждения: текущий уровень видимости и подсказка о переключателе
/reasoning.
Большой стабильный контент (включая Контекст проекта) остаётся выше внутренней границы кеша промпта. Изменчивые разделы для каждого хода (рекомендации по встраиванию интерфейса управления, Обмен сообщениями, Голос, Контекст группового чата, Реакции, Heartbeats, Среда выполнения) добавляются ниже этой границы, чтобы локальные серверные части с кешированием префиксов могли повторно использовать стабильный префикс рабочей области между ходами в канале. В описания инструментов не следует включать текущие названия каналов, если принимаемая схема уже содержит эти сведения среды выполнения.
Раздел инструментов также содержит рекомендации для длительной работы:
- использовать Cron для будущих последующих действий (
check back later, напоминаний, повторяющейся работы) вместо циклов ожиданияexec, приёмов с задержкойyieldMsили повторного опросаprocess - использовать
exec/processтолько для команд, которые запускаются сейчас и продолжают выполняться в фоновом режиме - когда включено автоматическое пробуждение по завершении, запускать команду один раз и полагаться на механизм пробуждения на основе push-уведомлений
- использовать
processдля получения журналов, состояния, ввода или вмешательства в выполняющуюся команду - для более крупных задач отдавать предпочтение
sessions_spawn; завершение работы субагента передаётся через push-механизм и автоматически сообщается инициатору запроса - не опрашивать
subagents list/sessions_listв цикле только ради ожидания завершения
agents.defaults.subagents.delegationMode (по умолчанию "suggest") может усилить это поведение. "prefer" добавляет отдельный раздел Делегирование субагентам, предписывающий основному агенту выступать в роли оперативного координатора и передавать через sessions_spawn всё, что сложнее прямого ответа. Это касается только промпта; доступность sessions_spawn по-прежнему определяется политикой инструментов.
Ограничения безопасности в системном промпте носят рекомендательный, а не принудительный характер. Для строгого обеспечения используйте политику инструментов, подтверждения выполнения, песочницу и списки разрешений каналов; по замыслу операторы могут отключать ограничения безопасности промпта.
В каналах с нативными карточками/кнопками подтверждения промпт предписывает агенту в первую очередь полагаться на этот интерфейс и включать ручную команду /approve только тогда, когда результат инструмента сообщает, что подтверждения через чат недоступны или ручное подтверждение является единственным способом.
Режимы промпта
OpenClaw формирует уменьшенные системные промпты для субагентов. Среда выполнения задаёт promptMode для каждого запуска (это не пользовательская конфигурация):
full(по умолчанию): все перечисленные выше разделы.minimal: используется для субагентов; исключает раздел промпта памяти (встроенный как Вызов из памяти), Самообновление OpenClaw, Псевдонимы моделей, Идентификационные данные пользователя, Директивы вывода ассистента, Обмен сообщениями, Ответы без уведомления и Heartbeats. Инструменты, Безопасность, Skills (если предоставлены), рабочая область, песочница, текущие дата и время (если известны), среда выполнения и внедрённый контекст остаются доступными.none: возвращает только базовую строку идентификации.
В режиме promptMode=minimal дополнительные внедрённые промпты помечаются как Контекст субагента, а не Контекст группового чата.
Для запусков автоответа в канале OpenClaw исключает общий раздел Ответы без уведомления, когда контекст личного общения, группы или ответа только через инструмент сообщений уже определяет контракт видимого ответа. Только устаревший автоматический режим группы/канала показывает NO_REPLY; личные чаты и ответы только через инструмент сообщений не содержат рекомендаций по токену безмолвного ответа.
Снимки промптов
OpenClaw хранит зафиксированные снимки промптов для основного рабочего сценария среды выполнения Codex в test/fixtures/agents/prompt-snapshots/codex-runtime-happy-path/. Они отображают выбранные параметры потока/хода сервера приложений, а также реконструированный стек слоёв промпта, передаваемых модели, для личных сообщений Telegram, групп Discord и ходов Heartbeat: закреплённую фикстуру промпта модели Codex gpt-5.5, текст разработчика о разрешениях для основного сценария Codex, инструкции разработчика OpenClaw, инструкции режима совместной работы для текущего хода, когда их предоставляет OpenClaw, пользовательский ввод текущего хода и ссылки на динамические спецификации инструментов.
Обновляйте закреплённую фикстуру промпта модели Codex с помощью pnpm prompt:snapshots:sync-codex-model. По умолчанию поиск выполняется сначала в $CODEX_HOME/models_cache.json, затем в ~/.codex/models_cache.json, а затем в каталоге, принятом для рабочей копии сопровождающего, ~/code/codex/codex-rs/models-manager/models.json; если ничего не найдено, команда завершается без изменения зафиксированной фикстуры. Передайте --catalog <path>, чтобы выполнить обновление из конкретного файла models_cache.json или models.json.
Эти снимки не являются побайтовым необработанным снимком запроса OpenAI. После того как OpenClaw отправляет параметры потока и хода, Codex может добавить принадлежащий среде выполнения контекст рабочей области (AGENTS.md, контекст окружения, воспоминания, инструкции приложения/плагина, встроенные инструкции стандартного режима совместной работы).
Повторно создайте снимки с помощью pnpm prompt:snapshots:gen; проверьте расхождения с помощью pnpm prompt:snapshots:check. CI запускает проверку расхождений вместе с сегментами дополнительных границ, поэтому изменения промпта и обновления снимков включаются в один PR.
Внедрение загрузочных файлов рабочей области
Загрузочные файлы определяются из активной рабочей области и направляются в соответствующую их времени жизни область промпта:
AGENTS.mdSOUL.mdTOOLS.mdIDENTITY.mdUSER.mdHEARTBEAT.mdBOOTSTRAP.md(только в совершенно новых рабочих областях)MEMORY.mdпри наличии
В нативной среде Codex OpenClaw не повторяет стабильные файлы рабочей области в каждом пользовательском ходе. Codex загружает AGENTS.md через собственный механизм обнаружения проектной документации. TOOLS.md передаётся как унаследованные инструкции разработчика Codex. SOUL.md, IDENTITY.md и USER.md передаются как инструкции разработчика по совместной работе для текущего хода, чтобы нативные субагенты Codex не наследовали их. Содержимое HEARTBEAT.md не внедряется напрямую; при наличии непустого файла ходы Heartbeat получают примечание режима совместной работы со ссылкой на него. Содержимое MEMORY.md также не вставляется в каждый нативный ход Codex: когда для рабочей области доступны инструменты памяти, ходы Codex получают краткое примечание о памяти рабочей области, направляющее модель к memory_search или memory_get. Если инструменты отключены, поиск по памяти недоступен или активная рабочая область отличается от рабочей области памяти агента, MEMORY.md возвращается к обычному ограниченному пути контекста хода. BOOTSTRAP.md сохраняет обычную роль контекста хода.
В средах, отличных от Codex, загрузочные файлы включаются в промпт OpenClaw согласно существующим условиям. HEARTBEAT.md исключается при обычных запусках, если Heartbeat отключены для агента по умолчанию или agents.defaults.heartbeat.includeSystemPromptSection имеет значение false. Делайте внедряемые файлы краткими, особенно MEMORY.md вне Codex: он должен оставаться отобранной сводкой долгосрочной памяти, а подробные ежедневные заметки следует хранить в memory/*.md с возможностью извлечения по запросу через memory_search / memory_get. Слишком большие файлы MEMORY.md вне Codex увеличивают объём промпта и могут внедряться лишь частично в соответствии с указанными ниже ограничениями загрузочных файлов.
Большие файлы обрезаются с добавлением маркера:
| Ограничение | Ключ конфигурации | Значение по умолчанию |
|---|---|---|
| Максимальное количество символов на файл | agents.defaults.bootstrapMaxChars |
20000 |
| Суммарно по всем файлам | agents.defaults.bootstrapTotalMaxChars |
60000 |
Предупреждение об усечении (off|once|always) |
agents.defaults.bootstrapPromptTruncationWarning |
always |
Для отсутствующих файлов вставляется короткий маркер отсутствующего файла. Подробные исходные/вставленные значения количества остаются в диагностических данных, таких как /context, /status, doctor и журналы.
Для файлов памяти усечение не означает потерю данных: файл остаётся неизменным на диске. В нативном Codex MEMORY.md при наличии инструментов памяти читается по запросу через них, а в остальных случаях используется ограниченный резервный вариант в промпте. В других средах модель видит только сокращённую вставленную копию, пока напрямую не прочитает память или не выполнит поиск по ней. Если MEMORY.md многократно усекается, преобразуйте его в более короткую долговременную сводку, перенесите подробную историю в memory/*.md или намеренно увеличьте ограничения начальной загрузки.
В сеансы субагентов вставляются только AGENTS.md и TOOLS.md (остальные файлы начальной загрузки отфильтровываются, чтобы контекст субагента оставался небольшим).
Внутренние хуки могут перехватить этот шаг через событие agent:bootstrap, чтобы изменить или заменить вставляемые файлы начальной загрузки (например, заменить SOUL.md альтернативной персоной).
Чтобы стиль звучал менее шаблонно, начните с руководства по личности SOUL.md.
Чтобы проверить вклад каждого вставленного файла (исходный и вставленный объём, усечение, накладные расходы схемы инструментов), используйте /context list или /context detail. См. раздел Контекст.
Обработка времени
Раздел Текущая дата и время отображается только тогда, когда известен часовой пояс пользователя, и содержит только часовой пояс (без динамических часов и формата времени), чтобы обеспечить стабильность кеша промпта.
Используйте session_status, когда агенту требуется текущее время; его карточка состояния содержит строку с временной меткой. Этот же инструмент может при необходимости задать переопределение модели для отдельного сеанса (model=default сбрасывает его).
Настройка:
agents.defaults.userTimezoneagents.defaults.timeFormat(auto|12|24)
Полное описание поведения см. в разделах Часовые пояса и Дата и время.
Skills
При наличии подходящих Skills OpenClaw вставляет компактный список <available_skills> (formatSkillsForPrompt) с путём к файлу и маркером <version>sha256:...</version>, вычисленным из содержимого, для каждого навыка. Промпт предписывает модели использовать read, чтобы загрузить SKILL.md по указанному расположению (в рабочей области, управляемом или встроенном), и повторно читать навык, когда его <version> отличается от предыдущего хода. Если подходящих Skills нет, раздел Skills опускается.
Нативные ходы Codex получают этот список в виде ограниченных текущим ходом инструкций разработчика по совместной работе вместо пользовательского ввода для каждого хода, кроме облегчённых ходов cron, которые сохраняют точный запланированный промпт. В других средах сохраняется обычный раздел промпта.
Расположение может указывать на вложенный навык, например skills/personal/foo/SKILL.md. Вложенность служит только для организации; промпт использует плоское имя навыка из метаданных frontmatter SKILL.md.
При определении соответствия учитываются ограничения метаданных навыка, проверки среды выполнения и конфигурации, а также действующий список разрешённых навыков агента, если настроен agents.defaults.skills или agents.list[].skills. Skills, встроенные в плагин, доступны только тогда, когда включён владеющий ими плагин; это позволяет плагинам инструментов предоставлять более подробные руководства по эксплуатации, не включая все эти указания в описание каждого инструмента.
<available_skills> <skill> <name>...</name> <description>...</description> <location>...</location> <version>sha256:...</version> </skill></available_skills>Это сохраняет базовый промпт небольшим, одновременно обеспечивая целевое использование Skills. Размер контролируется подсистемой Skills отдельно от общих ограничений среды выполнения на чтение и вставку:
| Область | Бюджет промпта Skills | Бюджет фрагментов среды выполнения |
|---|---|---|
| Глобально | skills.limits.maxSkillsPromptChars |
agents.defaults.contextLimits.* |
| Для каждого агента | agents.list[].skillsLimits.maxSkillsPromptChars |
agents.list[].contextLimits.* |
Бюджет фрагментов среды выполнения охватывает memory_get, результаты инструментов в реальном времени и обновления AGENTS.md после Compaction.
Документация
Раздел Документация указывает на локальную документацию, когда она доступна (docs/ в рабочей копии Git или документация встроенного пакета npm), а в противном случае использует https://docs.openclaw.ai. В нём также указывается расположение исходного кода OpenClaw: рабочие копии Git предоставляют локальный корень исходного кода, а установки из пакета — URL исходного кода на GitHub с инструкциями изучить его там, если документация неполна или устарела.
Промпт определяет документацию как авторитетный источник для самопознания OpenClaw до того, как модель поймёт принципы работы OpenClaw (память/ежедневные заметки, сеансы, инструменты, Gateway, конфигурация, команды, контекст проекта), и предписывает модели рассматривать AGENTS.md, контекст проекта, заметки рабочей области/профиля/памяти и memory_search как контекст инструкций или пользовательскую память, а не как знания о проектировании и реализации OpenClaw. Если документация ничего не сообщает или устарела, модель должна указать это и изучить исходный код. Промпт также предписывает модели самостоятельно запускать openclaw status, когда это возможно, и обращаться к пользователю только при отсутствии доступа.
В частности, для конфигурации он направляет агентов к действию config.schema.lookup инструмента gateway для получения точной документации и ограничений на уровне отдельных полей, а затем к docs/gateway/configuration.md и docs/gateway/configuration-reference.md для более общих рекомендаций.