« Pourquoi ma connexion au modèle Claude dans OpenCode est-elle constamment interrompue ? » — C'est le problème le plus frustrant pour les développeurs utilisant OpenCode (désormais renommé Crush) pour accéder aux modèles Claude. La raison est pourtant simple : OpenCode utilise le SDK natif d'Anthropic pour invoquer Claude, alors que de nombreux services proxy API tiers ne prennent en charge que le format compatible OpenAI. Cette incompatibilité de format entraîne des erreurs fréquentes et des déconnexions.
Valeur ajoutée : Après avoir lu cet article, vous comprendrez l'architecture sous-jacente de l'invocation de Claude par OpenCode, les 3 causes fréquentes d'interruption, et la solution complète pour résoudre définitivement le problème via l'interface au format natif Anthropic d'APIYI.

Qu'est-ce qu'OpenCode : d'OpenCode à Crush
OpenCode est un assistant de codage IA en terminal basé sur le langage Go, utilisant le framework Bubble Tea pour construire une interface utilisateur TUI élégante. Le projet a accumulé plus de 11 600 étoiles sur GitHub avant d'être intégré par l'équipe Charm et renommé Crush (charmbracelet/crush, 22 200+ étoiles).
| Informations sur le projet | Détails |
|---|---|
| Nom original | OpenCode (opencode-ai/opencode) |
| Nom actuel | Crush (charmbracelet/crush) |
| Langage de développement | Go |
| Interface | TUI (Bubble Tea) |
| Étoiles GitHub | 22 200+ (Crush) |
| Fournisseurs IA pris en charge | Anthropic, OpenAI, Gemini, Groq, OpenRouter, xAI, Bedrock, Azure |
| Système d'outils | Opérations sur fichiers, Bash, Grep, Glob, LSP, MCP |
| Licence open source | MIT |
Différences clés entre OpenCode, Claude Code et Aider
| Caractéristique | OpenCode/Crush | Claude Code | Aider |
|---|---|---|---|
| Support multi-fournisseurs | SDK natif de 7+ fournisseurs | Anthropic uniquement | Multi-fournisseurs |
| Format API | Format natif de chaque fournisseur | Natif Anthropic | Principalement compatible OpenAI |
| Méthode d'invocation Claude | SDK natif Anthropic | SDK natif Anthropic | Format compatible OpenAI |
| Pensée étendue | Déclenchement conditionnel (inclut le mot-clé "think") | Support intégré | Dépend du modèle |
| Support MCP | Oui | Oui | Non |
| UI | Interface graphique TUI | CLI + TUI | CLI pure |
Différence clé : OpenCode utilise le SDK natif pour chaque fournisseur d'IA, au lieu de passer uniformément par un format compatible OpenAI. Cela signifie que lors de l'invocation de Claude, il utilise l'API Messages native d'Anthropic (/v1/messages), et non l'API Chat Completions d'OpenAI (/v1/chat/completions).
🎯 Conseil clé : C'est la racine du problème — si votre service proxy API ne fournit que l'interface
/v1/chat/completions, le SDK natif Anthropic d'OpenCode ne pourra pas effectuer l'appel correctement. APIYI (apiyi.com) prend en charge à la fois le format compatible OpenAI et le format natif Anthropic, ce qui permet de résoudre définitivement ce problème.
3 causes principales des interruptions fréquentes de Claude dans OpenCode

