clod.md для локальных агентов
Как написать компактный и предсказуемый clod.md: практическое руководство для команд
Короткий clod.md — это системное напоминание для локального агента: одна ясная цель, одна ключевая команда и условные сценарии чтения. Руководство объясняет, что должно оставаться в clod.md, что вынести в отдельные файлы, как экономить токены и как проверять результат на практике.
clod.md — это не README и не полный технический бриф. По сути, это машинно-ориентированный «System Reminder»: компактный набор инструкций и навигатор к подробностям. Правильно составленный clod.md даёт агенту минимальный, но достаточный контекст, чтобы быстро выполнять типовые задачи и сокращать объём читаемых данных.
В этом тексте вы найдёте конкретные правила, пошаговые инструкции и шаблон для быстрого старта. Для каждого пункта я укажу: что написать, почему это важно, как проверить, и приведу пример и типичную ошибку с исправлением.
1. Что должна делать первая строка clod.md и почему это критично
Почему это важно
Первая строка — «сигнатура» файла. LLM воспринимает её как первичное указание: кто мы, что делает проект и зачем. Если эта строка неясна или перегружена деталями, агент может потерять фокус и неверно приоритизировать информацию.
Как сформулировать (пошагово)
- Сформулируйте цель в одном предложении по схеме: кто — что — зачем. Это помогает агенту соотнести запросы с назначением проекта.
- Добавьте ключевой артефакт (что важно ожидать) и одну главную команду запуска (smoke-команда) в том же или следующем коротком предложении.
- Убедитесь, что предложение краткое — одна строка или максимум одна плотная фраза.
На что обращать внимание при проверке
- Понятность: можно ли объяснить назначение проекта коллеге за 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-конфигурации.
- Полные руководства по развертыванию и безопасности.
Как отделять содержимое (практика)
- Составьте список того, что агент должен всегда видеть (цель, smoke, expected artifact, IMPORTANT IF, основные ссылки).
- Для каждой технической детали — укажите путь к отдельному файлу вместо вставки самой детали.
- Перед коммитом проверьте, что все пути существуют и файлы актуальны.
Проверка готовности
- Откройте 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: относительные пути к файлам/папкам с пояснением, когда их читать.
Как формулировать (приёмы)
- Используйте буллеты и короткие заголовки: LLM проще структурировать такой ввод.
- Для команд давайте результат: не только команду, но и то, что она должна произвести (файл, папка, строка в логе).
- Минимизируйте «поясняющий» свободный текст; если нужен длинный контекст — вынесите его в файл и дайте путь.
Что проверить перед коммитом
- Отсутствие повторов системного уровня (например, если глобальный промпт уже диктует кодстайл — не копируйте его в clod.md).
- Баланс: файл не должен быть слишком коротким (без структуры) или слишком длинным (полный бриф).
Пример компактного блока
Commands:
Smoke: ./scripts/smoke.sh -> output/report-summary.json
Типичная ошибка и исправление
Ошибка: пытаются уместить весь процесс разработки в один абзац.
Исправление: разбейте на явные рубрики и ссылки на подробности.
4. Многоуровневые clod.md: правила для глобального, проектного и локального
Почему разделение уровней важно
Когда в репозитории есть несколько clod.md на разных уровнях, агент может получить противоречивые указания. Ясное разделение ответственности уменьшает неоднозначность.
Что хранить на каждом уровне
- Глобальный (organisation-wide): политика, стандарты, общие ограничения — коротко, со ссылкой на основной документ.
- Проектный (repo-level): назначение проекта, критичные команды, IMPORTANT IF для всего проекта, ссылки на проектные спецификации.
- Локальный (dev-level): персональные настройки, временные инструкции и пути к локальным ключам — но никогда не храните сами секреты в репозитории.
Как синхронизировать формулировки
- В project clod.md укажите ссылку на глобальный файл вместо копирования.
- При изменении глобального стандарта обновите проектные файлы (в идеале — через PR и CI-проверку).
- Включите в комментарий к каждому 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 (пошагово)
- Определите 3–5 типовых категорий запросов (например: quick-fix, feature, API-change, UI-change, architecture).
- Для каждой категории укажите список файлов и папок, которые агент должен прочитать в первую очередь.
- Укажите поведение по умолчанию: если тип запроса не совпадает ни с одной категории или указанные файлы отсутствуют, агент либо читает расширенный набор, либо запрашивает уточнение.
Примеры формулировок
- 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, проверка путей и симуляция чтения.
Процесс ревью (пошагово)
- Прочитать только первую строку: понятна ли роль проекта? Если нет — вернуть на доработку.
- Выполнить smoke-команду и проверить, что ожидаемый артефакт создаётся.
- Проверить блок IMPORTANT IF: воспроизвести хотя бы один сценарий (например, quick-fix) и убедиться, что агент ограничивает чтение.
- Проверить ссылки: CI должен гарантировать, что указанные пути существуют. Добавьте тест в CI, который валидирует это.
- Добавить чек‑пункт в PR-шаблон, требующий проверки clod.md при изменениях, затрагивающих поведение агента.
Как оценивать результат ревью
- Файл проходит smoke и quick-fix сценарий без обращения к ненужным файлам.
- Ссылка/путь существует и соответствует описанию.
- Ревьюеры согласны с приоритетами и формулировками; при несогласии — зафиксируйте приоритет правил.
Типичная ошибка и исправление
Ошибка: ревью сводится к проверке кода, а clod.md остаётся без внимания.
Исправление: добавить явный пункт в PR-шаблон: «Проверил clod.md: smoke запускается, IMPORTANT IF актуален, пути проверены».
План первого практического шага на сегодня (быстро и ощутимо)
- Откройте существующий clod.md в проекте (если есть).
- Перепишите первую строку форматом "<кто> — <что> — <зачем>" (одна короткая фраза). Цель — чтобы коллега понял назначение за 10 секунд.
- Добавьте или проверьте одну smoke-команду и ожидаемый артефакт (путь и формат).
- Составьте минимальный IMPORTANT IF с двумя типами: quick-fix и feature; укажите 1–3 пути для каждого.
- Запустите smoke и добавьте в PR чек‑лист: запуск smoke и проверка путей ссылок.
Оценка результата
- Если smoke завершился успешно и артефакт создан — базовая проверка пройдена.
- Если агент при тестовом quick-fix ограничил чтение в соответствии с IMPORTANT IF — экономия токенов работает.
- Если ссылки не существуют или agent читает лишние файлы — исправьте пути и расширьте IMPORTANT IF.
Заключение
Короткий, сфокусированный clod.md — это инвестиция в предсказуемость поведения локального агента. Он не заменяет документацию проекта, но задаёт ей направление: что важно, какие команды выполнять в первую очередь и какие файлы читать для разных задач.
Следуйте простому правилу: минимизируйте, структурируйте и направляйте. Минимум текста в clod.md с точными указаниями и ссылками на подробности даёт агенту опору и существенно снижает вероятность неожиданных действий.