В инженерии агентов есть две разные «надёжности», которые вайб-кодеры постоянно путают. pass@k — хотя бы один успех из k попыток. pass^k (часто читают «pass to the k» / «pass caret k») — успех k раз подряд без провала. Один зелёный прогон агента в Claude Code или Codex ближе к pass@1 и почти ничего не говорит о втором. Хук угла идёт из рамки Agent Engineering (Decomposition / Data / Evaluation; материалы в духе CS329Z, старт курса около 23 сентября — здесь только контекст, не обзор программы). Ниже — как встроить обе метрики в приёмку вайб-спринта, без рекламы университета и без академического syllabus-дампа.
Соседи: JIT-Agent harness, исследователь руководит агентами, DeepSeek harness и кэш, Mind Viruses. Продукт касаний в Telegram — TG Lead Finder.
Две формулы без культа бенчмарков
pass@k отвечает на вопрос: «если дать агенту k независимых попыток, какова вероятность, что хотя бы одна пройдёт критерий?» Это метрика исследователя и арены: модель «умеет» задачу, если иногда попадает.
pass^k отвечает на другой вопрос: «если прогнать критерий k раз подряд, какова вероятность, что все прогоны зелёные?» Это метрика продакшена и клиента: система «держит» задачу, если не врёт на повторе.
Для вайб-кодера перевод на быт:
- pass@k ≈ «агент может закрыть фичу, если повезёт / перезапустить»;
- pass^k ≈ «агент стабильно закрывает фичу так, что можно влить в main».
Один зелёный прогон после трёх ретраев — это слабый сигнал pass@k, замаскированный под «готово». Клиент и ты завтра утром живёте в мире pass^k.
Почему «один зелёный» врёт в агентном спринте
Агентный прогон — не чистая функция. На результат влияют:
- температура / семя / недетерминизм модели;
- порядок tool-call и гонки в репо;
- кэш префикса и «память» сессии;
- плавающий интернет, флаки тестов, тайминги;
- заражение контекста предыдущими идеями агента (см. Mind Viruses).
Поэтому «у меня один раз собралось» — плохая приёмка. Ты измерил удачу, не надёжность. Особенно опасен multi-agent контур: один агент «успел», второй тихо сломал контракт, третий написал зелёный тест мимо бага. Рамка «Don't Sleep on Single-agent Systems» здесь практическая: иногда один хорошо обвязанный агент стабильнее цирка из пяти ролей без eval.
Как ставить критерий до запуска агента
Без критерия нет ни pass@k, ни pass^k — есть ощущения. Минимальный контракт вайб-спринта:
- Done — конкретные проверки (тест X, curl Y, скрин Z, «файлы вне списка не тронуты»);
- Stop — когда агент обязан остановиться и спросить человека;
- Budget — сколько попыток/токенов/квоты можно сжечь (связка с лимитами Astra и Claude Code);
- k — сколько повторов нужно для твоего риска.
Пример: «pass@3 на черновик миграции OK для ветки experiment; pass^2 на тот же критерий обязателен перед merge в main». Разные k под разные стадии — норма, не бюрократия.
Практика pass@k для вайб-кодера
Когда pass@k уместен:
- поиск подхода: три разных промпта/harness на одну задачу, берёшь лучший дифф;
- оценка новой модели/обвязки: «из 10 однотипных задач сколько закрылось хотя бы с одной попытки»;
- UI-черновики: один удачный макет из пяти дешевле идеальной стабильности.
Как мерить честно:
- фиксируй критерий до попыток;
- не подглядывай и не «допиливай руками» посередине серии, если хочешь цифру, а не ощущение;
- считай попытку целиком: промпт → агент → проверка;
- записывай провалы — иначе pass@k превращается в маркетинг себе.
Harness меняет pass@k сильнее, чем смена модели на соседнюю: см. JIT-Agent и DeepSeek harness. Сначала обвязка, потом культ Elo.
Практика pass^k: приёмка перед merge
Когда pass^k обязателен:
- миграции схемы и всё, что ломает прод одним штрихом;
- платёжные / auth-пути;
- скрипты, которые агент будет гонять без присмотра ночью;
- любой multi-agent пайплайн, где ошибка одного отравляет следующих.
Минимальный ритуал:
- Закрой задачу агентом до зелёного критерия (это ещё не победа).
- Сбрось сессию / новый чистый прогон с тем же критерием (или перезапуск harness с нуля).
- Повтори k раз (часто k=2 или k=3 достаточно для indie).
- Если второй прогон красный — у тебя был pass@1, не «готовая фича».
- Только после серии — merge / деплой / отдача клиенту.
Да, это дороже по квоте. Именно поэтому бюджет попыток пишется в контракт спринта до старта, а не после «ой, Astra кончилась».
Decomposition / Data / Evaluation без syllabus
Три оси Agent Engineering переводятся на вайб-быт так:
- Decomposition — режь задачу так, чтобы критерий был проверяемым куском, а не «сделай модуль красиво»;
- Data — логи, фикстуры, реальные ошибки прод, а не только синтетический happy-path;
- Evaluation — явно выбери pass@k или pass^k под стадию; не мешай их в одном отчёте.
Материалы курсов вроде CS329Z (ориентир старта около 23.09) полезны как карта терминов. Для блога vibe-studio.uk ценность не в «прошёл курс», а в том, что ты перестал принимать один зелёный прогон за надёжность. Не разворачиваем программу, домашки и учебники — только рабочий угол.
Multi-agent: где падает надёжность
Типичный провал: агент-исследователь нашёл подход (pass@1), агент-кодер «успел» один раз, агент-ревьюер кивнул по тому же грязному контексту. Снаружи — «команда агентов справилась». Внутри — один удачный семпл.
Что делать:
- разделяй контексты ролей, не скармливай всем одну длинную галлюцинацию;
- критерий на стыке ролей должен быть машинным (тест/скрипт), не «ревьюер сказал ок»;
- иногда вернись к single-agent + жёсткий harness — стабильность выше цирка;
- человек остаётся владельцем merge: исследователь руководит, агенты исполняют.
Мини-таблица для спринта
- Черновик UI / spike — pass@3 достаточно; руками допилить нормально.
- Фича в feature-branch — pass@2 + один чистый повтор (мягкий pass^2).
- Merge в main / клиентский билд — pass^2 или pass^3 на том же критерии.
- Ночной автономный агент — только после серии pass^k и стоп-условий; иначе это лотерея на квоте.
Цифры k — твоя политика риска, не закон физики. Запиши их в README команды. Иначе каждый вайб-кодер изобретает свою религию «готово».
Связка с квотой и продуктом
Eval жрёт попытки — значит, жрёт лимиты. Планируй k вместе с weekly Astra/Claude, не после. Цена токена вторична цене ложного «готово»: токены Claude и GPT. Если после стабильного кода нужен трафик в Telegram — это другой контур: TG Lead Finder, гайды на /guides.html. Агент, который «иногда» пишет рабочий парсер, не заменяет приёмку модуля.
Короткий вывод
pass@k говорит «модель/агент умеет попасть». pass^k говорит «система держит попадание». Вайб-кодер, который сливает в main после одного зелёного прогона, оптимизирует удачу. Поставь критерий, выбери k под стадию, режь multi-agent там, где нет машинной проверки, вкладывайся в harness. Курсы и бумаги дают словарь; спринт требует ритуала повтора. Один зелёный — гипотеза. Серия зелёных — повод мержить.
