14 KiB
Промт для сессии «Адаптивный/обучающийся слой памяти» (черновик от сессии валидации банка)
Скопируй в новую сессию 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; управление thinkingextra_body={"thinking":{"type":...}}).docs/architecture/01-decisions.mdР3/Р4/Р5 (банк, локальный стек, экономика).
Жёсткий контур (это определяет ВЕСЬ ответ — не проектируй мимо него)
- Флагман-переводчик — только API, закрытый. Нет доступа к логитам/декодеру, нельзя дообучить. → kNN-MT на декодере флагмана, constrained decoding, frontier-LoRA — ЗАБЛОКИРОВАНЫ. Не проектируй их для роли переводчика (перепроверь, что за 2026 это не изменилось у наших провайдеров).
- Локальный стенд: GTX 1070 8 ГБ VRAM + 32 ГБ RAM, WSL2. Локаль можно дообучать/LoRA и снимать логиты (llama.cpp/vLLM), НО локаль не переводит на качестве (exp03) и рендерит zh мусором (exp06) → её адаптированная роль — support (reranker/консистентность/спот/локальный kNN-датастор), не финальный переводчик.
- Деньги: переводы дорого гонять НЕ хочется. Локаль-first; дешёвое API (deepseek-v4-flash ~$0.0005/чанк, gemini-2.5-flash) — можно; премиум-эскалацию в этом исследовании не жечь.
- VRAM — арбитр (буквальный «кто побеждает»): в 8 ГБ уже претендуют bge-m3 (эмбеддинги ~2.4 ГБ) + возможный reranker + возможный адаптированный локальный модуль. Что резидентно, что по требованию, что вытесняет — часть ответа.
- Детерминированное ядро НЕПРИКОСНОВЕННО. Обучающийся слой пускать только во второй эшелон / стиль / консистентность /
auto-термины — никогда в точностно-критичный матч approved-имён (иначе вернём тихую-инъекцию, против которой всё строилось).
Приоритетные вопросы
- Огибающая осуществимого. При контуре выше — какие механизмы «учится-по-ходу-книги» реально запускаемы, а какие вычеркнуть явно (заблокированные). Что влезает в 8 ГБ рядом с bge-m3 и SQLite-банком.
- In-context / непараметрическая адаптация (бесплатный выигрыш). Инъекция накопленных подтверждённых пар книги (src→approved-dst) и прошлых переведённых пассажей как демонстраций — бьёт ли статический глоссарий по стилю/консистентности редких терминов (WMT: demonstrations > terminology), и где ВРЕДИТ (раздувание контекста, дистрактор — Power of Noise, 2401.14887). Не требует обучения — только память+промпт. Замерь на zh/ja→ru.
- Локальная параметрическая адаптация (LoRA/continual) на стенде. Можно ли дообучить малую локаль на «книге-до-сих-пор», и для КАКОЙ роли это окупается — reranker 2-го эшелона / консистентность-чекер / локальный kNN-датастор / рендерер-канона — но НЕ переводчик. Цена/латентность/VRAM на 1070, катастрофическое забывание.
- Локальный kNN-MT / retrieval-augmented ДЕКОДИНГ — там, где декодер НАШ (локаль). kNN-MT нужен логит → на флагмане нельзя, на локали можно (llama.cpp/vLLM отдают логиты). Может ли локальный kNN-MT-черновик, адаптирующийся к TM-датастору книги, стать достаточным ЧЕРНОВИКОМ (имена чинит банк, реалии — kNN из TM книги), кормящим API-редактора? Это потенциально новый мердж — проверь.
- МЕРДЖ и арбитраж («кто побеждает»). Когда детерминированный банк и обучающийся слой РАСХОДЯТСЯ (рендеринг термина, какие записи инъектить) — кто авторитет? Спроектируй арбитраж: approved+точный-матч — банк неоспорим; обучающийся слой лишь обогащает серые зоны (стиль,
auto/ambiguous, 2-й эшелон, подсказки консистентности). Плюс архитектура сосуществования модуля с текущим SQLite-один-файл-на-книгу и буквальный VRAM-арбитраж. - Адаптивный online-retrieval + само-корректирующая петля консистентности. Online-обучение, какие записи реально помогают этой книге (adaptive-RAG, бандиты); петля «детект дрейфа → авто-предложение правки → выучивание предпочтённого рендеринга». Насколько без тяжёлого ML.
- Академическое и индустриальное заземление (научный поиск, первоисточники, не вендор-маркетинг — как в валидации банка): kNN-MT (Khandelwal 2021) и продолжения; adaptive MT — ModernMT / Lilt (что переносимо на API-only LLM-стек); test-time / continual adaptation для MT; in-context TM; retrieval-augmented generation с online-обновлением. Заявленные метрики проверять независимо. Отдельно — свежее 2025–2026.
Правило решения (БАР)
Любой предложенный мердж обязан: (а) оставить детерминированный горячий путь авторитетным; (б) влезть в VRAM/стоимостную огибающую (локаль-first); (в) эмпирически бить eval-валидированный детерминированный базис на zh/ja→ru по консистентности/fidelity/цене; (г) оправдать добавленную сложность. Не может пройти (в) → рекомендуй НЕ мёржить (честно, как валидация банка вышла «не морозить ставку без eval»).
Творческий мандат
Не только обзор — спроектируй 1–2 конкретные гибридные архитектуры под НАШ контур (локаль+дешёвое-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секция## Память(1–2 строки на находку + ссылка); каждое расхождение — пингом оркестратору.
Правила (и не повтори ошибки сессии-предшественника)
- Не редактируй
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 общий — не выселяй чужие модели молча).