TextMachine project repository (AI translation of literary books). Includes: v2 architecture decisions, MVP plan, research 01-12, polygon experiments 01-03, backend-session revalidation verdict (03-implementation-notes.md). Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
80 lines
4.1 KiB
Text
80 lines
4.1 KiB
Text
@startuml pipeline
|
||
title TextMachine — поток перевода книги (v2 2026-07-04, после ревью)
|
||
skinparam wrapWidth 260
|
||
|
||
start
|
||
:Импорт книги (txt / epub v1: текст глав по spine);
|
||
:Сегментация: главы -> чанки 1-2k токенов
|
||
(по абзацам, перекрытие = read-only контекст);
|
||
:Analyst: чтение всей книги (map-reduce) -> book brief
|
||
+ translation brief пользователя (18+, слайдер Venuti,
|
||
хонорифики, транскрипция) -> brief_hash в ключ TM;
|
||
:Terminologist: автогенерация глоссария и style sheet
|
||
ДО перевода (паттерн preparation из TransAgents);
|
||
note right
|
||
Analyst / Terminologist / судья /
|
||
книжный QA — батчуемые стадии (-50%);
|
||
черновик и редактура чанков —
|
||
последовательные (STM-зависимость)
|
||
end note
|
||
|
||
while (Остались главы?) is (да)
|
||
while (Остались чанки главы?) is (да)
|
||
:Сборка контекста чанка:
|
||
кэшируемый префикс (system + brief + style sheet
|
||
+ резюме книги/арки), после кэш-брейкпоинта —
|
||
селективный глоссарий + STM + чанк;
|
||
:NSFW-классификатор (локальный, 0-3);
|
||
if (Уровень 3: несовершеннолетние?) then (да)
|
||
:Чанк НЕ переводится: скип + флаг в отчёте
|
||
(глава и книга продолжаются);
|
||
else (нет)
|
||
if (Уровень 2?) then (да)
|
||
:Канал B: Grok, open-weights,
|
||
локальная abliterated
|
||
(Anthropic исключён структурно);
|
||
else (0-1)
|
||
:Канал A: DeepSeek V4 Flash;
|
||
endif
|
||
:Translator: черновик
|
||
(C2/C3: N кандидатов разных семейств, T=0.6-1.0);
|
||
if (Ядро C2/C3: селекция?) then (да)
|
||
:Judge-селектор: попарное сравнение кандидатов
|
||
(T=0, дешёвый прескрининг CometKiwi/MBR);
|
||
else (C1)
|
||
endif
|
||
:Stylist/Editor: художественная редактура
|
||
(сильнейшая ru-модель канала, диффы, узкий мандат);
|
||
:QA-гейты без LLM: CJK-артефакты,
|
||
глоссарная консистентность (approved, по decl),
|
||
coverage-гейт v1 (сегментация, длины, refusal-blacklist);
|
||
if (Гейт сработал?) then (да)
|
||
if (Премиум-бюджет книги не исчерпан?) then (да)
|
||
:Эскалация channel-aware:
|
||
канал A - Opus / Gemini Pro,
|
||
канал B - Grok 4.3 / Gemini safety-off;
|
||
else (нет)
|
||
:Флаг чанка в отчёт (ненулевой exit code);
|
||
endif
|
||
else (нет)
|
||
endif
|
||
:Чекпоинт чанка: сырой ответ -> store (сразу после settle),
|
||
перевод -> TM (коммитится только прошедший гейты);
|
||
endif
|
||
endwhile (нет)
|
||
:Граница главы: обновить резюме (глава/арка/книга),
|
||
батч-подтверждение новых терминов (auto -> approved),
|
||
series-bible-lite (род, матрица ты/вы), телеметрия главы;
|
||
note right
|
||
Фаза 2+: Line Editor (чек-лист Галь),
|
||
Continuity Editor, анти-translationese пасс,
|
||
CometKiwi-оценка, морфодетектор канцелярита
|
||
end note
|
||
endwhile (нет)
|
||
|
||
:Книжный QA-проход: консистентность имён/терминов
|
||
по всей книге, регрессия ты/вы (батчуемая стадия);
|
||
:Экспорт txt/epub/TMX + отчёт (стоимость и cache-hit
|
||
по стадиям, флаги, журнал творческого вклада);
|
||
stop
|
||
@enduml
|