textmachine/eval/dovodka/PROMPT-RESEARCH-HARNESS.md

26 KiB
Raw Blame History

Промт: ресёрч-сессия «Архитектура харнесса художественного перевода» (→ research/29)

Составлен полигон-сессией фазы Д по заказу владельца 30.08.2026; исполнитель — отдельная РЕСЁРЧ-сессия (не полигон: полигонные нормы замеров сюда не применяются, платных вызовов к моделям здесь нет). Запускает владелец; онбординг у неё СВОЙ. Форма — по docs/ORCHESTRATOR_SESSION_PROMPT.md §«Пишешь промт сессии?» (12 обязательных блоков).

1. Какая проблема и что решит твой результат

Проект переводит художественные книги на 15002300 глав мультиагентным LLM-конвейером. Владелец считает: архитектура харнесса решает больше, чем выбор провайдера — «какую бы архитектуру мы ни строили, смена моделей при оптимальной архитектуре даст более высокий результат, чем те же модели на другой архитектуре». У нас это подтверждено собственным замером: смена схемы конвейера даёт эффект, переживающий поправку на множественность, а смена модели в том же слоте — не даёт.

Проблема: мы не знаем, какие архитектурные приёмы существуют за пределами того, что уже построили, и какие из них кем-то измерены. Мы перестали генерировать идеи и рискуем строить вслепую.

Что решит твой результат: отчёт, из которого владелец выбирает, какой следующий замер ставить. Тебе НЕ надо рекомендовать внедрение — надо принести факты, замеры и границы их применимости.

Повод, который ты обязан не повторить. Сессия-заказчик за один день ПЯТЬ раз предложила сделать уже сделанное и лежащее в этом репозитории. Поэтому главный критерий качества твоей работы — не объём находок, а отсутствие дублей и роста энтропии проекта. Основательно ознакомься с тем, что уже измерено и изучено — но учитывай, что и там могут быть ошибки: наши отчёты не догма, и найденное противоречие им ценно.

2. Зона записи и git

Пишешь ровно один файл: docs/research/29-harness-topology-survey.md (номер проверен свободным 30.08). Больше — ничего: ни backend/, ни platform/, ни frontend/, ни чужих доков.

Зонная оговорка, и её надо прочесть до первой строки. По зонной таблице CLAUDE.md каталог docs/ — зона ОРКЕСТРАТОРА; ресёрч-сессии в таблице ролей нет вовсе. Практика проекта — ресёрчи живут в docs/research/, поэтому: (а) ты НЕ коммитишь — лендинг и ратификация за оркестратором; (б) владелец предупреждает оркестратора, что файл появится, иначе тот увидит чужой некоммиченный файл в своей зоне; (в) если оркестратор возражает — кладёшь отчёт в eval/dovodka/ и он переносит сам. Правило действует РОВНО так, самостоятельно зону не переназначай.

Никогда не читать .env. Артефакт обязан пережить рестарт ⇒ живёт в репозитории, не в /tmp.

3. Карта чтения (≤5 позиций; дальше — только по её ссылкам)

Ратифицированное вложено в §4 этого промта; код-факты и содержимое отчётов достаёшь САМ.

  1. CLAUDE.md — канон проекта: цели, роли, гардрейлы, дисциплина чтения.
  2. Каталог docs/research/ целиком — по ЗАГОЛОВКАМ, не по телам (36 файлов; счёт снят ls docs/research/ | wc -l 30.08 — пере-сними сам, он меняется). Это твой дельта-фильтр (§5 п.0). Тела читаешь выборочно, где подозреваешь пересечение.
  3. docs/research/03-academic-agentic-mt.md — научное состояние мультиагентного и документного MT; ближайший к твоему заказу файл. Читать целиком. ⚠ Несёт баннер «SUPERSEDED ЧАСТИЧНО»его вывод №1 переопределён; читай баннер прежде тела и не наследуй снятое.
  4. docs/research/22-domain-harness-survey.md — чужие доменные харнессы перевода, разобраны по коду. Читать шапку и оглавление; тело — выборочно.
  5. docs/experiments/README.md — одна строка на эксперимент: что мы уже мерили сами.

