Глава 4. Фабрика, собравшая эту книгу
Всё, что вы прочитали до этой страницы и прочитаете после, произведено , который эта глава показывает изнутри. Не «примерно таким», не «похожим по духу» — этим самым. Один календарный день, 25 июля 2026 года, пять инструментальных сущностей, одиннадцать роевых прогонов. У дня есть судовой журнал с идентификаторами прогонов, и мы выкладываем его почти целиком: с , минутами, инцидентами и одним вендором, которого пришлось вычеркнуть из итога.
Начнём с ночной смены.
00:22. Рой читает архив
В 00:22 стартует первый : 67 получают задачу прочитать 191 файл хаотичной папки пилотного проекта — транскрипты, реестры, черновики глав, , договорные документы. Сорок восемь читателей идут по корпусу параллельно, семь агентов уходят в веб за внешними практиками, один сильный агент собирает базлайн официальной методологии, шесть «охотников за пробелами» ищут то, чего в методологии нет, пять агентов сводят найденное. Через 86,6 минуты рой останавливается. Счётчик платформы показывает 8 624 353 , 727 , ноль ошибок на всех 67 запусках. На выходе — консолидированное ядро методологии, 51 обезличенный урок и карта пробелов.
Дальше — режим, который мы называем «чистой лабораторией». Пилотный проект набит чувствительной фактурой: имена, цифры предприятия, признания респондентов. Прежде чем хоть одна строка пойдёт в публичный контур, два специализированных роя — четыре агента санитизации и три агента верификации — вычищают корпус, а git-история репозитория пересоздаётся с нуля, чтобы в ней физически не осталось следов исходников. Верификационный рой находит и закрывает пять остаточных рисков утечки. Поверх машинной проверки — три полных grep-свипа по бан-листу из примерно сорока пяти паттернов, включая кириллические омоглифы: буква «х», набранная кириллицей, для поиска не равна латинской «x», и этим когда-то уже ломался весь автоматический контроль.
Здесь же случился первый инцидент дня. Баг подстановки аргументов в промпты уронил пути: четыре агента получили на вход мусор вместо адресов, корректно адаптировались и доделали работу — но четыре файла легли в импровизированные каталоги, и переносил их я, руками, глядя на часы, показывавшие начало третьего ночи. Важная деталь для протокола: агенты не ошиблись ни разу — ошиблась , то есть я. Мы записали это как инцидент, а не как сноску, потому что события происходят с кем-то, и этот кто-то в нашей фабрике пока человек.
Одиночка против роя
К четырём утра исполнительная сводка ночной смены была готова, и по регламенту её нельзя сдавать без стороннего взгляда. На сводку выпустили одного-единственного — «холодного» ревьюера с чистым контекстом, который не видел ни одного черновика и не участвовал ни в одном рое. Он израсходовал 99 665 и шесть минут — самый дешёвый работник дня. И именно он поймал то, мимо чего прошли 67 читателей и я сам: в сводке стоял продающий множитель «30×» там, где данные защищали только «20–30×». Вердикт PASS_WITH_NOTES, пять правок, множитель понижен.
Шесть минут одиночки против полутора часов — и одинаковая ценность улова. Это не парадокс, а свойство : генерация и проверка — разные профессии, и вторая радикально дешевле, когда у неё чистый контекст и мандат портить настроение. Почему так устроен весь наш контур доверия — тема главы 3; здесь важно, что правило сработало и на самом издании.
Пять инструментов — пять характеров
Днём к фабрике подключились остальные сущности. К вечеру у каждой сложился характер — и разная степень доказуемости сделанного.
Два Claude — производственная сессия и отдельный discovery-рой — дали основную массу measured-чисел: у каждого прогона есть идентификатор в , у каждого — счётчик . Discovery-рой закрывал слой досье тремя волнами: корпус, веб, дайджест с gap-аудитом — 12 агентов, 1 370 473 токена, 321 вызов, 36,8 минуты, ноль ошибок и ноль повторных запусков на всех двенадцати. Самопроверка «заголовок против тела» — урок пилота, описанный в главе 2, — сошлась дважды.
Codex играл инженера честности: строил схемы данных, скрипт-агрегатор счётчиков и release-гейт издания. Его сессия — образец другой добродетели: тесты 24/24 PASS за 0,492 секунды в чистом окружении, а диагностический на тот момент честно не открылся — FAIL, 808 ошибок в 12 категориях на ещё не мигрированном корпусе. Провал гейта был правильным поведением: корпус действительно не был готов, и ворота, которые в такой ситуации открываются, не стоят ничего. При этом токены, стоимость и точный идентификатор модели платформа Codex не экспортирует — и в его паспорте стоит null со статусом not_instrumented, а не нолик и не прикидка. Ноль и «не измерено» — разные утверждения; фабрика, которая их путает, врёт.
Grok работал разведчиком соц-сигналов и рынка — и работал принципиально в одиночку: один агент, ноль , шесть волн. Это осознанный размен: веерный параллелизм ускорил бы поиск, но размножил бы риск рассинхрона гигиены источников; для слоя, где важен единый голос и единый реестр ссылок, глубина побила скорость. Платформа Grok не отдаёт счётчик токенов, поэтому вся его числовая часть помечена estimated — порядок величины, восстановленный по объёму артефактов, и ничего точнее. Отдельная его заслуга — он же завалил одну из наших будущих обложечных цифр, но эта история целиком принадлежит главе 5.
Antigravity был заявлен как оркестратор кросс-инструментальных волн — и стал самым поучительным персонажем дня. Его отчёт красив: тринадцать субагентов, три волны, «артефакты уровня Tier-1». Проблема в том, что в собственном журнале за весь день у него ровно одна запись — инициализация, две минуты утром, — а идентификаторов прогонов, поимённых чисел и таймкодов нет вообще. Тринадцать субагентов существуют только со слов самого инструмента.
Я вычеркнул Antigravity из measured-итога. Не потому, что не верю, что он что-то делал — пересекающийся по времени кластер синтеза виден в артефактах других сущностей. А потому, что «верю» — не категория . Красивый самоотчёт без единого run_id стоит ровно столько же, сколько доклад «датчики внедрили» из главы 1. Жалко? Да, жалко: цифра «182 + 13» смотрелась бы внушительнее. Но если в таблицу с measured-числами пустить одну строку на честном слове, вся таблица превращается в мнение.
Контраст «инструмент с телеметрией против инструмента без неё» — сам по себе главный вывод этого раздела. Мы не выбирали, кого похвалить; мы выбирали, чьи числа можно защищать перед враждебным аудитором.
Итог дня, посчитанный до единицы
Теперь сумма. За производственный день и отдельную сессию консолидации — ту самую, где из 16 читателей заново прочёл весь корпус, рой из 14 писателей собрал главы, верификационный и фикс-рои прогнали текст через (их улов разобран в главе 5), а агент-контролёр с чистым контекстом подтвердил закрытие дефектов — Claude выпустили 182 : 115 днём и 67 на консолидации. Внимательный читатель заметит, что ночной рой тоже состоял из 67 , — и заподозрит двойной счёт. Мы заподозрили то же самое и перепроверили по run_id: совпадение случайное. Ночные 67 входят в 115 производственного дня; 67 консолидации — другая сессия с другими идентификаторами: 16 читателей, 14 писателей, 22 ревьюера, 9 фиксеров и шесть служебных агентов ревалидации и контроля.
Сессия консолидации заслуживает одной детали, потому что в ней виден механизм отказоустойчивости. Из шестнадцати читателей пятнадцать сдали валидные отчёты с первого раза, один выдал структурный сбой формата. Никто не стал чинить его вывод руками и не сделал вид, что сошло: валидатор забраковал отчёт, отдельный агент перезапустил чтение и восполнил все 87 сбойного дайджеста до единого — вердикт REPAIRED записан в журнал рядом с исходным сбоем. Устойчивость конвейера — это не отсутствие сбоев, а гарантия, что сбой не проходит незамеченным и не теряет данные. Суммарный measured-счётчик — 21 609 960 токенов. Не «около 21,6 миллиона»: точность здесь — жест. Округлять числа, которые платформа отдаёт до единицы, значит выбрасывать единственное, что отличает измерение от впечатления.
Вокруг этой цифры — остальной скелет дня: 1 845 плюс 1 094 вызова инструментов, примерно 187,6 и 109,5 минуты чистого роевого времени, ноль потерянных результатов на все прогоны (один структурный сбой формата закрыт перезапуском с ревалидацией). Распределение моделей — 74% дешёвой рабочей модели и 26% дорогой: широту делает дешёвая, синтез и верификацию — сильная, и ни один дорогой агент за день не был потрачен на механическое чтение. Примерно каждый десятый агент — чистый верификатор, который не произвёл ни строки контента: это цена контура недоверия, и мы платим её сознательно — что она значит для себестоимости, считает глава 6.
И одна дыра в этой телеметрии — моя собственная. Токены главного контекста оркестратора, того окна, в котором я ставил задачи и разбирал инциденты, харнесс не пишет: в журнале они помечены not_recorded. Мы могли бы прикинуть их и приплюсовать — цифра стала бы больше и «полнее». Не стали: у нас одно правило на всех, включая себя — не подменять измерение оценкой. Пусть лучше в итоге будет дыра со статусом not_recorded, чем красивая заплата.
Как это выглядит в сырце
Слова о «машиночитаемой честности» дешевле её самой, поэтому вот три записи из реального журнала прогонов — как они лежат в репозитории, с точностью до статусов:
timeline_entries:
- label: "claude:stage1-corpus-consolidation"
run_id: "wf_af5f9b65-f77"
start: "2026-07-25T00:22:00+03:00"
agents: 67
tokens: 8624353
token_status: measured
tool_calls: 727
duration_min: 86.6
- label: "codex:T-07-data-layer"
run_id: "RUN-20260725T082240Z-codex-a7d6e501"
agents: 5 # root + 4 subagent tasks
tokens: null
token_status: not_instrumented
tests: "24/24 PASS"
- label: "antigravity:orchestration"
run_id: null
agents: 13 # self-reported, no run_id
tokens: null
token_status: self_reported
note: "заявленные 3 волны и 13 суб-агентов не подтверждены телеметрией"Три записи — три градации: measured, not_instrumented, self_reported. Одна колонка token_status делает то, чего не делает ни один известный нам отчёт о «мультиагентных системах»: разводит числа по степени доказуемости прямо в данных, а не в примечании мелким шрифтом.
А вот чем фабрика встречает инструмент на входе — фрагмент реального стартового промпта, который получил Codex утром:
Твоя суперсила — инженерная дисциплина: схемы данных, скрипты, агрегаторы, воспроизводимость. Контент глав пишут другие; ты делаешь так, чтобы ни одна цифра в прозе не разошлась с данными. […] Скрипт-агрегатор счётчиков — единственный источник всех счётчиков: любые цифры «о самом исследовании» в прозе — только из его вывода. Урок: в прошлом прогоне счётчики разошлись между документами — это не должно повториться. […] Строй так, будто его будет перепроверять враждебный аудитор.
Обратите внимание: промпт не просит «сделать хорошо». Он передаёт конкретный прошлый провал и запрещает его повторение. Фабрика учится не декларациями, а зашиванием собственных шрамов в инструкции.
И третий экспонат — те самые ворота, которые честно не открылись. Строка из отчёта release-гейта Codex в тот день:
status = FAIL, exit code 1
808 errors / 12 categories, 1 warning
среди категорий: E_PROSE_NUMBER_UNCLAIMED — 79,
E_SOURCE_ID_OUTSIDE_REGISTRY — 199, E_SCHEMA_REQUIRED — 244Семьдесят девять чисел в прозе, не привязанных к реестру клеймов. Сто девяносто девять ссылок на источники вне реестра. Гейт не оценивает красоту текста — он проверяет, что у каждой цифры есть дом, и пока домов не было, он держал ворота закрытыми. Издание, которое вы читаете, прошло через потомка этих ворот.
Паспортный стол
Сводная таблица дня — пять сущностей, приведённых к одному знаменателю честности:
| Сущность | Роль | Агентов | Токены | Статус чисел |
|---|---|---|---|---|
| Claude, производственный день | оркестратор роёв: чтение, чистая лаборатория, анализ, discovery | 115 субагентов | 13 718 066 | measured |
| Claude, сессия консолидации | рой чтения → синтез → верификация → фиксы → контроль | 67 субагентов | 7 891 894 | measured |
| Codex | инженер data-слоя и release-гейта | 1 root + 4 задачи | null | not_instrumented |
| Grok | разведка рынка и соц-сигналов, единый голос | 1, без субагентов | ~1,1–2,2 млн input | estimated |
| Antigravity | заявленная кросс-оркестрация | 13 по самоотчёту | нет | self_reported, вне итога |
Итог по строкам с измеренным статусом: 21 609 960 токенов, 182 субагента, ноль потерянных результатов. Издание о фабрике исследований произведено этой же фабрикой, и это не рекламный оборот, а проверяемое утверждение: каждый прогон из таблицы можно вскрыть до уровня отдельного агента.
Тот же принцип — телеметрия вместо обещаний — работает и на портале, который вы сейчас читаете: страница «Как это построено» показывает такой же журнал для самого сайта. Почему рой в принципе оправдан на таких задачах и где он падает — канон в плейбуке агентных роёв; этот день — его полевое доказательство. А что он стоил в деньгах и почему счёт за токены оказался наименее интересной строкой сметы — разбирает глава 6.