textmachine/docs/archive/prompts/ADAPTIVE_MEMORY_RESEARCH_PROMPT.md

64 lines
14 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.

# Промт для сессии «Адаптивный/обучающийся слой памяти» (черновик от сессии валидации банка)
Скопируй в новую сессию Claude Code в `/home/ubuntu/projects/textmachine`. Эта сессия — **исследование, валидация и (опц.) локальное прототипирование**, НЕ продуктовая реализация: ни строки в `backend/`. Прототипы — только в `eval/` (индикативно, как `memory_hotpath.py`/`retrieval_bench.py`).
> _Статус: **черновик, подготовлен сессией «Валидация банка памяти» по запросу владельца**. Готов к запуску владельцем._
---
Проект **TextMachine** — AI-перевод крупной художественной прозы (ранобэ/вебновеллы, zh/ja/en→ru) мультиагентным пайплайном поверх LLM API. Уже спроектирован **детерминированный банк памяти** (SQLite один-файл-на-книгу, горячий путь = Aho-Corasick матч ключей глоссария, без модели; эмбеддинги bge-m3 — low-trust второй эшелон; 3-слойная защита pre-replace→soft-glossary→post-check). Валидация этого банка завершена (см. ниже).
**Твой предмет.** Владелец спрашивает: не будет ли **максимально эффективным гибрид** — отлаженное «старое» детерминированное решение банка **+ «новый» слой, обучающийся ПО ХОДУ перевода книги** (in-context / локальный адаптер / kNN-MT / online-retrieval / само-коррекция). Задача — **адверсариально проверить, стоит ли оно того, и как именно смёржить под наш жёсткий локально-стоимостный контур**, а не поверить в модность.
## Контекст (прочитай в этом порядке)
- `docs/research/13-memory-bank-validation.md` — вердикт валидации банка + §«Честные слабые места» (обязательно) + инвариант D5.2.
- `docs/architecture/06-memory-risk-registry.md` — реестр рисков банка (§Контракт горячего пути, гейты).
- `eval/memory_hotpath.py` — исполняемая спека горячего пути (что нельзя ломать).
- `eval/retrieval_bench.py` + `eval/data/retrieval_bench/` — эмпирика эмбеддингов (bge-m3 дефолт; **разделяющего cosine-порога НЕТ** — критично для «обучаемого» retrieval).
- `docs/experiments/06-local-extraction.md` + `eval/extract_bench.py` — локаль vs облако: спот сущностей решён везде, **рендер zh у локали 0.26** (Палладий-мусор).
- `docs/experiments/03-local-stand.md` — локаль = «спецслужба, не переводчик»; реальные tok/s на GTX 1070 (8b ~27, 30b-a3b ~13.5); thinking-грабли.
- `docs/experiments/00-provider-quirks.md` — как правильно звать провайдеров (deepseek thinking-ON+max_tokens 8000; управление thinking `extra_body={"thinking":{"type":...}}`).
- `docs/architecture/01-decisions.md` Р3/Р4/Р5 (банк, локальный стек, экономика).
## Жёсткий контур (это определяет ВЕСЬ ответ — не проектируй мимо него)
1. **Флагман-переводчик — только API, закрытый.** Нет доступа к логитам/декодеру, нельзя дообучить. → **kNN-MT на декодере флагмана, constrained decoding, frontier-LoRA — ЗАБЛОКИРОВАНЫ.** Не проектируй их для роли переводчика (перепроверь, что за 2026 это не изменилось у наших провайдеров).
2. **Локальный стенд:** GTX 1070 **8 ГБ VRAM** + **32 ГБ RAM**, WSL2. Локаль **можно** дообучать/LoRA и снимать логиты (llama.cpp/vLLM), НО локаль **не переводит на качестве** (exp03) и **рендерит zh мусором** (exp06) → её адаптированная роль — support (reranker/консистентность/спот/локальный kNN-датастор), **не финальный переводчик**.
3. **Деньги:** переводы дорого гонять НЕ хочется. **Локаль-first**; дешёвое API (deepseek-v4-flash ~$0.0005/чанк, gemini-2.5-flash) — можно; премиум-эскалацию в этом исследовании не жечь.
4. **VRAM — арбитр (буквальный «кто побеждает»):** в 8 ГБ уже претендуют bge-m3 (эмбеддинги ~2.4 ГБ) + возможный reranker + возможный адаптированный локальный модуль. Что резидентно, что по требованию, что вытесняет — часть ответа.
5. **Детерминированное ядро НЕПРИКОСНОВЕННО.** Обучающийся слой пускать **только** во второй эшелон / стиль / консистентность / `auto`-термины — **никогда** в точностно-критичный матч approved-имён (иначе вернём тихую-инъекцию, против которой всё строилось).
## Приоритетные вопросы
1. **Огибающая осуществимого.** При контуре выше — какие механизмы «учится-по-ходу-книги» реально запускаемы, а какие вычеркнуть явно (заблокированные). Что влезает в 8 ГБ рядом с bge-m3 и SQLite-банком.
2. **In-context / непараметрическая адаптация (бесплатный выигрыш).** Инъекция накопленных подтверждённых пар книги (src→approved-dst) и прошлых переведённых пассажей как **демонстраций** — бьёт ли статический глоссарий по стилю/консистентности редких терминов (WMT: demonstrations > terminology), и где ВРЕДИТ (раздувание контекста, дистрактор — Power of Noise, 2401.14887). Не требует обучения — только память+промпт. Замерь на zh/ja→ru.
3. **Локальная параметрическая адаптация (LoRA/continual) на стенде.** Можно ли дообучить малую локаль на «книге-до-сих-пор», и для КАКОЙ роли это окупается — reranker 2-го эшелона / консистентность-чекер / локальный kNN-датастор / рендерер-канона — но НЕ переводчик. Цена/латентность/VRAM на 1070, катастрофическое забывание.
4. **Локальный kNN-MT / retrieval-augmented ДЕКОДИНГ — там, где декодер НАШ (локаль).** kNN-MT нужен логит → на флагмане нельзя, на локали **можно** (llama.cpp/vLLM отдают логиты). Может ли локальный kNN-MT-черновик, адаптирующийся к TM-датастору книги, стать достаточным ЧЕРНОВИКОМ (имена чинит банк, реалии — kNN из TM книги), кормящим API-редактора? Это потенциально новый мердж — проверь.
5. **МЕРДЖ и арбитраж («кто побеждает»).** Когда детерминированный банк и обучающийся слой РАСХОДЯТСЯ (рендеринг термина, какие записи инъектить) — кто авторитет? Спроектируй арбитраж: approved+точный-матч — банк неоспорим; обучающийся слой лишь **обогащает** серые зоны (стиль, `auto`/ambiguous, 2-й эшелон, подсказки консистентности). Плюс архитектура сосуществования модуля с текущим SQLite-один-файл-на-книгу и буквальный VRAM-арбитраж.
6. **Адаптивный online-retrieval + само-корректирующая петля консистентности.** Online-обучение, какие записи реально помогают этой книге (adaptive-RAG, бандиты); петля «детект дрейфа → авто-предложение правки → выучивание предпочтённого рендеринга». Насколько без тяжёлого ML.
7. **Академическое и индустриальное заземление** (научный поиск, первоисточники, не вендор-маркетинг — как в валидации банка): kNN-MT (Khandelwal 2021) и продолжения; **adaptive MT — ModernMT / Lilt** (что переносимо на API-only LLM-стек); test-time / continual adaptation для MT; in-context TM; retrieval-augmented generation с online-обновлением. Заявленные метрики проверять независимо. Отдельно — свежее 20252026.
## Правило решения (БАР)
Любой предложенный мердж обязан: (а) оставить детерминированный горячий путь авторитетным; (б) влезть в VRAM/стоимостную огибающую (локаль-first); (в) **эмпирически бить eval-валидированный детерминированный базис на zh/ja→ru** по консистентности/fidelity/цене; (г) оправдать добавленную сложность. **Не может пройти (в) → рекомендуй НЕ мёржить** (честно, как валидация банка вышла «не морозить ставку без eval»).
## Творческий мандат
Не только обзор — **спроектируй 12 конкретные гибридные архитектуры под НАШ контур** (локаль+дешёвое-API, 8 ГБ VRAM, SQLite-банк, детерминированный костяк) и аргументируй, где каждая бьёт чистый детерминированный базис. Приветствуются нестандартные мерджи (напр., локальный kNN-MT-черновик из TM книги → API-редактор; или книга-LoRA только на reranker). Свобода предлагать, но каждый вариант — против БАРа выше.
## Выход
- `docs/research/14-adaptive-memory.md` — вердикт: стоит ли гибрид, огибающая осуществимого, предложенные архитектуры мерджа, где/когда бьёт базис, VRAM+стоимостный бюджет, арбитраж. Это единственный файл в `research/`, что тебе разрешено создать.
- Опц. индикативный прототип в `eval/` (локальный reranker / kNN-датастор / in-context-demo эксперимент) — как `memory_hotpath`/`retrieval_bench`.
- Краткие итоги — `docs/PROGRESS.md` секция `## Память` (12 строки на находку + ссылка); каждое расхождение — пингом оркестратору.
## Правила (и не повтори ошибки сессии-предшественника)
- Не редактируй `backend/` (только читай); прототипы — `eval/` (переиспользуй venv, bge-m3, PD-корпус `eval/data/samples` — не дублируй инфру).
- **Сверься с git HEAD перед выводами** — бэкенд быстро движется, доки начала сессии устаревают (предшественник на этом обжёгся: числил F1 открытым, а он был построен).
- **Верифицируй каждый ответ модели** (пустой/echo/config-error → ретрай+пометка, НЕ засчитывай как данные); квирки — через `eval/refusal_bench.call_provider`+`providers.json`.
- **Индикативно ≠ доказано:** малый N, LLM-судья — помечай честно; не репорть артефакты как находки.
- Тайминг: это **улучшение Фазы 2+**, целься в РЕАЛЬНЫЕ дыры базиса (дрейф консистентности, стиль, 2-й эшелон), не переизобретай базис; идеально — после in-house eval банка.
- Фиксируй версии/даты; проверяй заблокированность методов (логиты/дообуч у наших провайдеров) пробой, а не по памяти.
- Скоординируйся с полигоном по стенду (VRAM у 1070 общий — не выселяй чужие модели молча).