Cause n°1 : Incompatibilité de format API (la plus fréquente)
C'est la source du problème pour 90 % des utilisateurs.
Chemin d'invocation de Claude dans OpenCode :
OpenCode → Anthropic Go SDK → POST /v1/messages
↑ Utilise le format natif d'Anthropic
De nombreux services proxy API ne proposent que :
Service proxy API → Supporte uniquement POST /v1/chat/completions
↑ Format compatible OpenAI
Les structures de requête diffèrent totalement entre les deux formats :
| Comparaison | Natif Anthropic (/v1/messages) |
Compatible OpenAI (/v1/chat/completions) |
|---|---|---|
| Endpoint | /v1/messages |
/v1/chat/completions |
| En-tête d'auth | x-api-key: sk-ant-xxx |
Authorization: Bearer sk-xxx |
| Format message | messages: [{role, content: [{type, text}]}] |
messages: [{role, content: "text"}] |
| Prompt système | system: "..." (champ de premier niveau) |
messages: [{role: "system", content: "..."}] |
| Appel d'outil | Types tool_use / tool_result |
Format function_call / tool_calls |
| Réponse en flux | message_start, content_block_delta |
data: {"choices": [...]} |
| Réflexion étendue | Support natif du bloc thinking |
Non supporté ou nécessite un traitement spécial |
Lorsque OpenCode envoie une requête au format Anthropic vers un endpoint qui ne supporte que le format OpenAI, le serveur ne peut pas analyser la requête, ce qui provoque une erreur ou une coupure de connexion.
Cause n°2 : Interruption du flux (streaming)
OpenCode utilise Messages.NewStreaming() du SDK Anthropic pour gérer les réponses en flux. La séquence d'événements lors du streaming est la suivante :
ContentBlockStartEvent → ContentBlockDeltaEvent (multiple) → ContentBlockStopEvent → MessageStopEvent
Si le service proxy API ne supporte pas intégralement le format de flux Anthropic (par exemple, s'il ne renvoie pas l'événement thinking_delta ou si le format content_block_stop est incorrect), l'analyse des événements par OpenCode échoue et interrompt la connexion.
La logique de nouvelle tentative d'OpenCode ne couvre que les erreurs HTTP 429 (limitation de débit) et 529 (surcharge) ; les autres codes d'erreur entraînent une terminaison immédiate sans nouvelle tentative. Cela signifie qu'une réponse 400/500 due à une erreur de format échouera instantanément.
Cause n°3 : Différences de format pour la réflexion étendue et les outils
OpenCode intègre une logique spécifique pour la réflexion étendue (thinking) de Claude :
- Activation automatique lorsque le message utilisateur contient le mot-clé "think".
- Allocation de 80 % des
maxTokenscomme budget de réflexion une fois activé. - Température forcée à 1.0.
Si le service proxy API ne supporte pas le format natif du bloc thinking d'Anthropic, le contenu de la réflexion est perdu ou provoque une erreur d'analyse. De même, les formats natifs tool_use / tool_result d'Anthropic diffèrent radicalement des formats function_call / tool_calls d'OpenAI.
Solution : Utiliser l'interface API prenant en charge le format natif d'Anthropic

