Назад в блог

Инструменты и интеграцииИнструкция

Подключение Crush к CheapTokens: провайдер, модель, ключ в crushrc

Добавьте CheapTokens в Crush двумя командами crushrc: провайдер completions и модель с настоящими лимитами; ключ берётся из переменной окружения.

Автор: CheapTokens TeamОпубликовано 5 мин чтения

Файл конфигурации Crush со строками провайдера и модели CheapTokens
Содержание
  1. Установка Crush
  2. Добавляем CheapTokens в crushrc
  3. Открываем Crush и даём первую задачу
  4. Сколько стоит сессия кодинга
  5. Если не работает

Чтобы подключить Crush к CheapTokens, добавьте в crushrc две команды: provider add с адресом https://api.cheaptokens.dev/v1 и --type completions, а затем model add с полным id модели. После этого откройте Crush, нажмите Ctrl+l, выберите модель и дайте ей задачу. Ключ лежит в переменной окружения, а не в файле.

Если вы шли по старой инструкции, она, скорее всего, правит crush.json. Crush его ещё читает, но в README файл назван устаревшим: актуальный конфиг — crushrc, а с версии v0.99.0 (29 октября 2026) --type у провайдера описывает формат API, а не вендора. Источники — README Crush и заметки о релизах, проверено 10 ноября 2026; последний стабильный релиз на эту дату — v0.100.0.

Установка Crush#

Берите тот менеджер пакетов, что уже стоит. Crush — один бинарник, так что путь неважен.

Установка Crush

Homebrew

bash
brew install charmbracelet/tap/crush

npm

bash
npm install -g @charmland/crush

winget

bash
winget install charmbracelet.crush

Go

bash
go install github.com/charmbracelet/crush@latest

В README есть ещё репозитории apt и yum, Scoop, Nix, Arch и FreeBSD. Запустите crush один раз, убедитесь, что он стартует, и выйдите.

Добавляем CheapTokens в crushrc#

README описывает crushrc как «просто Bash с несколькими встроенными командами Crush». В этом и весь фокус: вы пишете обычный shell, а provider add и model add — команды, которые понимает Crush. Файл ищется в таком порядке: ./.crushrc, ./crushrc, затем ~/.config/crush/crushrc.

То есть место выбираете вы. .crushrc в проекте действует для одного репозитория, файл в ~/.config/crush/ — везде. Для первой попытки проще глобальный.

Сначала положите ключ в оболочку. Создайте его в личном кабинете CheapTokens и экспортируйте (значение ниже — заглушка):

bash
export CHEAPTOKENS_API_KEY="your-key-here"

Потом откройте ~/.config/crush/crushrc и напишите:

bash
provider add cheaptokens --type completions \
  --base-url "https://api.cheaptokens.dev/v1" \
  --api-key "$CHEAPTOKENS_API_KEY"

model add cheaptokens/deepseek-ai/DeepSeek-V4-Flash-0731 \
  --name "DeepSeek-V4-Flash" \
  --context-window 380000 \
  --default-max-tokens 32768

На несколько деталей стоит взглянуть повнимательнее:

  • --type completions — так Crush называет OpenAI-совместимые провайдеры, которые не сам OpenAI. responses — для проксирования OpenAI, messages — для Anthropic-совместимых. Старый openai-compat ещё работает и мигрирует.
  • Базовый адрес заканчивается на /v1. Это адрес CheapTokens для запросов в стиле OpenAI Chat Completions; все адреса — в документации CheapTokens.
  • $CHEAPTOKENS_API_KEY раскрывает оболочка, поэтому в файле нет секрета, а проектный .crushrc можно спокойно коммитить.
  • id модели — полный: deepseek-ai/DeepSeek-V4-Flash-0731. Короткий вроде deepseek-v4-flash API отклонит. После имени провайдера идёт второй слеш, потому что он есть в самом id.
  • --context-window 380000 — округлённые 380K у DeepSeek-V4-Flash, а --default-max-tokens 32768 — его лимит на один ответ. Это настоящие лимиты модели в CheapTokens: контекст 380K и до 32 768 токенов в ответе. Указывайте их в model add, а не оставляйте значения из примера README (64000 и 5000).
Файл crushrc с провайдером и моделью CheapTokens
crushrc: строка провайдера и строка модели; ключ берётся из окружения

