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

46 lines
7.5 KiB
Markdown
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.

# Промпт-архитектура: состояние, решения, открытое (консолидированная заметка)
> Собрано оркестратором 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 русский не должен участвовать) | ОТКРЫТ, спроектирован: язык промпта = **свойство пакета пары**, не хардкод. Измерение «на языке цели vs оригинала vs ru» — полигон-вопрос ПОСЛЕ exp15 (нужен не-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/Q4c exp15** (сильный переводчик; reflow отдельным пассом). До exp15 асимметрия сохраняется намеренно | 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/translator.md` | черновик (flash) | брифинг-переменные `{{lang/genre/honorifics/transcription/venuti/footnotes}}` + слабая вёрстка-однострочка (D30.2) | де-факто zh→ru (ключ `zh-ru` в конфиге) |
| `backend/prompts/editor.md` | редактор (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 / terminologist.md~~ | СНЕСЕНЫ паком-1 (сироты) | — | — |
Правила, сидящие В ТЕЛЕ промтов (кандидаты на извлечение в пакет пары после 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. **Язык промпта** — полигон-замер после exp15, на реальной не-ru книге (V4-п5; не гадать).
2. **Извлечение правил в пакет** — exp15 ЗАВЕРШЁН; **данные-часть майнера ИЗВЛЕЧЕНА (D39.16:** zh/Палладий-инвентари →
`internal/lang`+`configs/langpacks/`, тот же pair-keyed идиом, что промпты, снапшот-фолд отложен до wiring майнера R1**)**;
извлечение правил из ТЕЛА 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** — где жить структуре (переводчик/редактор/отдельный пасс) — решится эмпирикой.