Ajoutez un fournisseur compatible OpenAI personnalisé à Zed.
Updated 2026-07-29
Zed lit les fournisseurs personnalisés directement depuis settings.json. Déclarez un bloc language_models.openai_compatible avec api_url réglé sur https://api.apisrouter.com/v1, listez les id de modèles que vous voulez, et chacun d'eux apparaît dans le sélecteur de modèle du panneau agent, sous une seule clé.
Réponse rapide : un bloc dans settings.json.
Zed prend en charge nativement les fournisseurs compatibles OpenAI personnalisés. Ajoutez une entrée provider sous language_models.openai_compatible dans settings.json, réglez api_url sur https://api.apisrouter.com/v1, et déclarez chaque modèle que vous voulez sous available_models avec son nom et sa taille de contexte. Les modèles apparaissent immédiatement dans le menu déroulant de modèle du panneau agent. La clé API ne va délibérément pas dans settings.json. Zed la stocke dans le trousseau système quand vous la saisissez via l'interface des réglages de fournisseur, ou la lit depuis une variable d'environnement dérivée de la clé de votre fournisseur : un fournisseur nommé apisrouter lit APISROUTER_API_KEY. Les variables d'environnement prennent le pas sur les valeurs du trousseau.
{
"language_models": {
"openai_compatible": {
"apisrouter": {
"api_url": "https://api.apisrouter.com/v1",
"available_models": [
{
"name": "claude-sonnet-4-6",
"display_name": "Claude Sonnet 4.6",
"max_tokens": 200000
}
]
}
}
}
}Comment Zed résout les fournisseurs personnalisés et les modèles.
Zed (zed-industries sur GitHub, environ 87 000 étoiles) est un éditeur haute performance avec un panneau agent qui planifie, édite les fichiers, et exécute des outils. Son type de fournisseur openai_compatible parle le protocole /v1/chat/completions standard, exactement ce que sert une passerelle multi-fournisseurs, donc aucun plugin ni extension ne se place entre l'éditeur et l'endpoint. La clé de fournisseur que vous choisissez (« apisrouter » ci-dessus) joue un double rôle. Elle nomme le fournisseur dans les réglages du panneau agent, et elle génère la variable d'environnement que Zed vérifie pour la clé, en majuscules-snake-case avec un suffixe _API_KEY. Cette règle de nommage vaut la peine d'être bien intégrée avant de déboguer quoi que ce soit : renommez le fournisseur, et le nom de variable attendu change avec. available_models est une liste d'autorisation. Zed ne peut pas énumérer seul un endpoint personnalisé, donc seuls les id que vous déclarez deviennent sélectionnables, chacun étant une chaîne exacte, suffixe de version inclus s'il y en a un. Quand l'endpoint derrière api_url sert côte à côte des id Claude, GPT, Gemini et Kimi, un seul bloc provider transforme le sélecteur du panneau agent en un standard multi-fournisseurs derrière une seule clé. Une précision de périmètre : la fonctionnalité de prédictions d'édition de Zed utilise ses propres modèles dédiés et se configure séparément ; un fournisseur personnalisé alimente le panneau agent et l'assistant en ligne, pas les prédictions d'édition.
Configuration complète : modèles, tailles de contexte et capacités.
Chaque entrée available_models prend plus qu'un nom. max_tokens déclare la fenêtre de contexte du modèle, et max_output_tokens plafonne la longueur de génération ; Zed utilise ces chiffres pour gérer les longs fils de discussion d'agent, donc déclarer un modèle à long contexte avec un max_tokens réduit gaspille silencieusement la marge du modèle. L'objet capabilities indique à Zed ce que le modèle prend en charge : réglez tools sur true pour tout ce que vous prévoyez de piloter via le panneau agent, et n'activez images que pour les modèles qui acceptent réellement une entrée image. Pour la clé, la voie fiable sur un éditeur de bureau est l'interface des réglages de fournisseur, qui stocke la valeur dans le trousseau système. La voie de la variable d'environnement fonctionne aussi, avec une mise en garde couverte dans la section de débogage : les applications graphiques lancées depuis le dock n'héritent pas de votre profil shell.
{
"language_models": {
"openai_compatible": {
"apisrouter": {
"api_url": "https://api.apisrouter.com/v1",
"available_models": [
{
"name": "claude-sonnet-4-6",
"display_name": "Claude Sonnet 4.6",
"max_tokens": 200000,
"max_output_tokens": 64000,
"capabilities": { "tools": true, "images": false }
},
{
"name": "claude-opus-4-7",
"display_name": "Claude Opus 4.7",
"max_tokens": 200000,
"capabilities": { "tools": true }
},
{ "name": "gpt-5.5", "display_name": "GPT-5.5", "max_tokens": 200000 },
{ "name": "kimi-k2.7-code", "display_name": "Kimi K2.7 Code", "max_tokens": 200000 }
]
}
}
}
}Choisir des modèles pour le panneau agent.
Comme chaque modèle déclaré se trouve dans le même sélecteur, le workflow pratique consiste à comparer sur du vrai travail plutôt que sur des benchmarks : lancez le même type de tâche via deux candidats à des jours différents et laissez le journal d'usage par clé chiffrer chacun. Un changement de modèle dans Zed est une sélection dans un menu déroulant, donc le coût de l'expérience est une configuration nulle.
- Le panneau agent porte du véritable travail d'ingénierie : lire les fichiers, planifier des éditions à plusieurs étapes, exécuter des outils sur de longs fils de discussion. Un modèle de codage frontier (claude-sonnet-4-6, claude-opus-4-7, gpt-5.5) a sa place à cet emplacement.
- Les id calibrés pour le code comme kimi-k2.7-code valent la peine d'être déclarés même s'ils ne sont pas votre défaut ; basculer pour une session à forte dose de refactorisation n'est qu'une sélection dans le sélecteur, pas une modification de config.
- Les modèles à long contexte comme gemini-3.1-pro-preview se justifient quand les fils de discussion tirent régulièrement de gros fichiers ou tout le contexte d'un module dans une seule conversation.
- L'assistance en ligne est plus éphémère que les fils de discussion d'agent, donc un id rapide de milieu de gamme garde les transformations en un coup vives sans brûler de tokens frontier pour des réécritures d'une ligne.
Paiement à l'usage · en dessous du tarif officiel
Selected models are priced below official list prices. Exact input, output, cache, and per-request prices are shown for each model.
| Modèle | Prix officiel | Notre prix |
|---|---|---|
| Claude Sonnet 4.6 | $3.00 / $15.00 per M | $2.40 / $12.00 per M |
| Claude Opus 4.7 | $5.00 / $25.00 per M | $4.00 / $20.00 per M |
| GPT-5.5 | $5.00 / $30.00 per M | $4.00 / $24.00 per M |
| Kimi K2.7 Code | $0.95 / $4.00 per M | $1.00 / $4.00 per M |
| Gemini 3.1 Pro Preview | $2.00 / $12.00 per M | $1.60 / $9.60 per M |
Les modes d'échec spécifiques aux fournisseurs personnalisés de Zed.
La clé est dans settings.json et rien ne fonctionne. Zed ne lit délibérément pas les clés API depuis settings.json. Saisissez la clé dans l'interface des réglages de fournisseur, ou exportez la variable d'environnement dérivée ; une clé collée dans le JSON est ignorée. La variable d'environnement est définie mais Zed demande quand même une clé. Le nom de variable est dérivé de la clé de fournisseur, en majuscules-snake-case avec _API_KEY ajouté, donc un fournisseur nommé apisrouter a besoin d'APISROUTER_API_KEY, pas d'OPENAI_API_KEY. Et sur macOS, une application lancée depuis le dock ne charge jamais votre profil shell, donc les exports de profil lui sont invisibles. Lancez Zed depuis un terminal avec la commande zed, ou utilisez la voie du trousseau et évitez le problème entièrement. Un modèle manque dans le sélecteur. available_models est une liste d'autorisation ; un id que vous pensiez avoir déclaré mais qui ne l'a jamais été n'existe tout simplement pas. Les id sont des chaînes exactes, suffixes de version inclus, et le listing /v1/models de la passerelle est l'orthographe faisant autorité à copier. L'agent ne peut pas utiliser d'outils. Si le bloc capabilities d'un modèle indique que tools vaut false, Zed ne proposera pas d'usage d'outils avec lui. Déclarez capabilities pour correspondre à ce que le modèle prend réellement en charge. api_url sans /v1. Le client ajoute des chemins de route comme /chat/completions à la base que vous lui donnez, donc https://api.apisrouter.com/v1 est correct et l'hôte nu ne l'est pas. Un échec de forme 404 sur un bloc par ailleurs correct vient presque toujours de là.
Qui route Zed via une passerelle.
- Les développeurs qui vivent dans l'éditeur et veulent Claude, GPT et Kimi dans un seul sélecteur de panneau agent plutôt que de maintenir des identifiants de fournisseur séparés par fournisseur.
- Les ingénieurs qui comparent des modèles de codage sur de vraies éditions. Chaque candidat n'est qu'une entrée déclarée et une sélection dans un menu déroulant ; aucun nouveau compte par expérience.
- Les équipes qui standardisent un seul secret. Un unique APISROUTER_API_KEY dans la doc d'onboarding remplace une checklist de clés par fournisseur, et l'usage par clé montre ce que dépense chaque poste.
- Les utilisateurs qui associent un modèle d'agent frontier à un modèle d'assistance en ligne rapide d'un fournisseur différent, ce qu'aucune configuration mono-fournisseur ne permet d'exprimer.
- Les développeurs sans accès à la facturation d'un fournisseur donné. Un accès basé sur la recharge, sans exigence de carte, supprime la dépendance à une inscription par fournisseur.
Vérifiez l'endpoint et déboguez le premier fil de discussion.
Avant de démarrer un fil de discussion d'agent, listez ce que sert la passerelle. Les id renvoyés par /v1/models sont exactement les chaînes que vos entrées available_models doivent utiliser. Les échecs du premier fil de discussion sont cohérents. Un 401 signifie que la clé résolue par Zed est incorrecte ou absente : vérifiez l'entrée du trousseau dans les réglages de fournisseur, ou confirmez que la variable d'environnement dérivée est visible du processus Zed et pas seulement de votre terminal. Une erreur de modèle introuvable venant de la passerelle signifie qu'un nom déclaré ne correspond à aucun id servi, suffixe de version inclus. Si le bloc provider n'apparaît pas du tout dans les réglages, validez le JSON ; settings.json tolère les commentaires mais pas les erreurs structurelles. Une fois que les requêtes circulent, la console APIsRouter affiche le modèle par requête, le nombre de tokens et la dépense. Les fils de discussion d'agent sont des charges de travail à long contexte et à nombreux tours, et voir quels fils et quels modèles consomment les tokens est ce qui vous permet de décider si votre modèle par défaut justifie sa place.
curl -s https://api.apisrouter.com/v1/models \
-H "Authorization: Bearer $APISROUTER_API_KEY" | head -50Questions fréquentes
Zed peut-il utiliser des modèles Claude, GPT et Kimi via un seul fournisseur personnalisé ?
Oui. Un fournisseur personnalisé est une api_url plus une liste d'autorisation available_models. Quand l'endpoint sert plusieurs fournisseurs, déclarez une entrée par id et chaque modèle déclaré apparaît dans le sélecteur du panneau agent sous le même fournisseur et la même clé, modifiable par fil de discussion.
Où va la clé API pour un fournisseur personnalisé de Zed ?
Pas dans settings.json. Saisissez-la dans l'interface des réglages de fournisseur, qui la stocke dans le trousseau système, ou exportez la variable d'environnement dérivée de la clé de votre fournisseur : un fournisseur nommé apisrouter lit APISROUTER_API_KEY. Les variables d'environnement prennent le pas sur les valeurs du trousseau.
Pourquoi Zed ignore-t-il la clé API que j'ai exportée dans mon profil shell ?
Les applications graphiques lancées depuis le dock ne chargent jamais votre profil shell, donc l'export leur est invisible. Lancez Zed depuis un terminal avec la commande zed pour qu'il hérite de la variable, ou utilisez l'interface des réglages et laissez le trousseau détenir la clé.
Pourquoi mon modèle manque-t-il dans le sélecteur du panneau agent ?
Les modèles d'un fournisseur personnalisé doivent être déclarés explicitement ; Zed ne peut pas énumérer un endpoint personnalisé. Vérifiez qu'available_models contient la chaîne d'id exacte, suffixes de version inclus, et copiez les id depuis la réponse /v1/models de la passerelle plutôt que de les taper de mémoire.
Que contrôlent max_tokens et max_output_tokens dans available_models ?
max_tokens déclare la fenêtre de contexte du modèle et max_output_tokens plafonne la longueur de génération. Zed les utilise pour gérer les longs fils de discussion d'agent, donc réglez max_tokens sur ce que le modèle prend réellement en charge ; le sous-estimer gaspille du contexte que le modèle possède réellement.
Un fournisseur personnalisé change-t-il les prédictions d'édition de Zed ?
Non. Les prédictions d'édition tournent sur les propres modèles dédiés de Zed et se configurent séparément. Un fournisseur compatible OpenAI personnalisé alimente le panneau agent et l'assistant en ligne, qui est là où va le trafic /v1/chat/completions.