textmachine/eval/dovodka/PROMPT-PROBE-4AXES.md

210 lines
21 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.

# Промт: полигон-сессия «Контролируемая проба редактора по четырём осям»
> Составлен полигон-сессией фазы Д 02.09 по слову владельца. Исполнитель — ОТДЕЛЬНАЯ сессия,
> онбординг у неё СВОЙ. Форма — по `docs/ORCHESTRATOR_SESSION_PROMPT.md` §«Пишешь промт сессии?»
> (12 обязательных блоков).
## 1. Какая проблема и что решит твой результат
Проект переводит художественные книги zh→ru мультиагентным LLM-конвейером. **Самая дорогая стадия —
редактор**, и платим мы там в основном не за выданный текст, а за «размышление» модели перед ответом:
у этого поставщика оно тарифицируется внутри выходных токенов и составляет большую часть счёта.
**Проблема:** мы не знаем, чем управляется эта цена. На книге в 2283 главы редактор стоит порядка
полусотни долларов, и мы не можем сказать, платим ли за то, что модель много думает, или за то, что
она много пишет.
**Что решит твой результат:** контролируемая проба разделит рычаги. Если снижение усилия режет
расход и текст не портится — книга дешевеет вдвое по самой дорогой статье. Если не режет — мы
перестаём искать там, где нет.
**Повод, который ты обязана не повторить.** Предыдущая сессия за четверо суток одиннадцать раз
утверждала или предлагала то, что уже сделано либо опровергнуто в репозитории. Класс один:
**показания инструмента, собственной памяти или своей ветки принимались за факт о мире**. Реестр —
§8 плана и §Д52.5 отчёта фазы.
## 2. Зона записи и git
**Зона:** `eval/` + `docs/experiments/` + секция «Полигон» в `docs/PROGRESS.md`. Ветка `polygon`.
Артефакты прогона — в `~/books/gu-zhenren/probe-4axes/` (это ОТДЕЛЬНЫЙ git-репозиторий `books/`,
видимый обоим рабочим деревьям).
**Ты НЕ коммитишь ничего, КРОМЕ пре-рег-фриза** — это единственное исключение канона, и он
объявляется владельцу вслух ДО коммита. Форма коммита — только с явным списком путей
(`git commit -- <путь>`); `git add -A`, `git add .`, `git commit -a` запрещены.
⛔ Никогда не читать `.env`. ⛔ Никаких `reset --hard`, перезаписи истории, `checkout` поверх грязного
дерева: рядом работают параллельные сессии.
## 3. Карта чтения (≤5 позиций; дальше — только по её ссылкам)
1. **`CLAUDE.md`** — канон: цели, роли, зоны, гардрейлы, дисциплина чтения.
2.**`eval/dovodka/PLAN-01-09.md`ЗАКОН этой сессии.** Читать целиком; **§9 «ПРОЦЕДУРА» —
первым**, там команды, коды выхода и три места, где домысливание стоит денег.
3. **`eval/dovodka/SESSION-30-08.md` §0-ЧЕТЫРЕ** — состояние фазы и реестр ошибок. Остальное в файле
исторично; ⛔ §5 «КОМАНДЫ» — команды АВГУСТОВСКОГО РИГА, не твои, там есть помеченная
«не запускать никогда».
4. **`~/books/gu-zhenren/coldrun-v16/`** — образец стенда: `book.yaml`, `pipeline.yaml`,
`pairs/zh-ru.yaml`, и `REPORT.md` §14 «Форма следующего замера» (⚠ в файле ДВА раздела «## 14»,
нужен второй). ⛔ Каталог — образец, а не рабочее место.
5. **`docs/experiments/00-provider-quirks.md`** — провайдерские ловушки. Канон требует читать ПЕРЕД
правкой вызовов; здесь особо записи про ручку размышления и эхо-мину.
## 4. Жёсткий контур — **делай РОВНО так**, отступление = пинг владельцу
1.**Санкция владельца: вариант A — 17 глав, потолок $9.5 в ПИКОВЫХ терминах** (01.09 дано $9.5; 02.09 поднято до $9.5, когда в дизайн вошла референсная клетка `glm-5`).
⛔ Потолок сессией не поднимается. Срабатывание гарда = **стоп и вопрос владельцу**; добор после
просмотра чисел запрещён. К владельцу за этим решением ходить не надо — оно принято.
2. **Замер ратифицирован** (D39.184 п.5 — ⚠ нота есть только в ветке `main`, в `polygon` реестр
обрывается на D39.170). Дизайн менять нельзя: четыре оси с РАЗНЫМИ ролями — трудность чанка
блокировать, длину входа контролировать, промпт брать по SHA, усилие `off` против `low`.
3. **Пре-рег фризится коммитом ДО первой платной клетки.** Фриз объявляется владельцу вслух.
4. **Правило решения записано в §4 плана и НЕ пересматривается после просмотра чисел.**
5. **Стенд смотрит в `/home/ubuntu/projects/textmachine-main/`** для `models`, `langpack_root`,
`prompts_root`: в `polygon` нет `backend/configs/langpacks/ru`, а загрузчик молча подставляет
умолчания — русский слой читателя потеряется тихо.
## 4-БИС. ⭐ МОДЕЛИ — ФИКСИРОВАНЫ, МЕНЯТЬ НЕЛЬЗЯ
**Предыдущая редакция этого промта и план не называли моделей ВООБЩЕ** (ноль упоминаний, поймано
владельцем 02.09). Ниже — состав, снятый с реально отработавшего конфига `coldrun-v16` и с его
леджера; **это часть жёсткого контура: смена модели убивает сопоставимость с холодным прогоном,
на котором стоит вся смета.**
| стадия / роль | модель | усилие размышления | зачем |
|---|---|---|---|
| **редактор** (стадия `edit`) | **`deepseek-v4-pro`** | ⭐ **ЭТО И ЕСТЬ ПРЕДМЕТ ЗАМЕРА**: `off` против `low` | боевой редактор, ратифицированный интерим-жилец |
| черновик (стадия `draft`) | `deepseek-v4-flash` | `low` | боевой черновик; в пробе — константа |
| хоп эскалации черновика | `deepseek-v4-pro` | наследует эффорт стадии (`low`) | ловит эхо-чанки; в базовом прогоне обязателен |
| терминолог (`gates.terminology`) | `deepseek-v4-flash` | `low` | консолидация банка; в пробе — константа |
| классификатор типов | `deepseek-v4-flash` | `low` | подфаза терминолога |
| ⭐ **референс** (пятая клетка) | **`glm-5`** | `off` = thinking ВЫКЛЮЧЕН, `few_shot: false` | ценовой контроль «тот же день, те же юниты»; **не фактор креста** |
| **судья** | ⛔ **НЕ НУЖЕН И НЕ ВЫЗЫВАЕТСЯ** | — | качество при сниженном усилии ВНЕ скоупа (§12) |
**Цепочка эскалации базового прогона** — как в образце: `default: [deepseek-v4-pro, glm-5.1,
gemini-3.1-pro-preview]`. ⚠ В ЧЕТЫРЁХ РУКАХ `escalation.budget_usd: 0` (эскалации нет), **в базовом
прогоне он обязан быть > 0**, иначе эхо-черновики останутся флагнутыми.
**Ключ `ZAI_API_KEY` обязателен** — без него проверка ключей упадёт громко на старте (референс идёт к другому поставщику).
**Единственная модель, чей расход в пробе НЕИЗВЕСТЕН, — редактор на `low`:** таких вызовов у
движка не делали ни разу. Смета стоит на предположении; проверяет пред-полёт (§5.3).
**Модели для ТВОИХ субагентов самопроверки** — это другое и на счёт замера не влияет:
рекомендация канона `claude-fable-5`, ⚠ норма владельца 01.09 — **один `fable` на самое тяжёлое,
остальные дешевле**; модель агенту задавать ЯВНО.
## 5. Что делать
### 5.1 Собрать стенд. **Делай РОВНО так** — §9.1 плана.
Резалка исходника — `eval/dovodka/narezka.py` (её не существовало до 02.09; формат GB18030 + CRLF +
первая строка обязана быть заголовком). Вариант A = главы книги **2642**.
**Мина нумерации:** движок не умеет смещение глав — срез пронумеруется как 117. Соответствие
держится ТОЛЬКО записью в пре-реге.
### 5.2 Написать недостающее. **Реши сам и аргументируй** — форма твоя, требования ниже.
Не существует и нужно тебе:
* **`chetyre.py`** — скрипт эндпойнта. Требования: ключ юнита (в `request_log` нет колонки `attempt`,
она в `checkpoints` — реконструкцию назови явно) · операциональное определение «доставлено» ·
восстановление размышления по формуле §3 плана · правило цензуры §4 (обе стороны) · Вилкоксон с
`zero_method='pratt'` · ⚠ **медиану и доверительный интервал Ходжеса–Лемана писать руками:**
`scipy 1.18.0` установлен и `pratt` поддерживает, но интервала у `wilcoxon` не отдаёт (проверено).
**Гейт против зелени на пустоте обязателен:** нулевой знаменатель ⇒ прибор ОТКАЗЫВАЕТ кодом 2,
а не печатает «в пределах».
* **`poryadok.py`** — порядок рук от сида (сид объявлен в плане: `20260902`).
* ⚠ Ковариатная модель §4 требует `statsmodels`, которого в `eval/.venv` нет. Решить: ставить или
объявить эту проверку неисполненной. **Молча пропустить нельзя.**
### 5.3 Пред-полёт. **Делай РОВНО так** — §5.1 плана.
Один юнит × ПЯТЬ клеток (четыре руки креста + референс `glm-5`, ~$0.27): сигнатура разницы входных токенов СНИМАЕТСЯ и пинится коммитом ·
пять разных отпечатков снапшота (иначе ось промпта схлопнулась — см. §9.0 п.2) · кириллица ≥0.99 ·
эхо 0. **Только после этого — пачка.**
**Клетка с `low` — предположение, а не замер:** движковых редакторских вызовов на `low` не
существует вовсе, и смета стоит на нём. Если пред-полёт даст цену заметно выше ожидания —
**стоп и пересчёт с владельцем ДО основной покупки**, не после.
### 5.4 Пачка и счёт. **Делай РОВНО так** по §9.3, **аргументируй сам** только форму отчёта.
## 6. Оси ревью твоей работы (приёмка пойдёт по ним; вправе заменить с аргументом)
1. **Деньги** — сошёлся ли расход с агрегатом §9.5, не пробит ли потолок, объявлен ли фриз до покупки.
2. **Дизайн** — не схлопнулась ли ось промпта, одинаков ли потолок вывода во всех руках,
воспроизвелась ли сигнатура.
3. **Интерпретируемость** — можно ли из твоих чисел вынести вывод при ЛЮБОМ исходе, включая «ниже
разрешения замера».
## 7. Мандат самопроверки ИСПОЛНЕНИЕМ (обязателен; самоотчёт не принимается)
Самоотчёт «проверено» в этом проекте регулярно оказывался ложным и стоил денег.
1. **Ревью собственного кода и собственных запросов к моделям** — до первой платной клетки:
прочитай вслух тело запроса каждой руки и убедись, что оно отличается ровно тем, чем должно.
2. **Ревью полученных результатов** — числа пересними командой, не глазами.
3. **Адверсариальный проход по СВОЕЙ ГОТОВОЙ работе.****Субагенты разрешены явно** — иначе
дефолт-запрет харнесса тихо победит. **Модель агенту задавай ЯВНО и знай, сколько их работает**
(норма CLAUDE.md; рекомендация — `claude-fable-5`, ⚠ норма владельца 01.09: **один `fable` на
самое тяжёлое, остальные дешевле**). Направление: (а) не схлопнулась ли ось; (б) не подогнан ли
порог под результат; (в) верна ли арифметика денег; (г) что в отчёте утверждается без улики.
4. **Тест на вырожденность:** если букву пункта удовлетворяет пустое исполнение («перечитал сам») —
пункт не выполнен. Нужен артефакт: вывод команды, вердикт агента, лог.
5. Каждую пойманную собой ошибку **запиши в отчёт с классом**.
## 8. Записка-план и комплектность
После эхо (§10) выложи ≤15 строк: что собираешь, что пишешь, когда фризишь, когда покупаешь.
**И сверь план с §9 процедуры МЕХАНИЧЕСКИ** — таблицей «шаг §9 → делаю/не делаю → почему».
Непокрытый шаг либо планируется, либо его пропуск подписывается словом.
## 8-БИС. Отчёт: обязательные секции
Отчёт сдаётся секцией в `docs/experiments/23-editor-tier.md` (зона полигона). Обязательны:
1. **Результат по эндпойнтам**с командами получения каждого числа.
2.**«ЧТО НЕ УДАЛОСЬ И ЧТО НЕ ПРОВЕРЕНО»** — обязательная секция, не косметика. Сюда: что не
успела, что не смогла снять, какие проверки объявлены неисполненными и почему (например,
ковариатная модель без `statsmodels`). **Пустая пробы не бывает; отсутствие этой секции читается
как непроверенная работа.**
3. **«ЧТО Я НАПУТАЛА»** — результат §7, с классом каждой ошибки.
4. **Деньги** — фактический расход против потолка, агрегатом по §9.5 плана.
## 9. Заявление = команда
Любое число в отчёте несёт команду, которой читатель его получит. Приёмка пере-снимет выборочно.
Не верь заголовкам: вывод грунтуется `file:line`, выводом команды или замером — либо помечается
«мнение». **Отрицательный результат предъявляется с ПОЛОЖИТЕЛЬНЫМ КОНТРОЛЕМ** (покажи, что команда
вообще что-то находит) — это лекарство от одиннадцати ошибок предыдущей сессии.
## 10. Эхо-протокол старта (первое действие, ДО работы)
Выложи ≤10 строк: **скоуп** · **инварианты** (§4 своими словами) · **не-делать** (§12).
## 11. Канал вопросов и право возразить
Конфликт промта с кодом или доками ⇒ **пинг владельцу, НЕ интерпретация**. Считаешь, что задача
поставлена неверно или её не надо делать — **скажи с аргументом**, это ожидаемое поведение.
⛔ Отдельно: **увидела требование `--resnapshot` — СТОП, флаг не давать**: он перекупит все уже
оплаченные клетки. Предупреждение планировщика о будущем `--resnapshot` — не требование, оно
печатается на каждом ограниченном прогоне и ожидаемо.
## 12. Чего НЕ делать
* Не менять дизайн, правило решения и потолок.
* Не поднимать потолки и не добирать юниты после просмотра чисел.
* Не править `models.yaml`, capabilities, Go, боевой `pipeline-c1.yaml`.
* Не судить качество: качество при сниженном усилии вне скоупа, только $0-гейты и ось безопасности.
* Не калибровать ставку платформы — гейчено отдельно.
* Не коммитить ничего, кроме пре-рег-фриза.
## 13. Прямой канал между сессиями
Механизм — `CLAUDE.md` §«Связь между сессиями». От тебя: **впиши свой блок в
`/tmp/textmachine-channel` первым делом** (`role=` `session=` `ref=` `written=` `note=`; имя — из
`ListAgents`), дописывая в конец и не трогая чужие блоки. Эхо (§10) отправь первым действием по
адресу оркестратора, если он в файле есть.
**Адрес из файла — НЕ доказательство, что сессия жива:** файл переживает смерть сессии, а
`ListAgents` — нет. И дословно: **нужной роли в файле нет, файла нет или имя не отвечает ⇒ КАНАЛА
НЕТ, и это НОРМАЛЬНЫЙ случай — НЕ опрашивай сессии подряд.** Вопрос тогда — секцией в отчёт.