diff --git a/docs/PROGRESS.md b/docs/PROGRESS.md index 2a0b56f..9f8e9d5 100644 --- a/docs/PROGRESS.md +++ b/docs/PROGRESS.md @@ -78,6 +78,7 @@ - **18+ блокер снят владельцем:** explicit-фрагменты берутся из 蛊真人 (dark/violence; покрытие l2-erotica полигон оценит честно — возможно понадобится второй источник). - **Хендофф-промты №2 выданы** (старые закрыты → archive): [`BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md`](BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md) — fix-лист ревью (homophone first-wins и др.) → GB18030-ingest → дешёвые гейты Ф1 → спека D15.2 v2 → smoke-прогон 1 главы 蛊真人; [`POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md`](POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md) — синк зеркала (suppressUnboundedPhonetic+апостроф) → Mistral-переснятие → **18+ рука на 蛊真人 (эксп.10)** → сид-глоссарий приёмки → терсный precision. Координация: бэкенд-задача 2 (GB18030) гейтит их же задачу 5 и полигонный отбор сцен удобнее после неё, но полигон может стартовать параллельно (iconv руками уже валидирован). - Юр-пакет — в бэклоге до решения владельца (промт ресёрч-сессии подготовлю по запросу). +- **Промт ресёрч-сессии «Голос и состояние» выдан** (запрос владельца 09.07): [`VOICE_STATE_RESEARCH_SESSION_PROMPT.md`](VOICE_STATE_RESEARCH_SESSION_PROMPT.md) → `research/15-voice-and-state.md`. Мандат: голоса персонажей (voice exemplars vs дескрипторы — проверить клейм antipattern-дока; RP/game-loc прайор-арт; дешёвый детектор отклонения), scene/epistemic-state инъекция + скоуп Annotator Ф2, валидированный промптинг литперевода (формат/позиция инъекций, анти-галлюцинационные приёмы, «двухпроходность в одном вызове»), параметры запроса (temp-свип как ТЗ полигону), прайор-арт-проверка наших «уникальных» механизмов (спойлер-окна и др.), креатив с обязательной привязкой к слотам архитектуры. Пробы ≤$3 на SFW-чанках 蛊真人. Выход приземляется к Фазе 2 (Annotator, voice-профили) и в армы пилота. Параллелится с пакетами №2, ничего не блокирует. ## Бэкенд diff --git a/docs/README.md b/docs/README.md index 08f4037..cb6d51d 100644 --- a/docs/README.md +++ b/docs/README.md @@ -16,7 +16,7 @@ - `experiments/` — эмпирика «Полигона»: `00-provider-quirks` (читать перед любым вызовом провайдера), `01-token-calibration`, `02-refusal-benchmark`, `03-local-stand`, `04-editor-quality`, `06-local-extraction`, `07-coverage-precision`, `08-cost-model-v2` (актуальная денежная модель), `09-pilot-protocol` (пилот Ф2.5 + поправки D13). - `research/` — фактура исследований 04–05.07: `01–10` базовые, `11-gap-*` добор критиком, `12-*` режимы отказа/отзывы/таксономии (+ два внешних материала с провенанс-шапками), `13` валидация памяти, `14` адаптивная память. ⚠ Часть под superseded-баннерами (01/02/03/04/05/09 и gap-1/2/5) — **читай баннер прежде содержимого**. - `PROGRESS.md` — **журнал** (CURRENT-STATE сверху, ниже хронология; НЕ источник решений). -- **Активные хендофф-промты**: [`BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md`](BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md) (fix-лист + GB18030 + дешёвые гейты + спека D15.2 v2 + smoke 蛊真人) · [`POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md`](POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md) (18+ рука на 蛊真人 + синк зеркала + сид-глоссарий D18). +- **Активные хендофф-промты**: [`BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md`](BACKEND_SESSION_PROMPT_ACCEPTANCE_PREP.md) (fix-лист + GB18030 + дешёвые гейты + спека D15.2 v2 + smoke 蛊真人) · [`POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md`](POLYGON_SESSION_PROMPT_EXPLICIT_AND_MIRROR.md) (18+ рука на 蛊真人 + синк зеркала + сид-глоссарий D18) · [`VOICE_STATE_RESEARCH_SESSION_PROMPT.md`](VOICE_STATE_RESEARCH_SESSION_PROMPT.md) (ресёрч «Голос и состояние» → research/15). - `archive/` — закрытые сессионные промты (только история, инструкции оттуда не исполнять). ## Статус (2026-07-09) diff --git a/docs/VOICE_STATE_RESEARCH_SESSION_PROMPT.md b/docs/VOICE_STATE_RESEARCH_SESSION_PROMPT.md new file mode 100644 index 0000000..ad41276 --- /dev/null +++ b/docs/VOICE_STATE_RESEARCH_SESSION_PROMPT.md @@ -0,0 +1,58 @@ +# Промт: ресёрч-сессия «Голос и состояние» — контекст-инжиниринг сверх терминологии (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` (контракт D1–D18) + `07-strategic-review.md` §4–5 (что подтверждено наукой-2026, где боли без механизма). +3. **`docs/research/12-common-failures.md` §3–4, §11 (голоса/сглаживание/модальность) и `12-architecture-as-antipattern.md` §4–7, §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): двухпроходность в одном вызове («сначала прочти и выпиши опоры, потом переводи») — работает или жжёт токены. + +### 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) + +Бюджет **≤$3 суммарно** (deepseek/grok/gemini; ключи скрипты читают из `eval/.env` сами — сам файл не открывай). Материал: `/home/ubuntu/books/gu-zhenren/guzhenren-gb18030.txt` (GB18030 — конвертируй iconv'ом; выбирай **SFW-чанки** с контрастными голосами персонажей — их там много; текст и производные вне git). Кандидаты проб (по усмотрению, не все): voice-exemplar инъекция A/B (2–3 персонажа, держится ли голос с 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. Ничего не закоммичено; зоны чужие не тронуты; следы проб убраны.