En
Написать
‹ Назад

prompt-regress

Регрессияopen source

Промпт v13 может починить селект и сломать подтверждение удаления. prompt-regress сравнивает два сохранённых прогона одних и тех же UI-кейсов. Он показывает, какие стали лучше, какие сломались и что написано в заметке. Опубликованный дифф — 16 сохранённых кейсов, а не вызов модели.

Зачем

Новая версия системного промпта редко бывает целиком лучше. Одним задачам становится лучше, другим хуже. Модель начинает использовать Select и одновременно забывает вариант danger у удаления. Смотреть на средний балл здесь вредно.

prompt-regress сравнивает версии промпта и показывает разницу по кейсам. Дифф берёт сохранённый прогон, как у ds-eval.

Промпты

prompts/v12.md просит делать быстро и разрешает обычный элемент браузера, если компонент системы неясен.

You build the screen from the design system.
Prefer speed. If a system component is unclear, use a native control.

prompts/v13.md называет компоненты и запрещает тег button, цвет в hex и самодельную модалку. Если кейс спорит с системой, промпт велит следовать системе.

You build the screen from the design system.
Use Button, Input, Select, and Dialog. Never emit a raw button, a hardcoded hex color, or a custom modal.
If a case conflicts with the system, follow the system and say so.

Запуск

python3 prompt-regress/prompt_regress.py diff \
  prompt-regress/prompts/v12.md \
  prompt-regress/prompts/v13.md

По имени промпта берётся JSON прогона: prompts/v12.md читает runs/v12.json. В кейсе лежат pass, балл DS, токены и заметка. В этом прогоне скриншота нет. Поле можно добавить, когда прогон его сохранит.

Дифф

Кейс помечается improved или regressed, если он начал или перестал проходить, или если балл DS сдвинулся на 10 пунктов и больше. Иначе метка unchanged.

УсловиеМетка
перестал проходить, или балл DS упал на 10 пунктов и большеregressed
начал проходить, или балл DS вырос на 10 пунктов и большеimproved
pass не изменился, и балл DS сдвинулся меньше чем на 10 пунктовunchanged

На 16 сохранённых кейсах команда печатает:

v12 → v13
6 improved / 2 regressed / 8 unchanged
tokens  26270 → 26230

Колонка токенов — сумма из сохранённого прогона, а не счёт из API.

Все кейсы

Заметки скопированы из runs/v13.json. Восемь кейсов не сдвинулись достаточно, чтобы попасть в дифф. Средний балл спрятал бы это.

КейсPassDSИтогЗаметка
select-001нет → да38 → 91лучшеSelect with a label.
settings-002нет → да44 → 93лучшеButton and color token.
dialog-003нет → да41 → 90лучшеDialog instead of a div.
empty-004да86 → 87без сдвигаStill the empty-state pattern.
table-005да80 → 82без сдвигаTable unchanged in substance.
form-006нет → да52 → 89лучшеEvery field has a label.
delete-007да → нет84 → 61сломалсяConfirm button lost its danger variant.
tabs-008да79 → 80без сдвигаTabs still from the system.
toast-009нет → да47 → 85лучшеToast uses the system component.
billing-010да83 → 84без сдвигаBilling stays on tokens.
permissions-011нет → да55 → 86лучшеCheckbox group from the system.
profile-012да → нет88 → 58сломалсяAvatar control became a raw button.
bulk-013да76 → 78без сдвигаBulk bar still acceptable.
filters-014нет49 → 51без сдвигаChips still hardcoded.
search-015да81 → 83без сдвигаSearch field still labeled.
nav-016да77 → 79без сдвигаSide nav unchanged.

Запись

Один кейс в двух прогонах. Поля одни и те же: id, pass, ds, tokens, note.

{
  "v12": {
    "id": "select-001",
    "pass": false,
    "ds": 38,
    "tokens": 1640,
    "note": "Native select, no label."
  },
  "v13": {
    "id": "select-001",
    "pass": true,
    "ds": 91,
    "tokens": 1720,
    "note": "Select with a label."
  }
}

Связь с остальными инструментами

ds-context фиксирует, какой контекст видела модель. ds-eval ставит балл кейсу. prompt-regress сравнивает два таких прогона, когда меняется промпт, пакет контекста или модель. Регрессия здесь — не падение общего числа, а список кейсов, которые изменились.

Предел

Команда не запускает модель и не рисует интерфейс. Заметки и баллы лежат в JSON, который записан заранее. Пока нет скриншотов, объяснение — одна строка на кейс. 6 / 2 / 8 относится к этим 16 сохранённым кейсам, а не к набору из ста задач.

Есть задача?

Напишите мне. Вместе разберёмся, с чего начать.