Разделить исполнение и проверку
Fellow исследует и исправляет. Review Attending, другой экземпляр агента, ищет дефекты. Discharge Nurse проверяет, что ревью и CI действительно завершены.
Пять месяцев MOLT Sinai: как GitHub Actions, независимое ревью и строгие правила превращают работу coding-агентов в проверяемый процесс.
Качество создают проверки между этапами: отдельный агент утверждает план и код, ещё один проверяет соблюдение процесса. Для клиентского продукта команда добавила человеческое ревью каждого слияния.
Fellow исследует и исправляет. Review Attending, другой экземпляр агента, ищет дефекты. Discharge Nurse проверяет, что ревью и CI действительно завершены.
Воспроизведение ошибки, диагноз, файлы, тесты и риски фиксируются до реализации. Изменился объём работы — план снова проходит ревью.
Изменение больше 1 000 строк, включая тесты, дробят по графу зависимостей. Для затянувшихся циклов ревью ввели явный порог эскалации.
За эксперимент потратили более $135 000 на токены. Очереди ревью, избыточные инструкции и задачи, которые агенты находят сами, требуют отдельных ограничений.
Задача хранится в GitHub issue. Метки задают состояние и запускают workflows; записи и служебные файлы сохраняют ход работы.
Определяет серьёзность и сложность; принимает или отклоняет задачу.
Воспроизводит ошибку, изучает код и пишет план исправления.
Утверждает подход или возвращает задачу на исследование.
Пишет код по утверждённому плану. Новый объём требует нового согласования.
Проверяет дефекты, регрессии, безопасность и соответствие плану.
Проверяет approval, закрытые обсуждения, зелёный CI и историю коммитов.
Схема конспекта по описанию авторов. Отклонённый план возвращается к исследованию; замечания к коду и красный CI — к реализации; тупик ведёт к эскалации.
Chief of Medicine — человек, который разрешает тупики и принимает задачи в работу. Charge Nurse каждые 30 минут ищет зависшие этапы. Infection Control останавливает workflows при поломке main. Safety проводит еженедельные разборы, Research предлагает новые задачи.
Роль задаётся Markdown-скиллом. По наблюдению авторов, короткое описание роли помогает модели применять уже знакомые ей правила диагностики, передачи дела и второго мнения. Эта же метафора иногда порождает лишнюю бюрократию.
Нельзя отключать или ослаблять тест ради зелёного результата. Ревью начинается с отключения исправления: новые тесты должны упасть. Если неверен сам тест, его исправляют отдельным коммитом с отдельным обоснованием и ревью.
Застрявший агент пишет I-PASS: серьёзность, сводка, действия, риски ситуации и подтверждение понимания. Получатель сначала пересказывает, что понял, затем продолжает работу.
Последний этап сверяет наличие approval, заполненный шаблон, разрешённые обсуждения, CI и чистую историю. Невыполненный пункт блокирует слияние; повторное ревью кода этот этап не заменяет.
Перед эскалацией агент читает журнал прежних решений и применяет подходящий прецедент со ссылкой. Новые прецеденты создаёт только человек.
Для изменений свыше 1 000 строк обязательна повторная декомпозиция. В issue остаются планы, протокол падающего теста, передачи дела, вердикты, модель, токены, время и стоимость. Подробные записи хранятся в сопутствующей архивной ветке, чтобы diff PR содержал код.
Данные авторов для зеркала репозитория MOLT с 21 апреля по 11 сентября. Объём кода и число отмен не измеряют все возможные дефекты.
| Показатель | Результат |
|---|---|
| Слитые PR с реализацией | 1 238 |
| Закрытые задачи | 1 322 |
| Задачи, созданные агентами | 1 299 |
| Слитые PR, которые позже отменили | 7 |
| Задачи, дошедшие до человека-Chief | 92 |
| Медианный размер PR | 527 добавленных строк |
Система внесла более миллиона строк. Почти половину задач агенты создали сами: подзадачи, найденные пробелы, предложения Research и исправления по итогам Safety. Уже со второго месяца люди перестали быть главным источником новых задач.
Главным продуктом стал Migration Assistant для переноса PostgreSQL в CockroachDB: конвертация схемы и процедур, загрузка и проверка данных. На момент статьи он находится в preview и почти целиком написан агентами.
Одна исходная задача превратилась в 32 подзадачи и 27 слитых PR. Ревью возвращало работу 55 раз; из девяти эскалаций две дошли до человека. Покрытие тестами авторы оценили как сопоставимое с PostgreSQL.
Поддержка Oracle в 2024 году заняла девять месяцев и около $160 000 инженерного времени. Для Db2 авторы заявляют ускорение в 164 раза и удешевление в 38 раз. Это разные задачи, периоды и категории затрат, а не контролируемый бенчмарк.
Значительную часть времени задача ждёт человека-ревьюера. Сначала все этапы работали на Opus. Затем планирование перевели на Fable; план выбирает модель для реализации, а Sonnet или Opus при затруднениях могут эскалировать к Fable. Названия моделей приведены как в источнике.
Раз в несколько недель команда настраивает скиллы под модели и расходы. Стоимость зависит и от состава задач: UI требует обработки скриншотов, а особенности CI добавляют повторные проходы. Сумма токенов не включает все расходы на эксплуатацию и человеческую работу.
Июльский аудит 25 скиллов, более 100 000 слов, нашёл около 23 000 лишних слов. В одном файле избыточность достигла 47%. Discharge Nurse загружает около 21 800 слов, или 29 000 токенов, ещё до чтения PR.
В выделенном репозитории Sinai около 1 570 коммитов; примерно 1 340, или 85%, написала сама система. Так появился обход зависших задач после гонки событий меток GitHub Actions. Модель уже применяют в четырёх репозиториях.
Аудит инструкций: В статье ↗ · Развитие Sinai: В статье ↗
Однострочное исправление прошло 11 кругов за два дня. В другом окне Safety три задачи с 9, 9 и 7 кругами съели около $631 из $1 046. Блокерами становились формулировки, описание PR и отклонения от плана.
Теперь передача Attending обязательна после четырёх последовательных кругов с новым блокирующим замечанием в каждом либо шести содержательных кругов любого типа. Изменение недавнее; данных об эффективности пока мало.
Research сначала запускался каждые три часа. Его перевели на ежедневный запуск и ограничили очередь десятью предложениями, ещё не принятыми в работу. Отбирать действительно ценные задачи всё равно приходится людям.
Автоматизация удобна опытным инженерам, но хуже учит диагностике и компромиссам. Команда разрабатывает режим, в котором человек пишет и защищает план перед агентом, а затем сам реализует решение и проходит ревью.
Часть бюрократии уже убрали: подтверждённые дубликаты больше не должны требовать отдельной эскалации, а необязательные замечания ревьюера не должны автоматически рождать новые задачи. Возврат к автономным слияниям для отдельных классов задач остаётся направлением экспериментов.
Практические шаги по мотивам опыта авторов. Это рекомендации конспекта; пороги стоит проверить на своих задачах.
Five months treating bugs like patients and coding agents like a medical team
Adam Storm и Rafi Shamim · Cockroach Labs · 9 октября 2026.
Migration Assistant — продукт, ради которого развивали процесс. Sinai PR #691 — упомянутый авторами пример из репозитория системы.
I-PASS — структурированная передача дела. Circuit breaker — порог, который прерывает повторяющиеся попытки и запускает эскалацию. Независимое ревью здесь означает другой экземпляр агента с отдельной ролью.