В README model add показан только с простым id (deepseek/deepseek-chat). У вашего id лишний слеш, поэтому настоящая проверка — выбор модели на следующем шаге: если модель появилась в группе cheaptokens, строка прочитана как задумано.

Нужна ещё одна модель на том же балансе? Добавьте ещё одну строку model add со своим id и лимитами. GLM-5.3-Flash — zai-org/GLM-5.3-Flash (контекст 390K, до 8 192 токенов в ответе), MiniMax-M2.7 — MiniMaxAI/MiniMax-M2.7 (контекст 180K, до 8 192 токенов в ответе). --default-max-tokens держите не выше лимита ответа добавляемой модели.

Открываем Crush и даём первую задачу#

Запустите crush в папке проекта. Нажмите Ctrl+l, чтобы открыть выбор модели, и найдите DeepSeek-V4-Flash в группе cheaptokens. Команды crushrc для модели по умолчанию в README нет, так что работает именно выбор из списка.

От crushrc до первого ответа: провайдер, модель, выбор, задача
Путь от конфига до первого ответа

Дайте что-нибудь небольшое и проверяемое, например: Read this repo and tell me which file starts the app, in two lines. Если в ответе назван настоящий файл, вся цепочка работает: ключ, адрес, id модели.

Попробуйте самиПопробуйте сами: вы нажали Ctrl+l, а модели в списке нет. Что проверить первым?Показать ответ

Расположение файла и переменную. Crush ищет конфиг по приоритету: ./.crushrc, ./crushrc, ~/.config/crush/crushrc. Проверьте, нет ли в проекте другого .crushrc или crushrc с другим содержимым, и что провайдер добавлен в том файле, который вы правили. А echo $CHEAPTOKENS_API_KEY должен печатать ключ в той же оболочке, где вы запускаете crush.

Запросы разрешений существуют не зря. permissions allow <tools> в crushrc позволяет названным инструментам работать без вопросов; --yolo отключает все запросы, и сам README просит обращаться с ним очень осторожно.

Сколько стоит сессия кодинга#

Шаг агента в терминале тяжёлый по входу: Crush каждый раз отправляет историю, содержимое файлов и вывод инструментов, а в ответ получает скромный текст. Допустим, средний шаг отправляет 30 000 токенов и получает 2 000. На DeepSeek-V4-Flash такой шаг стоит $0.00065, причём цена одна в любое время суток, без пиковых часов. В сумме, с учётом входа и выхода, это дешевле референсной цены OpenRouter.

Подставьте свои числа: сессия из 40 таких шагов — один ползунок.

Калькулятор стоимости

Один день работы агента в Crush

Входные токены на запрос: 30 000 · Выходные токены на запрос: 2 000 · Запросов в день: 40

МодельВ деньВ месяц
GLM-5.3-Flash$0.0272$0.816
DeepSeek-V4-Flash$0.026$0.78
MiniMax-M2.7$0.072$2.16

Вход на шаг по ходу сессии растёт, поэтому длинную сессию сверяйте с окном 380K, а не со средним. Актуальные цены за токены по всем моделям — на странице цен.

Если не работает#

Crush пишет лог в проекте: ./.crush/logs/crush.log. Прочитайте его, прежде чем гадать:

bash
crush logs --tail 500
crush logs --follow
crush --debug

Можно также добавить в crushrc строку option debug true, чтобы отладочный вывод был включён постоянно. Затем сопоставьте увиденное с HTTP-статусом ответа API:

  • 401 — ключ передан, но не узнан: опечатка или ключ заменён. Создайте или скопируйте его заново.
  • 402 — баланс или лимит ключа исчерпан. Так же выглядит запрос совсем без ключа, поэтому выполните echo $CHEAPTOKENS_API_KEY в той же оболочке, где запускаете crush. Если ключ на месте, пополните баланс.
  • 429 — слишком много запросов за короткое время. Подождите значение Retry-After и повторите.
  • 400 или «model not found» — смотрите id модели. Он должен быть полным, как в документации, с префиксом вендора.

Если вы переезжаете с crush.json, учтите: ~/.local/share/crush/crush.json — это состояние Crush, а не конфиг, руками его не правьте.

Ту же настройку для других инструментов смотрите в статьях Aider и CheapTokens и Kilo Code и CheapTokens. На странице дешёвого DeepSeek — лимиты модели из этого примера.