CoffeeBench под капотом

CoffeeBench под капотом

Ilya Utov

Попался разбор свежего бенчмарка CoffeeBench от большого AI-канала. Пробежался и закрыл: цифры пляшут, выводы пахнут отборным нейрослопом, пересказом пересказа (потом проверил, так и есть, четыре искажения).

В бенчмарках мне неинтересно «какая модель круче».
Интересно другое: как устроен сам бенч, какие паттерны поведения сработали, какие провалились, и какие уроки из этого реально следуют.

Поэтому полез в статью и код сам. Делюсь тем, что под капотом.

Сначала важное: какого агента вообще тестировали

Агент в тесте намеренно примитивный. Голый цикл «подумал, сделал, посмотрел результат, снова подумал».
Он видит только свою инструкцию и накопленную историю шагов.
Никаких навыков, никакой внешней памяти, никакого отдельного проверяющего слоя.
Режим глубоких рассуждений у моделей приглушили ради цены.
А когда история перестаёт влезать в контекстное окно, просто сжимают той же моделью.

То есть бенч меряет сырую модель почти без обвязки вокруг неё.
Это честно для сравнения моделей между собой, но означает простую вещь:
все провалы ниже, это провалы голой модели и не сильно сопоставимы с реальностью.
А значит они же, это карта дыр, которые обвязка и должна закрывать.

Как устроен бенч (что сделано грамотно)

Шесть компаний в одной отрасли, кофейная цепочка от фермера до прилавка: два фермера, два обжарщика, два магазина.
За каждую компанию играет отдельный AI-агент.
Между ними и конкуренция в своём слое, и зависимость между слоями. Тестируемая модель играет за одного обжарщика, остальные пять, фоновые. Горизонт 90 дней, цель, максимум чистой прибыли.

Четыре решения, которые отличают нормальный бенч от поделки:

  1. Метрику нельзя накрутить. Прибыль считают по средневзвешенной себестоимости. Поэтому агент не может надуть себе результат, перепродавая товар сам себе по завышенной цене. Защита от самообмана зашита в саму формулу.
  2. Время событийное. День с 9 до 19, каждое активное действие съедает 30 минут, то есть действий в день ограниченное число.
    Можно уйти в простой до завтра, но входящее событие (сообщение, сделка, доставка) будит агента в тот же день. Приходится балансировать между «делать самому» и «реагировать на других».
  3. Экономика с трением.
    Поставки идут в долг с оплатой через 30 дней, просрочка штрафуется. Доставка с задержкой, часть грузов теряется.
    Товар на складе портится примерно полпроцента в день, склад не резиновый, каждый день капают фиксированные расходы.
    Ушёл в минус по деньгам, банкротство и вылет, а долги повисают на тех, кто тебе поставил.
  4. Есть тупые болванки для сравнения.
    Один эталон всегда «жду и ничего не делаю», другой работает по жёсткой фиксированной инструкции без общения.
    Оба ушли в минус.
    Вывод сразу: чтобы просто выжить, нужны адаптация и переговоры, статичные правила не тянут.

Деталь из кода, которая мне понравилась: там есть человеческий режим (отдельные модули под игрока и интерфейс).
То есть можно самому сесть за одну из фирм и поторговать против AI, а не только смотреть на цифры.
Хороший способ почувствовать среду руками.

Что сработало (паттерны прибыльных)

  • Общение с контрагентами решает. Лидер слал около 140 сообщений за прогон, и вверх фермерам, и вниз магазинам. Чем активнее переписка с партнёрами, тем выше прибыль.
  • Не сбавлять обороты. Сильные модели торговали и договаривались все 90 дней, а не выдыхались в первые недели.
  • Цена важнее объёма. Две модели с одинаковыми складами, потерями и выручкой разошлись по прибыли только за счёт переговорной цены. Кто продавал дороже, тот и выиграл, при той же активности.

