textmachine/docs/architecture/10-prompt-architecture.md

10 KiB
Raw Blame History

Промпт-архитектура: состояние, решения, открытое (консолидированная заметка)

⚠ ДОПОЛНЕНИЕ 26.07 (пак-20, D39.4253): в промпт-слое появились роль terminologist (пар-пак, интерим-текст) и вариантный translator-banknote.md; редакторская инъекция двухсекционная (D39.45; ⚠ D39.104: доктрина инжекта — схлопывается в ЕДИНЫЙ закон-блок, маркер ⟨проверить⟩ с провода снимается, право «перевести иначе» упразднено; внесение = строка 134 ПОСЛЕ пробы 18); жанровый словарь отменён как класс (D39.47). Инвентарь §2 читать с этой поправкой.

СТАТУС-АПДЕЙТ 25.07 (оркестратор №7): несущая часть ПОСТРОЕНА. Pair-keyed промпты → конвенционный резолв prompts/<пара>/<роль>.md + конфиг-слой пары configs/pairs/ (пак-15, D39.23); repair-промпты prompts/<пара>/repair/<класс>.md (пак-16, D39.24); «структурированный пакет конвенций пары» из этой заметки остаётся дальним планом. Читать как историю темы + реестр открытого.

Собрано оркестратором 2026-07-16 по запросу владельца («где заметка про промтинг?») — тема концерна 4 арх-ресета была размазана по 08-sync-audit-ledger (дорожка L4), 09-target-architecture (§0.1, §2 слой 2), D-логу (D30.2, D39 п.7, D39.139.2) и research/1819. Здесь — одно место; при конфликте побеждает D-лог. Обновлять при каждом лендинге, трогающем промты/слой 2.

1. Четыре вопроса владельца → где ответ и что с ним

Вопрос владельца Статус Где живёт
Язык самого промпта (сейчас всё по-русски; для zh→en русский не должен участвовать) ОТКРЫТ, спроектирован: язык промпта = свойство пакета пары, не хардкод. Первый замер ИСПОЛНЕН: Р6/D39.61 — ru/en-срез ОТРИЦАТЕЛЕН (эхо-ось), «не закрыт окончательно» оговоркой; остаток — язык промпта как свойство пакета для не-ru таргетов, вернётся с ja→ru START_PROMT V4-п5 · аудит L4-prompt-language-always-russian (CONFIRMED/HIGH) · 09 §2-слой-2 · D39 п.7
Вырезать правила языка из промтов в отдельный слой (Палладий/Поливанов, дискурс-нормы, few-shot) СЕАМ ПОСТРОЕН (пак-1, D39.2): конфиг pair-keyed prompts: {zh-ru: …} + Book.LangPair() + fail-loud на чужую пару. Контент ещё НЕ извлечён — правила по-прежнему в теле zh-ru-файлов; извлечение в структурированный пакет гейтится exp15 + research/18 §D-3 («форма пакета не разрешена») research/18 §B2.2/§C#15 · 09 §2-слой-2 · D39-решение владельца «сеам сейчас, контент zh→ru» · пак-1 T3.3
Почему структура абзацев и расширенный язык-промпт — только у РЕДАКТОРА? ОСОЗНАННОЕ решение D30.2 (дешёвый буквальный черновик + вся реструктуризация у умного билингв-редактора; exp12: построчность = корень нечитаемости), альтернатива «переводчик отдаёт структуру» — Q4a ИЗМЕРЕН (D39.9: верность на translate-стадии не покупается), ⚠ «Q4b/Q4c не гонялись» ПРОТУХЛО — испр. 22.08: Q4b прогнан отдельным экспериментом и ПРИНЯТ (эксп-19, docs/experiments/19-editor-contract-q4b.md, D39.108 — диффы ОТЛОЖЕНЫ), а топологию решил эксп-21 (D39.117: full-regen подтверждён, точечная починка как ЗАМЕНА редактора отклонена и принята формой «механический пре-гейт ПЕРЕД редактором», строка 142). Не гонялся только Q4c. Асимметрия сохранена по данным; diff-контракт редактора — строка 106 D-лог D30.2 (05:366 — «механизм реверстки — открытый вопрос») · аудит L1-*/H3 · research/19 §C · exp15 Q4
Все промты zh→ru-центричны — неправильно для мультиязычного бэкенда Ратифицирован инвариант общности (09 §0.1, поправка владельца 13.07): пара = ось данных, не кода. Латентный баг закрыт паком-1 (ja-книга теперь fail-loud, не едет тихо через «китайский паратаксис»). Новая пара = новый пакет-данные, не переделка кода 09 §0.1 · D39 п.7 · пак-1 T3.2/T3.3 · аудит H2