Architecture de support double format d'APIYI
APIYI (apiyi.com) prend en charge deux formats d'API simultanément, permettant aux développeurs de choisir selon les besoins de leurs outils :
| Format | Point de terminaison | Outils compatibles | Intégralité des fonctions |
|---|---|---|---|
| Natif Anthropic | https://api.apiyi.com/v1/messages |
OpenCode/Crush, Claude Code | 100 % complet |
| Compatible OpenAI | https://api.apiyi.com/v1/chat/completions |
Aider, Cursor, applis persos | Fonctions de base |
Option 1 : Configurer le format natif Anthropic dans OpenCode (recommandé)
Comme le fournisseur Anthropic d'OpenCode n'expose pas directement le paramètre Base URL, il faut le définir via des variables d'environnement :
# Définir la clé API Anthropic (utilisez votre clé APIYI)
export ANTHROPIC_API_KEY="sk-votre_clé_APIYI"
# Définir l'URL de base Anthropic (pointe vers l'interface native APIYI)
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
# Lancer OpenCode
opencode
Ou configurez-le dans le fichier .opencode.json :
{
"providers": {
"anthropic": {
"apiKey": "sk-votre_clé_APIYI"
}
},
"agents": {
"coder": {
"model": "claude-sonnet-4-6",
"maxTokens": 16000
},
"task": {
"model": "claude-haiku-4-5-20251001",
"maxTokens": 8000
}
}
}
Utilisation avec les variables d'environnement :
# À ajouter dans votre .bashrc ou .zshrc
export ANTHROPIC_API_KEY="sk-votre_clé_APIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
Ainsi, OpenCode appellera https://api.apiyi.com/v1/messages via le SDK natif d'Anthropic, préservant toutes les fonctionnalités natives : mise en cache des invites (Prompt Caching), réflexion étendue et appels d'outils natifs.
Option 2 : Utiliser le format compatible OpenAI via Local Provider (alternative)
Si l'option 1 ne fonctionne pas, vous pouvez configurer APIYI comme fournisseur local (Local Provider) pour OpenCode :
# Définir le point de terminaison local
export LOCAL_ENDPOINT="https://api.apiyi.com/v1"
export LOCAL_API_KEY="sk-votre_clé_APIYI"
{
"providers": {
"local": {
"apiKey": "sk-votre_clé_APIYI"
}
},
"agents": {
"coder": {
"model": "claude-sonnet-4-6",
"maxTokens": 16000
}
}
}
Attention : Cette option utilise le format compatible OpenAI (/v1/chat/completions), ce qui entraîne la perte des fonctionnalités natives suivantes :
- Prompt Caching (mise en cache des invites)
- Réflexion étendue native (bloc de réflexion)
- Format d'appel d'outils natif d'Anthropic
💡 Conseil : Privilégiez l'option 1 (format natif Anthropic) pour bénéficier de toutes les fonctionnalités et d'une stabilité optimale.
Lors de l'obtention de votre clé sur APIYI (apiyi.com), choisissez le groupe 【ClaudeCode】 pour profiter d'une remise de 88 %.
Guide complet pour l'invocation de l'API Claude via APIYI
Obtention et configuration de la clé
| Étape | Action | Description |
|---|---|---|
| 1. Obtenir la clé | Visitez api.apiyi.com/token |
Page de gestion des jetons du tableau de bord |
| 2. Choisir le jeton | Utiliser le jeton par défaut ou en créer un nouveau | Sélectionnez le groupe 【ClaudeCode】 pour bénéficier de 12 % de réduction |
| 3. Noter l'URL de base | https://api.apiyi.com |
Point d'entrée unifié |
Deux formats de requête pris en charge
Format 1 : Format natif Anthropic (Recommandé pour OpenCode/Claude Code)
URL de requête : https://api.apiyi.com/v1/messages
import anthropic
client = anthropic.Anthropic(
api_key="sk-votre_clé_APIYI",
base_url="https://api.apiyi.com"
)
message = client.messages.create(
model="claude-sonnet-4-6",
max_tokens=4096,
messages=[
{"role": "user", "content": "Écris un tri rapide en Python"}
]
)
print(message.content[0].text)
Format 2 : Format compatible OpenAI (Recommandé pour Aider/Cursor/applications personnalisées)
URL de requête : https://api.apiyi.com/v1/chat/completions
import openai
client = openai.OpenAI(
api_key="sk-votre_clé_APIYI",
base_url="https://api.apiyi.com/v1"
)
response = client.chat.completions.create(
model="claude-sonnet-4-6",
messages=[
{"role": "user", "content": "Écris un tri rapide en Python"}
]
)
print(response.choices[0].message.content)
Liste des modèles Claude pris en charge
Modèles principaux récents (recommandés) :
| ID du modèle | Série | Positionnement | Cas d'utilisation |
|---|---|---|---|
claude-opus-4-6 |
Opus | Raisonnement puissant | Conception d'architecture complexe, analyse approfondie |
claude-sonnet-4-6 |
Sonnet | Équilibre des performances | Codage quotidien, revue de code |
claude-haiku-4-5-20251001 |
Haiku | Réponse rapide | Tâches simples, classification, extraction |
Modèles de raisonnement (activation forcée de la pensée étendue) :
| ID du modèle | Description |
|---|---|
claude-opus-4-6-thinking |
Opus + raisonnement forcé |
claude-sonnet-4-6-thinking |
Sonnet + raisonnement forcé |
claude-haiku-4-5-20251001-thinking |
Haiku + raisonnement forcé |
Les modèles de raisonnement et les modèles standards sont le même modèle sous-jacent. La différence réside dans le fait que le modèle de raisonnement active obligatoirement la pensée étendue (thinking), produisant un processus de réflexion plus détaillé, idéal pour les scénarios nécessitant une analyse approfondie.
Voir le code d’invocation pour la pensée étendue au format natif Anthropic
import anthropic
client = anthropic.Anthropic(
api_key="sk-votre_clé_APIYI",
base_url="https://api.apiyi.com"
)
# Utilisation du modèle thinking, pensée étendue forcée
message = client.messages.create(
model="claude-sonnet-4-6-thinking",
max_tokens=16000,
thinking={
"type": "enabled",
"budget_tokens": 10000 # Budget de jetons pour la réflexion
},
messages=[
{"role": "user", "content": "Analyse la complexité temporelle de ce code et optimise-le"}
]
)
for block in message.content:
if block.type == "thinking":
print(f"Processus de réflexion:\n{block.thinking}")
elif block.type == "text":
print(f"Réponse finale:\n{block.text}")
🚀 Démarrage rapide : Visitez APIYI sur
api.apiyi.com/tokenpour obtenir votre clé,
choisissez le groupe 【ClaudeCode】 pour profiter de 12 % de réduction.
Une seule clé prend en charge à la fois le format natif Anthropic et le format compatible OpenAI,
compatible avec tous les outils de codage IA courants tels qu'OpenCode, Claude Code, Aider et Cursor.
Meilleures méthodes d'intégration pour les outils de codage IA
| Outil | Format d'interface recommandé | URL de base | Modèle recommandé |
|---|---|---|---|
| OpenCode/Crush | Natif Anthropic | https://api.apiyi.com |
claude-sonnet-4-6 |
| Claude Code | Natif Anthropic | https://api.apiyi.com |
claude-sonnet-4-6 |
| Aider | Compatible OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| Cursor | Compatible OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| Cline (VS Code) | Compatible OpenAI | https://api.apiyi.com/v1 |
claude-sonnet-4-6 |
| App. personnalisée (Python) | Les deux fonctionnent | Voir ci-dessus | Selon vos besoins |
Aide-mémoire de configuration des outils
OpenCode/Crush :
export ANTHROPIC_API_KEY="sk-votre_clé_APIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
Claude Code :
export ANTHROPIC_API_KEY="sk-votre_clé_APIYI"
export ANTHROPIC_BASE_URL="https://api.apiyi.com"
claude
Aider :
export OPENAI_API_KEY="sk-votre_clé_APIYI"
export OPENAI_API_BASE="https://api.apiyi.com/v1"
aider --model claude-sonnet-4-6
🎯 Gestion unifiée : Gérez toutes vos invocations d'API pour outils de codage IA avec une seule clé via APIYI (apiyi.com).
Supporte plus de 300 modèles dont Claude, GPT, Gemini, avec une facturation et une gestion centralisées.
FAQ
Q1 : Que faire si OpenCode affiche l’erreur « agent coder not found » ?
C'est l'erreur la plus courante dans OpenCode ; elle signifie qu'aucune configuration de fournisseur d'IA valide n'a été trouvée. Vérifiez les points suivants : 1) La variable d'environnement ANTHROPIC_API_KEY est-elle définie et valide ? 2) La clé providers.anthropic.apiKey dans le fichier .opencode.json est-elle correcte ? 3) Votre clé dispose-t-elle d'un solde suffisant ? Les clés obtenues via APIYI (apiyi.com/token) peuvent être utilisées directement sans configuration supplémentaire.
Q2 : Pourquoi le format natif d’Anthropic est-il plus stable que le format compatible OpenAI ?
Parce qu'OpenCode utilise directement le SDK Go officiel d'Anthropic, qui gère en interne le format spécifique des événements de streaming, la logique de réessai et la gestion des erreurs. Passer par un format compatible OpenAI nécessite une couche de conversion intermédiaire, durant laquelle des informations cruciales comme les événements thinking_delta ou le format tool_use peuvent être perdues, entraînant des échecs d'analyse. Le point de terminaison /v1/messages d'APIYI (apiyi.com) prend en charge nativement le protocole Anthropic, sans aucune conversion de format nécessaire.
Q3 : Quelle est la différence entre les modèles « thinking » et les modèles classiques ? Quand les utiliser ?
claude-sonnet-4-6 et claude-sonnet-4-6-thinking reposent sur le même modèle de base. La version "thinking" active par défaut le raisonnement étendu et génère un processus de réflexion détaillé. La version classique ne l'active pas par défaut (dans OpenCode, elle est activée automatiquement si le message contient le mot-clé "think"). Conseil : utilisez la version classique pour le codage quotidien (plus rapide et plus économique en jetons), et la version "thinking" pour l'architecture complexe ou le débogage.
Q4 : OpenCode a été renommé en Crush, la configuration a-t-elle changé ?
L'architecture principale reste identique, Crush a hérité de tout le code d'OpenCode. Le fichier de configuration peut passer de .opencode.json à .crush.json (selon la version), mais les variables d'environnement restent inchangées. La configuration de ANTHROPIC_API_KEY et ANTHROPIC_BASE_URL est exactement la même. Nous vous recommandons d'utiliser la dernière version de Crush pour bénéficier d'une meilleure stabilité et de nouvelles fonctionnalités.

