Claude Code против aider

Claude Code и aider — оба терминальные, оба агентные, но по-разному относятся к моделям и git. Разбираем разницу и подключение через один API-ключ.

5 мин · · Обновлено · сравнение · IDE

Claude Code и aider оба работают в терминале, оба читают проект и предлагают правки, но выросли из разных идей: Claude Code — инструмент Anthropic, заточенный под их модели с возможностью подключения к совместимому шлюзу, aider — открытый проект, изначально спроектированный под любую модель через переменные окружения и явно завязанный на git.

Отношение к моделям

Aider с самого начала модельно-агностичен: провайдер задаётся через переменные окружения или флаг --model, и переключиться с одной модели на другую — вопрос строки конфига, а не смены инструмента. Это удобно, если в проекте регулярно сравнивают ответы разных моделей на одной задаче.

Claude Code изначально рассчитан на модели Anthropic и говорит с сервером на Anthropic Messages API. Подключение к сторонним каталогам моделей происходит не через выбор провайдера внутри инструмента, а через смену адреса, на который он ходит:

bash
export ANTHROPIC_BASE_URL="https://api.zukko.pro"
export ANTHROPIC_AUTH_TOKEN="fetch_ваш_ключ"

Важно использовать именно ANTHROPIC_AUTH_TOKEN — с ANTHROPIC_API_KEY Claude Code решает, что нужно логиниться в официальный аккаунт Anthropic, а не использовать ключ шлюза. Адрес без /v1: Claude Code сам добавляет путь и обращается к POST /v1/messages с заголовком anthropic-version: 2023-06-01.

У aider обычно задаётся отдельно API-ключ и базовый адрес для OpenAI-совместимого или Anthropic-совместимого режима, в зависимости от того, как настроен конкретный проект. Через Zukko это выглядит так же, только с адресом /v1:

bash
export OPENAI_API_KEY="fetch_ваш_ключ"
export OPENAI_API_BASE="https://api.zukko.pro/v1"

Обе конфигурации работают на одном ключе fetch_..., потому что Zukko одновременно Anthropic-совместимый и OpenAI-совместимый — не нужно заводить два аккаунта под два инструмента.

Что можно вызвать этим ключом

Каталог включает claude-opus-5-5 (Claude Opus 5.5), claude-sonnet-5, gpt-5.6-sol, gpt-5.6-luna, glm-5.3 и glm-5.3-flash; актуальный список — GET https://api.zukko.pro/v1/models. У моделей Claude и GPT контекст 1,000,000 токенов, у GLM — 128K и без vision. Для задач, где aider традиционно силён — быстрые точечные правки с явным диффом и коммитом, — контекст в миллион токенов у Claude и GPT означает, что весь небольшой-средний репозиторий помещается в один запрос без ручной нарезки на куски.

Git и то, как каждый инструмент фиксирует изменения

Aider по умолчанию сам коммитит каждое принятое изменение с сообщением коммита, сгенерированным моделью — история получается гранулярной, каждая правка отдельным коммитом. Claude Code коммитит только тогда, когда явно попросить, и в остальное время просто показывает diff перед применением. Разница влияет на то, как читать историю изменений после сессии: у aider она будет длиннее и детальнее, у Claude Code — такой, какой её сделал разработчик сам.

Стоимость и то, что видно в реальном времени

Ни aider, ни Claude Code сами по себе не берут плату за использование — платится за токены модели, к которой они обращаются. Через Zukko в обычных (нестриминговых) ответах это видно сразу: заголовок X-Zukko-Cost-Micros показывает стоимость конкретного запроса в микродолларах (1,000,000 = $1), X-Fetch-Balance-Cents — остаток баланса после списания (тоже в микродолларах). Но и aider, и Claude Code по умолчанию работают в потоковом режиме (stream: true), а у потоковых ответов этих заголовков нет — расход смотрят в кабинете, через GET /v1/usage (история общая на аккаунт) или GET /v1/balance. Для aider, который может сделать несколько последовательных вызовов на одну правку (предложение — уточнение — финальный diff), история в /v1/usage — способ увидеть, на каком шаге расход вырос.

Если задача одна и та же выполняется многократно с одинаковым промптом — например, тестовый прогон конфигурации, — заголовок X-Zukko-Cache: true включает кэш (temperature: 0 тоже, но только у моделей, которые принимают этот параметр, — не у Claude): повтор запроса с полностью совпадающим телом от одного пользователя возвращается мгновенно и бесплатно на срок до 7 суток для чата, в ответе будет X-Zukko-Cache: hit.

Идемпотентность при обрыве соединения

Терминальные инструменты чаще сталкиваются с обрывом соединения на середине ответа — закрыли ноутбук, отвалился Wi-Fi. Учтите: обрыв не останавливает списание — шлюз дочитывает ответ провайдера и списывает всю генерацию. Заголовок Idempotency-Key решает проблему повтора: он задаётся на каждый логический запрос, и повтор запроса с тем же значением в течение 24 часов возвращает тот же ответ без повторного списания (при ретрае ключ не генерируют заново). Если тот же ключ отправить с другим телом запроса, будет 422 idempotency_conflict — это сигнал, что где-то в ретрае поменялось содержимое, а не сетевая ошибка.

Ошибки, которые видно сразу

Оба инструмента получают одинаковые коды ошибок от Zukko, поскольку оба ходят по HTTP. 401 при неверном ключе ({"error":{"message":"Invalid API key. Use Authorization: Bearer fetch_*","type":"authentication_error"}}), 402 при пустом балансе (insufficient_balance, проверяется до похода к модели), 404 model_not_found при опечатке в названии, 503 model_disabled, если модель выключена, 429 при превышении лимита ключа (key_daily_limit_reached / key_monthly_limit_reached). Актуальный каталог без ключа — на GET /v1/models.

Что выбрать

Если приоритет — модельная гибкость и явная гранулярная история git-коммитов на каждую правку, aider ближе к этой философии по умолчанию. Если приоритет — многошаговый агент с ручным контролем момента коммита и родная поддержка Anthropic Messages API без дополнительных настроек совместимости, это Claude Code. Оба можно подключить к одному ключу Zukko и сравнить на одной и той же задаче без двойной оплаты — ключ создаётся на zukko.pro/app/api-keys и показывается один раз.

zukko

Платите в 25×
меньше

за Claude Code & ChatGPT

Один ключ fetch_* и base URL api.zukko.pro — в Cursor, Claude Code, Codex и любом SDK.