Урок 6

Совет — зная это, вы уже можете командовать

Суть храповика в одном предложении: при каждом добавлении функции hurl –test должен проходить, чтобы перейти дальше. Это и есть храповик. Как шестерёнка не вращается назад — прошедший тест не ломается.

Не верьте “Готово!”. ИИ оптимистичен — 40 из 527, а говорит “Готово”. Проверяйте числом — TODO = 0 значит конец. До этого — не конец.

Агенту при массовых задачах:

Агенту: “Запусти tsma next, напиши тест для функции со статусом TODO. Когда тест пройдёт, переходи к следующей через tsma next. Повторяй до появления All functions complete!”

Это всё. tsma next определяет следующую задачу, верификатор (go test, hurl –test) судит о прохождении, машина объявляет “конец”. ИИ только генерирует.

Не указывайте метод — указывайте контракт. Не “делай TDD”, а “этот тест должен проходить”.


Почему нужно командовать именно так

Пять принципов Ratchet Pattern

  1. Условие завершения механическое. pass/fail, а не “looks good”.
  2. PASS неизменяем. Прошедший элемент не открывается заново.
  3. LLM только генерирует. Что исправлять, прошло ли, что дальше, закончено ли — решает машина.
  4. Право на определение завершения отбирается у агента. “Готово” от LLM = 40. “Готово” от машины = 527.
  5. Verifier должен быть детерминистическим. go test, coverage, Hurl — да. “looks cleaner” — нет.

tsma — инструмент храповика на практике

Агент должен знать одну команду: tsma next. Эта команда движет весь цикл:

$ tsma next    # показывает следующую функцию без теста
→ агент пишет тест
$ tsma next    # обнаруживает новый тест, запускает, измеряет покрытие
→ 100%? PASS. Следующая.
→ <100%? Показывает непокрытые ветви с номерами строк.

Повторять до “All functions complete!”

Результат: 527 функций

РезультатФункцийДоля
PASS (100% покрытие ветвей)24646,7%
DONE (best-effort)28153,3%
TODO (необработанные)00,0%

TODO = 0. Все 527 функций обработаны. Храповик заставил агента дойти до конца.

Агенты умирают. Прогресс выживает.

Агенты обязательно падают — лимит токенов, сетевые ошибки, разрыв сессии. tsma сохраняет прогресс в .tsma/session.json. Новый агент продолжает с того места, где упал предыдущий. Агенты одноразовые. Прогресс накапливается.

Verifier заменяется — инструмент меняется

Храповик + VerifierНазначение
Храповик + go test + coverageГенерация тестов для функций
Храповик + hurl --testПроверка API-эндпоинтов
Храповик + yongol validateЦелостность SSOT-спецификаций
Храповик + filefunc validateПравила структуры кода

Паттерн один. Verifier определяет домен.


Итоги

  1. LLM хорошо генерирует, но не может судить о завершённости. Говорит “Готово” на 40.
  2. Передайте определение завершённости машине — и будет 527. Это Ratchet Pattern.
  3. Не указывайте метод — указывайте контракт.
  4. Разрешение обратной связи определяет точность исправления. “строка 41 не покрыта” в 10 раз эффективнее “провал”.
  5. Агенты умирают, прогресс сохраняется. session.json — контрольная точка.

Связанные статьи

Полный курс Reins Engineering

УрокНазвание
Урок 1Как командовать ИИ
Урок 2Как не доверять ИИ
Урок 3Нерушимое приложение
Урок 4Решения — за пределы кода
Урок 5ИИ на поводьях
Урок 6Прошёл — зафиксировал
Урок 7Как обратить лесть
Урок 8Фабрика агентов
Урок 9Автоматизация за пределами кода
Урок 10Закон данных

Источники

  1. TDAD, ACM AIWare 2026 — процедурные указания “делай TDD” ухудшают регрессию до 9,94%, предоставление тестовых файлов в контексте снижает до 1,82% (-70%).