Полтора года без ручного кода: почему инструкции ИИ-агенту не заменяют инженерную дисциплину

Полтора года без ручного кода: почему инструкции ИИ-агенту не заменяют инженерную дисциплину

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

Зачем всё это нужно, если уже есть файл правил

Современные ИИ-агенты для программирования, такие как Claude Code и Cursor, позволяют разработчику перестать писать код вручную. Вместо этого человек формулирует задачу, а агент генерирует код, тесты, делает локальный рефакторинг. За полтора года автор прошёл более тридцати проектов — от экспериментов до боевых систем. Работа велась с использованием Claude Code, Cursor и других агентов.

У каждого агента есть файл с инструкциями — например, CLAUDE.md у Claude Code. Туда записывают стиль кода, разрешённые библиотеки, особенности проекта. Агент читает этот файл перед работой. На простых задачах этого достаточно.

Но на сложных проектах одного файла недостаточно. Автор выделил три случая, показавших его ограниченность.

Задача на один модуль, правки в семи. Агент выполнил задачу в одном модуле, но заодно изменил общую вспомогательную библиотеку, которой пользовались другие модули. Технически всё было корректно, тесты прошли. Но через день начались сбои в трёх модулях. Агент действовал как инициативный новичок: увидел повторяющийся код — вынес, не спросив. Опытный разработчик остановился бы и уточнил. Агент — нет.

Уверенные выдумки. При интеграции с чужим API, где документация устарела, агент додумал поведение сервиса. Он сгенерировал логику повторных запросов, но два из пяти сценариев работали неверно. Агент заполнил пробелы в данных и сделал это уверенно, без предупреждений. Человек хотя бы проверил руками или оставил комментарий. Агент просто делает.

Тесты, которые тестируют фантазию. При сбросе пароля сервер возвращал разные ответы на существующий и несуществующий email. Это уязвимость: злоумышленник может перебирать адреса и выяснять, кто зарегистрирован. Такой сценарий не был покрыт тестами. Это, в первую очередь, ошибка автора — он не указал его в задании. Но с человеком рядом есть шанс, что коллега спросит: "А проверял на несуществующий адрес?" С агентом такого нет.

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

Как строился процесс

Методология вырабатывалась постепенно, из провалов. Каждая ошибка подсказывала, что нужно добавить в процесс.

Первые проекты: формализация задач

С людьми можно уточнить детали в процессе. Агент не запоминает контекст между сессиями. Ответ на вопрос живёт только в текущем диалоге. Поэтому автор стал формализовать каждую задачу: цель, критерии приёмки, какие файлы можно менять, какие нет, какие негативные сценарии нужно покрыть.

Это повысило FPSR (First-Pass Success Rate — доля задач, решённых с первой попытки) с 40% до 75–80% на серверных задачах в знакомой предметной области. Главное — устранение пространства для додумывания. Если в критериях написано, что на несуществующий email нужно отвечать так же, как на существующий, агент выполнит это точно.

Сортула: память проекта

На проекте Сортула (сервис для сохранения и поиска ссылок по смыслу) возникла новая проблема: агент не помнит провалы. Он трижды пытался подключить библиотеку, которая не собиралась на целевом сервере. Каждый раз — как в первый.

Решение: отдельный файл с записями о неудачных попытках. Примеры:

  • "Библиотека для хеширования паролей не собирается — нет компилятора. Взять версию на чистом JavaScript".
  • "Нельзя подавать полный текст статьи в языковую модель. Решение: резать по заголовкам, суммировать отдельно, потом собирать".

Современные агенты (на 2026 год) имеют встроенную память, но она хранит в основном то, что сработало. Журнала тупиков — "не возвращайся сюда" — по умолчанию нет. Эта идея легла в основу журнала тупиков в фреймворке TAUSIK.

Полевой учёт: контекст как документ

В проекте с мобильным веб-приложением для бригадиров агент постоянно ломал синхронизацию данных при конфликтах. Спецификация задачи помогала, но не могла вместить всю логику подсистемы.

Решение: отдельный документ — три страницы о том, как устроена синхронизация, какие есть пограничные случаи, какие решения менять нельзя. После этого задачи стали решаться с первой попытки.

Закономерность та же: агент, имеющий доступ к общему контексту, перестаёт повторять ошибки. Без документа каждый разговор начинается с нуля.

Зрелые проекты: автоматическая блокировка

Дисциплина человека нестабильна. В пятницу вечером, на тридцать первой задаче, легко пропустить проверку. Чтобы не полагаться на самоконтроль, автор внедрил ворота качества — автоматические проверки на входе и выходе задачи.

