"⚪️ Codex : меняем системный промпт (base instructions + developer instructions) За последнее время наткнулся дважды на эту фичу, и оба раза в контексте что не все знают про такие фичи. Я тоже в свое время не очень знал, но разбирался - поэтому думаю мои исследования могут быть полезны ""широким массам"" ИИ кодеров. Итак, у кодекса есть возможность дописать/заменить в системный промпт инструкции. ❓ В чем профит в сравнении с AGENTS.md? В отличиет от AGENTS.md, эти инструкции переживают компакт без сжатия, то есть в неизменном виде. Пишите сюда все что нужно чтобы агент соблюдал всегда, вне зависимости от контекста проекта или задачи: персонализацию под вас, ваши ""святые правила"", кастомизацию стиля общения. Ну и если вас раздражает как ведет себя кодекс - можно поменять, настроив абсолютно все под себя. Почему просто не дописать в agents.md? потому что будут конфиликты с указанынми инструкциями в системном промпте, поэтому надо править именно сам base instructions файл. Давайте разберем какие у нас возможности есть. 👉 Кодекс позволяет кастомизировать base_instructions и developer_Instructions. ▶️ base instructions - это и есть главный системный промпт агента. В исходниках - в `codex/codex-rs/protocol/src/prompts/base_instructions/default.md`. Вот оно на гитхабе: https://github.com/openai/codex/blob/main/codex-rs/protocol/src/prompts/base_instructions/default.md Смотрите, читайте. Можно (и улчше всего) на базе этого же свое делать, поменяв только чего вам там не хватает/мешает - например, можно просить подробнее все объяснять. ▶️ developer_Instructions - это возможность дописать на уровне системного промпта свои инструкции, не заменяя системный промпт. Для приверженцев менее радикальных решений. 👉 Как заменять? через параметры запуска: для base instructions: `codex -c model_instructions_file=/tmp/my-system-prompt.md` `codex exec -c model_instructions_file=/tmp/my-system-prompt.md ""сделай задачу""` для developer instructions похоже: `codex -c developer_instructions=""...""` ▶️ В ~/.codex/config.toml так: ``` model_instructions_file = ""/absolute/path/to/base_instructions.md"" developer_instructions = """""" Твои дополнительные developer-инструкции. Они не заменяют base_instructions, а добавляются отдельным developer-блоком. """""" ``` Для профиля: ``` [profiles.custom] model_instructions_file = ""/absolute/path/to/base_instructions.md"" developer_instructions = ""Дополнительные developer-инструкции"" ``` Запуск с профилем: `codex --profile custom` Важно: model_instructions_file должен быть путем к файлу, а не строкой prompt прямо в TOML. ▶️ Точно работает в CLI, но по логике должно работать и в app. —— Upd 1️⃣ : забыл сказать - base instructions сохраняются в сессиях (rollout файлы, в метаданных), поэтому без оверрайда при запуске агента старые сессии получают старые инструкции. —— Upd 2️⃣ : верное дополнение: у моделей могут быть свои инструкции, которые они берут в каталоге моделей вот тут https://github.com/openai/codex/blob/main/codex-rs/models-manager/models.json При онлайн-режиме Codex ходит в backend /models, получает свежие ModelInfo, мержит их поверх встроенного каталога и кэширует в $CODEX_HOME/models_cache.json. Его тоже можно посмотреть, там свежий тюнинг моделей. Не сравнивал, но было бы интересно сравнить - что думают разработчики про разные модели, что им надо сказать. —— Upd 3️⃣: там в кеше моделей еще есть model_messages - это более структурированная замена/надстройка над base_instructions для конкретной модели, вместо строка с готовым system/base prompt у нас шаблон, который может содержать {{ personality }} именно так инжектим некоторым моделям персоналии. model_messages.instructions_variables — набор вариантов текста для personality, например friendly/pragmatic/none Если model_messages нет или template пустой, Codex берет обычный base_instructions Если ты задаешь свой model_instructions_file/baseInstructions, Codex сбрасывает model_messages = None, чтобы твой prompt не смешивался с модельным шаблоном (ц) удачной кастомизации @deksden_notes"