Что провалилось (вот это самое интересное)

  • Дрейф в бездействие. Самый показательный сбой. Одна модель писала связные, разумные планы, трезво оценивала ситуацию, а потом раз за разом выбирала «подожду до завтра».
    Сорок дней из девяноста простояла так и до конца не вышла. Это не глупость и не сломанный план. Это разрыв между «понял что делать» и «сделал».
  • Активность без денег. Другая модель крутила столько же действий, сколько лидер, а заработала копейки.
    Объём действий сам по себе не превращается в прибыль без нормальных переговоров и цен.
  • Реакция без инициативы. Третья почти не писала сама, зато постоянно читала входящие.
    Переваривает чужое, своего не затевает. Итог средний.
  • Слепое пятно на конкурентах. Все модели почти не общались с прямым конкурентом в своём слое.
    Очевидную стратегию (договориться по ценам) никто даже не нащупал, хотя среда это позволяла.
  • Под нажимом сложных схем не возникло.
    Когда агента отдельно надавили на максимизацию выручки, он остался операционно вменяемым, но хитрых манипуляций так и не построил. Длинной стратегической связности пока не хватает.

Какие уроки тут реальные

Без угла «что я лично внедряю», просто что следует из данных:

  1. Длинный контекст ломает поведение, и это главный урок.
    Дрейф в бездействие начался не сразу, после того как история накопилась и её начали сжимать.
    Это та же болячка, что и в прошлых разборах про тихие провалы агента: критичные вещи, цель и текущее состояние, не доживают в контексте сами по себе.
    Их надо держать снаружи и подавать заново, а не надеяться, что модель помнит, зачем она здесь.
    На длинной задаче «помнит» превращается в «помнила в начале».
    Чем длиннее горизонт, тем дороже обходится эта иллюзия.
    В коде это сжатие, кстати, вынесено в отдельный модуль на пару сотен строк, то есть штука штатная и предсказуемая, и провал случается ровно после того, как она срабатывает.
  2. «Похоже на работу» это не работа.
    Самая коварная часть: модель в простое продолжала писать осмысленные планы. Снаружи выглядит как занятой сотрудник.
    Поэтому считать прогресс по артефактам агента (написал план, выдал текст, сделал вызов) бесполезно, он может бесконечно генерировать правдоподобное и не двигаться.
    Единственный честный признак прогресса, изменилось ли состояние мира: деньги на счету, склад, сделки.
    Мерить надо исход, а не имитацию деятельности.
  3. Как вообще строить такой eval. Бенч показывает два приёма, которые стоит копировать в любую проверку агента.
    Первое, метрика, защищённая от накрутки (нельзя поднять счёт фиктивными действиями).
    Второе, тупые болванки как нижняя граница: если агент не обыгрывает «ничего не делать» и «жёсткая инструкция», он бесполезен, и это видно сразу, без споров.
  4. Что отличает прибыльного агента от пустого.
    Не объём действий, а две вещи: проактивная связь с контрагентами и качество переговорной цены.
    Активность ради активности (много вызовов, мало денег) это отдельный режим провала, который легко спутать с продуктивностью.
  5. Среда лучше работает событийно.
    Дорогие активные действия плюс пробуждение по событиям, это здравая модель и для реальных агентов.
    Крутить агента в бесконечном цикле дорого и провоцирует ровно тот дрейф, что выше.

Оговорки, без них нельзя

Бенч хороший, но это не приговор моделям.
Прогонов всего три на модель, разброс огромный, у некоторых отклонение больше самого результата, так что точный порядок мест, это шум.
Все фоновые компании, это одна и та же модель, то есть «мир» один.

Рассуждения при тесте приглушили ради цены, а это не боевой режим. И экономика сильно условна, произвёл и обжарил, это один клик.

Поэтому твёрдый вывод тут простой: на длинном горизонте сырая модель может писать отличные планы и при этом не действовать.

Всё остальное, направление.

А у вас агенты доводят дело до конца или красиво планируют и тормозят?

И ловите ли вы такие разборы на неточностях до того, как утащить цифру к себе? Пишите в комменты.

Report Page