# Сколько стоит агентная сессия: GLM 5.3 Flash, DeepSeek V4.1 Flash и Claude Sonnet 5.5 на одних и тех же задачах

Агентная сессия — это не один запрос, а десяток: на каждом шаге агент заново отправляет модели историю диалога, файлы и результаты команд. Поэтому цена за миллион токенов из каталога почти ничего не говорит о цене задачи. Мы прогнали одни и те же четыре задачи через консольный агент Crush на пяти моделях RouterAI, записали токены и шаги каждого запроса и посчитали, во сколько обошлась каждая задача в рублях. Главная гипотеза («дешёвая модель делает больше шагов, и итог выходит дороже») на наших данных не подтвердилась, но у вывода есть важные оговорки — о них ниже.

## Методика {#metodika}

**Дата замеров:** 26 октября 2026 года. **Инструмент:** Crush 0.98.2, неинтерактивный режим `crush run`. **Провайдер:** RouterAI, OpenAI-совместимый API `https://routerai.ru/api/v1`.

Между Crush и RouterAI стоял наш прозрачный прокси: он пересылал запросы как есть и записывал поле `usage` из каждого ответа (токены на входе и выходе, токены рассуждений и `cost` — стоимость запроса в рублях). Каждый запрос модели считаем одним «шагом».

**Проект.** Демо-проект Invoices: три файла на Node.js, 42 строки вместе с тестами. Для задачи со стектрейсом в копию проекта добавлена функция `monthlyTotal` с настоящей ошибкой в вызове.

**Четыре задачи**, у каждой — автоматическая проверка результата:

| № | Задача | Что считается «прошло» |
| --- | --- | --- |
| 1 | Правка по описанию: добавить в `invoices.js` функцию `overdueInvoices()` | функция возвращает ровно один просроченный счёт (id 3), `node --test` проходит |
| 2 | Баг по стектрейсу: `node app.js monthly 2026-09` падает с `TypeError ... reading 'toString'` | команда печатает сумму за сентябрь `1740.50` |
| 3 | Генерация тестов: файл `invoices.extra.test.js` для `totalAmount` и `allInvoices` | в файле не меньше трёх тестов, `node --test` проходит |
| 4 | Рефакторинг: вынести данные в `data.js`, обновить импорты | `node --test` проходит, `node app.js list` работает |

**Чего в замерах нет.** В задании на разбор предлагался рефакторинг файла на 300 строк. Мы его не делали: пользовались демо-проектом, который лежит на всех наших кадрах, поэтому четвёртая задача — разделение модуля в проекте на 42 строки. Каждая пара «модель — задача» прогнана один раз, поэтому разброс между запусками мы не измеряли. Результаты не переносятся на большие кодовые базы.

### Конфиг Crush {#konfig-crush}

Crush читает конфиг из `~/.config/crush/crush.json` (путь показывает `crush dirs`). Провайдер RouterAI описывается как OpenAI-совместимый:

```json
{
  "providers": {
    "routerai": {
      "id": "routerai",
      "name": "RouterAI",
      "type": "openai",
      "base_url": "https://routerai.ru/api/v1",
      "api_key": "sk-xxxxxxxxxxxxxxxx",
      "models": [
        {
          "id": "z-ai/glm-5.3-flash",
          "name": "GLM 5.3 Flash",
          "context_window": 200000,
          "default_max_tokens": 4096,
          "can_reason": true
        }
      ]
    }
  },
  "permissions": {
    "allowed_tools": ["view", "ls", "grep", "edit", "write", "bash"]
  }
}
```

В `models` перечисляются остальные id из каталога. Блок `permissions.allowed_tools` разрешает инструментам работать без запроса подтверждения — в замерах это было нужно для неинтерактивного режима. Запуск одной задачи: `crush run --quiet --model routerai/z-ai/glm-5.3-flash "ваш промпт"`.

