textmachine/backend/configs/pipeline-c1.yaml

109 lines
9.6 KiB
YAML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Ядро C1: draft → editor (Р2). Обязательное приложение Фазы 0 — фиксирует
# границу «конфиг vs код раннера»:
# КОНФИГ: состав/порядок стадий, роль→модель, версии промптов, сэмплинг,
# пороги гейтов, режим инъекции глоссария, токен-бюджеты сборки контекста,
# именованные эскалационные цепочки, fan-out N, cache TTL.
# РАННЕР (код): циклы по главам/чанкам, ветвление по гейтам, механика
# эскалации/ретраев, правило «эскалация → re-gate → флаг», channel-aware
# фильтр цепочек (Anthropic вне 18+), resume по чекпоинтам.
core: C1
version: 1
defaults:
# max_tokens ≈ ratio × входные токены; калибровка полигона (эксп. 01):
# русский выход zh→ru ≈1.9× входа в токенах — 2.2 с запасом на ja/en.
max_output_ratio: 2.2
min_max_tokens: 2048
context:
# Р5: обе схемы инъекции глоссария обязаны поддерживаться конфигом.
# selective — ключи/алиасы/леммы в волатильном хвосте (~100800 ток.);
# full_prefix — весь глоссарий в стабильном префиксе (выгодно при cache-hit
# DeepSeek $0.0028/M — решается расчётом на прототипе).
glossary_injection: selective
glossary_token_budget: 800
cache_ttl: "5m"
# STMDepth/OverlapTokens сняты (WS2 §2а): carryover/overlap НЕ строится (D39.7/8 — метрики
# под полом когезии 0.126); мёртвые кнобы в снапшоте приглашали тихий «re-activate».
retries:
# Содержательные регенерации после провала гейта ДО эскалации (транспортные
# ретраи — отдельно, в timeouts models.yaml).
regenerate_before_escalate: 1
stages:
- name: draft
role: translator
model: deepseek-v4-flash # интерим — переводчик по exp13 (draft качеством не мерен, D30.6); флип при развязке бейк-оффа
# Слой 2 (D39) + пак-15: промпт резолвится КОНВЕНЦИЕЙ prompts/<пара>/<роль>.md по паре книги
# (Book.LangPair()) и роли стадии — здесь prompts/zh-ru/translator.md. Пути в конфиге больше нет:
# добавить пару = положить каталог. Книга на паре без пакета промптов падает ГРОМКО на загрузке,
# называя ожидаемый путь (закрывает латентный баг «ja едет через китайский паратаксис»).
# Осознанный вариант роли (напр. editor-mono) — через prompt_override на стадии.
# D30.2 reflow: из translator.md убрано «Сохраняй разбивку на абзацы» (построчная
# вёрстка исходника деструктивна для ru — корень нечитаемости exp12 §2.5-S). Bump
# v0-draft→v1-reflow: сменил SHA промпта, осознанный --resnapshot.
prompt_version: v1-reflow
temperature: 0.3
reasoning: "off"
# single-hop echo-эскалация (D18: deepseek-эхо 25% на 蛊真人 → фолбэк выстрелит). deepseek-v4-pro —
# хоп 1 цепочки A (D3); стреляет ТОЛЬКО при escalation.budget_usd>0 (см. ниже). Escalate_to разрешён
# лишь на translator-роли (editor pinned — D12); результат ре-гейтится.
escalate_to: deepseek-v4-pro
- name: edit
role: editor
# Дефолт-редактор — deepseek-v4-pro БИЛИНГВ, ИНТЕРИМ (D39.22): пере-прогон rerun2 не короновал
# glm-vs-dspro (зазор ~шум), но dspro = судья №1 (0.679), лучшая проза+глоссарий, дефекты чинибельного
# класса (заголовки/CJK-strip → пак-13) и ×2 дешевле glm → интерим-выбор владельца. glm-5 — резервный
# арм (configs/pipeline-arm-glm.yaml); mistral исключён (D39.20 — критические смысловые аварии).
# Флип glm-5→deepseek-v4-pro отменяем одним арм-конфигом. gemini-3.1-pro — премиум-эскалация редактора
# ТОЛЬКО за санитайзером (утечка преамбул 6/6); editor pinned (не эскалирует по цепочке — D12).
# ЭХО-МИНА (несущая): deepseek резолвится в ReasoningNone (нет reasoning-capability) → reasoning:off =
# NO-OP, thinking остаётся ON (эхо-мина НЕ вооружается); floor min_max_tokens 8000 (D24.3) — из
# models.yaml, НЕ переопределять. Вход редактора — русский черновик (не CJK), эхо-класс тут вырожден.
model: deepseek-v4-pro
# Промпт — по конвенции prompts/zh-ru/editor.md (см. draft-стадию).
# Bump v2-bilingual-reflow→v3-discourse-reflow: в editor.md вшито валидированное P1a-ядро
# ДИСКУРС-ПЕРЕВЁРСТКИ + few-shot (exp14/D37 §2а — претензия-1 «рубленые абзацы» = рычаг ПРОМПТА,
# не модель; P1a реверстает дефект у всех семей). Меняет SHA промпта → осознанный --resnapshot.
# Билингв-каркас (D30.1) и omission-осторожность (D34.3) сохранены. Моно-вариант — prompts/zh-ru/editor-mono.md.
prompt_version: v3-discourse-reflow
temperature: 0.4
reasoning: "off" # NO-OP на deepseek-v4-pro (ReasoningNone) → thinking ON; НЕ вооружает эхо-мину
few_shot: false # deepseek-thinking CoT сбивается ручными примерами (exp14 §2а) — как в ратифицированном dspro-арме
gates:
coverage:
# Фаза 1. Пороги полигона (эксп. 02, символы БЕЗ пробелов): нижняя граница
# — подозрение на вырезание, верхняя — аномалия/галлюцинация.
enabled: false
sent_cov_min: 0.75
min_chunk_chars: 500 # калибровка порогов — на фрагментах 5002500 симв.
sanitizer:
# Output-санитайзер (D30.3): детерминированный вердикт-гейт «мгновенной
# нечитаемости» на ФИНАЛЬНОМ выходе — ведущие служебные преамбулы («Вот
# отредактированный перевод…»), хвостовые блоки заметок/правок, markdown-###,
# латиница-врезки в ru-выходе (порог), битые словоформы («Первок предок»). Ни
# один существующий гейт этот класс не ловит (exp12/флагманы §5). Дисциплина D2
# (flag+skip): дефект → чанк flagged, мусор не течёт в TM/экспорт. precision>recall.
# ВКЛЮЧЁН для пере-прогона 25 глав (gemini течёт преамбулой 6/6 — премиум-редактор
# за санитайзером). Версия — вердикт-ось (переедет в verdictSnapshotID с D15.2).
enabled: true
escalation:
chains:
# D3-цепочка ЗАВЕДЕНА (пакет №3; все слаги live-фактчекнуты 2026-07-10 — /models + пробный вызов):
# канал A: deepseek-v4-pro → glm-5.1 → gemini-3.1-pro-preview (кросс-семейно; апекс — mandatory-thinking Gemini).
# канал B (18+): grok-4.3 reasoning-ON (D19.1; переводчик канала B = Mistral, задаётся channel:adult-стадией — Ф2).
# ⚠️ Именованные цепочки — валидируемый конфиг для мульти-хопа (шаг 7); раннер Ф1 исполняет
# SINGLE-HOP через stage.escalate_to (draft → deepseek-v4-pro выше). Слаг ИМЕННО gemini-3.1-pro-preview
# (gemini-3.1-pro → HTTP 404, live 2026-07-10). adult-цепочка — permissive-провайдеры (D4.1).
default: [deepseek-v4-pro, glm-5.1, gemini-3.1-pro-preview]
adult: [grok-4.3]
# Адресный премиум-бюджет книги, $. Формула «≤2×» из Р5 неоднозначна — [НУЖНО РЕШЕНИЕ] п.1.
# ⚠️ budget_usd=0 ⇒ эскалация НЕ исполняется (НИ chains, НИ stage.escalate_to — escalationBudgetRemains=false;
# CheckKeys не требует её ключей). Приёмочная сессия 蛊真人 ОБЯЗАНА выставить budget_usd>0, иначе echo-эскалация
# черновика (D18) не выстрелит. Дефолт 0 держит CI/Ф0 зелёными без gemini/mistral-ключей.
budget_usd: 0
fanout:
candidates: 1 # C1: один черновик