Теперь нельзя начать задачу без спецификации и нельзя закрыть без подтверждения, что все критерии выполнены. Это снизило DER (Defect Escape Rate — доля дефектов, обнаруженных после закрытия задачи) с 15% до 6%.

Это не потому, что автор стал внимательнее. Просто стало технически невозможно пропустить шаг.

Где процесс не помог

Не всё удаётся автоматизировать. Есть задачи, где стандарт не спасает.

Интерфейсы и ощущение от продукта. Даже при идеальной спецификации агент не может уловить субъективное ощущение. Кнопка может быть технически правильной, но "не той". Доля успеха с первой попытки — 30–40%, против 75–80% на сервере.

Чужие сервисы с кривой документацией. Документация платёжного сервиса обещала поле orderId, но в реальности оно приходило как order_id. Агент не может разобраться в противоречиях. Приходится сначала проверить вручную, потом уже ставить задачу.

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

Постепенное разложение архитектуры. Каждая задача решена правильно, но через полсотни правок модуль превращается в монолит. Агент не видит системы целиком. Приходится раз в две-три недели вручную проверять архитектуру.

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

Мой ответ: стандарт SENAR и фреймворк TAUSIK

Так появился SENAR (Supervised Engineering & Normative AI Regulation) — открытый стандарт инженерного процесса для разработки с ИИ-агентами. Он включает:

  • восемь правил;
  • ворота качества на входе и выходе;
  • набор метрик;
  • структуру памяти проекта.

Всё, что описано выше — формальные спецификации, журнал тупиков, контекстные документы, автоматические ворота — собрано в единый свод. Стандарт применим к любому агенту и любому стеку. Лицензия — CC BY-SA 4.0. Доступен на senar.tech и GitHub.

Но стандарт — это бумага. Поэтому автор создал TAUSIK (Task Agent Unified Supervision, Inspection & Knowledge) — фреймворк, который реализует SENAR на практике. Он:

  • автоматически собирает контекст;
  • проверяет ворота качества;
  • ведёт структурированную память проекта (включая журнал тупиков);
  • считает метрики: FPSR, DER и другие.

TAUSIK совместим с Claude Code, Cursor и другими агентами.

Ворота ловят явную халтуру. Всё, что между — остаётся на совести инженера. SENAR это признаёт. Он не претендует на решение всех четырёх описанных выше проблем. Но основную массу задач — закрывает надёжно.

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

Честное предупреждение

Всё описанное — личный опыт. N=1: один человек, полтора года, более тридцати проектов. Это не научный эксперимент и не корпоративное внедрение. Цифры — из рабочего журнала, без независимой проверки.

SENAR работает, потому что за ним стоит 20 лет опыта управления разработкой. Автор знает, какие граничные случаи прописать и какие архитектурные решения выдержат нагрузку. У новичка такого багажа нет. Сработает ли SENAR у него — неизвестно. Это один из открытых вопросов, который будет обсуждаться в шестой статье.

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

Словарь терминов

SENAR — методология контролируемой инженерии и нормативного регулирования ИИ. Открытый стандарт для работы с ИИ-агентами.

TAUSIK — инструмент, реализующий SENAR: автоматизирует ворота, метрики и память проекта.

Claude Code — ИИ-агент от Anthropic для программирования. Работает в командной строке и как расширение.

Cursor — редактор кода со встроенным ИИ-помощником, основанный на VS Code.

CLAUDE.md — файл с инструкциями для Claude Code. Аналог у других агентов.

Спецификация задачи — формальное описание: цель, критерии, файлы, негативные сценарии.

Ворота качества — автоматические проверки: нельзя начать без спецификации, нельзя закрыть без подтверждения.

FPSR — доля задач, решённых с первой попытки. Метрика качества входа.

DER — доля дефектов, обнаруженных после закрытия задачи. Метрика качества выхода.

Память проекта — хранилище решений, архитектурных особенностей и тупиков. Переживает отдельные сессии с агентом.

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

WebRTC, STUN, TURN, ICE — технологии прямого соединения между браузерами. Пример сложной предметной области.

Российский кадастр (ЕГРН, ГКН, ЕГРП) — система учёта недвижимости. До 2017 года — два реестра, после — один. Форматы XML-схем различаются.

Выборка из одного наблюдателя (N=1) — статистическая оговорка: результаты на одном человеке, не обобщаются.

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

Читать оригинал