PurpleSchool — курсы программирования онлайн
  • Пути
    • Frontend React разработчик
    • Frontend Vue разработчик
    • Backend разработчик Node.js
    • Fullstack разработчик React / Node.js
    • Mobile разработчик React Native
    • Backend разработчик Golang
    • Devops инженер
    • Backend разработчик Python
  • Подписка
  • AI для кодаНовое
  • О нас
    • Отзывы
    • Реферальная программа
    • О компании
    • Контакты
  • Иконка открытия меню
    • Сообщество
    • PurpleПлюс
    • AI Собеседование
    • AI тренажёр
    • Проекты
PurpleSchool — платформа бесплатных roadmap и курсов для разработчиков
ютуб иконка
Telegram иконка
VK иконка
VK иконка
Курсы
ГлавнаяКаталог курсовFrontendBackendFullstack
Практика
КарьераПроектыPurpleПлюсPurpleMax
Материалы
БлогБаза знаний
Документы
Договор офертаПолитика конфиденциальностиПроверка сертификатаМиграция курсовРеферальная программа
Реквизиты
ИП Ларичев Антон АндреевичИНН 773373765379contact@purpleschool.ru

PurpleSchool © 2020 -2026 Все права защищены

  • Курсы
    • FrontendИконка стрелки
    • AI разработкаИконка стрелки
    • BackendИконка стрелки
    • DevOpsИконка стрелки
    • MobileИконка стрелки
    • ТестированиеИконка стрелки
    • Soft-skillsИконка стрелки
    • ДизайнИконка стрелки
    Иконка слояПерейти в каталог курсов
  • Бесплатно
    • Курсы
    • JavaScript Основы разработкиPython Основы PythonCSS CSS FlexboxКарта развитияВопросы для собеседований
    • База знанийИконка стрелки
    • Новостные рассылкиИконка стрелки
  • PurpleSchool — курсы программирования онлайн
    • Подписка
    • AI для кодаНовое
    • Сообщество
    Главная
    Сообщество
    AGENTS.md: как написать инструкции для Codex и OpenCode

    AGENTS.md: как написать инструкции для Codex и OpenCode

    Аватар автора AGENTS.md: как написать инструкции для Codex и OpenCode

    Антон Ларичев

    Иконка календаря19 сентября 2026
    AI-инструментыopenaiDevOpsразработкаmiddleИконка уровня middle
    Картинка поста AGENTS.md: как написать инструкции для Codex и OpenCode

    AGENTS.md: как написать инструкции для Codex и OpenCode

    AGENTS.md — это файл в корне репозитория, из которого кодовый агент узнаёт, как собирать проект, чем запускать тесты и каких соглашений держаться. Формат открытый и намеренно простой: обычный Markdown, обязательных полей нет, заголовки любые. Codex, OpenCode, Cursor, Gemini CLI, Aider, Zed, Windsurf, Roo Code, Kilo Code, Junie и ещё полтора десятка инструментов ищут файл с этим именем сами — вы пишете один файл, и вся команда получает одинаково настроенных агентов независимо от того, кто каким пользуется.

    Ниже — что писать внутрь, как этот файл читают Codex и OpenCode (а читают они его по-разному), и почему иногда он молча не применяется.

    Что такое AGENTS.md и зачем он нужен

    Идея формата описана его авторами как «README для агентов»: у людей есть README и CONTRIBUTING, а у агента до этого не было предсказуемого места, куда заглянуть за контекстом проекта. AGENTS.md занял это место.

    Практическая польза вылезает быстро. Агент не знает, что в вашем монорепозитории пакеты ставятся не через npm, что тесты гоняются одной командой, а линтер — другой, и что в этом проекте не принято трогать сгенерированные файлы. Без такого файла он каждый раз угадывает заново, а угадывает он по содержимому репозитория и не всегда верно. С файлом — читает и делает.

    Ключевых свойств формата три:

    • Обязательных полей нет. Это чистый Markdown, агент просто разбирает текст. Никакой схемы соблюдать не нужно.
    • Побеждает ближайший файл. Если инструкции конфликтуют, приоритет у того AGENTS.md, который ближе к редактируемому файлу. Прямая просьба в чате перебивает всё.
    • Команды из файла агент действительно выполняет. Если вы перечислили проверки, он попытается их запустить и починить падения до того, как отдаст результат. Это не декоративный документ.

    Последнее стоит принять всерьёз: AGENTS.md — живой документ, который стоит править вместе с проектом, а не написать один раз и забыть.

    Что писать внутри: минимальный пример

    Авторы формата показывают минимальный набор из трёх секций — окружение, тесты и правила для пул-реквестов. Вот такой файл уже приносит пользу:

    # Инструкции для агента
    
    ## Окружение
    - Пакетный менеджер — pnpm, не npm и не yarn.
    - Установка зависимостей одного пакета: `pnpm install --filter <package>`.
    - Имя пакета смотрите в поле name его package.json, а не в корневом.
    
    ## Тесты
    - Полный прогон по пакету: `pnpm turbo run test --filter <package>`.
    - Из папки пакета достаточно `pnpm test`.
    - Один тест по названию: `pnpm vitest run -t "<test name>"`.
    - После переноса файлов или правки импортов запускайте `pnpm lint`.
    - Не считайте задачу сделанной, пока падают тесты или проверка типов.
    
    ## Пул-реквесты
    - Заголовок в формате [<package>] Краткое описание.
    - Перед коммитом прогоняйте `pnpm lint` и `pnpm test`.

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

    Хорошие кандидаты в файл: нестандартные команды сборки, порядок запуска проверок, структура каталогов, которую по именам не угадать, настройки линтера, которые легко нарушить, и операционные особенности вроде «миграции применяются только вручную». Если у вас настроен ESLint для TypeScript, упомяните команду запуска — агент будет чинить замечания сам.

    Как AGENTS.md читает Codex

    Codex собирает не один файл, а цепочку. Алгоритм по исходникам агента такой:

    1. От текущей рабочей директории он поднимается вверх, пока не найдёт маркер корня проекта. По умолчанию маркер один — папка .git.
    2. Затем идёт от найденного корня вниз к рабочей директории и в каждой папке по пути берёт один файл инструкций.
    3. Содержимое всех найденных файлов склеивается в этом порядке — от корня к текущей папке. Выше корня Codex не поднимается.

    В каждой папке он проверяет имена по порядку: сначала AGENTS.override.md, потом AGENTS.md, потом то, что вы сами добавили в project_doc_fallback_filenames. Первое совпадение в этой папке и выигрывает — остальные имена в ней уже не смотрятся.

    Из этого следует неочевидное. AGENTS.override.md — это локальная подмена: если он лежит рядом с AGENTS.md, командный файл в этой папке не прочитается вообще, а не дополнится. Удобно, когда нужно временно переопределить правила у себя на машине, но такой файл стоит сразу занести в .gitignore, иначе ваши личные правила уедут в репозиторий и подменят командные у всех.

    Второе ограничение — размер. Общий бюджет инструкций задаётся параметром project_doc_max_bytes, по умолчанию это 32 КиБ. Когда бюджет кончается, файл обрезается по месту, а не отбрасывается целиком: агент просто не увидит хвост инструкций и никак вам об этом в интерфейсе не скажет. Пустые файлы и файлы из одних пробелов пропускаются.

    Поведение настраивается в ~/.codex/config.toml:

    # Общий бюджет на все файлы инструкций, в байтах
    project_doc_max_bytes = 65536
    
    # Запасные имена, если AGENTS.md в папке нет
    project_doc_fallback_filenames = ["CLAUDE.md"]
    
    # По чему определять корень проекта
    project_root_markers = [".git"]

    Про остальные секции этого конфига и про подключение самого агента — в статье Codex в России: как установить и настроить без VPN.

    Диаграмма поиска AGENTS.md в Codex

    Как AGENTS.md читает OpenCode

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

    1. Локальные файлы — обход вверх от текущей директории, ищутся AGENTS.md и CLAUDE.md.
    2. Глобальный файл ~/.config/opencode/AGENTS.md.
    3. Файл Claude Code ~/.claude/CLAUDE.md.

    Внутри каждой категории побеждает первый найденный. То есть если в проекте лежат и AGENTS.md, и CLAUDE.md, прочитается только AGENTS.md, а второй будет проигнорирован — это самый частый источник недоумения при переезде с одного агента на другой.

    Писать файл с нуля необязательно. В OpenCode есть команда /init: она проходит по значимым файлам репозитория, при необходимости задаёт пару уточняющих вопросов и создаёт AGENTS.md — с командами сборки, линта и тестов, структурой проекта и локальными соглашениями. Если файл уже есть, /init дополнит его, а не перезапишет вслепую.

    # запустить агента в папке проекта
    opencode
    
    # и уже внутри — собрать AGENTS.md по репозиторию
    /init

    Получившийся файл стоит закоммитить: он такая же часть проекта, как конфиг линтера.

    Отдельная возможность — подключить уже существующие документы вместо дублирования их в AGENTS.md. Список задаётся полем instructions в opencode.json в корне проекта или в глобальном ~/.config/opencode/opencode.json:

    {
      "$schema": "https://opencode.ai/config.json",
      "instructions": [
        "CONTRIBUTING.md",
        "docs/guidelines.md",
        ".cursor/rules/*.md",
        "packages/*/AGENTS.md"
      ]
    }

    Поддерживаются маски и удалённые адреса — файл правил можно держать в отдельном репозитории и подключать по URL, на его загрузку отводится 5 секунд. Всё перечисленное складывается с вашими AGENTS.md, а не заменяет их. Остальная настройка OpenCode, включая провайдера моделей, разобрана в статье OpenCode в России: установка и настройка без VPN.

    Совместимость с CLAUDE.md

    У Claude Code свой файл инструкций — CLAUDE.md, и в списке совместимости на сайте формата AGENTS.md его нет. Мост между двумя мирами строит OpenCode: он по умолчанию понимает соглашения Claude Code и подхватывает CLAUDE.md в проекте, если рядом нет AGENTS.md, а также глобальный ~/.claude/CLAUDE.md, если нет ~/.config/opencode/AGENTS.md.

    Иногда это мешает — например, когда в ~/.claude/CLAUDE.md лежат правила под другой рабочий процесс и они начинают протекать в OpenCode. Совместимость отключается переменными окружения:

    # отключить поддержку .claude целиком
    export OPENCODE_DISABLE_CLAUDE_CODE=1
    
    # отключить только чтение ~/.claude/CLAUDE.md
    export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1
    
    # отключить только скиллы из .claude/skills
    export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1

    Со стороны Codex совместимость делается вручную — через тот самый project_doc_fallback_filenames, куда достаточно добавить "CLAUDE.md". Про сам Claude Code и его подключение — в статье Claude Code в России: как подключить и настроить без VPN.

    Если в команде используют разные агенты, самый спокойный вариант — держать один AGENTS.md как основной источник, а для Claude Code рядом положить символическую ссылку:

    ln -s AGENTS.md CLAUDE.md

    Так содержимое остаётся в одном месте, и оба файла не расходятся.

    Приоритет файлов инструкций в OpenCode

    AGENTS.md в монорепозитории

    Вложенные файлы — не теория, так устроены сами агенты: в репозитории OpenCode AGENTS.md лежит и в корне, и в отдельных пакетах. Разумное разделение выглядит так:

    AGENTS.md                      # общее: пакетный менеджер, стиль коммитов
    packages/api/AGENTS.md         # своё: миграции, переменные окружения
    packages/web/AGENTS.md         # своё: сборка фронтенда, правила компонентов

    Дальше важно помнить, что результат зависит от агента. Codex, запущенный в packages/api, прочитает корневой файл и файл пакета и склеит их — общие правила плюс частные. У OpenCode правило другое: в категории локальных файлов побеждает первый найденный при обходе вверх, то есть ближайший. Рассчитывать на автоматическую склейку корневого и пакетного файла здесь не стоит — надёжнее перечислить их явно в instructions в opencode.json, благо маски это позволяют.

    Отсюда практическое правило: не повторяйте в дочерних файлах то, что уже написано в корневом, но и не рассчитывайте, что дочерний файл автоматически получит корневые правила у любого агента. Если проект живёт в монорепозитории на TypeScript, проверьте поведение своим агентом на одной задаче, прежде чем разносить инструкции по пакетам.

    Частые ошибки при настройке

    Файл лежит выше корня проекта. Codex не поднимается выше папки с маркером .git. AGENTS.md в домашней директории или на уровень выше репозитория просто не будет найден.

    AGENTS.override.md забыт в репозитории. Он перекрывает AGENTS.md в своей папке целиком. Один случайно закоммиченный override — и вся команда работает по чужим локальным правилам.

    Инструкции не влезли в бюджет. 32 КиБ по умолчанию — это много для осмысленного файла и мало для свалки из всей документации проекта. Хвост обрежется тихо, поэтому лучше держать файл коротким, чем поднимать лимит.

    CLAUDE.md остался рядом с AGENTS.md. В OpenCode он будет проигнорирован. Это не ошибка конфигурации, это документированное поведение, но выглядит как «правила не работают».

    В файле общие слова вместо команд. Строка «пишите качественный код» не меняет поведение агента. Строка с конкретной командой линтера — меняет.

    Что делать дальше

    AGENTS.md решает вопрос «что агент должен знать о проекте», но остаётся вопрос «каким агентом работать». Формат для того и придуман, чтобы этот выбор был свободным: один файл читают и Codex, и OpenCode, и Cursor с Windsurf, так что менять инструмент можно без переписывания инструкций.

    Чтобы пользоваться этими агентами из России, нужен доступ к моделям. На тарифах AI для кода один ключ и общий баланс токенов работают и с Codex, и с Claude Code, и с OpenCode, и с Cursor — без VPN и с оплатой российской картой. Попробовать разные агенты на одном и том же AGENTS.md и оставить тот, что удобнее, ничего дополнительно не стоит.

    Иконка глаза1 919

    Комментарии

    0
    Бесплатный курс

    Учитесь программировать с AI-агентом — бесплатно

    Курс «AI в обучении: OpenCode и skills»: поставите агента и разберёте с ним любую тему — как эту статью.

    opencode

    >объясни этот код и дай задачу

    ◆Читаю src/server.ts…

    ✓Разбор готов: 4 шага

    ✓Задача → practice/01.md

    • Установка и настройка OpenCode
    • Агент и skills на практике
    • 13 уроков, 3 модуля
    Начать бесплатно

    0 ₽ · доступ сразу после регистрации

    Бесплатные лекции

    Лучшие курсы по теме

    изображение курса

    HTML и CSS

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.9
    3 999 ₽ 6 990 ₽
    Подробнее
    изображение курса

    CSS Flexbox

    Антон Ларичев
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.9
    бесплатно
    Подробнее
    изображение курса

    Основы JavaScript

    Антон Ларичев
    AI-тренажерыAI-тренажеры
    Практика в студииПрактика в студии
    Гарантия
    Бонусы
    иконка звёздочки рейтинга4.8
    3 999 ₽ 6 990 ₽
    Подробнее

    Похожие статьи

    Картинка поста OpenCode Desktop: как установить на Windows, macOS и Linux
    Иконка аватараАнтон
    Иконка календаря09 октября 2026
    AI-инструментыDevOpsopenai+ 2middleИконка уровня middle

    OpenCode Desktop: как установить на Windows, macOS и Linux

    Ставим OpenCode Desktop на Windows, macOS и Linux и подключаем Claude без VPN: форма Custom Provider в приложении не работает — обходим через opencode.json.

    Иконка чипа0
    Иконка глаза1 620
    Иконка комментариев0
    Картинка поста CLAUDE.md: как написать инструкции для Claude Code
    Иконка аватараАнтон
    Иконка календаря11 октября 2026
    AI-инструментыClaude CodeDevOps+ 1middleИконка уровня middle

    CLAUDE.md: как написать инструкции для Claude Code

    CLAUDE.md — это файл с инструкциями по проекту, который Claude Code читает в начале каждой сессии. Положите его в корень репозитория и опишите внутри, чем проект собирается, чем запускаются тесты и каких соглашений держаться в коде. После этого агент перестанет спрашивать одно и то же в каждом новом диалоге и предлагать решения, которые в вашей кодовой базе не приняты. Формат предельно простой: обычный Markdown, обязательных полей нет, заголовки любые. Дальше — где именно создавать файл и как Claude Code собирает инструкции сразу из нескольких мест, что писать внутрь, как подключать к файлу другие документы и чем CLAUDE.md отличается от AGENTS.md. Одна оговорка перед началом: Claude Code обновляется часто, набор команд и поддерживаемых файлов пополняется. Если какая-то деталь ниже ведёт себя у вас иначе, сверяйтесь с документацией той версии, которая стоит у вас.

    Иконка чипа0
    Иконка глаза890
    Иконка комментариев0
    Иконка аватараАнтон
    Иконка календаря10 октября 2026
    AI-инструментыClaude CodeDevOps+ 2middleИконка уровня middle

    Агенты в OpenCode: как создать своего агента

    Агент в OpenCode — это именованный профиль работы: своя модель, свой системный промпт и свой список разрешённых инструментов. Чтобы создать своего агента, нужно описать его отдельным markdown-файлом в папке `.opencode/agent/` внутри проекта (или в `~/.config/opencode/agent/`, если агент нужен во всех проектах) либо объявить его в блоке `agent` файла `opencode.json`. После этого агент появляется в списке доступных, и его можно вызвать прямо в сессии.

    Иконка чипа0
    Иконка глаза1 465
    Иконка комментариев0
    Иконка чипа0