Connecter OpenCode
Difficulté ⌨️ Intermédiaire (fichier de configuration JSON) | Format d'interface Compatible OpenAI | base_url
https://byesu.com/v1
https://byesu.com/v1claude-opus-4-8OpenCode est l'un des agents de programmation IA open source les plus étoilés sur GitHub — un assistant pensé d'abord pour le terminal (avec aussi une application de bureau et une extension IDE), délibérément agnostique vis-à-vis des fournisseurs : il ne vous enferme jamais chez un seul éditeur de modèles. Cette philosophie s'accorde naturellement avec byesu, une passerelle API pour l'IA dotée d'endpoints compatibles OpenAI et natifs Anthropic. Déclarez byesu une seule fois comme fournisseur personnalisé dans opencode.json, et une seule clé fait apparaître Claude Opus 4.8, Claude Sonnet 5, GPT-5.6 et Grok 4.5 dans le sélecteur de modèles d'OpenCode — facturés à l'usage, sans abonnement.
Avant de commencer
Rendez-vous sur Console → Jetons et créez un jeton dans le groupe qui couvre les modèles que vous comptez utiliser (voir Choisir un groupe). Remplacez les sk-xxxx ci-dessous par votre propre clé.
Prérequis
① OpenCode installé — n'importe laquelle des méthodes officielles convient :
curl -fsSL https://opencode.ai/install | bashnpm install -g opencode-aibrew install anomalyco/tap/opencodeUne fois installé, vérifiez :
opencode --version② Un jeton byesu — créé dans la console, dans le groupe qui correspond aux modèles voulus (c'est précisément l'objet de l'erreur « no available channel » abordée plus bas).
Étape 1 : Ajouter byesu comme fournisseur personnalisé
OpenCode lit opencode.json à deux endroits :
- Global :
~/.config/opencode/opencode.json— s'applique à tous les projets. Emplacement recommandé pour le bloc du fournisseur. - Projet :
opencode.jsonà la racine du projet — remplace le fichier global pour ce projet.
Créez (ou complétez) l'un de ces fichiers avec le contenu suivant :
{
"$schema": "https://opencode.ai/config.json",
"model": "byesu/claude-opus-4-8",
"small_model": "byesu/claude-sonnet-5",
"provider": {
"byesu": {
"npm": "@ai-sdk/openai-compatible",
"name": "byesu",
"options": {
"baseURL": "https://byesu.com/v1",
"apiKey": "sk-votre-jeton"
},
"models": {
"claude-opus-4-8": { "name": "Claude Opus 4.8" },
"claude-sonnet-5": { "name": "Claude Sonnet 5" },
"gpt-5.6-terra": { "name": "GPT-5.6 Terra" },
"grok-4.5": { "name": "Grok 4.5" }
}
}
}
}Rôle de chaque partie :
| Champ | Signification |
|---|---|
provider.byesu | La clé choisie ici devient l'identifiant du fournisseur — chaque référence de modèle s'écrit byesu/<model-id> |
npm | L'adaptateur AI SDK qu'OpenCode charge pour ce fournisseur. L'endpoint de byesu parle /v1/chat/completions, donc c'est @ai-sdk/openai-compatible |
options.baseURL | https://byesu.com/v1 — se termine par /v1, n'ajoutez pas /chat/completions |
options.apiKey | Votre jeton sk- ; OpenCode l'envoie pour vous dans un en-tête Bearer |
models | Chaque clé est un identifiant de modèle exactement tel qu'affiché dans la console ; name n'est que le libellé affiché dans le sélecteur |
model / small_model | Modèle par défaut, plus un modèle auxiliaire léger (titres de session, résumés) — tous deux au format provider_id/model_id |
Les trois erreurs les plus faciles à commettre
npmdoit être@ai-sdk/openai-compatible. Le package@ai-sdk/openaicible l'API/v1/responsesd'OpenAI et ne correspondra pas à cet endpoint.- Les clés de modèles sous
modelsdoivent correspondre exactement aux noms de la console (claude-opus-4-8, pasclaude-opus-4.8). - Partout ailleurs dans la configuration, les modèles portent le préfixe du fournisseur :
byesu/claude-opus-4-8, jamais le nom seul.
En option, chaque entrée de modèle accepte aussi un objet
limit({ "context": ..., "output": ... }) pour que la jauge de contexte d'OpenCode soit exacte. Tout fonctionne sans.
Étape 2 (optionnelle) : Garder la clé hors du fichier
Deux méthodes propres pour éviter une clé en clair dans opencode.json :
Interpolation de variables d'environnement. OpenCode développe les espaces réservés {env:VAR} à l'intérieur de la configuration :
"options": {
"baseURL": "https://byesu.com/v1",
"apiKey": "{env:BYESU_API_KEY}"
}# Ajoutez ceci à ~/.zshrc ou ~/.bashrc, puis rouvrez votre terminal
export BYESU_API_KEY="sk-votre-jeton"La commande /connect. Lancez opencode, tapez /connect, choisissez Other, saisissez byesu comme identifiant de fournisseur et collez votre clé. OpenCode enregistre l'identifiant dans son propre magasin de secrets, et vous pouvez supprimer entièrement apiKey de la configuration.
WARNING
L'identifiant de fournisseur saisi dans /connect doit correspondre à la clé sous provider dans opencode.json (ici : byesu), sinon la clé enregistrée n'est jamais utilisée.
Étape 3 : Lancer et vérifier
Placez-vous dans n'importe quel répertoire de projet et lancez :
opencodeTapez /models — les quatre entrées byesu doivent apparaître dans le sélecteur. Choisissez-en une et posez une petite question (par exemple : « liste les fichiers du répertoire courant »). Si la réponse arrive normalement, vous êtes connecté ✅
Changer de modèle, Plan et Build
/models permet de changer de modèle à tout moment en cours de session. Tab bascule entre l'agent Build (accès complet aux outils) et l'agent Plan (mode analyse qui demande confirmation avant de modifier des fichiers), et chaque agent peut épingler son propre modèle byesu :
{
"agent": {
"plan": { "model": "byesu/claude-sonnet-5" }
}
}Une répartition classique : Opus 4.8 par défaut pour Build, Sonnet 5 pour l'agent Plan et le rôle de small_model.
Bloqué ?
- 401 / jeton invalide → la clé est erronée, ou l'identifiant de fournisseur saisi dans
/connectne correspond pas à votre cléproviderdans la configuration (détails) - Aucun canal disponible → le groupe du jeton ne couvre pas le modèle choisi ; créez un jeton dans le bon groupe (Choisir un groupe, détails)
- Modèle inexistant → une clé sous
modelsne correspond pas exactement au nom du modèle dans la console, ou une référence n'a pas le préfixebyesu/(détails) - Solde insuffisant → rechargez dans la console en USDT, via Alipay ou WeChat Pay (détails)
- Pour tout le reste, consultez Erreurs courantes & solutions
FAQ
Comment ajouter un fournisseur personnalisé compatible OpenAI à OpenCode ?
Déclarez-le sous la clé provider dans opencode.json : définissez npm sur @ai-sdk/openai-compatible, options.baseURL sur https://byesu.com/v1, options.apiKey sur votre jeton sk-, et listez les identifiants de modèles sous models. À partir de là, référencez chaque modèle sous la forme byesu/<model-id>.
Quel package npm un fournisseur personnalisé OpenCode doit-il utiliser ?
@ai-sdk/openai-compatible — c'est l'adaptateur pour les fournisseurs qui parlent /v1/chat/completions, ce qui est le cas de l'endpoint compatible OpenAI de byesu. @ai-sdk/openai cible au contraire l'API /v1/responses d'OpenAI et ne correspondra pas.
Puis-je garder ma clé API en dehors de opencode.json ?
Oui, de deux façons : utilisez l'interpolation de variables d'environnement ("apiKey": "{env:BYESU_API_KEY}" plus un export dans votre profil shell), ou exécutez /connect dans OpenCode et enregistrez la clé sous un identifiant de fournisseur identique à la clé de votre configuration.
Pourquoi OpenCode renvoie-t-il une erreur « no available channel » ?
Le jeton a été créé dans un groupe qui ne couvre pas le modèle sélectionné. Créez un jeton dans le groupe correspondant depuis la console byesu (voir Choisir un groupe), remplacez la clé par la nouvelle, puis réessayez.
Les agents Plan et Build d'OpenCode peuvent-ils utiliser des modèles différents ?
Oui. Tab bascule entre Build et Plan en cours de session, et chaque agent accepte sa propre surcharge model dans opencode.json — par exemple agent.plan.model défini sur byesu/claude-sonnet-5 pendant que Build reste sur byesu/claude-opus-4-8.
Comment l'utilisation d'OpenCode est-elle facturée via byesu ?
À l'usage, au token, avec des multiplicateurs transparents par rapport aux prix officiels et sans abonnement. La console affiche le prix facturé en temps réel à côté de chaque modèle, et vous pouvez recharger en USDT, via Alipay ou WeChat Pay.
