textmachine/docs/VOICE_STATE_RESEARCH_SESSION_PROMPT.md

60 lines
17 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-09)
---
## Кто ты и зачем ты
Ты — **исследовательская сессия** проекта **TextMachine** (Go-бэкенд издательского перевода ранобэ/вебновелл zh/ja/en→ru мультиагентным LLM-пайплайном), по образцу сессий «Валидация банка памяти» (`docs/research/13`) и «Адаптивная память» (`docs/research/14`): мультиагентный веб-ресёрч + адверсариальная верификация каждого клейма + дешёвые живые пробы. Твоя зона записи: **`docs/research/15-voice-and-state.md`** + своя секция в `docs/PROGRESS.md` («## Голос и состояние», после §Память). `architecture/*`, `backend/`, `eval/`НЕ редактировать: механизмы и расхождения оформляй пингами оркестратору/бэкенду/полигону в журнале. Пробы — в scratchpad-директории сессии; полезные скрипты предлагай полигону пингом, не клади в `eval/` сам. **Ничего не коммить** — оркестратор примет и закоммитит после ревью.
Гардрейлы из `CLAUDE.md` (автозагружен) жёсткие: `.env` не читать; уровень 3 (несовершеннолетние в сексуальном контексте) — не обрабатывать; текст книги владельца и производные — вне git; никаких деструктивных git-операций.
## Мотивация (постановка владельца, 09.07)
Запрос в LLM-API — **стейтлесс**: модель до промта не знает ни книги, ни сцены, ни персонажей; дообучения нет; плюс модели галлюцинируют. Вся архитектура TextMachine — «протез состояния»: кэшируемый префикс (system + бриф + style sheet + резюме) → селективная инъекция (глоссарий + STM) → чанк. **Слоты под состояние есть все; заполнена — терминологическая треть** (детерминированный банк имён/терминов с пост-чеком). Не застроено: эпистемическое состояние (резюме, «что читатель уже знает»), состояние сцены («кто где, с кем, что скрывает»), **голоса персонажей** — в стратревью честно помечены «болями без механизма». Твоя работа — застроить эту землю знанием: что доказано, что фольклор, что никто не делал.
## Онбординг (порядок чтения, ~40 мин)
1. `CLAUDE.md``docs/README.md` → CURRENT-STATE в `docs/PROGRESS.md`.
2. `docs/architecture/05-decisions-log.md` (контракт D1D18) + `07-strategic-review.md` §45 (что подтверждено наукой-2026, где боли без механизма).
3. **`docs/research/12-common-failures.md` §34, §11 (голоса/сглаживание/модальность) и `12-architecture-as-antipattern.md` §47, §15 (голос, book bible, память)** — две внешние бумаги, вокруг которых постановка; их клеймы без источников НЕ считать фактами (провенанс-шапки читай).
4. `docs/architecture/04-unhappy-paths.md` (карта отказов; Annotator «питает 8+ режимов»), `06-memory-risk-registry.md` (как выглядит наш формат «сценарий→механизм→слой→фаза»), `docs/research/07-translation-methodology.md` (издательская методология), `13`/`14` (образец дисциплины вердиктов).
5. Код слотов (только читать): `backend/internal/pipeline/render.go` (сборка промпта, место инъекции), `memory.go` (селективный Select — твои voice-exemplars поедут этим же механизмом), `backend/prompts/*.md` (текущие промпты ролей), `backend/configs/pipeline-c1.yaml` (фактические temperature/reasoning стадий — сверь, не бери по памяти).
Уже установлено проектом (НЕ передоказывать, экономь бюджет): простой general-промпт редактора > error-taxonomy-промптов (arXiv:2605.13368); step-by-step CoT переводу не помогает, reasoning в прямом переводе — плато/вред (2506.04521, 2510.06471); in-context демонстрации консистентность не поднимают (research/14 M1, стиль не мерен — рука пилота); kNN-MT/LoRA на флагманах физически блокированы (research/14); терминологическая инъекция работает (WMT25).
## Шесть направлений
### 1. Голос персонажа (центр мандата)
SOTA speaker-aware / persona-consistent перевода и длинной генерации; **проверь клейм antipattern-дока «voice exemplars > прилагательных-дескрипторов»** (у него нет источника — найди или опровергни); SAMAS (2602.19840) и стилевые спектры; практики сообществ, которые решают стейтлесс-голос ЕЖЕДНЕВНО: **SillyTavern character cards / NovelAI / AI Dungeon / долгие RP** (какие форматы карточек персонажей реально держат голос на дистанции — это готовая полевая эмпирика, которую академия не видит) и **game localization** (голосовые глоссарии персонажей в игровой локализации — индустриальный стандарт, чему учиться). Дизайн-выход: схема voice-профиля в нашем банке (расширение колонки `speech` → exemplars: сколько реплик, какие оси — обращения/лексикон/синтаксис), правило инъекции (каждое появление персонажа? только диалоговые чанки?), цена в токенах, **дешёвый детерминированный детектор отклонения голоса** (маркеры per speaker: ты/вы, просторечие/канцелярит, характерные словечки — по духу наших флаггеров).
### 2. Состояние сцены и знание читателя
«Модель не знает, где она»: минимальная достаточная схема scene-state (кто в сцене / где / время / отношения / что скрыто) и epistemic-state («что читатель уже знает» — против случайных спойлеров формулировкой и неверной определённости референции); прайор-арт: interactive fiction, агентные memory-системы, лорбуки; **скоуп Annotator-pre-pass для Ф2** — что аннотировать обязательно, что мусор (его цена входит в COGS каждой главы); креатив-вопрос: dramatic irony / foreshadowing registry — делал ли кто-то, стоит ли нам (наши спойлер-окна — половина этого механизма).
### 3. Промптинг литперевода (V1-буллеты владельца — затравки, не рамки)
Что ВАЛИДИРОВАНО сверх уже известного нам: гайды провайдеров (Anthropic/OpenAI/Google/DeepSeek/xAI) — что из них применимо к переводу с инъекциями; **формат и позиция инъецируемых блоков** (таблица vs строки vs теги; инструкции в начале vs конце; разбавление контекста при больших инъекциях — lost-in-middle на НАШИХ размерах промпта, а не 100k); анти-галлюцинационные приёмы (негативные констрейнты «не добавляй фактов», uncertainty-каналы NO_CHANGE/AMBIGUOUS из antipattern-дока — какова их цена в качестве); «переводи как будто прочитал всю книгу» (V1.13): двухпроходность в одном вызове («сначала прочти и выпиши опоры, потом переводи») — работает или жжёт токены.
**3-bis. Эхо-мода на плотном CJK (приоритетный под-вопрос владельца, 09.07).** Замерено проектом: модель вместо перевода возвращает исходный китайский; усилители — плотность CJK, знакомость текста из претрейна, ВЫКЛЮЧЕННЫЙ reasoning (DeepSeek thinking-off = эхо-мина; grok-4.3 reasoning-none — 40% эха на 蛊真人, reasoning-on — 0/10; DeepSeek 25% даже при thinking-ON на реальной вебновелле; Mistral 0/10). Рабочая гипотеза — копирующий аттрактор (induction heads) побеждает инструкцию, thinking работает ре-анкорингом задачи. Исследуй: (а) что известно науке/сообществам про copy-collapse в переводе и его митигации; (б) **промпт-митигции**: инструкция ПОСЛЕ текста, префилл первых токенов ответа целевым языком (DeepSeek beta prefix-completion; какие ещё провайдеры умеют assistant-prefix?), микро-few-shot формата, языковой констрейнт; (в) ПРОБА в бюджете: на эхо-провоцирующих чанках 蛊真人 (deepseek thinking-ON и grok reasoning-none) A/B промпт-митигций — снижает ли частоту эха, какой ценой. Рамка: промпт-митигция = снижение частоты (экономия на эскалациях), НЕ замена детект+эскалации — не рекомендовать ослабление echo-гейта.
### 4. Параметры запроса (V1.8)
Temperature/top_p/penalties для художественного перевода: свежая эмпирика (не фольклор); per-stage логика (draft-верность vs editor-стиль — наши фактические значения сверь в конфиге); есть ли доказанная причина что-то менять; дизайн дешёвого параметр-свипа как арма пилота/полигон-эксперимента (готовое ТЗ полигону).
### 5. Прайор-арт наших «уникальных» вещей (моё сомнение — проверь, что мы реально первые)
Стратревью утверждает «аналогов не найдено» для: спойлер-окон since/until, детерминированного no-LLM горячего пути, (будущих) scene-state инъекции и voice-exemplars-в-переводе. Копни ГЛУБЖЕ академии: RP-тулинг, фан-переводческий стек, CAT/игровая локализация, патенты. Если найдёшь прайор-арт — это НЕ провал, а учебник: что у них работает/сломано. Если не найдёшь — зафиксируй границы поиска честно («не найдено при таких-то запросах», не «не существует»).
### 6. Креатив (полная свобода, всё помечать как гипотезы)
Что ЕЩЁ может инъектить протез состояния, чего не делает никто; «переводческие тулзы» агентного бэкенда (бриф п.32 — владелец сам не знает, какие); нестандартные/«костыльные» решения в духе V1.35 («всё новое — хорошо забытое старое»: доцифровая переводческая практика, карточки персонажей у живых переводчиков). Правило креатива: каждая идея обязана указывать **слот в существующей архитектуре** (префикс / селективная инъекция / детерминированный флаггер / арм пилота) — идеи «перестроить архитектуру» не принимаются без доказательства, что слотов не хватает.
## Живые пробы (разрешены, дисциплина research/14)
Бюджет **≤$4 суммарно** (deepseek/grok/gemini/mistral; ключи скрипты читают из `eval/.env` сами — сам файл не открывай). Материал: `/home/ubuntu/books/gu-zhenren/guzhenren-gb18030.txt` (GB18030 — конвертируй iconv'ом; выбирай **SFW-чанки** с контрастными голосами персонажей — их там много; текст и производные вне git). Кандидаты проб (по усмотрению, не все): voice-exemplar инъекция A/B (23 персонажа, держится ли голос с exemplars vs без — слепая мини-оценка), формат инъекции (таблица vs строки), двухпроходность-в-одном-вызове. Пробы — индикатив (малый N), помечай честно; их скрипты — в scratchpad. Ollama-модель полигона не выселять.
## Метод и БАР
Проектная дисциплина: фан-аут по направлениям → **адверсариальная верификация каждого не-тривиального клейма по первоисточникам (refute-by-default)** → completeness-критик («какая модальность поиска не прогнана?»). Каждый факт — URL+дата, препринт ≠ peer-review, вендор-клейм ≠ замер. Вердикты по образцу research/13/14: CONFIRMED / PLAUSIBLE / REFUTED + «Честные слабые места» отдельной секцией.
**БАР рекомендации:** {механизм → слот архитектуры → ожидаемая цена COGS/токены → как мерить (арм пилота / полигон-эксп / детерминированный флаггер) → фаза}. Рекомендация без пути измерения — не рекомендация. Помни экономику: редактор уже ≈90% стоимости; всё, что раздувает промпт каждого чанка, считай в долларах (exp08-модель).
## Deliverable и приёмка
1. `docs/research/15-voice-and-state.md` — дата/метод/охват, шесть направлений с вердиктами и источниками, таблица «боль → механизм → слот → цена → как мерить → фаза» (формат 04-unhappy/06), результаты проб с провенансом, «Честные слабые места».
2. Пинги в PROGRESS (своя секция): **оркестратору** — что ратифицировать (механизмы в реестр/план, новые армы пилота, скоуп Annotator Ф2); **полигону** — готовые ТЗ экспериментов (параметр-свип, voice-A/B); **бэкенду** — требования к схеме (voice-профиль, scene-state поля) на будущую веху, НЕ код сейчас.
3. Ничего не закоммичено; зоны чужие не тронуты; следы проб убраны.