textmachine/docs/prompts/done/BACKEND_SESSION_PROMPT.md

9.9 KiB
Raw Blame History

Промт для сессии «Бэкенд» (Фаза 0 → Фаза 1)

Скопируй текст ниже в новую сессию Claude Code в каталоге /home/ubuntu/projects/textmachine.


Ты — инженерная сессия проекта TextMachine: бэкенд AI-перевода крупных художественных текстов (ранобэ/вебновеллы, zh/ja/en→ru) мультиагентным пайплайном. Твоя зона владения — каталог backend/ (создай); архитектурная документация и исследования уже готовы и прошли адверсариальное ревью — ты их исполняешь, но сначала перевалидируешь (шаг 0).

Контекст и порядок чтения (обязательный минимум)

  1. docs/architecture/01-decisions.md — 10 решений v2 (язык, ядро пайплайна, банк памяти, модельный стек/NSFW-роутинг, экономика по контурам ключей, durable jobs, телеметрия, право, прайсинг, риски).
  2. docs/architecture/02-mvp-plan.md — фазы 03, критерии приёмки. Твоя работа — Фаза 0, затем Фаза 1.
  3. docs/research/10-vojo-ai-bot-review.md — разбор донорской кодовой базы /home/ubuntu/projects/vojo/apps/ai-bot (Go, код владельца — копировать можно и нужно): что портировать, что переписать, известные ловушки.
  4. docs/architecture/components.puml, pipeline.puml — структура компонентов и поток перевода (v2). Диаграммы владелец смотрит PlantUML-расширением VS Code — картинки не рендерить.
  5. docs/PROGRESS.md — журнал всех сессий. Секция «Полигон» — эмпирика от параллельной сессии: там уже есть критичные для тебя факты (см. «Вводные из полигона» ниже).
  6. Остальные docs/research/* — по мере надобности (это источник истины при спорах с решениями).

Проект ведут три сессии: ты (backend/), «Полигон» (eval/, docs/experiments/ — не трогай), сессия-оркестратор (доки, ревью). Координация — через docs/PROGRESS.md: заведи секцию ## Бэкенд и фиксируй там вехи (13 строки на веху), читай чужие секции перед крупными решениями.

Шаг 0 — перевалидация (до первой строчки кода)

Прочитай обязательный минимум и проверь решения на исполнимость свежим взглядом — предыдущее ревью было документным, ты первый, кто смотрит глазами реализатора:

  • внутренние противоречия Р1Р10 ↔ план MVP ↔ диаграммы;
  • реализуемость в Go конкретных обязательств Фазы 01 (chunk-чекпоинты, TM-ключи, coverage-гейт, cache-раскладка промпта);
  • сверка с донорским кодом vojo: подтверди на реальных файлах то, что research/10 обещает портируемым (llm.go, httpllm.go, failover.go, pricing.go, telemetry.go, store.go).

Вердикт запиши в docs/architecture/03-implementation-notes.md: что подтверждаешь, что предлагаешь изменить и почему. Мелкие правки реализации — просто фиксируй там; противоречие уровня решений (Р1Р10) — пометь в PROGRESS с тегом [НУЖНО РЕШЕНИЕ] и жди владельца/оркестратора, не переписывай архитектурные доки сам. Валидацию можешь усилить воркфлоу-критиками (23 линзы), если сочтёшь нужным.

Задание: Фаза 0 (каркас), затем Фаза 1 (книга целиком)

Скоуп и приёмка — в 02-mvp-plan.md, здесь только уточнения реализации:

  • Первые шаги: git init в корне проекта (репо ещё нет; .gitignore: eval/.venv, eval/data, *.env, артефакты сборки), установка Go toolchain (в системе его нет), скелет backend/ (свой go.mod; предлагаемая раскладка: cmd/tmctl/, internal/llm|ledger|obs|store|pipeline|memory/, configs/, prompts/).
  • Портирование из vojo — копированием файлов с адаптацией в пакеты, не импортом (там почти всё в package main). Сохраняй дисциплину донора: биллинг по usage из ответа API (включая reasoning-токены — там уже ловили недоучёт 3044%), LLMResponse.Model = фактически ответившая модель, reserve/settle, request_log, fail-fast конфиг, table-driven тесты.
  • Новый код Фазы 0: нативный Anthropic-адаптер (Messages API, cache_control; сверь текущую семантику биллинга thinking-токенов и cache-write онлайн), chunk-чекпоинты в store (сырой ответ персистится сразу после settle; kill -9 теряет ≤1 вызов — обязательный тест), translation brief как конфиг с brief_hash, YAML-конфиг ядра C1 + скелет C2 (граница «конфиг vs код раннера» — по Р2: циклы/ветвления/эскалация зашиты в раннер, конфиг задаёт состав стадий/модели/версии промптов/пороги).
  • Модели и цены — только в configs/models.yaml с датой проверки. Дедлайн: deepseek-chat отключается 24.07.2026 — сразу целься в deepseek-v4-flash.
  • Промпты ролей — в prompts/ как версионируемые файлы-шаблоны; для Фазы 01 достаточно рабочих черновиков (Analyst/Terminologist/Translator/Editor), полноценную промпт-инженерию позже сделает отдельная сессия «Редакция» — не вылизывай.
  • Ключи — из backend/.env (gitignored); у полигона свои в eval/.env. Реальные API-вызовы в тестах — за флагом, дешёвой моделью, с потолком $ (ledger обязан работать и в тестах).

Вводные из полигона (уже добытая эмпирика — учитывай в коде)

  • Таймауты: реальные чанки на локальной модели идут 63278 с — 45-секундный профиль vojo непригоден, нужен свой профиль per-провайдер/per-роль.
  • Токен-калибровка (docs/experiments/01): русский выход для zh→ru ≈ 1.9× входа в токенах — влияет на дефолты max_tokens, оценщик стоимости и валидатор длин; коридоры len_ratio для coverage-гейта бери из эксперимента 01/02 (полигон сузит их после прогонов).
  • Стенд владельца (память textmachine-local-stand): WSL2, GTX 1070 8GB; в env прописан webshare-прокси, а NO_PROXY=<local> — виндовая нотация: любой запрос из Go на 127.0.0.1 уйдёт на прокси и получит 403. В HTTP-клиенте локального провайдера явно обходи прокси для localhost. Боевой env ollama и скорости — там же.

Финал каждой фазы — агентное селфревью

По завершении Фазы 0 (и отдельно Фазы 1): прогони адверсариальное ревью кода воркфлоу-критиками по линзам «архитектура и соответствие решениям v2», «корректность и happy paths (включая деньги: reserve/settle, недоучёт usage)», «чистота/идиоматичность Go», «устойчивость к сбоям (обрыв провайдера посреди главы, мусорный ответ, рестарт)» + прогон /code-review. Найденное — исправить, вердикт и остаток техдолга — в PROGRESS (## Бэкенд). Приёмку фазы из 02-mvp-plan продемонстрируй исполняемо (команды + вывод), а не декларативно.

Правила: не трогай docs/research/* и docs/architecture/01|02 (правки — через 03-implementation-notes.md и PROGRESS), не публикуй ничего наружу, коммить осмысленными шагами. Вопросы, требующие владельца (ключи, спорные решения), — списком в PROGRESS, не блокируйся: параллельно делай то, что не зависит.