# Crush

Source: https://docs.aicentos.com/fr/clients/crush

Language: fr

> Utiliser aicentos dans Crush —— ajout d'un provider personnalisé via crush.json

Crush est un agent de codage pour terminal édité par Charmbracelet, écrit en Go, qui permet de déclarer dans `crush.json` n'importe quel provider personnalisé compatible OpenAI. Pointez le base\_url vers aicentos et les modèles intégrés par aicentos deviennent utilisables dans la TUI.

## Prérequis

Créez d'abord dans la console, page « Clés API », une clé dédiée pour Crush (nommez-la par exemple `crush`, pour suivre plus facilement sa consommation) :

* Console : [https://aicentos.com](https://aicentos.com)
* Créer une clé : [https://aicentos.com/keys](https://aicentos.com/keys)
* Recharger en cas de solde insuffisant : [https://aicentos.com/wallet](https://aicentos.com/wallet)

Vérifiez que Crush est installé :

```bash
crush --version
```

## Configuration à renseigner

| Champ                    | Valeur                                                              |
| ------------------------ | ------------------------------------------------------------------- |
| Fichier de configuration | `~/.config/crush/crush.json`                                        |
| type                     | `openai-compat`                                                     |
| base\_url                | `https://aicentos.com/v1`                                           |
| api\_key                 | `$AICENTOS_API_KEY`                                                 |
| Modèle                   | nom du modèle dans la « place de marché des modèles » de la console |

## Étapes de configuration

### 1. Définir la variable d'environnement de la clé API

```bash
export AICENTOS_API_KEY="sk-votre-clé-API"
```

Pour un effet permanent, écrivez-la dans `~/.zshrc` ou `~/.bashrc`, puis faites un `source`.

### 2. Éditer crush.json

Le fichier de configuration global se trouve dans `~/.config/crush/crush.json` (sous Windows : `%USERPROFILE%\AppData\Local\crush\crush.json`) ; un `.crush.json` ou `crush.json` à la racine du projet remplace la configuration globale.

Écrivez :

```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` doit correspondre exactement à l'identifiant de modèle côté point d'accès ; référez-vous à la « place de marché des modèles » de la console, voir [Modèles pris en charge](https://docs.aicentos.com/fr/billing/models-list).

### 3. Choisir le modèle

Après avoir lancé `crush`, appuyez sur `Ctrl+L` dans la TUI (ou tapez `/model`) et vérifiez que `aicentos` et ses modèles apparaissent.

## Test

Faites une vérification rapide en mode non interactif :

```bash
crush run "Réponds en une phrase : combien font 1+1 ?"
```

Ajoutez `--debug` pour voir les journaux des requêtes. En cas de 404, vérifiez que `base_url` contient bien `/v1`.

## Remarques

* **Ne mettez pas `openai` dans `type`**. `openai` est réservé aux proxys qui passent réellement par OpenAI (ou Azure OpenAI) ; pour pointer vers un point d'accès compatible tiers, il faut `openai-compat`, sinon des erreurs de reconnaissance de modèle ou d'API peuvent survenir.
* `base_url` s'arrête à `/v1`, sans barre oblique finale.
* `api_key` accepte l'expansion `$VAR` et `$(command)` ; gardez de préférence la clé dans une variable d'environnement ou un fichier de secrets, ne l'écrivez jamais en clair en dur.
* Pour un point d'accès au protocole Anthropic (`type` à `anthropic`), `base_url` doit s'arrêter à `/api` : Crush ajoute lui-même `/v1/messages`, et il faut en plus déclarer `anthropic-version` dans `extra_headers`.
* Problème connu : avec un provider personnalisé, le comptage de tokens et les coûts peuvent afficher 0 dans la TUI, sans incidence sur les requêtes ni la facturation.
* Pour activer la sortie de raisonnement, utilisez `"can_reason": true` avec `"reasoning_effort"` sur les modèles de style OpenAI, et `"think": true` sur les modèles de style Anthropic.

## Liens utiles

* Documentation des providers personnalisés : [https://github.com/charmbracelet/crush](https://github.com/charmbracelet/crush)