Claude code vs opencode: где тонут ваши токены
Знаете, что меня реально зацепило, когда я увидел эти цифры? Когда я попросил оба инструмента ответить одной строкой, Claude Code сожрал 33 000 токенов прежде чем увидел мой запрос. OpenCode — всего 7 000.
Тридцать три тысячи. До. Одного. Слова.
Это как если бы вы позвонили другу спросить «как дела?», а он сначала прочитал вам вслух три тома энциклопедии.
Что за токены такие
Токены (tokens) — это кусочки текста, которые LLM читает и генерирует. Примерно 1 токен = 0,75 слова на английском. Чем больше токенов, тем дороже и медленнее.
Системный промпт (system prompt) — это инструкция-каркас, которую LLM получает в начале каждого сеанса. Объясняет, кто он и как должен работать.
Схемы инструментов (tool schemas) — это описания того, какие действия может делать AI: какие кнопки ему доступны и что каждая делает.
Скаффолдинг (scaffolding) — это вспомогательный код, который оборачивает основной процесс и добавляет ему структуру. Как строительные леса вокруг здания.
Откуда берётся эта пропасть
Посмотрите на эту радость:
TOKEN OVERHEAD COMPARISON ═══════════════════════════════════════════════════════════════ Baseline (one-line request): ┌─────────────────────┬────────────┐ │ Claude Code │ ██████████ │ 33,000 tokens ├─────────────────────┼────────────┤ │ OpenCode │ ███ │ 7,000 tokens └─────────────────────┴────────────┘ Cache inefficiency (cache writes): ┌─────────────────────┬────────────┐ │ Claude Code │ ██████████ │ 54x more cache ├─────────────────────┼────────────┤ │ OpenCode │ █ │ baseline └─────────────────────┴────────────┘ Subagent fan-out (same task): ┌─────────────────────┬────────────┐ │ Direct │ ████ │ 121,000 tokens ├─────────────────────┼────────────┤ │ 2 subagents │ █████████████████████ | 513,000 tokens └─────────────────────┴────────────┘
Промпт-кэш (prompt-cache) — это способ запомнить часть текста, чтобы не отправлять его каждый раз заново. Как если бы вы не переписывали введение в каждом письме. OpenCode использует это эффективно: его запрос идентичен побайтово (byte-identical) в каждом запуске — заплатил один раз, читаешь потом за копейки.
Claude Code же перезаписывает десятки тысяч токенов в кэш каждый ран, каждый раз. На одной и той же задаче — до 54x больше записей в кэш, чем OpenCode.
А ведь записи в кэш (cache writes) тарифицируются по повышенной ставке. Отсюда и растёт счёт в дашборде.
Конфигурация добавляет веса
В production-репозитории файл инструкций на 72 КБ (AGENTS.md или CLAUDE.md — это конфигурационные файлы с правилами для AI-ассистента) добавляет ещё ~20 000 токенов к каждому запросу. Пять скромных MCP-серверов (MCP, Model Context Protocol — это протокол, позволяющий AI подключаться к внешним инструментам, как USB для AI) добавляют ещё 5 000–7 000.
К моменту отправки первого реального запроса вы уже на 75 000–85 000 токенов в глубину. До того, как напечатали хоть слово.
Сабагенты — это больно
Сабагенты (subagents) — это вложенные AI-ассистенты, работающие над частью задачи, как помощники, каждый со своими инструкциями. Фан-аут (fan-out) — это когда одна задача разделяется на несколько параллельных, как один начальник раздаёт задания нескольким исполнителям.
Проблема: каждый сабагент — это свой собственный агент. Он перечитывает свой системный промпт и инструменты на каждом шаге. Поэтому фан-аут умножает количество полных базовых контекстов (baseline — минимальный набор информации, который AI получает с каждым запросом) в воздухе.
Задача, которая стоила 121 000 токенов напрямую, обошлась в 513 000 токенов при двух сабагентах. Почти в пять раз дороже.
Где Claude code выигрывает
Нашёл одно преимущество. На многошаговой задаче (multistep task) Claude Code показал меньший общий расход, потому что группирует вызовы инструментов (tool calls — это когда AI запрашивает выполнение действия: поиск, чтение файла, запуск кода) в меньшее количество запросов. OpenCode же платит свой меньший базовый контекст снова и снова.
Но вот забавное: это преимущество держалось только на первой модели. На более свежей тот же сценарий потребовал вдвое больше запросов — примерно 298 000 токенов против 133 000 у OpenCode.
Мы перепроверили все результаты на второй модели — паттерн подтвердился.
Bottom line: Claude Code тратит в 4-5x больше токенов на старте, масштабируется хуже с сабагентами, и выигрывает только на многошаговых задачах с более старыми моделями. Для проектов, где важна стоимость, OpenCode — разумный выбор по умолчанию.
ИТОГОВАЯ ДИНАМИКА ЗАТРАТ ═══════════════════════════════════════════════════════════════ Сценарий: ┌───────────────────────────────┬──────────────┐ │ Стартовый запрос │ Claude хуже │ ├───────────────────────────────┼──────────────┤ │ Сабагенты │ Claude хуже │ ├───────────────────────────────┼──────────────┤ │ Многошаговые задачи │ Claude иногда выигрывает └───────────────────────────────┴──────────────┘
Выводы
Claude Code дорог уже на старте: он тащит за собой больше контекста, хуже масштабируется с сабагентами и только в отдельных сценариях может отыграться.
OpenCode выигрывает там, где важны предсказуемая стоимость и экономия токенов.
Ссылки
- Claude Code sends 33k tokens before reading the prompt; OpenCode sends 7k — исходный разбор сравнения токенных накладных расходов
Дмитрий Полухин — продуктовый дизайнер. Пишу про разработку, AI и дизайн интерфейсов. Обо мне, контакты и профили.