← Назад к блогу

Как написать хороший program.md: Практическое руководство по инструкциям для AI-агентов

· Save Team
markdownaiprogram-mdautoresearchkarpathyguidebest-practices

Autoresearch Андрея Карпаты доказал, что хорошо написанный Markdown-файл может направлять AI-агентов к реальным научным открытиям за ночь. Но не все файлы program.md одинаковы.

Качество ваших Markdown-инструкций напрямую определяет качество вывода AI-агента. Расплывчатый program.md производит случайные, ненаправленные эксперименты. Точный — целенаправленные, накапливающиеся улучшения.

Вот как написать program.md, который действительно работает.

Структура хорошего program.md

Каждый эффективный program.md нуждается в пяти разделах, будь то ML-исследование или любая другая агентно-направленная работа.

1. Контекст: что нужно знать агенту?

Агент начинает с нулевым пониманием вашего проекта. Ваша первая задача — дать ему достаточно контекста для принятия разумных решений.

Что включать:

  • Что делает проект
  • Как выглядит кодовая база
  • Ключевые файлы и их назначение
  • Специфическая терминология предметной области
  • Текущее состояние и известные проблемы

Что пропустить:

  • Очевидную информацию, которую LLM уже знает
  • Детали реализации, которые он может прочитать из кода
  • Историю, не влияющую на текущие решения

2. Цели: что должен оптимизировать агент?

Это самый критичный раздел. Агенту нужна чёткая, измеримая цель.

В autoresearch цель проста: снизить val_bpb (валидационные биты на байт). Агент может измерить это после каждого 5-минутного запуска тренировки.

Для ваших собственных проектов определите успех в терминах, которые агент может оценить:

  • «Снизить время загрузки страницы ниже 2 секунд»
  • «Увеличить покрытие тестами выше 80%»
  • «Уменьшить размер бандла как минимум на 15%»

Расплывчатые цели вроде «сделать код лучше» дают расплывчатые результаты. Измеримые цели дают целенаправленные улучшения.

3. Ограничения: что агент никогда не должен делать?

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

Распространённые ограничения:

  • Не изменять тестовые файлы или код оценки
  • Не менять публичный API
  • Не вводить новые зависимости
  • Не превышать бюджет памяти
  • Сохранять читаемость и поддерживаемость кода

В autoresearch ключевое ограничение — можно изменять только train.py. Пайплайн данных, код оценки и тестовый набор заблокированы. Это предотвращает махинации агента с метриками.

4. Стратегия: как агент должен подходить к проблеме?

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

Хорошие стратегические инструкции:

  • «Начните с настройки гиперпараметров перед архитектурными изменениями»
  • «Сфокусируйтесь на механизме внимания — текущая реализация может быть неоптимальной»
  • «Сначала попробуйте техники регуляризации: dropout, weight decay, layer norm»
  • «Избегайте изменений, увеличивающих время тренировки более чем на 10%»

Плохие стратегические инструкции:

  • «Попробуй всё» (слишком расплывчато)
  • «Измени строку 47 на learning rate 0.001» (слишком конкретно — вы занимаетесь микроменеджментом)

Золотая середина — направляющие указания, позволяющие агенту исследовать в продуктивных границах.

5. Оценка: как агент должен судить об успехе?

Агент должен знать, как измерить, помогли ли его изменения. В autoresearch это встроено в цикл: если val_bpb улучшился, сохранить изменение; если нет — откатить.

Для других контекстов определите критерии оценки:

  • Какие метрики важны?
  • Какой порог считается улучшением?
  • Как агент должен обрабатывать неоднозначные результаты?
  • Когда агент должен остановиться и доложить?

Распространённые ошибки

Слишком расплывчато

«Сделать модель лучше» не даёт агенту никакого направления. Конкретно определите, что означает «лучше», как это измерить, и какие подходы пробовать первыми.

Слишком конкретно

«Измени строку 47 на learning rate 3e-4» противоречит цели agentic-инжиниринга. Вы должны задавать направление, а не диктовать реализацию. Дайте агенту исследовать.

Забыть ограничения

Без ограничений агенты найдут путь наименьшего сопротивления — что часто не то, чего вы хотите. Агент, которому сказали «сократи время тренировки», может пропустить половину обучающих данных, если вы не указали иное.

Не итерировать

Ваш первый program.md не будет идеальным. Наблюдайте, что делает агент, видите, где что-то идёт не так, и обновляйте инструкции. Лучшие файлы program.md эволюционируют через десятки итераций.

Цикл итераций

Написание program.md — не единоразовый процесс. Это цикл:

  1. Напишите начальный program.md
  2. Запустите агента
  3. Просмотрите что делал агент
  4. Обновите инструкции на основе того, что работало и что не работало
  5. Повторите

Каждая итерация делает инструкции точнее. После нескольких раундов у вас будет program.md, стабильно производящий хорошие результаты.

Это ключевой навык agentic-инжиниринга: не написание кода, а написание всё более эффективных инструкций для агентов через итерации.

Создание справочной библиотеки

Лучшие файлы program.md не берутся из ниоткуда. Они построены на глубоком знании предметной области — документация, статьи, лучшие практики и примеры.

Когда вы встречаете полезный справочный материал в сети, сохраняйте его как Markdown. Тогда при написании program.md вы можете включать релевантный контекст, ссылаться на конкретные техники и давать агенту необходимые фоновые знания.

Исследователи, получающие лучшие результаты от autoresearch, — не просто хорошие писатели. Это эксперты в предметной области с хорошо организованными справочными материалами, которые они могут синтезировать в чёткие инструкции для агентов.


Save конвертирует любую веб-страницу в чистый Markdown — идеально для создания справочной библиотеки, питающей эффективные файлы program.md. Попробуйте Save бесплатно.