Кодинг-агент в терминале и IDE: какие модели брать и почему всё решает cache read
Кодинг-агент тратит примерно 85% токенов на чтение кэша, 10% на вход и 5% на выход — go2llm называет это профилем 10/5/85. Поэтому смешанная цена claude-sonnet-5 через go2llm составляет $0,142848 за 1M токенов против $0,87 официально, и выбирать модель по колонке input бессмысленно.
Дата публикации: 11 сентября 2026, каталог цен v38. Часть обзора сценариев go2llm.
Задача
Вы гоняете Claude Code, OpenCode, Cline или Aider по репозиторию. Один запрос «почини этот баг» разворачивается в 15–40 обращений к модели: агент читает файлы, вызывает инструменты, получает результаты, правит, запускает тесты. На каждом ходе агент заново подаёт модели весь накопленный контекст — системный промпт, описания инструментов, содержимое открытых файлов, историю ходов.
Именно поэтому счёт не бьётся с интуицией «input плюс output». Токены, написанные один раз, модель видит десятки раз. go2llm тарифицирует их по третьей ставке — cache (чтение кэша), и она в биллинге кодинг-агента главная по объёму.
Три статьи расхода, которые go2llm показывает отдельной колонкой на странице цен:
| Статья | Что это | Ставка в каталоге |
|---|---|---|
| input | новые токены хода + первая запись кэша | in |
| output | сгенерированный ответ и tool-calls | out |
| cache read | повторное чтение неизменного префикса | cache |
Какие модели подходят и почему
Смешанная цена считается по формуле профиля кодинг-агента:
mixed = in × 0,10 + out × 0,05 + cache × 0,85
Разворот для claude-opus-5: 0,503 × 0,10 = 0,0503; 2,51 × 0,05 = 0,1255; 0,05025 × 0,85 = 0,0427. Сумма — $0,218512 за 1M смешанных токенов. Официальный тариф по той же формуле: 5,00 × 0,10 = 0,50; 25,00 × 0,05 = 1,25; 0,50 × 0,85 = 0,425, итого $2,175 — почти ровно в 10 раз больше.
| Модель | in | out | cache | mixed 10/5/85, $/1M | Кому |
|---|---|---|---|---|---|
claude-opus-5 | 0,503 | 2,51 | 0,05025 | 0,218512 | сложный рефакторинг, архитектурные правки |
claude-sonnet-5 | 0,329 | 1,64 | 0,03288 | 0,142848 | рабочая лошадь на весь день |
claude-haiku-4-5 | 0,13 | 0,65 | 0,01299 | 0,056541 | мелкие правки, быстрые итерации |
claude-opus-4-8 | 0,503 | 2,51 | 0,05025 | 0,218512 | если нужна именно 4.8 |
gpt-5.3-codex | 0,519 | 4,15 | 0,05192 | 0,303532 | код-специализация OpenAI |
gpt-5.6-sol | 0,402 | 2,01 | 0,0402 | 0,17487 | альтернатива Sonnet на OpenAI-протоколе |
kimi-k2.7-code | 0,09548 | 0,402 | 0,0191 | 0,045883 | дешёвый код-профиль |
glm-5.3 | 0,141 | 0,442 | 0,02613 | 0,058411 | дешёвый агентный цикл |
deepseek-v4-flash | 0,0226 | 0,0679 | 0,00072 | 0,006269 | массовые прогоны, линтеры, автофиксы |
Обратите внимание на неочевидное: gpt-5.3-codex ($0,303532) — самая дорогая модель в этой подборке на профиле 10/5/85, дороже даже claude-opus-5 ($0,218512), хотя Codex не позиционируется как флагман. Причина — дорогой out (4,15) и сравнительно дорогой cache (0,05192). Сравнение по одной колонке input не показало бы этого разрыва.
Как подключить
Claude Code работает с go2llm нативно по Anthropic Messages — без прослойки-конвертера. Главный технический крючок: используйте ANTHROPIC_AUTH_TOKEN, а не ANTHROPIC_API_KEY. Если на машине уже есть вход в Claude Code под личным аккаунтом, ANTHROPIC_API_KEY может уступить сохранённому логину, и запрос уйдёт мимо go2llm с 401.
export ANTHROPIC_BASE_URL=https://go2llm.tech
export ANTHROPIC_AUTH_TOKEN=YOUR_API_KEY
export ANTHROPIC_MODEL=claude-sonnet-5
claude
Base URL для Anthropic SDK и Claude Code — https://go2llm.tech без /v1. Для OpenAI SDK — https://go2llm.tech/v1 с /v1. Перепутать — получить 404.
OpenCode ходит по OpenAI Chat Completions. Конфиг opencode.json:
{
"provider": {
"go2llm": {
"npm": "@ai-sdk/openai-compatible",
"name": "go2llm",
"options": { "baseURL": "https://go2llm.tech/v1" },
"models": { "claude-sonnet-5": {}, "gpt-5.6-sol": {} }
}
}
}
opencode run "добавь тесты на модуль billing" -m go2llm/claude-sonnet-5
Оба клиента проверены живым запросом. Kilo Code, Cline, RooCode, Continue.dev и Aider подключаются тем же способом — сменой base URL на https://go2llm.tech/v1; go2llm их вручную не тестировал. Cursor мы живым запросом не проверяли и не утверждаем ни что он работает, ни что не работает.
Codex CLI подключается с 2026-09-14. Актуальные версии Codex CLI для кастомных провайдеров (model_providers в ~/.codex/config.toml) поддерживают только wire_api = "responses" — формат OpenAI Responses API; значение wire_api = "chat" сам Codex отклоняет с ошибкой «no longer supported». Раньше у go2llm маршрута /v1/responses не было и Codex получал 404. Теперь он опубликован и проверен живым прогоном Codex CLI 0.151.0: codex exec прочитал файл тестового проекта, исполнил инструменты и внёс правку. Прогон был на одной модели (qwen3-8-flash), интерактивный TUI codex не проверяли. Конфиг — на странице Codex API.
Сколько это стоит
Возьмём реальный объём активной разработки: 50M смешанных токенов в месяц. По профилю 10/5/85 это 5M входа, 2,5M выхода и 42,5M чтения кэша.
claude-sonnet-5:
- вход: 5 × $0,329 = $1,645
- выход: 2,5 × $1,64 = $4,10
- чтение кэша: 42,5 × $0,03288 = $1,3974
- итого $7,1424 ≈ 617 ₽ по курсу ЦБ 86,3793 ₽/$ на 01.09.2026
Тот же объём по официальному тарифу Anthropic: 5 × 2,00 = $10,00; 2,5 × 10,00 = $25,00; 42,5 × 0,20 = $8,50 → $43,50. Разница — в 6,1 раза.
claude-opus-5 на том же объёме: 5 × 0,503 = $2,515; 2,5 × 2,51 = $6,275; 42,5 × 0,05025 = $2,1356 → $10,9256 ≈ 944 ₽. Официально — $108,75.
deepseek-v4-flash: 5 × 0,0226 = $0,113; 2,5 × 0,0679 = $0,1697; 42,5 × 0,00072 = $0,0306 → $0,3135 ≈ 27 ₽.
Заметьте строку чтения кэша у Sonnet: $1,3974 из $7,1424 — это 19,6% счёта при 85% объёма. У Opus — $2,1356 из $10,9256, то есть 19,5%. Ставка маленькая, но объём огромный, и именно она отличает честный расчёт от расчёта «по input».
Welcome-грант go2llm — $1 при регистрации. На claude-sonnet-5 это 1 ÷ 0,142848 = 7M смешанных токенов, на claude-opus-5 — 4,58M, на deepseek-v4-flash — 159,5M. Первого рабочего дня хватит без пополнения.
Как контролировать расход
go2llm возвращает фактическую стоимость каждого запроса в usage.cost_usd, в том числе в финальном usage-блоке SSE-стрима. Проверить вручную:
import os
from anthropic import Anthropic
client = Anthropic(
base_url="https://go2llm.tech",
api_key=os.environ["GO2LLM_API_KEY"],
)
msg = client.messages.create(
model="claude-opus-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Привет"}],
)
print(msg.usage) # у шлюза там ещё cost_usd
Настройки ключа в кабинете go2llm: квота в долларах, список разрешённых моделей, IP allow-list, срок действия и лимит 20 RPM по умолчанию. Практика для кодинг-агента:
- отдельный ключ на агента, квота на месяц — например $15 при расчёте выше;
- в allowed models оставить только
claude-sonnet-5иclaude-haiku-4-5, чтобы случайныйANTHROPIC_MODEL=claude-opus-5не удвоил счёт; - ключ, созданный при регистрации, идёт без квоты — выставить вручную.
Списание у go2llm двухфазное: резерв оценочной стоимости до вызова, затем списание фактической и освобождение остатка. Баланс не уходит ниже нуля.
Грабли
401 при живом ключе. Использован ANTHROPIC_API_KEY вместо ANTHROPIC_AUTH_TOKEN при сохранённом логине Claude Code. См. выше.
404 model_not_found. Опечатка в model ID или устаревший каталог. Точный список — curl https://go2llm.tech/v1/models, без ключа.
400 model_protocol_mismatch. Модель дёрнули не на том endpoint'е. Нужный endpoint указан в /v1/models.
400 unsupported_content_type. Агент попытался приложить скриншот или PDF в текстовый запрос — go2llm такое на текстовых endpoint'ах не принимает.
429 quota или 429 rate_limit. Упёрлись в квоту ключа или в 20 RPM. Учитывайте заголовок Retry-After.
503 no_eligible_route / product_paused. Проверьте GET /status и повторите позже.
Стрим оборвался. go2llm может использовать совместимый fallback-маршрут на разрешённых классах ошибок до начала ответа. После первого валидного SSE-события переключение не выполняется, и автоматически повторить такой поток нельзя. Полный разбор кодов — в справочнике ошибок.
FAQ
Нужно ли переписывать код агента под go2llm? Нет. go2llm отдаёт те же поля, тот же streaming и те же tool calls, что Anthropic Messages и OpenAI Chat Completions. Меняются две переменные окружения: base URL и ключ.
Кэш включается сам или надо что-то ставить в запросе? Сам шлюз кэш не включает: prompt caching учитывается и тарифицируется на обоих протоколах, но работает ровно от того, что клиент положил в тело запроса. Клиенты вроде Claude Code расставляют кэш-брейкпоинты самостоятельно — тогда go2llm тарифицирует записи по in, а чтения по cache. Если вы ходите напрямую через SDK, cache_control надо проставить в теле самому, иначе кэша не будет. TTL кэша мы отдельно не документировали — фактическую картину проще всего увидеть по usage.cost_usd и полям usage в ответе.
Почему не взять просто самую дешёвую модель на весь день? Потому что deepseek-v4-flash за $0,3135 на 50M токенов сэкономит $6,83 относительно Sonnet, но если он сделает вдвое больше ходов на ту же задачу, экономия исчезнет. Гоняйте обе на своей кодовой базе и сравнивайте usage.cost_usd за завершённую задачу, а не за запрос.
Дальше
Чат-бот и поддержка · Извлечение данных · Командный доступ · Документация · Цены