![Конфиг Crush (~/.config/crush/crush.json): провайдер RouterAI — type openai, base_url https://routerai.ru/api/v1, api_key-заглушка и первая модель z-ai/glm-5.3-flash](https://b51bc417-3ee0-451a-a83b-8a681d027a96.selstorage.ru/public/93c1e89c95d10342176d301dbdd45c30.png)

## Участники и цены {#uchastniki}

Цены — из каталога RouterAI на 26 октября 2026 года, рубли за 1 млн токенов; они зависят от фактического провайдера, актуальные значения — на [карточках моделей](https://routerai.ru/models). Все шесть моделей поддерживают вызов инструментов (`tools`) — без него агент работать не может.

| Модель | Вход, ₽ / 1M | Выход, ₽ / 1M | Чтение из кэша, ₽ / 1M | Контекст |
| --- | ---: | ---: | ---: | ---: |
| `z-ai/glm-5.3-flash` | 4,76 | 8,73 | 3,46 | 1,05M |
| `deepseek/deepseek-v4.1-flash-1017` | 11,63 | 17,28 | 0,78 | 1,05M |
| `qwen/qwen3-coder-flash` | 20,42 | 102,08 | 4,08 | 1M |
| `minimax/minimax-m3.1-flash` | 10,47 | 57,58 | 1,05 | 1,05M |
| `anthropic/claude-sonnet-5.5` | 209,40 | 1047,00 | 10,47 | 1M |
| `openai/gpt-5.6-sol` | 418,80 | 2093,99 | 41,88 | 1,05M |

`deepseek/deepseek-v4.1-flash-1017` — октябрьский релиз DeepSeek: по [еженедельному обзору Compassion Benchmark](https://compassionbenchmark.com/ai-models/watch/2026-10-22) за 17–22 октября 2026 года DeepSeek описывает его как небольшое обновление прежней Flash-модели с открытыми весами и доступом по API.

**MiniMax M3.1 Flash в таблицу результатов не попала.** В день замеров на любой запрос она отвечала `503 User not found` (ошибка со стороны провайдера, код `401` в `metadata`), все четыре попытки закончились ничем и ничего не стоили. Это не оценка качества модели — мы её просто не смогли проверить.

## Формула цены {#formula}

Для одного запроса:

```text
цена = (input − cached) × цена_входа + cached × цена_кэша + output × цена_выхода
```

Токены рассуждений входят в `completion_tokens` и тарифицируются по цене выхода — отдельно в `usage` они показаны как `completion_tokens_details.reasoning_tokens`. Цена сессии — сумма по всем шагам. Расчёт «токены × цена из каталога» удобен для прикидки, но реальный счёт он не воспроизводит — об этом следующий раздел.

## Результаты {#rezultaty}

Токены и цена задачи — по полю `usage` из ответов API, цена — значение `cost` в рублях. Во всех 20 запусках проверка прошла.

| Задача | Модель | Шаги | Вход, токенов | Выход, токенов (из них рассуждения) | Цена, ₽ | Проверка |
| --- | --- | ---: | ---: | --- | ---: | --- |
| 1. Правка по описанию | GLM 5.3 Flash | 6 | 50 903 | 471 (279) | 0,21 | прошла |
| 1. Правка по описанию | DeepSeek V4.1 Flash | 7 | 69 352 | 1 029 (256) | 0,23 | прошла |
| 1. Правка по описанию | Qwen3 Coder Flash | 9 | 89 490 | 862 | 1,04 | прошла |
| 1. Правка по описанию | Claude Sonnet 5.5 | 6 | 81 436 | 589 | 17,67 | прошла |
| 1. Правка по описанию | GPT-5.6 Sol | 12 | 64 629 | 1 360 (100) | 7,74 | прошла |
| 2. Баг по стектрейсу | GLM 5.3 Flash | 5 | 42 624 | 1 058 (758) | 0,21 | прошла |
| 2. Баг по стектрейсу | DeepSeek V4.1 Flash | 8 | 81 605 | 2 116 (1 500) | 0,20 | прошла |
| 2. Баг по стектрейсу | Qwen3 Coder Flash | 9 | 93 735 | 1 003 | 0,58 | прошла |
| 2. Баг по стектрейсу | Claude Sonnet 5.5 | 5 | 67 494 | 670 | 14,83 | прошла |
| 2. Баг по стектрейсу | GPT-5.6 Sol | 6 | 49 003 | 540 (72) | 3,74 | прошла |
| 3. Генерация тестов | GLM 5.3 Flash | 6 | 52 833 | 730 (305) | 0,23 | прошла |
| 3. Генерация тестов | DeepSeek V4.1 Flash | 6 | 55 193 | 1 136 (500) | 0,12 | прошла |
| 3. Генерация тестов | Qwen3 Coder Flash | 9 | 91 413 | 953 | 0,73 | прошла |
| 3. Генерация тестов | Claude Sonnet 5.5 | 7 | 100 696 | 1 327 | 22,48 | прошла |
| 3. Генерация тестов | GPT-5.6 Sol | 6 | 47 848 | 547 (13) | 3,63 | прошла |
| 4. Рефакторинг | GLM 5.3 Flash | 7 | 64 185 | 1 882 (1 137) | 0,33 | прошла |
| 4. Рефакторинг | DeepSeek V4.1 Flash | 7 | 69 140 | 3 492 (2 185) | 0,29 | прошла |
| 4. Рефакторинг | Qwen3 Coder Flash | 14 | 156 158 | 1 722 | 1,19 | прошла |
| 4. Рефакторинг | Claude Sonnet 5.5 | 9 | 144 501 | 2 298 | 32,66 | прошла |
| 4. Рефакторинг | GPT-5.6 Sol | 13 | 123 400 | 1 299 (156) | 8,75 | прошла |

Для Qwen3 Coder Flash и Claude Sonnet 5.5 токены рассуждений в `usage` не указаны.

Итог по четырём задачам:

| Модель | Шагов | Вход, токенов | Выход, токенов | Цена четырёх задач, ₽ | Цена шага, ₽ | Дешевле Sonnet 5.5 |
| --- | ---: | ---: | ---: | ---: | ---: | ---: |
| GLM 5.3 Flash | 24 | 210 545 | 4 141 | 0,97 | 0,04 | в 90 раз |
| DeepSeek V4.1 Flash | 28 | 275 290 | 7 773 | 0,84 | 0,03 | в 104 раза |
| Qwen3 Coder Flash | 41 | 430 796 | 4 540 | 3,53 | 0,09 | в 25 раз |
| Claude Sonnet 5.5 | 27 | 394 127 | 4 884 | 87,64 | 3,25 | — |
| GPT-5.6 Sol | 37 | 284 880 | 3 746 | 23,85 | 0,64 | в 3,7 раза |

GPT-5.6 Sol прогонялась повторно: в первый раз наш прокси не разбирал `usage` из Responses API (через него Crush обращается к этой модели), поэтому в таблицах — повторный прогон. Во всех прогонах все четыре проверки прошли.

## Что показали данные {#vyvody}

**Гипотеза о «дорогой переделке» не подтвердилась.** Flash-модели сделали столько же шагов, сколько Sonnet (24 и 28 против 27), и лишь Qwen3 Coder Flash — заметно больше (41, в полтора раза). Но даже с 41 шагом она вышла в 25 раз дешевле Sonnet. Чтобы дешёвая модель оказалась дороже, ей нужно делать шагов в десятки раз больше: цена шага у GLM 5.3 Flash меньше цены шага у Sonnet 5.5 примерно в 80 раз. Ни одной переделки с провалом проверки у нас не случилось, так что гипотеза о том, что flash чаще ломает задачу, в этом наборе просто не имела шанса сработать — задачи были маленькие.

**Счёт сессии — это вход, а не выход.** Выход — 1–3% всех токенов сессии: у Sonnet 4 884 токена против 394 127 на входе, причём вход даёт около 94% её счёта. Каждый шаг заново отправляет модели накопленный контекст, поэтому в сессии у Sonnet на 5–9 шагов уходит от 67 до 145 тысяч входных токенов. Цена выхода — та самая, которая в таблицах выделяется, — здесь второстепенна.

**Кэш делает прайс-лист неточным.** Доля кэшированных входных токенов (`prompt_tokens_details.cached_tokens`) в наших прогонах: GLM 5.3 Flash — 96%, DeepSeek V4.1 Flash — 94%, Qwen3 Coder Flash — 81%; у Sonnet 5.5 — 0%. Из-за этого сессия DeepSeek обошлась в 0,84 ₽, хотя расчёт «все входные токены по полной цене» даёт 3,34 ₽. У Sonnet счёт совпал с расчётом до копейки (87,64 ₽) — кэш в этих прогонах не сработал. У GPT-5.6 Sol счёт (23,85 ₽) в пять раз ниже расчёта без кэша (127,15 ₽), что согласуется с высокой долей кэша, но в этом прогоне мы не сохранили `cached_tokens` для Responses API — это вывод по цене, а не прямое измерение.

**Токены рассуждений — заметная часть выхода у reasoning-моделей.** У GLM 5.3 Flash они составили 2 479 из 4 141 токенов выхода, у DeepSeek V4.1 Flash — 4 441 из 7 773. У GPT-5.6 Sol — 341 из 3 746. Каждый такой токен оплачивается по цене выхода.

**Каталог — справочная цена.** В четырёх коротких запросах к GLM 5.3 Flash без кэша мы получили тариф примерно втрое выше карточки по входу и вшестеро по выходу (по `usage.cost`), а в сессиях Crush, где почти весь вход читался из кэша, счёт вышел близким к расчёту по карточке. В каталоге цены динамические и зависят от фактического провайдера и кэша, поэтому точную цену даёт только `usage.cost`. Причины расхождения мы не выясняли.

**Цена за токен — не цена сессии.** GPT-5.6 Sol в каталоге вдвое дороже Sonnet 5.5 (418,80 против 209,40 ₽ за 1M на входе), но на наших задачах обошлась в 3,7 раза дешевле: меньше входных токенов и, судя по цене, больше попаданий в кэш. Сравнивать модели нужно по `usage.cost` на вашей задаче.

## Рекомендации {#rekomendacii}

Это выводы из измеренного и расчёта, а не из дополнительных замеров.

**Flash-модели — для массовой рутины.** Правки по описанию, исправление ошибки по стектрейсу, генерация тестов и простой рефакторинг прошли на всех трёх flash-моделях за цену от 0,12 до 1,19 ₽ за задачу. Это ориентир для массовых переименований, шаблонных правок и тестов по готовому коду.

**Схема «сначала дешёвая, затем дорогая».** Запускаем flash-модель и проверяем результат автоматически; если проверка не прошла — повторяем на Sonnet. Она выгоднее запуска сразу на Sonnet, если доля успешных прогонов flash больше отношения цены задачи на flash к цене на Sonnet: примерно 1,1% для GLM 5.3 Flash, 1,0% для DeepSeek V4.1 Flash и 4,0% для Qwen3 Coder Flash (по нашим ценам задач). Ключевое условие — у вас должна быть автоматическая проверка (тесты, линтер, сборка). Без неё «дёшево» превращается в ручную проверку.

**Где не экономить.** Архитектурные рефакторинги большого объёма и миграции с необратимыми шагами в наш набор не входили, поэтому доказательств «flash справится» или «не справится» у нас нет. Для таких задач начинайте с флагманской модели и сравните на своём проекте с flash, прежде чем переключать процесс целиком.

**Дорогая планирует, дешёвая делает** (и наоборот) мы не измеряли. Идея разумная — выход составляет 1–3% токенов, а контекст при переключении модели придётся отправить заново — но цифр у нас нет.

## Как считать свои расходы {#svoi-raskhody}

1. **`usage` в каждом ответе.** Поле `usage.cost` — стоимость запроса в рублях, рядом `prompt_tokens`, `completion_tokens` и `completion_tokens_details.reasoning_tokens`. Эти значения мы суммировали в таблицах выше. Агенты, которые не показывают `usage`, можно направить через собственный прокси, как мы сделали для замеров.
2. **Баланс.** Запрос `GET https://routerai.ru/api/v1/credits` с вашим ключом возвращает остаток на аккаунте — разница до и после сессии показывает реальный расход. На этом основан статус-бар из гайда по [подключению Claude Code](/pages/vibe-coding-claude-code).
3. **Статистика самого агента.** Команда `crush stats` строит HTML-отчёт по использованию токенов и стоимости сессий проекта. Мы её запускали, но цифры отчёта с `usage.cost` не сверяли — для денег ориентируйтесь на `usage` и баланс.

Базовый формат запросов — в [быстром старте](https://routerai.ru/docs/guides/overview/quickstart), параметры рассуждений — в разделе [параметров API](https://routerai.ru/docs/guides/overview/parameters).

## Итог {#itog}

На четырёх небольших задачах три flash-модели справились так же, как Claude Sonnet 5.5 и GPT-5.6 Sol, а сессия на них стоила от 0,12 до 1,19 ₽ за задачу против 14,83–32,66 ₽ у Sonnet. Цена сессии определяется входными токенами и попаданием в кэш, а не прайсом за выход; проверка по `usage.cost` — единственный надёжный способ узнать цену вашей задачи. Как соотносятся цены других веток моделей — в [разборе GPT-6 Luna, Sol и Astra](/pages/gpt-6-luna-sol-astra-routerai).

> Все модели из статьи — в [каталоге RouterAI](https://routerai.ru/models), с оплатой в рублях и без VPN. [Создайте аккаунт](https://routerai.ru/users/sign_up), пополните баланс и прогоните свои задачи на двух-трёх моделях: цену сессии лучше измерить, чем оценивать по прайсу.
