textmachine/backend/configs/pipeline-c2.yaml

84 lines
5.3 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.

# Скелет ядра C2: generate-then-select (Р2). Тот же раннер, что C1 — различия
# только в конфиге: fan-out N кандидатов + стадия select. Фаза 0 фиксирует
# СХЕМУ (парсится и валидируется); исполнение fan-out/селекции — механика
# раннера Фазы 2 (пилот 4 рук решает, войдёт ли C2 в прод).
core: C2
version: 1
defaults:
max_output_ratio: 2.2
min_max_tokens: 2048
context:
glossary_injection: selective
glossary_token_budget: 800
cache_ttl: "5m"
# STMDepth/OverlapTokens сняты (WS2 §2а — carryover не строим).
retries:
regenerate_before_escalate: 1
# Эхо-регенерация ДО эскалации — довод, замер и ОБА режима (budget_usd>0 против =0) в
# pipeline-c1.yaml. Кратко: эхо flash стохастично по вызову (D39.61), поэтому ре-ген на той же
# модели либо заменяет хоп (дороже в 5.40 раза по леджеру coldrun-v16), либо, когда эскалация
# выключена, выкупает дыру за один дешёвый вызов.
regenerate_echo_before_escalate: 1
stages:
- name: draft
role: translator
model: deepseek-v4-flash
prompt_version: v2-reflow-nogenre # D30.2 reflow, ПЛОСКИЙ translator.md по конвенции — не банкнотный вариант, который везёт C1; лейбл поэтому и другой (label-SHA дисциплина)
temperature: 0.8 # C2: кандидаты сэмплируются горячее (Р2: T=0.61.0)
# D39.92 / row 112: "off" on deepseek-v4-flash is an ABSENT key ⇒ vendor default `high` ⇒ empty
# content, finish=length. Rationale in pipeline-c1.yaml.
reasoning: "low"
# Judge-селектор (пара судей, шкала Комиссарова) — Фаза 2; стадия объявлена,
# чтобы схема конфига не менялась: селектор получает N кандидатов от draft.
# Судья Р4 — Gemini (нативный адаптер, Фаза 2); провизорно glm-5, чтобы скелет
# валидировался (Anthropic убран из стека). C2 в Фазе 0 не исполняется.
- name: select
role: judge
model: glm-5
# Роль judge держит промпт judge-selector.md — имя файла НЕ совпадает с ролью, поэтому здесь
# осознанный prompt_override вместо конвенции prompts/<пара>/<роль>.md (пак-15).
prompt_override: ../prompts/zh-ru/judge-selector.md
prompt_version: v0-skeleton
temperature: 0
# ⚠ DO NOT FLIP. Row 112 and the standards prompt both address this line as "the draft stage"; it is
# stage `select` (judge, glm-5). On glm-5 control=extra_body_disable, so "off" is a LIVE thinking
# disable, and low|medium|high emits nothing (no on_extra_body) ⇒ thinking back ON ⇒ ×3 timeouts.
reasoning: "off"
- name: edit
role: editor
# C2 — неисполняемый скелет Фазы 0/1 (fan-out/select — механика Ф2). Модель/бамп следуют
# за C1: дефолт-редактор по D39.22 — deepseek-v4-pro ИНТЕРИМ (glm-5 — резерв, pipeline-arm-glm.yaml).
# reasoning:off = NO-OP на dspro (ReasoningNone) → thinking ON; floor 8000 из models.yaml. (Стадию
# select выше — judge/glm-5, Gemini-слот Ф2 — НЕ трогаем: это судья, не редактор.)
model: deepseek-v4-pro
# Бамп v2-bilingual-reflow→v3-discourse-reflow (label-SHA дисциплина: тот же editor.md, что в C1 —
# вшито P1a-ядро ДИСКУРС-ПЕРЕВЁРСТКИ, D37 §2а; лейбл обязан следовать за новым SHA файла).
prompt_version: v4-discourse-reflow-nogenre
temperature: 0.4
reasoning: "off" # NO-OP на deepseek-v4-pro (ReasoningNone) → thinking ON; НЕ вооружает эхо-мину
few_shot: false # deepseek-thinking CoT сбивается ручными примерами (exp14 §2а) — как в C1
gates:
coverage:
enabled: false
sent_cov_min: 0.75
min_chunk_chars: 500
regression_guard:
# D38.4 п.5 (обязательство, не исполненное к rerun2 — D39.34). C2 несёт стадию edit, значит переход
# черновик→финал у него есть и гард не вырожден. Никогда не вердикт; флип не двигает снапшот.
enabled: true
escalation:
chains:
# ⚠️ ИНТЕРИМ-ЗАГЛУШКА, НЕ контракт. Ратифицированная D3: канал A deepseek-v4-pro →
# glm-5.1 → gemini-3.1-pro, канал B grok-4.3 (эти модели/провайдеры gemini/openai в
# models.yaml не заведены — цены/ключи; заводка — отдельный шаг). Провизорный kimi-k2.6.
default: [kimi-k2.6]
adult: [kimi-k2.6]
budget_usd: 0
fanout:
candidates: 3 # C2: N кандидатов (fan-out — механика раннера, N — конфиг)