# Crush

Источник: https://docs.aicentos.com/ru/clients/crush

Language: ru

> Использование 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)
* Создание ключа: [https://aicentos.com/keys](https://aicentos.com/keys)
* Пополнение при нехватке баланса: [https://aicentos.com/wallet](https://aicentos.com/wallet)

Убедитесь, что Crush установлен:

```bash
crush --version
```

## Конфигурация для заполнения

| Поле              | Значение                                  |
| ----------------- | ----------------------------------------- |
| Файл конфигурации | `~/.config/crush/crush.json`              |
| type              | `openai-compat`                           |
| base\_url         | `https://aicentos.com/v1`                 |
| api\_key          | `$AICENTOS_API_KEY`                       |
| Модель            | имя модели из «витрины моделей» в консоли |

## Шаги настройки

### 1. Задайте переменную окружения для API Key

```bash
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` в корне проекта переопределяет глобальную конфигурацию.

Запишите:

```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 модели на стороне эндпоинта; ориентируйтесь на «витрину моделей» в консоли, см. [Поддерживаемые модели](https://docs.aicentos.com/ru/billing/models-list).

### 3. Выбор модели

После запуска `crush` нажмите в TUI `Ctrl+L` (или введите `/model`) и убедитесь, что видны `aicentos` и его модели.

## Проверка

Быстрая проверка в неинтерактивном режиме:

```bash
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](https://github.com/charmbracelet/crush)