В середине 2025-го я попробовал ускорить кодинг с помощью LLM. И… нет. Просто нет. Я писал libadbmdns на Rust, а модель выдавала код, который даже не компилировался. Спасибо, как говорится, до свидания.
Потом январь 2026-го. Вторая попытка. И — о чудо! — LLM написала сложный класс indexed-binary heap и даже нашла жуткий баг в крейте polling из-за Windows IOCP. Я почти поверил в магию. Но качество… Макароны без комментариев, структура уровня «сойдёт для студенческой лабы». Скорость плюс, а уборка кода съедала всё время. Знакомо?
Итерации, итерации, итерации
К марту я переселился в агентные IDE — Antigravity, Claude Code. Появилась возможность «итерировать» staged-код. Я превратился в бесконечно терпеливого наставника для младшего программиста. «Убери магические числа». «Добавь короткий комментарий». «Функция на 40 символов — это перебор». Качество резко выросло. Но в каждой новой сессии я повторял одно и то же.
Утомительно? Ещё как!
Входит agent.md
Тут-то и выяснилось: когда стартует сессия, харнесс читает файл agent.md и вставляет его в промпт. Идеальное место для тонкой настройки стиля. Я начал записывать туда всё, что повторял. Получился мой личный свод законов.
Например:
- Никаких магических чисел и строк — только константы или enum.
- Меньше вложенности. Ранний
returnиcontinue— твои друзья, а не Arrow Anti-Pattern. - Короткие имена функций — до 30 символов.
- Enum вместо булевых параметров. Вы когда-нибудь пытались понять, что значит
trueвopen_file(true, false)? Я тоже. - Пустые строки между логическими блоками. Код должен дышать.
- Комментарии — что и почему, с примерами. Для сложных систем — ASCII-схемы.
Отдельная боль — commit messages. Семь правил: тема до 50 символов, заглавная первая буква, без точки в конце, императив. Тест: «Если применить этот коммит, он [ваша тема]». Гениально же!
И главное правило: сначала тест, увидь, как он падает, потом фикс, увидь, как проходит. TDD в действии.
Контекст тает — правила плывут
Есть подлый феномен — «размытие контекста» из статьи Lost in the Middle. Чем длиннее контекст, тем хуже модель помнит середину. Инструкции из agent.md просто тонут.
Рецептов у меня два:
- Держать контекст коротким — новая сессия на фичу.
- Когда код снова превращается в кашу, писать прямо в чат: «Reload agent.md».
Работает.
Самообновляющийся кодекс
Редактор не нужен. Когда появляется новое правило, прошу агента обновить agent.md. Он сам дописывает строку. Удобно? Безумно.
Но! Это не волшебная таблетка. LLM по-прежнему галлюцинирует, и читать код всё равно надо. Теперь, правда, я фокусируюсь на архитектуре и дизайне, а не на стиле. И это, пожалуй, главный выигрыш.