Перейти к содержимому
17.5k

Слои промпта Codex

Codex собирает свой промпт из слоёв: собственных базовых инструкций, документации вашего проекта, контекста разрешений и среды, установленных навыков и других компонентов. Codex Set → Prompt показывает этот стек, сообщает стоимость каждого слоя и позволяет отключить ненужные части.

В каждой строке указаны её позиция в порядке сборки, управляющий ею ключ конфигурации, если он существует, и размер фактически отправленного содержимого.

В нумерации позиций есть пропуски. Это сделано намеренно: числа соответствуют реальным индексам сборки, а два из них перечислены ниже в разделе Уведомления о переходах. Если заново нумеровать каждую группу с единицы, получится порядок, который Codex не использует.

Вид Что можно сделать
Переключается здесь Настоящий переключатель. Записывает ключ в config.toml.
Управляется флагом функции Реальный слой, но изменяется в настройках функций, а не на этой странице.
Всегда включён В Codex нигде нет переключателя для его отключения.
При изменении Сообщает о переходе, поэтому появляется только при изменении.
Слой расширения Нельзя вывести в списке. Codex их не предоставляет.

У слоя без возможности отключения переключатель вообще не показывается, а не отображается неактивным. Серый элемент управления создавал бы впечатление, что такая возможность существует, но временно недоступна, хотя это не так.

Нажмите на название слоя, чтобы увидеть отправляемый им текст. Диалоговое окно получает его из codex debug prompt-input, поэтому показывает реальное содержимое, а не описание.

Иногда показывать нечего, и диалоговое окно указывает причину:

  • Файл существует, но пуст. Ваш файл ~/.codex/AGENTS.md имеет нулевой размер, поэтому слою нечего отправлять. В диалоговом окне указан путь.
  • Он ничего не отправил в прочитанном нами ходе. Слои отправляются повторно только при изменении, поэтому неизменившийся слой отсутствует в отдельном образце.
  • Базовый промпт берётся из каталога моделей. Codex отправляет его вне доступного для чтения списка, поэтому диалоговое окно читает его из записи каталога для выбранной модели или из файла, указанного в model_instructions_file, если он задан. Если в каталоге опубликован только неразвёрнутый шаблон, диалоговое окно сообщает, что текст не показан: Codex отправляет не его.
  • Не удалось прочитать промпт. Проверка на этом компьютере завершилась с ошибкой.

Данные считываются из вашего глобального домашнего каталога Codex (~/.codex), а не из каталога, в котором в данный момент запущен дашборд.

+ Add layer добавляет в конец ваши собственные инструкции. Пользовательские слои объединяются в developer_instructions, который работает аддитивно: Codex сохраняет свои инструкции и добавляет к ним ваши.

Пользовательские слои нумеруются между собой, потому что объединяются в один раздел именно в таком порядке — они не чередуются со встроенными слоями.

Меняйте порядок стрелками в строке или сочетаниями Alt + Up / Alt + Down из любого места строки. Это порядок объединения.

Панель показывает суммарный размер включённых слоёв относительно лимита в 128 КиБ для developer_instructions, а также сворачиваемый предпросмотр объединённого текста — слой, который выведет раздел за предел, виден до сохранения, а не после него.

При удалении слоя сначала запрашивается подтверждение, а затем на несколько секунд предлагается Отменить: слой возвращается на прежнюю позицию, поэтому список, где важен порядок, переживает ошибочное действие.

+ Add layer предлагает пять отправных точек: краткий вывод, планирование до редактирования, объяснение рассуждений, сначала тесты и ответы на корейском языке. Каждая открывается в обычном редакторе с предварительно заполненным, полностью редактируемым текстом: предустановка — лишь отправная точка, а сохранённый результат становится обычным пользовательским слоем.

Предустановки содержат наш собственный текст, сформулированный для передачи сути подхода, а не для копирования чьего-либо промпта. В каждой указан её источник.

Переход между слоями во время редактирования

Заголовок раздела «Переход между слоями во время редактирования»

В редакторе есть элементы управления переходом назад и вперёд и индикатор позиции. Несохранённые изменения сохраняются при переходах, поэтому можно сравнить два слоя во время редактирования и вернуться назад, не потеряв введённый текст.

Редактор предупреждает, если слой содержит инструкции, которые не будут работать в написанном виде: заявляет другую идентичность, называет инструмент, определённый в реестре, использует шаблонные заполнители, которые ничем не раскрываются, или указывает сведения о среде, которые Codex создаёт позже. Также отмечаются вставленные учётные данные (API-ключ в слое уходит модели открытым текстом при каждом запросе), формулировки, предписывающие модели отбросить предыдущие инструкции, и заявленная на корейском языке идентичность, отличная от Codex.

Это только предупреждения, они никогда не блокируют сохранение. Если вы намерены переопределить Codex, это возможно; предупреждение лишь превращает случайность в осознанное решение.

Строка Атрибуция коммитов указывает модели добавлять трейлер Co-authored-by: Codex в создаваемые ею коммиты и строку Generated with Codex. в открываемые ею пул-реквесты.

Переключателя для неё нет ни здесь, ни в [features]: Codex определяет её по политике атрибуции вашей учётной записи. Отключение на уровне учётной записи не убирает слой — вместо этого Codex отправляет обратную инструкцию, предписывающую модели не добавлять трейлер. В любом случае что-то отправляется, поэтому строка указана как задаваемая вашей учётной записью, а не как всегда включённая.

