Два AI-агента для работы с кодом на одном и том же движке, на одной машине и с одинаковыми задачами. Claude Code оказался гораздо прожорливее. На задачу ответить одной строкой он отправил модели запрос примерно на 33 000 токенов (системный промпт, схемы инструментов и обвязка). OpenCode на то же самое потратил около 7 000 токенов. Разница почти в пять раз.
Проблема не только в этом. Промпт Claude Code нестабилен: он переписывает десятки тысяч токенов прямо во время сессии, раз за разом. На одной и той же задаче он мог записать в кэш до 54 раз больше данных, чем OpenCode. А запись в кэш стоит дороже. В то время как OpenCode выдавал байт-в-байт одинаковые префиксы во всех запросах, и платил за чтение из кэша копейки.
Дальше — больше. Если в репозитории лежит файл AGENTS.md или CLAUDE.md на 72 килобайта, каждый запрос становится тяжелее ещё на 20 000 токенов. Пять небольших MCP-серверов добавляют ещё 5–7 тысяч токенов. И вот уже рабочий инструмент, прежде чем пользователь напечатал хоть слово, уходит на глубину 75–85 тысяч токенов. Самое дорогое — подзадачи (subagents). Простой таск за 121 000 токенов при раздаче двум сабагентам вырос до 513 000 токенов. Каждый сабагент платит свою начальную загрузку, а затем родительский процесс проглатывает весь их лог.
Впрочем, есть один плюс Claude Code. На многошаговой задаче (написать код, запустить, исправить, запустить снова) он сработал эффективнее. Он пакует вызовы инструментов в один раунд и сделал три запроса вместо девяти у OpenCode. В итоге общий расход токенов оказался почти одинаковым (121 000 против 132 000). Но это работает только если задача позволяет батчинг.
Кэширование почти не спасает. Да, запись в кэш платится один раз, и чтение стоит в десять раз дешевле. Но есть три вещи, которые кэш не покрывает: сама запись (если пауза превысила пять минут), количество прочтений (умножается на число запросов) и поедание контекстного окна. Бутстрап на 85 000 токенов просто занимает половину окна в 200K, и код туда не помещается.
Главный совет из статьи: если вы используете агентов в продакшене — снимите лог на границе с API и посмотрите, что на самом деле улетает в модель. Не гадайте, а измеряйте.