11 KiB
Промт для сессии «Валидация банка памяти» (черновик от полигона)
Скопируй в новую сессию Claude Code, открытую в /home/ubuntu/projects/textmachine. Эта сессия — исследование и валидация, НЕ реализация: ни строки продуктового кода. Оркестратор финализирует онбординг и место для выходных документов до старта.
Статус: финализирован оркестратором (04.07) на базе черновика полигона. Готов к запуску владельцем.
Ты работаешь над проектом TextMachine — AI-перевод крупных художественных текстов (ранобэ/вебновеллы, zh/ja/en→ru) мультиагентным пайплайном на LLM API. Бэкенд — Go, EU-сервер, прямые ключи провайдеров (SaaS, без BYOK).
Контекст (прочитай в этом порядке):
docs/README.md— карта проекта;docs/PROGRESS.md— журнал (секции «Бэкенд», «Полигон», сообщения оркестратора).docs/architecture/01-decisions.md— решение Р3 «Банк памяти книги» (это твой предмет) и Р7 (гейты качества).docs/architecture/05-decisions-log.md— D7 (скоуп схемы памяти v1) и D5.2 (критично:snapshotIDобязан покрывать состояние памяти + сборку контекста, иначе изменённая память меняет request_hash, но не snapshotID → resume молча промахивается мимо чекпоинта и переоплачивает расходящимся переводом — валидируй этот инвариант как часть робастности).docs/research/05-memory-glossary.md— исследовательская база банка памяти (выбор стека, разбор MemPalace, спека SillyTavern World Info, память DelTA, GalTransl).docs/architecture/04-unhappy-paths.md— карта режимов отказа; разделы про консистентность (§1), род/пол (§2, поле gender=hidden), регистры (§3) — банк памяти обслуживает их.backend/internal/store/— как банк памяти уже начал реализовываться (схема, миграции) — валидировать против реального кода, а не только доков.
Координация (важно — читай перед стартом): бэкенд-сессия параллельно строит Фазу 1, и её шаг «миграция памяти v2» (фиксация схемы store/глоссария) держится до выхода твоего реестра рисков — ты гейтишь этот шаг. Бэкенд тем временем идёт по runner-loop / snapshotID / чанкеру (шаги 1–3, от схемы памяти не зависят). Твой реестр — вход, по которому бэкенд фиксирует схему; не тяни бесконечно, но и не пропусти опасные сценарии. Синхронизация — через docs/PROGRESS.md (заведи секцию ## Память).
Твоя роль и мандат. Банк памяти/глоссарий — главная точка отказа пайплайна (явное опасение владельца): серверные модели сильны, но если retrieval вернёт пусто или мусор — весь перевод деградирует тихо и опасно. Твоя задача — адверсариально провалидировать подход до того, как он застынет в коде: не поверить в него, а попытаться сломать, найти опасные функциональные и технические сценарии, и дать конкретные рекомендации.
Метод. Многоагентный ресёрч (как исходная фаза research/): фан-аут по направлениям + адверсариальная верификация находок + синтез. Источники — научные и технические статьи, первоисточники, бенчмарки; не покупаться на вендор-маркетинг (Mem0/Zep/Letta/MemPalace и т.п. — их заявленные метрики проверять независимо, как уже сделано с MemPalace в research/05). Веб + чтение кода; код продукта НЕ писать.
Вопросы, на которые нужен ответ (приоритетно):
-
Робастность retrieval — центральный вопрос. Что происходит, когда поиск по банку памяти возвращает пусто / мало / низко-уверенно / нерелевантно? Как это делают зрелые RAG/agent-memory системы (fallback, пороги уверенности, «лучше ничего, чем мусор»)? Спроектируй поведение пайплайна при пустом/слабом retrieval так, чтобы деградация была явной и безопасной, а не тихой.
-
Адекватность стека под масштаб. Выбор research/05: SQLite + FTS5 + sqlite-vec (в MVP — brute-force KNN без C-расширений), эмбеддинги bge-m3. Держит ли это вебновеллу в тысячи записей глоссария × сотни глав? Когда brute-force KNN ломается по латентности/качеству? Где порог перехода на настоящий векторный слой (pgvector/Qdrant/…)? Триггеры миграции — конкретно.
-
Правильность самой задачи retrieval. «Дан чанк → найди релевантные записи глоссария/резюме». Чистый dense-эмбеддинг — это оптимум, или нужен гибрид (BM25/FTS ключи + dense + reranker)? Спека предполагает ключи SillyTavern (лексические) + семантику + двуязычные резюме DelTA. Провалидируй гибрид против литературы по retrieval/reranking.
-
Специфические для перевода режимы отказа (сломай их): устаревшие записи; спойлер-окно (since_ch/until_ch); противоречивые записи (термин перевели двумя способами); разрешение алиасов; ретрив не того смысла (омонимы/полисемия имён — 阿Q, 送灶); дрейф «термин → утверждённый перевод» по ходу книги. Как каждый ломает перевод и чем защищаться (детерминированный слой vs LLM в горячем пути).
-
Гарантия детерминизма реестра. Трёхслойная защита GalTransl (pre-replace нормализация → мягкий глоссарий в промпте → post-check) — провалидируй против исследований constrained decoding / soft-following (WMT). Где грань «жёстко нельзя / мягко можно».
-
Академическое заземление. DelTA (Proper Noun Records + двуязычные резюме, заявленные +4.58 п.п. консистентности имён / +3.16 COMET) — воспроизводимо ли, на чём мерено, применимо ли к zh/ja→ru? Литература по document-level MT memory, RAG-failure, long-context consistency. Отдельно — свежие работы 2025–2026.
Выход (пути финализированы оркестратором):
docs/research/13-memory-bank-validation.md— вердикт: держит ли подход, что менять, с обоснованием и источниками.docs/architecture/06-memory-risk-registry.md— реестр рисков банка памяти (таблица: сценарий отказа → вероятность/тяжесть → механизм защиты → детерминированный слой vs LLM → где в коде/схеме). Это единственный файл вarchitecture/, который тебе разрешено создать; он — вход для бэкенд-сессии перед фиксацией схемы store/глоссария Фазы 1.- Краткие итоги — в
docs/PROGRESS.mdсекция## Память(1–2 строки на находку + ссылка); каждое расхождение с research/05 или Р3/Р7 — отдельным пингом оркестратору там же.
Эмбеддинги (мандат этой сессии, вопросы 2–3). Замер bge-m3 vs Qwen3-Embedding-0.6B vs LaBSE на задаче retrieval глоссария/резюме — за тобой. bge-m3 уже на локальном стенде (см. docs/experiments/03-local-stand.md и память проекта про стенд); скоординируйся с полигоном, чтобы не дублировать инфраструктуру. Эмпирические скрипты для этого — в eval/ (это eval, не продуктовый код), результаты — в свой research/13-* + краткое в experiments, если полигон попросит.
Правила. Не редактируй research/* и architecture/*, КРОМЕ создания своих research/13-memory-bank-validation.md и architecture/06-memory-risk-registry.md — прочие расхождения оформляй пингами оркестратору в PROGRESS. Фиксируй версии/даты. Продуктовый код (backend/) не пиши — только читай; eval-скрипты в eval/ для эмпирической проверки retrieval/эмбеддингов — можно. Маркетинговые метрики вендоров — проверять независимо (как с MemPalace).