← Все статьи

clod.md для локальных агентов

Как написать компактный и предсказуемый clod.md: практическое руководство для команд

Короткий clod.md — это системное напоминание для локального агента: одна ясная цель, одна ключевая команда и условные сценарии чтения. Руководство объясняет, что должно оставаться в clod.md, что вынести в отдельные файлы, как экономить токены и как проверять результат на практике.

clod.md — это не README и не полный технический бриф. По сути, это машинно-ориентированный «System Reminder»: компактный набор инструкций и навигатор к подробностям. Правильно составленный clod.md даёт агенту минимальный, но достаточный контекст, чтобы быстро выполнять типовые задачи и сокращать объём читаемых данных.

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

1. Что должна делать первая строка clod.md и почему это критично

Почему это важно

Первая строка — «сигнатура» файла. LLM воспринимает её как первичное указание: кто мы, что делает проект и зачем. Если эта строка неясна или перегружена деталями, агент может потерять фокус и неверно приоритизировать информацию.

Как сформулировать (пошагово)

  1. Сформулируйте цель в одном предложении по схеме: кто — что — зачем. Это помогает агенту соотнести запросы с назначением проекта.
  2. Добавьте ключевой артефакт (что важно ожидать) и одну главную команду запуска (smoke-команда) в том же или следующем коротком предложении.
  3. Убедитесь, что предложение краткое — одна строка или максимум одна плотная фраза.

На что обращать внимание при проверке

  • Понятность: можно ли объяснить назначение проекта коллеге за 10 секунд, прочитав только первую строку?
  • Фокус: нет ли в строке списка технологий, длинных описаний или приватных данных?
  • Реальность команды: выполняет ли указанная команда базовую проверку (smoke)?

Пример строки

"Генератор еженедельных отчётов для логистики — вход: CSV (date, sku, qty) — smoke: make report"

Типичная ошибка и её исправление

Ошибка: первая строка превращается в список: библиотеки, CI-пайплайн, тесты и форматы — всё сразу.