2. Инвентарь промтов (после пака-1/1.5, HEAD)

⚠ Пути таблицы устарели механически: промпты живут ПАР-каталогами backend/prompts/zh-ru/<файл> (+ zh-ru/repair/, + classifier.md — D39.69); читать <файл> как zh-ru/<файл> (испр. оркестратором 04.08, D39.101).

Файл Роль Что внутри Пара
backend/prompts/translator.md черновик (flash) брифинг-переменные {{lang/genre/honorifics/transcription/venuti/footnotes}} + слабая вёрстка-однострочка (D30.2) де-факто zh→ru (ключ zh-ru в конфиге)
backend/prompts/editor.md редактор (deepseek-v4-pro БИЛИНГВ ИНТЕРИМ, D39.22; glm-5 резерв), v3 4 мандата + ДИСКУРС-ПЕРЕВЁРСТКА (Ван Цуй) + чэнъюй-атом + структурные few-shot (---FEWSHOT---, тумблер per-stage) де-факто zh→ru
backend/prompts/editor-mono.md референс-вариант D13.1 (не боевой) узкий моно-мандат
backend/prompts/judge-selector.md Ф2 (не исполняется)
  • analyst.md — снесён паком-1 (сирота). terminologist.md ВОЗРОЖДЁН паком-20 (D39.42/45): живая роль пар-пака backend/prompts/<пара>/terminologist.md (интерим-текст, финальный — по замерам); рядом — translator-banknote.md (вариантный шиппинг-файл банкноты, D39.45/53).

Правила, сидящие В ТЕЛЕ промтов (кандидаты на извлечение в пакет пары после exp15): русское тире-оформление диалога; «пиши живым русским»; паратаксис→гипотаксис-блок; чэнъюй-политика; few-shot-примеры (структурные, по-русски). Переменные брифа ({{transcription}} и пр.) — уже данные книги, НЕ пакета.

3. Целевая форма (слой 2, 09 §2) — куда движемся

Версионируемый пакет конвенций пары src→tgt[×genre], снапшот-folded: дискурс-правила пары + few-shot (в языке пары) + язык промпта + нормы транскрипции (Палладий для zh→ru, Поливанов для ja→ru — как выбираемые политики) + лимитеры полноты. Стадия резолвит промпт из пакета по Book.LangPair() (сеам уже работает). Гейты на стройку: exp15 (какие правила реально несут) + research/18 §D-3 (форма пакета).

4. Открытое по теме (маршрутизировано)

  1. Язык промпта — первый замер Р6/D39.61 отрицателен (см. §1); добор — с реальной не-ru книгой (ja→ru).
  2. Извлечение правил в пакет — exp15 ЗАВЕРШЁН; данные-часть майнера ИЗВЛЕЧЕНА (D39.16: zh/Палладий-инвентари → internal/lang+configs/langpacks/, тот же pair-keyed идиом, что промпты, снапшот-фолд langpack-байтов ПОСТРОЕН (LangpackVersion, D39.15/16)); извлечение правил из ТЕЛА zh-ru-промтов (дискурс/few-shot) — ещё открыто, форсинг = ja→ru-реплика. x/text/language.Tag ОТВЕРГНУТ для гейт-предикатов (CLDR-инстабильность в вердиктах — D39.16).
  3. Транскрипция per-book (Палладий/Поливанов vs фандомные формы) — research/19 §E.3, решение владельца НЕ горит (дефолт: политика в пакете пары, слой 2); {{transcription}}-переменная уже есть.
  4. Билингв-редактору src→dst вместо голых dst-форм? — открытый дизайн-вопрос D30.1, после exp15.
  5. Q4a/Q4c exp15 — где жить структуре (переводчик/редактор/отдельный пасс) — решится эмпирикой.