Crush
Использование aicentos в Crush — добавление кастомного провайдера через crush.json
Обновлено:
Crush — терминальный кодинг-агент от Charmbracelet, написанный на Go, который позволяет объявить в crush.json любой OpenAI-совместимый кастомный провайдер. Достаточно направить base_url на aicentos — и модели, подключённые к aicentos, станут доступны в TUI.
Подготовка
Сначала создайте на странице «API Key» в консоли отдельный ключ для Crush (рекомендуемое имя crush — так проще отслеживать расход):
- Консоль: https://aicentos.com
- Создание ключа: https://aicentos.com/keys
- Пополнение при нехватке баланса: https://aicentos.com/wallet
Убедитесь, что Crush установлен:
crush --versionКонфигурация для заполнения
| Поле | Значение |
|---|---|
| Файл конфигурации | ~/.config/crush/crush.json |
| type | openai-compat |
| base_url | https://aicentos.com/v1 |
| api_key | $AICENTOS_API_KEY |
| Модель | имя модели из «витрины моделей» в консоли |
Шаги настройки
1. Задайте переменную окружения для API Key
export AICENTOS_API_KEY="sk-ваш-API-ключ"Для постоянного действия добавьте её в ~/.zshrc или ~/.bashrc, затем выполните source.
2. Отредактируйте crush.json
Глобальный файл конфигурации находится в ~/.config/crush/crush.json (в Windows — %USERPROFILE%\AppData\Local\crush\crush.json); файл .crush.json или crush.json в корне проекта переопределяет глобальную конфигурацию.
Запишите:
{
"$schema": "https://charm.land/crush.json",
"providers": {
"aicentos": {
"type": "openai-compat",
"base_url": "https://aicentos.com/v1",
"api_key": "$AICENTOS_API_KEY",
"models": [
{
"id": "gpt-4o",
"name": "GPT-4o",
"context_window": 128000,
"default_max_tokens": 8192,
"can_reason": true
}
]
}
}
}models[].id должен полностью совпадать с ID модели на стороне эндпоинта; ориентируйтесь на «витрину моделей» в консоли, см. Поддерживаемые модели.
3. Выбор модели
После запуска crush нажмите в TUI Ctrl+L (или введите /model) и убедитесь, что видны aicentos и его модели.
Проверка
Быстрая проверка в неинтерактивном режиме:
crush run "Ответь одним предложением: сколько будет 1+1"Чтобы видеть логи запросов, добавьте --debug. При ошибке 404 проверьте, есть ли /v1 в base_url.
Примечания
- В
typeне пишитеopenai. Значениеopenai— для прокси, которые действительно идут в OpenAI (или Azure OpenAI); при указании на сторонний совместимый эндпоинт обязательноopenai-compat, иначе возможны ошибки распознавания модели или ошибки API. - В
base_urlуказывайте адрес до/v1, без слэша на конце. api_keyподдерживает раскрытие$VARи$(command); рекомендуется держать ключ в переменной окружения или файле секретов, а не записывать в открытом виде.- Если подключается эндпоинт с протоколом Anthropic (
type=anthropic),base_urlдолжен заканчиваться на/api— Crush сам добавит/v1/messages, и дополнительно потребуется объявитьanthropic-versionвextra_headers. - Известная проблема: при использовании кастомного провайдера счётчик токенов и статистика затрат в TUI могут показывать 0 — на сами запросы и тарификацию это не влияет.
- Чтобы включить вывод рассуждений: у моделей в стиле OpenAI —
"can_reason": trueвместе с"reasoning_effort"; у моделей в стиле Anthropic —"think": true.
Полезные ссылки
- Документация по кастомным провайдерам: https://github.com/charmbracelet/crush