Перейти к содержимому

Как работает фреймворк написания статей

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

В пайплайне ~18 шагов, но статьёй владеют пять из них:

PLANstructure +fact contractWRITEall prose is born hereVOICErhythm + voice rulesFRAMEintro · about ·conclusion · FAQGATEthe singlesanitize score verdict

Всё до PLAN — подготовка (фетч, суммаризация, выравнивание по онтологии, выбор автора); всё между владельцами — механика (картинки, референсы, вёрстка). Ни один шаг вне WRITE не имеет права порождать прозу; ни один шаг вне GATE — выносить вердикт. Практический выигрыш: когда регрессирует тон, подозреваемый ровно один шаг.

Драфтинг читает исследовательский корпус контракта в трёх точках (планирование, письмо, гейт), а секция источников строится cited-first: только источники, которые текст реально использовал, а не стена извлечённых-но-проигнорированных ссылок. Кросс-энкодерный реранкер переупорядочивает извлечённые факты перед промптом — измеренный рычаг качества, который fail-open (падение реранкера ухудшает ранжирование, но никогда не блокирует генерацию).

Автор выбирается из ростера контракта взвешенным случайным розыгрышем, и его биография кормит владельца VOICE как сырьё — голос это per-author свойство, а не глобальная константа.

Структурные шаги требуют структурного вывода — буквально. LLM-вызовы, обязанные вернуть JSON, используют провайдерский JSON-schema decoding (грамматика ограничивает генерацию) — после живых проб, показавших, что две правдоподобно выглядящие альтернативы были тихими no-op на провайдере. Старый патч «чинить обрезанный JSON» удалён; провал парсинга теперь идёт измеряемым фолбэк-путём вместо тихого, а guard-тест пинует факты о провайдере, чтобы регрессия не прокралась обратно.

Генерация секций идёт конкурентно под семафором — секции независимы по построению, как только владелец PLAN зафиксировал структуру и контракт фактов, поэтому параллелизм ничего не стоит связности.

Шаг GATE — единственная точка вердикта пайплайна: механический sanitize, скоринговая батарея, сигналы бренд-безопасности, проверки заземления — скопленные последовательными поколениями спек в одном месте. Это самый большой шаг пайплайна с большим отрывом, и это и есть дизайн: гейты должны нарастать здесь, а не рассыпаться по шагам.

Числовые цели хартии выполнены не все — гейт-шаг разросся сильно за целевой размер по мере приземления новых проверок, а одна запланированная консолидация шагов не случилась. Параллелизм секций уехал вместе с промоушеном версии без собственного выделенного A/B-протокола (дизайн-док до сих пор числит это открытым). Оба отклонения видимы и трекаются — хартия это направление, к которому пайплайн прижимают, а не миф о совершенстве.

Запись прогона любой статьи перечисляет каждый шаг с таймингом и исходом; страница Жизненный цикл версий объясняет, почему каждое изменение этого фреймворка — новый неизменяемый карв.

Спеки: SPEC-066 (хартия), SPEC-115 (cited-first референсы), SPEC-119 (schema-контролируемый вывод + пробы провайдера), SPEC-094 (параллелизм секций), SPEC-069 (замороженные инпуты).