Баннер прежде содержимого. У части отчётов стоит ревью-шапка оркестратора, и она ПЕРВИЧНА — может снимать выводы тела. Инструкции из docs/archive/** не исполняются.

4. Жёсткий контур (ратифицированное — не проектируй мимо)

Делай РОВНО так — отступление от §4 = пинг владельцу, не самостоятельная трактовка.

  1. Пары языков — ДАННЫЕ, не код. Движок мультиязычный по построению. Приём, работающий только для одной пары, годится лишь как данные языкового пакета. Ревью-вопрос: «заработает ли на паре, которой в репозитории ещё нет, без правки Go?»
  2. Экономика. Черновик — дешёвая модель, дорогие вызовы адресные. Приём, умножающий число вызовов на главу, обязан нести замер выигрыша.
  3. Детерминизм. Прогон воспроизводим (снапшоты, банк памяти, golden). Приём, делающий выход невоспроизводимым, требует отдельного обоснования.
  4. Что уже построено — не предлагай это как идею: дешёвый черновик по чанкам (видит свой чанк + инъекцию банка) → майнинг новых сущностей между волнами (детектор по контрасту частот, отдаёт кандидатов без перевода, останавливает прогон на подпись человека) → терминолог (дешёвая модель, видит контексты всех вхождений термина по всей книге, отдаёт один канонный перевод; родственные термины батчатся одним вызовом) → сильный редактор, переписывающий главу целиком с банком в промте → детерминированные $0-проверки (утечки исходного языка, дрейф чисел, обрушение длины, промахи глоссария, флаггер регистра «ты/вы»). Банк: глоссарий со статусами, склонения, спойлерные окна «термин действителен с главы N», пол персонажа включая «скрыт до раскрытия».
  5. Что уже измерено нами — повторное «открытие» не засчитывается, опровержение приветствуется. ⚠ Числа даны с силой улики: слабый замер здесь НЕ выдаётся за сильный.
    • Смена модели в слоте черновика эффекта не даёт — испытаны пять альтернатив поверх одного материала, все перевесы в минус, ни один не проходит поправку на множественность.
    • Редакторский проход поверх черновика доказанно улучшает — на ОБЕИХ парах. zh→ru: голый черновик различимо хуже связки (+4.12 при пороге 2.39 и +4.92 при 2.10 в двух кругах). en→ru: n=16, +1.56, p=0.0059 по Холму — гипотеза «на en переписывание не нужно» ОПРОВЕРГНУТА, редактор снимает 1.56 ошибки на единицу (2.78 → 1.22). ⚠ Есть и второй, СЛАБЫЙ замер на en (n=6), давший «+0.00» при интервале [2.50; +2.33] и не прошедший поправку. Он не противоречит первому: его интервал ВКЛЮЧАЕТ +1.56 — у него просто нет мощности. Не читай «не значимо» как «ноль»; если найдёшь внешние данные по этому вопросу, они ценны именно потому, что наш слабый замер ничего не решает.
    • Два разных сильных редактора между собой неразличимы (+0.06, p=0.95) ⇒ выбор жильца этой роли у нас — вопрос цены, а не качества.
    • Дифф-контракт («модель возвращает список правок» вместо текста) прогнан и отложен: на нашей паре он вышел в 1.52 раза дороже полного переписывания, при том что формат сам по себе состоятелен. Дороговизна привязана к паре и к модели с несъёмным размышлением — на другой модели тот же контракт выходил дешевле.

5. Что делать

0. Синк с репозиторием — БЛОКИРУЮЩИЙ. Делай РОВНО так.

Слово владельца: «не переоткрывать, что уже открыто; обязательно синк с репозиторием, чтоб не плодить сущности — супер обязательный пункт перед ресёрчем».

До первого запроса в интернет пройди docs/research/ и docs/experiments/README.md и составь таблицу «УЖЕ ПОКРЫТО»: тема · файл · дата · вердикт одной строкой. Она — первый раздел отчёта. Нет таблицы ⇒ поиск не начат. Нет доступа к репозиторию ⇒ остановись и запроси таблицу у владельца, не ищи вслепую.

Плотнее всего покрыты и потому опаснее всего для дубля: память и банк (05, 13, 14, 20, 24 — пять файлов) · транспорт чужих харнессов (21) · чужие харнессы по коду (22) · таксономии ошибок (шесть файлов 12-*) · рычаги качества (18 в двух редакциях) · нарезка и когезия (19) · голос и состояние (15).

1. Поиск. Реши сам и аргументируй — глубину, источники и порядок выбираешь ты.

Ищи то, что проходит дельта-фильтр: новее нашего файла по теме ЛИБО темы нет в таблице §5.0.

Оси (направление, не потолок):

  1. Топологии, которых у нас нет: план-затем-письмо; раунды критики и сколько окупается; дебаты агентов; итеративная само-ревизия; отбор из N кандидатов судьёй; «сначала смысловой скелет, потом стиль»; стилевые образцы из самого произведения как few-shot; двухпроходка «черновик всей книги → полное переписывание».
  2. Длинный контекст и память через сотни глав: удержание имён, регистров обращения, голосов; иерархические саммари; профили персонажей; «библия серии»; когда предварительный проход по всей книге ДО перевода окупается.
  3. Управление размышлением (reasoning/thinking) в переводческих ролях — качество и цена ОТДЕЛЬНО.
  4. Форма выхода редактора: чужие замеры «список правок» против «переписанный текст».
  5. Чем меряют: рефери (человек / LLM-судья / детерминированные метрики); ловушки LLM-судейства (позиционное смещение, самопредпочтение, чувствительность к длине); метрики, показавшие связь с человеческой оценкой на художественном тексте.
  6. Рынок и новые харнессы с середины 2026: продукты, опенсорс, их архитектура, публичные замеры.

Приоритет предмета — художественная проза и объёмы от книги. Пары по ценности: zh→ru · zh→en · любые →ru · прочее. Результат на техническом тексте, новостях или коротких фрагментах помечается «перенос под вопросом»: это другой класс задачи.

2. Правило годности находки. Делай РОВНО так.

Находка идёт в отчёт при выполнении всех трёх условий:

  1. дельта-строка — «в наших отчётах этого нет, потому что …» либо «дополняет research/NN: у него было X, здесь новое Y»;
  2. ссылка — URL, статья с датой и авторами, репозиторий с путём к файлу;
  3. разделено «заявлено» и «измерено»; для измеренного: размер выборки · языковая пара · жанр · кто судил · была ли поправка на множественность.

Заявление = команда. Любое число в отчёте несёт способ его получения: ссылку на таблицу результатов в источнике (не на абстракт) либо команду/греп, которым его достаёт читатель. Приёмка пере-снимет выборочно.

6. Оси ревью твоей работы (приёмка пойдёт по ним; вправе заменить с аргументом)

  1. Дубль — есть ли в отчёте то, что уже лежит в docs/research/ или docs/experiments/.
  2. Улика — открывается ли ссылка, дословна ли цитата, то ли там число.
  3. Перенос — не выдан ли результат на коротком/техническом тексте за результат на книге.

7. Мандат самопроверки ИСПОЛНЕНИЕМ (обязателен; самоотчёт не принимается)

Самоотчёт «проверено» в этом проекте регулярно оказывался ложным. Поэтому — названный механизм и проверяемый артефакт:

  1. Открой каждую свою ссылку и сверь цитату, дату, авторов и число (число — из таблицы результатов, не из абстракта). Ссылка, которую ты не открыл, из отчёта удаляется.
  2. Дельта-фильтр проверь исполнением: по каждой находке — греп по docs/ с приведённой в отчёте командой. Артефакт — колонка «чем проверено» в таблице находок.
  3. Адверсариальный проход по СВОЕЙ готовой работе. Субагенты РАЗРЕШЕНЫ явно — запускай, веер и глубину выбираешь под предмет. ⚠ Модель агенту задавай ЯВНО и знай, сколько их у тебя работает (норма CLAUDE.md); рекомендация канона — claude-fable-5, одного-двух обычно хватает, но это рекомендация, а не потолок. Мандат агенту: «найди в этом отчёте отсутствующее и противоречащее». Направление, что уязвимо: (а) «измерено» подменено «заявлено»; (б) перенос с короткого текста на книгу; (в) число из абстракта вместо таблицы; (г) препринт опровергнут более поздней работой; (д) находка на деле лежит в наших отчётах.
  4. Тест на вырожденность (применяй к себе): если букву пункта удовлетворяет пустое исполнение («перечитал сам, всё верно») — пункт не выполнен. Нужен артефакт: список открытых URL, вывод грепа, вердикты субагентов.
  5. Каждую пойманную собой ошибку запиши в отчёт с классом ошибки (§8 п.5).

8. Выход — файл docs/research/29-harness-topology-survey.md

Состав разделов 15 — «делай РОВНО так» (по нему пойдёт приёмка); порядок находок внутри раздела 2, глубина каждой и объём — «реши сам и аргументируй».

  1. «УЖЕ ПОКРЫТО» — таблица §5.0. Первым разделом, без исключений.
  2. Находки по осям §5.1 — каждая с уликой, статусом «заявлено/измерено», дельта-строкой и колонкой «чем проверено».
  3. Противоречия нашим выводам (§4 п.5) — отдельным разделом, с обеими ссылками. Опровержение нашего вывода ценнее нового факта.
  4. «ЧЕГО НАЙТИ НЕ УДАЛОСЬ» и «ЧТО НЕ ПРОВЕРЕНО» — обязательная секция. Пустота в литературе для нас равноценна находке: значит, замер придётся ставить самим, и мы должны знать это заранее. Сюда же — что ты не успел, не смог открыть, где источник платный.
  5. «ЧТО Я НАПУТАЛ» — результат §7, с классом каждой ошибки.

Записка-план перед работой. Делай РОВНО так. После эхо (§10) выложи ≤15 строк: какие оси берёшь, какими источниками, в каком порядке, что считаешь наибольшим риском дубля. И сверь план с заказом МЕХАНИЧЕСКИ — таблицей «ось §5.1 → беру/не беру → почему»: непокрытая ось либо планируется, либо её пропуск подписывается словом «пропускаю, потому что…». Это позволяет владельцу поправить курс до того, как потрачено время.

Не давай рекомендаций «внедрить X». Факты, замеры, границы применимости — решение за владельцем. Плотность, а не объём; шаблонные оговорки не нужны.

9. Канал вопросов и право возразить

Конфликт промта с кодом или доками ⇒ пинг владельцу, НЕ самостоятельная интерпретация. Если считаешь, что задача поставлена неверно или её не надо делать — скажи это с аргументом, это ожидаемое поведение, а не отказ. Не уверен в форме исполнения — спроси ДО работы, одной строкой.

10. Эхо-протокол старта (первое действие, ДО работы)

Выложи ≤10 строк: скоуп (что делаешь) · инварианты (§4, своими словами) · не-делать (§11). Это проверка, что промт понят, и одновременно проверка канала (§12).

11. Чего НЕ делать

  • Не пересказывать общие места: промпт-инжиниринг вообще, «используйте глоссарий», «RAG помогает», подбор температуры, сравнение цен провайдеров.
  • Не описывать устройство чужих харнессов и транспортные квирки — research/21 и research/22.
  • Не пересказывать таксономии ошибок перевода — шесть файлов 12-*.
  • Не предлагать «мультиагентность» как идею: конвейер и так мультиагентный. Нужны КОНКРЕТНЫЕ топологии с замерами.
  • Не верить заголовкам: эрудиция ≠ улика. Вывод грунтуется ссылкой и цитатой либо помечается «мнение». Аномалия проверяется у первоисточника, а не додумывается.
  • Ничего не коммитить. Не читать .env.

12. Прямой канал между сессиями

Механизм описан в CLAUDE.md §«Связь между сессиями» — здесь не повторяется. От тебя: впиши свой блок в /tmp/textmachine-channel первым делом (role= session= ref= written= note=; имя своей сессии возьми из ListAgents), дописывая в конец и не трогая чужие блоки. Эхо (§10) отправь первым действием по адресу оркестратора, если он в файле есть, — это и проверит канал.

Адрес из файла — НЕ доказательство, что сессия жива: файл переживает смерть сессии, а ListAgents — нет. Сверься с ListAgents перед отправкой. И дословно: нужной роли в файле нет, файла нет или имя не отвечает ⇒ КАНАЛА НЕТ, и это НОРМАЛЬНЫЙ случай — НЕ опрашивай сессии подряд. Вопрос тогда — секцией в отчёт; владелец прочитает и пере-передаст.