Исправление: оставить только назначение и одну команду; подробности вынести в docs/*. Например, в clod.md — «smoke: make report», а форматы — в docs/formats.md.

2. Что включать в clod.md: обязательный минимум и что держать отдельно

Почему это важно

clod.md должен быть тем минимальным набором информации, который агент всегда должен иметь под рукой. Всё прочее — подробные спецификации, тесты и инструкции — храните в отдельных файлах и давайте пути к ним.

Обязательный минимум для clod.md

  • Краткая цель (первая строка).
  • Одна smoke-команда и чёткое описание ожидаемого артефакта (куда пишется, как выглядит).
  • Блок IMPORTANT IF с условными сценариями чтения (см. раздел 5).
  • Короткие ссылки/пути к основным вспомогательным файлам (команды, тесты, API, форматы).

Что выносить в отдельные файлы

  • Полные спецификации форматов данных, схемы, большие примеры.
  • Тестовые сценарии с подробными шагами и CI-конфигурации.
  • Полные руководства по развертыванию и безопасности.

Как отделять содержимое (практика)

  1. Составьте список того, что агент должен всегда видеть (цель, smoke, expected artifact, IMPORTANT IF, основные ссылки).
  2. Для каждой технической детали — укажите путь к отдельному файлу вместо вставки самой детали.
  3. Перед коммитом проверьте, что все пути существуют и файлы актуальны.

Проверка готовности

  • Откройте clod.md и проверьте, что он не больше контрольной длины (ориентир — десятки строк). Если он превращается в страницу, разнесите информацию.
  • Запустите smoke-команду и убедитесь, что ожидаемый артефакт появляется там, куда вы указали.

Пример внутри clod.md

Цель и smoke: «Smoke-test: ./scripts/smoke.sh → output/report-summary.json»; далее — ссылки: docs/command-reference.md, api-specs/

Типичная ошибка и исправление

Ошибка: вставляют полные спецификации формата данных прямо в clod.md.

Исправление: кратко опишите формат (ключевые поля) и ссылку на docs/formats.md.

3. Структура и стиль: как писать, чтобы LLM не терялся и чтобы экономить токены

Почему это важно

LLM лучше обрабатывает структурированные, короткие блоки информации. Длинные абзацы и избыточные объяснения «съедают» контекст и увеличивают вероятность игнорирования важных инструкций.

Рекомендованная структура (блоки)

  • Первая строка: цель.
  • Commands: короткие строки вида "Name: команда -> ожидаемый_артефакт".
  • IMPORTANT IF: условные сценарии чтения (см. раздел 5).
  • Links: относительные пути к файлам/папкам с пояснением, когда их читать.

Как формулировать (приёмы)

  1. Используйте буллеты и короткие заголовки: LLM проще структурировать такой ввод.
  2. Для команд давайте результат: не только команду, но и то, что она должна произвести (файл, папка, строка в логе).
  3. Минимизируйте «поясняющий» свободный текст; если нужен длинный контекст — вынесите его в файл и дайте путь.

Что проверить перед коммитом

  • Отсутствие повторов системного уровня (например, если глобальный промпт уже диктует кодстайл — не копируйте его в clod.md).
  • Баланс: файл не должен быть слишком коротким (без структуры) или слишком длинным (полный бриф).

Пример компактного блока

Commands:

Smoke: ./scripts/smoke.sh -> output/report-summary.json

Типичная ошибка и исправление

Ошибка: пытаются уместить весь процесс разработки в один абзац.

Исправление: разбейте на явные рубрики и ссылки на подробности.

4. Многоуровневые clod.md: правила для глобального, проектного и локального

Почему разделение уровней важно

Когда в репозитории есть несколько clod.md на разных уровнях, агент может получить противоречивые указания. Ясное разделение ответственности уменьшает неоднозначность.

Что хранить на каждом уровне

  • Глобальный (organisation-wide): политика, стандарты, общие ограничения — коротко, со ссылкой на основной документ.
  • Проектный (repo-level): назначение проекта, критичные команды, IMPORTANT IF для всего проекта, ссылки на проектные спецификации.
  • Локальный (dev-level): персональные настройки, временные инструкции и пути к локальным ключам — но никогда не храните сами секреты в репозитории.

Как синхронизировать формулировки

  1. В project clod.md укажите ссылку на глобальный файл вместо копирования.
  2. При изменении глобального стандарта обновите проектные файлы (в идеале — через PR и CI-проверку).
  3. Включите в комментарий к каждому clod.md краткое объяснение: «Этот файл отвечает за X».

Проверка на конфликты

  • Скрипт ревизии должен находить одинаковые правила и помечать их для приведения к единой формулировке.
  • Если правила на разных уровнях расходятся — решите приоритет и опишите его в проектном clod.md.

Пример распределения

Global: "Code style: refer to global/code-style.md"; Project: "Smoke: ./scripts/smoke.sh"; Local: "LOCAL_DEV_KEY path — не коммитить"

Типичная ошибка и исправление

Ошибка: полное дублирование глобального набора правил в каждом проекте.

Исправление: держать единую «истину» на глобальном уровне и ссылаться на неё.

5. IMPORTANT IF — как задать условные сценарии чтения для экономии токенов

Почему это работает

IMPORTANT IF позволяет агенту читать минимально необходимый набор файлов в зависимости от типа задачи. Это резко снижает объём передаваемого контекста и ускоряет принятие решений.

Как составить блок IMPORTANT IF (пошагово)

  1. Определите 3–5 типовых категорий запросов (например: quick-fix, feature, API-change, UI-change, architecture).
  2. Для каждой категории укажите список файлов и папок, которые агент должен прочитать в первую очередь.
  3. Укажите поведение по умолчанию: если тип запроса не совпадает ни с одной категории или указанные файлы отсутствуют, агент либо читает расширенный набор, либо запрашивает уточнение.

Примеры формулировок

  • IMPORTANT IF: quick-fix — read: /src/*, tests/fast/
  • IMPORTANT IF: API-change — read: api-spec.md, models/, docs/contracts/
  • DEFAULT: read: docs/, src/, tests/ (или: ask for clarification)

Как тестировать и оценивать результат

  • Попросите агента выполнить quick-fix и включите лог чтения файлов: он должен ограничиться указанными путями.
  • Если агент сделал чтение лишних папок — расширьте блок или добавьте уточнение о зависимости.

Типичная ошибка и исправление

Ошибка: давать слишком узкие списки, которые пропускают скрытые зависимости.

Исправление: добавить резервные пути и чёткое поведение по умолчанию (например, «если тесты падают, прочитать docs/architecture/»).

6. Ссылки как навигатор: где держать подробности и как их описать

Почему ссылки важны

clod.md должен быть индексом. Указав путь и назначение файла, вы даёте агенту команду: куда идти за деталями.

Как добавлять и описывать ссылки

  • Указывайте относительные пути и маленькое пояснение: «tests/fast — smoke-тесты, выполняются быстро».
  • Помечайте большие папки: «load only on architecture changes».
  • Для файлов, которые редко изменяются, можно указывать чек-лист: «при изменении этого файла — обновить clod.md».

Как проверять корректность ссылок

  • Включите проверку в CI: при изменении clod.md тест, который убеждается, что указанные пути существуют.
  • В ревью PR требуйте подтверждение: если путь изменился — обновите clod.md вместе с изменением.

Типичная ошибка и исправление

Ошибка: ссылки указывают на удалённые или переименованные файлы.

Исправление: правило в PR — обновлять все упоминаемые пути и запускать CI-проверку наличия файлов.

7. Практический чек‑лист и минимальный шаблон clod.md

Короткий чек‑лист перед коммитом

  • Есть одна понятная строка с назначением проекта и одной ключевой командой.
  • Smoke-команда и ожидаемый артефакт указаны явно (путь и формат, если важно).
  • Блок IMPORTANT IF охватывает минимум quick-fix и feature; при возможности — ещё один тип для архитектуры.
  • Ссылки на команды, тесты и архитектуру присутствуют и проверены.
  • В файле нет секретов, длинных спецификаций и бессмысленного дублирования глобальных правил.

Минимальный шаблон (компактный, машинно-ориентированный)

Назначение: <кто> — <что> — <зачем>

Commands:

Smoke: <команда> -> <ожидаемый_артефакт>

IMPORTANT IF:

quick-fix: <список_путей>

feature: <список_путей>

Links:

docs/command-reference.md — полный набор команд

tests/fast/ — smoke-тесты

docs/formats.md — спецификации форматов

Как оценивать достаточность шаблона

  • Выполните smoke: команда создаст ожидаемый артефакт.
  • Попросите агента решить quick-fix; убедитесь, что он ограничил чтение согласно IMPORTANT IF.
  • Если агент делает лишние обращения к файлам — доработайте блоки IMPORTANT IF или добавьте пояснения к ссылкам.

Типичная ошибка и исправление

Ошибка: считать clod.md полным README и копировать туда всё.

Исправление: оставьте индекс и ссылки, переместите детали в отдельные файлы с их собственными тестами.

8. Проверка качества и ревью clod.md: быстрые приёмы

Почему ревью clod.md важно

clod.md задаёт поведение агентов. Если его меняют без ревью, поведение может стать непредсказуемым. Ревью — это не только проверка текста, но и практическая валидация: запуск smoke, проверка путей и симуляция чтения.

Процесс ревью (пошагово)

  1. Прочитать только первую строку: понятна ли роль проекта? Если нет — вернуть на доработку.
  2. Выполнить smoke-команду и проверить, что ожидаемый артефакт создаётся.
  3. Проверить блок IMPORTANT IF: воспроизвести хотя бы один сценарий (например, quick-fix) и убедиться, что агент ограничивает чтение.
  4. Проверить ссылки: CI должен гарантировать, что указанные пути существуют. Добавьте тест в CI, который валидирует это.
  5. Добавить чек‑пункт в PR-шаблон, требующий проверки clod.md при изменениях, затрагивающих поведение агента.

Как оценивать результат ревью

  • Файл проходит smoke и quick-fix сценарий без обращения к ненужным файлам.
  • Ссылка/путь существует и соответствует описанию.
  • Ревьюеры согласны с приоритетами и формулировками; при несогласии — зафиксируйте приоритет правил.

Типичная ошибка и исправление

Ошибка: ревью сводится к проверке кода, а clod.md остаётся без внимания.

Исправление: добавить явный пункт в PR-шаблон: «Проверил clod.md: smoke запускается, IMPORTANT IF актуален, пути проверены».

План первого практического шага на сегодня (быстро и ощутимо)

  1. Откройте существующий clod.md в проекте (если есть).
  2. Перепишите первую строку форматом "<кто> — <что> — <зачем>" (одна короткая фраза). Цель — чтобы коллега понял назначение за 10 секунд.
  3. Добавьте или проверьте одну smoke-команду и ожидаемый артефакт (путь и формат).
  4. Составьте минимальный IMPORTANT IF с двумя типами: quick-fix и feature; укажите 1–3 пути для каждого.
  5. Запустите smoke и добавьте в PR чек‑лист: запуск smoke и проверка путей ссылок.

Оценка результата

  • Если smoke завершился успешно и артефакт создан — базовая проверка пройдена.
  • Если агент при тестовом quick-fix ограничил чтение в соответствии с IMPORTANT IF — экономия токенов работает.
  • Если ссылки не существуют или agent читает лишние файлы — исправьте пути и расширьте IMPORTANT IF.

Заключение

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

Следуйте простому правилу: минимизируйте, структурируйте и направляйте. Минимум текста в clod.md с точными указаниями и ссылками на подробности даёт агенту опору и существенно снижает вероятность неожиданных действий.