Базовый промпт — единственный слой, который нельзя отключить, потому что модель без базового промпта не является работающим агентом. Однако его можно заменить, и именно это делает переключатель в строке Базовые инструкции.

Откройте строку, чтобы увидеть выбор вариантов. Переключаться между ними можно свайпом в сторону, клавишами со стрелками влево и вправо или кнопками со стрелками — именно кнопки озвучивает программа чтения с экрана, поэтому страница остаётся доступной для управления без тачпада.

Вариант Что это Редактируется
Собственный базовый промпт Codex ключ model_instructions_file отсутствует в вашей конфигурации никогда
Ваш вариант промпт, который вы пишете сами; хранится в ~/.codex/opencodex-prompt-base/ да
Второй вариант то же самое, всего до двух да

В первом варианте нечего редактировать и нет кнопки Сохранить, и диалоговое окно объясняет причину, а не показывает неактивные элементы управления. Значение по умолчанию — это не хранимая нами копия промпта Codex, а отсутствие ключа. Поэтому здесь нет текста ни для изменения, ни для удаления, и выбор этого варианта просто снова убирает model_instructions_file из вашей конфигурации.

В редакторе вариантов действуют те же защитные правила, что и в редакторе пользовательских слоёв: несохранённые правки сохраняются при переходе между вариантами, при закрытии с правками запрашивается подтверждение на удаление, а во время ввода тело сверяется с лимитом 64 КиБ на вариант.

Если базовый промпт уже заменён чем-то другим

Заголовок раздела «Если базовый промпт уже заменён чем-то другим»

Если model_instructions_file указывает на файл, созданный не opencodex, выбор вариантов не выполняется, и панель сообщает, куда указывает ключ. Она не станет молча перенаправлять ключ, заданный вами или другим инструментом. Впрочем, убирать его вручную не обязательно. Импортировать как вариант преобразует файл: предпросмотр показывает точный устанавливаемый текст — строку заголовка # с названием варианта и нормализованное тело файла — а название можно отредактировать до подтверждения. Тело может занимать не более 64 КиБ после нормализации (bodyBytes); полный файл на диске, включая заголовок, чуть больше (serializedBytes). Подтверждение привязано к показанному тексту хэшем, поэтому если файл — или выбранное название — изменится за это время, импорт откажется, а не установит текст, который вы не видели. Если хотите начать со значения по умолчанию, уберите ключ сами.

Это тот же принцип, что и при импорте developer_instructions: панель сообщает о том, что нашла, а решение принимаете вы.

Переключение применяется к новым сеансам, как и любое другое изменение на этой странице.

Если developer_instructions уже существует и был записан не opencodex, панель не станет его перезаписывать. Вместо этого она предложит импортировать текст как слой: сначала вы увидите существующее значение, и до подтверждения ничего не будет записано.

Если сохранённые слои и значение в config.toml расходятся, панель сообщает об этом и предлагает Repair, а не исправляет всё без уведомления. Два варианта исправления перезаписывают созданный вами текст, поэтому требуют осознанного действия. Прерванная запись («journal present») — это только восстановление под блокировкой по состояниям файлов, записанным в журнале. Текущий список не сохраняется повторно, а отсутствующее содержимое не создаётся. Если файлы не совпадают ни с одним записанным состоянием, восстановление отклоняется, а данные для диагностики сохраняются. Обновлённая панель сообщает об оставшихся расхождениях. Если файл слоя пропал, перед любыми изменениями создаётся резервная копия.

Изменения применяются к новым сеансам. Уже запущенный сеанс сохраняет настройки промпта, с которыми он был запущен.

opencodex читает один файл конфигурации — ваш config.toml. Codex определяет настройки по нескольким слоям, поэтому показанное здесь значение отражает содержимое ВАШЕГО файла, а не обязательно итоговое значение, вычисленное Codex.

Они находятся в config.toml Codex, а не в собственной конфигурации opencodex.

Ключ По умолчанию Слой
include_permissions_instructions true Разрешения
include_collaboration_mode_instructions true Режим совместной работы
include_environment_context true Контекст окружения
include_apps_instructions true Приложения
skills.include_instructions true Навыки
developer_instructions не задан Пользовательские слои, объединённые по порядку
model_instructions_file не задан Базовый промпт, когда выбран вариант

Запись выполняется построчно: ваши комментарии и форматирование сохраняются, а незнакомый opencodex ключ остаётся нетронутым, а не удаляется.

Отсутствующий ключ читается как значение по умолчанию, а не как false. Панель показывает значение, которое действительно есть в файле, и сообщает, когда ключ не задан.

Строка с явным значением также предлагает Сбросить к умолчанию — она удаляет строку ключа, а не записывает умолчание обратно. Только в таком состоянии файл следует за умолчанием, если Codex позже его изменит, — запись key = true заморозила бы сегодняшнее умолчание как переопределение.

Редактор простых значений отклоняет массивы, встроенные таблицы и многострочные строки до записи или сброса ключа, сохраняя исходные байты. Импорт явно сообщает о нечитаемой конфигурации. Предпросмотр заголовка не блокирует ввод; подтверждение требует предпросмотра, связанного с этим заголовком. Ошибки HTTP или сети при измерении показываются как ошибки, а не как другая выполняющаяся проверка.