
Совет — зная это, вы уже можете командовать
Суть храповика в одном предложении: при каждом добавлении функции hurl –test должен проходить, чтобы перейти дальше. Это и есть храповик. Как шестерёнка не вращается назад — прошедший тест не ломается.
Не верьте “Готово!”. ИИ оптимистичен — 40 из 527, а говорит “Готово”. Проверяйте числом — TODO = 0 значит конец. До этого — не конец.
Агенту при массовых задачах:
Агенту: “Запусти tsma next, напиши тест для функции со статусом TODO. Когда тест пройдёт, переходи к следующей через tsma next. Повторяй до появления All functions complete!”
Это всё. tsma next определяет следующую задачу, верификатор (go test, hurl –test) судит о прохождении, машина объявляет “конец”. ИИ только генерирует.
Не указывайте метод — указывайте контракт. Не “делай TDD”, а “этот тест должен проходить”.
Почему нужно командовать именно так
Пять принципов Ratchet Pattern
- Условие завершения механическое. pass/fail, а не “looks good”.
- PASS неизменяем. Прошедший элемент не открывается заново.
- LLM только генерирует. Что исправлять, прошло ли, что дальше, закончено ли — решает машина.
- Право на определение завершения отбирается у агента. “Готово” от LLM = 40. “Готово” от машины = 527.
- Verifier должен быть детерминистическим.
go test, coverage, Hurl — да. “looks cleaner” — нет.
tsma — инструмент храповика на практике
Агент должен знать одну команду: tsma next. Эта команда движет весь цикл:
$ tsma next # показывает следующую функцию без теста
→ агент пишет тест
$ tsma next # обнаруживает новый тест, запускает, измеряет покрытие
→ 100%? PASS. Следующая.
→ <100%? Показывает непокрытые ветви с номерами строк.
Повторять до “All functions complete!”
Результат: 527 функций
| Результат | Функций | Доля |
|---|---|---|
| PASS (100% покрытие ветвей) | 246 | 46,7% |
| DONE (best-effort) | 281 | 53,3% |
| TODO (необработанные) | 0 | 0,0% |
TODO = 0. Все 527 функций обработаны. Храповик заставил агента дойти до конца.
Агенты умирают. Прогресс выживает.
Агенты обязательно падают — лимит токенов, сетевые ошибки, разрыв сессии. tsma сохраняет прогресс в .tsma/session.json. Новый агент продолжает с того места, где упал предыдущий. Агенты одноразовые. Прогресс накапливается.
Verifier заменяется — инструмент меняется
| Храповик + Verifier | Назначение |
|---|---|
Храповик + go test + coverage | Генерация тестов для функций |
Храповик + hurl --test | Проверка API-эндпоинтов |
Храповик + yongol validate | Целостность SSOT-спецификаций |
| Храповик + filefunc validate | Правила структуры кода |
Паттерн один. Verifier определяет домен.
Итоги
- LLM хорошо генерирует, но не может судить о завершённости. Говорит “Готово” на 40.
- Передайте определение завершённости машине — и будет 527. Это Ratchet Pattern.
- Не указывайте метод — указывайте контракт.
- Разрешение обратной связи определяет точность исправления. “строка 41 не покрыта” в 10 раз эффективнее “провал”.
- Агенты умирают, прогресс сохраняется. session.json — контрольная точка.
Связанные статьи
Полный курс Reins Engineering
| Урок | Название |
|---|---|
| Урок 1 | Как командовать ИИ |
| Урок 2 | Как не доверять ИИ |
| Урок 3 | Нерушимое приложение |
| Урок 4 | Решения — за пределы кода |
| Урок 5 | ИИ на поводьях |
| Урок 6 | Прошёл — зафиксировал |
| Урок 7 | Как обратить лесть |
| Урок 8 | Фабрика агентов |
| Урок 9 | Автоматизация за пределами кода |
| Урок 10 | Закон данных |
Источники
- TDAD, ACM AIWare 2026 — процедурные указания “делай TDD” ухудшают регрессию до 9,94%, предоставление тестовых файлов в контексте снижает до 1,82% (-70%).