Utilise Claude et Kimi dans le même panneau Claude Code, avec tes abonnements — sans clé API, sans facturation au token.
Claude Kimi Bridge est une extension VSCode qui branche le panneau officiel Claude Code sur tes deux abonnements : Anthropic et Kimi. Un mini-proxy local fait la jonction, et le sélecteur /model du panneau te laisse passer de l'un à l'autre à chaud, au milieu d'une session.
Pourquoi ?
- Deux abonnements, un seul panneau. Tu payes déjà Claude et Kimi — autant t'en servir dans le même outil, sans jongler entre deux CLI.
- Zéro clé API. L'extension réutilise les tokens OAuth déjà présents sur ta machine (ceux des CLI Claude Code et Kimi Code). Rien à configurer, rien à payer en plus.
- Zéro friction. Changer de provider revient à taper
/model. Pas de rechargement de fenêtre, pas de redémarrage de session. - Quota mort ? Pas grave. Si un provider répond « rate limit », la requête repart automatiquement chez l'autre.
En pratique
- Installe l'extension, clique sur l'icône Claude Switcher dans la barre d'activité (à gauche).
- Choisis le profil Proxy — Claude ↔ Kimi.
- Ouvre le panneau Claude Code, tape
/model→ Claude Fable 5, Claude Opus 5, 🌙 Kimi K3 (1M) et les autres apparaissent dans la liste. - Change de modèle quand tu veux : c'est immédiat, la conversation suit.
Le tout premier démarrage demande un rechargement de fenêtre (VSCode ne lit les variables d'environnement qu'au lancement du processus Claude). Ensuite, plus jamais.
Deux profils
| Profil | Ce que ça fait |
|---|---|
| Direct — Claude | Tout part chez Anthropic, comme si l'extension n'existait pas. Un id Kimi resté « collé » dans la session est réécrit à la volée vers directModel. |
| Proxy — Claude ↔ Kimi | Un proxy local (127.0.0.1) relaie le panneau vers Claude ou Kimi selon le modèle choisi dans /model. |
Basculer de l'un à l'autre est instantané (Ctrl+Shift+P → « Claude Switcher : Basculer Direct ↔ Proxy » — parfait pour un raccourci clavier).
Ce que tu vois dans la sidebar
- Profil actif et état du proxy (cette fenêtre est l'hôte, ou a adopté le proxy d'une autre).
- Quotas 5h en direct : Kimi et Claude (capté des en-têtes
anthropic-ratelimit-*), avec alerte quand il reste moins de 10 % chez Kimi. - Compteurs de tokens par provider : entrée, sortie, cache — cumulés entre sessions, remise à zéro en un clic.
- Historique des 12 dernières requêtes : modèle demandé → modèle réellement routé, statut, latence, tokens, repli éventuel. Exportable en CSV.
- Catalogue de modèles éditable : ajoute ou retire des modèles du picker
/modelsans toucher au JSON. - Boutons d'action : changer de profil, tester le proxy, ouvrir la config…
Le filet de sécurité : repli automatique
Quand un provider répond une erreur de quota ou de rate-limit (HTTP 429), la requête est renvoyée chez l'autre — tu ne t'en rends pas compte :
- Kimi en panne de quota → repli vers Claude (
fallbackModel, défautclaude-sonnet-4-5). - Claude saturé → repli vers Kimi (
claudeFallbackModel, défautk3). - Réglable modèle par modèle depuis la sidebar (
fallbackMap/claudeFallbackMap) : « sik3est plein, tenteclaude-fable-5». La valeur"none"désactive le repli pour un modèle donné. - Une surcharge transitoire (503/529 « overloaded ») déclenche d'abord un simple retry sur le même modèle.
- Anti-boucle : un repli ne déclenche jamais un autre repli.
Multi-fenêtres : ça suit tout seul
La première fenêtre VSCode héberge le proxy (port 4177). Les suivantes le détectent et s'y rattachent toutes seules. Tu fermes la fenêtre hôte ? Une autre relance le proxy automatiquement — même port, même token, le panneau Claude n'y voit que du feu. Le mode Direct/Proxy est synchronisé entre fenêtres.
Le garde-fou « modèle global »
Petit piège de Claude Code : le modèle choisi dans /model est écrit dans ~/.claude/settings.json, global à toute la machine. Sans protection, un terminal externe lancerait claude avec un id Kimi → 404 chez Anthropic.
L'extension veille : dès qu'un id Kimi apparaît dans le settings global, elle le migre vers le settings du projet (la session garde son choix) et répare le global avec un modèle Claude. Silencieusement, sans clic.
Sous le capot
- Tokens locaux uniquement. Kimi :
~/.kimi-code/credentials/kimi-code.json, rafraîchi automatiquement (les tokens tournés sont réécrits dans le fichier, ton CLI Kimi reste connecté). Claude :~/.claude/.credentials.json, relu à chaque requête. - Un seul point d'accroche officiel : la redirection (
ANTHROPIC_BASE_URL,ANTHROPIC_AUTH_TOKEN,CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY) est posée une fois dansclaudeCode.environmentVariables. Elle ne quitte jamais VSCode et se retire via « Désactiver la redirection ». - Tes settings ne sont jamais modifiés, sauf par le garde-fou ci-dessus — qui ne touche que l'id du modèle.
- Note filtre CLI : le picker
/modelne retient de la découverte gateway que les ids préfixésclaude/anthropic(codé en dur dans le CLI). Les modèles Kimi y figurent donc via des aliasclaude-kimi-*(le vrai id Kimi est rétabli au routage). Tu peux toujours taper/model k3à la main.
Configuration
Tout est préfixé claudeProviderSwitcher.* et se règle depuis la sidebar ou les settings VSCode :
| Setting | Défaut | Rôle |
|---|---|---|
defaultProfile |
remember |
Profil au démarrage : remember / direct / proxy. Définissable par workspace. |
extraModels |
[] |
Modèles supplémentaires exposés au picker /model. |
fallbackModel |
claude-sonnet-4-5 |
Repli Kimi → Claude (vide = désactivé). |
claudeFallbackModel |
k3 |
Repli Claude → Kimi (vide = désactivé). |
fallbackMap / claudeFallbackMap |
{} |
Repli par modèle, prioritaire sur les deux ci-dessus. |
directModel |
claude-fable-5 |
Modèle Claude utilisé en Direct quand la session envoie un id Kimi. |
smartRouting |
true |
Côté Kimi : gros contexte → k3 (1M), requêtes légères → kimi-for-coding-highspeed. |
smartRoutingThreshold |
100000 |
Seuil de contexte (tokens estimés) pour le routage vers k3. |
quotaAlertThresholdPercent |
10 |
Alerte quota Kimi en % restant (0 = désactivée). |
autoScopeModel |
true |
Garde-fou « modèle global » automatique (false = réparation en 1 clic). |
repairModel |
claude-fable-5[1m] |
Modèle écrit dans le settings global par le garde-fou. |
upstreamTimeoutSeconds |
600 |
Timeout des requêtes vers Kimi/Anthropic (→ 504 au lieu de pendre). Corps limités à 50 Mo (→ 413). |
Commandes : Changer de profil · Basculer Direct ↔ Proxy · Revenir en Direct · État du proxy et des tokens · Ouvrir le panneau de configuration · Désactiver la redirection. Logs : panneau Output « Claude Kimi Bridge ».
Limites (honnêtement)
- Seule la première pose de la redirection (ou sa désactivation) demande un rechargement de fenêtre. Tout le reste — profil, modèle, replis, config — est à chaud.
- Le port 4177 est déjà pris par autre chose ? La redirection est bloquée par sécurité (le panneau Claude parlerait à ce service) ; une notification propose de réessayer ou d'utiliser un port aléatoire.
- Les CLI Codex/Grok sont détectés mais pas bridgés (protocole propriétaire).
- Utiliser un token OAuth d'abonnement via un proxy local est une zone grise vis-à-vis des conditions Anthropic/Kimi. Le client reste Claude Code officiel, mais c'est toi qui vois.
Dev
npm install
npm run compile # tsc → out/
npm test # tests unitaires + intégration proxy (30 tests, node:test)
node scripts/test-proxy.mjs # tests standalone contre le vrai proxy
node scripts/validate-kimi.mjs # vérifie le login Kimi local
npx vsce package --no-dependencies
CI : GitHub Actions — compile + tests sur Ubuntu et Windows à chaque push/PR.