Résumé : Choisissez le bon format d'API pour une stabilité parfaite de Claude dans OpenCode
La cause profonde des interruptions fréquentes des modèles Claude dans OpenCode/Crush est une incompatibilité de format d'API : OpenCode utilise le format natif d'Anthropic, alors que de nombreux services proxy API ne prennent en charge que le format compatible OpenAI.
La solution est très simple :
- Utilisez un service API prenant en charge le format natif Anthropic : le point de terminaison
/v1/messagesd'APIYI. - Configurez correctement les variables d'environnement :
ANTHROPIC_BASE_URL=https://api.apiyi.com - Sélectionnez le modèle approprié : utilisez
claude-sonnet-4-6pour un usage quotidien etclaude-sonnet-4-6-thinkingpour le raisonnement approfondi.
Nous vous recommandons d'utiliser APIYI (apiyi.com) pour gérer de manière centralisée toutes vos invocations du modèle pour les outils de codage IA. Rendez-vous sur api.apiyi.com/token pour obtenir votre clé API et choisissez le groupe 【ClaudeCode】 pour bénéficier d'une réduction de 12 %. Une seule clé est compatible à la fois avec le format natif Anthropic et le format compatible OpenAI, s'adaptant ainsi à tous les outils de codage IA populaires du marché.
📝 Auteur de l'article : Équipe technique APIYI | APIYI apiyi.com – Plateforme d'accès unifiée pour plus de 300 grands modèles de langage.
Références
-
Dépôt GitHub OpenCode (archivé) : Code source et documentation du projet original.
- Lien :
github.com/opencode-ai/opencode - Note : Renommé en Crush.
- Lien :
-
Dépôt GitHub Crush : Projet successeur en développement actif.
- Lien :
github.com/charmbracelet/crush - Note : Version la plus récente maintenue par l'équipe Charm.
- Lien :
-
Documentation de l'API Anthropic : Spécifications du format natif de l'API Messages.
- Lien :
docs.anthropic.com/en/api/messages - Note : Format complet des requêtes et réponses pour le point de terminaison
/v1/messages.
- Lien :
-
Documentation APIYI : Guide d'accès à l'API Claude.
- Lien :
apiyi.com - Note : Prend en charge simultanément le format natif Anthropic et le format compatible OpenAI.
- Lien :