Sections de la base de connaissances ▾

Navigation

▸ Commencez ici Par rôles

Catégories

Outils 52
Glossaire 12

Outils

DeepSeek Harness : votre propre fournisseur via JoinGonka Gateway

DeepSeek Harness (commande dsh) — un harness agentique open source de DeepSeek AI : une interface où le modèle lit et modifie les fichiers du projet, exécute des commandes, délègue des sous-tâches et gère un plan, tandis que vous surveillez le tout depuis votre navigateur et confirmez les étapes risquées. Le projet est jeune : les auteurs eux-mêmes l'appellent « developer preview » et préviennent explicitement que des changements incompatibles auront lieu. Par conséquent, tout ce qui suit est lié à une version spécifique — 0.1.5-rc.2, sur laquelle nous avons effectué la configuration complète, du premier écran jusqu'à la réponse de l'agent.

Lors du premier lancement, dsh demande la clé de l'API officielle de son fournisseur, mais sa couche modèle est ouverte : sur la page Settings → Models, on peut ajouter n'importe quel fournisseur parlant l'un des trois protocoles — OpenAI Chat Completions, OpenAI Responses ou Anthropic Messages. JoinGonka Gateway prend en charge les trois, donc le harness se connecte au réseau décentralisé Gonka par les moyens standard, sans plugins ni patchs.

Un détail révélateur tiré de la page de l'application dans le catalogue OpenRouter : dans le classement des modèles utilisés par DeepSeek Harness au cours des 30 derniers jours, la deuxième place est occupée par DeepSeek V4 Flash 0731, et la troisième par GLM 5.3 Flash (au 21 septembre 2026 ; la première place étant occupée par un modèle de test anonyme). Ces deux modèles ouverts sont pris en charge par le réseau Gonka — avec MiniMax M2.7 — de sorte que l'ensemble habituel est migré vers un autre endpoint sans changer de modèle : seuls l'adresse et le prix par jeton changent.

Qu'est-ce que DeepSeek Harness et comment le lancer

Le harnais, c'est tout ce qui entoure le modèle dans le travail agentique : la boucle « requête → appel d'outil → résultat → étape suivante », les outils pour les fichiers et le terminal, les permissions et confirmations, le journal de session, la compression du contexte. DeepSeek Harness assemble cela à partir de plugins : l'architecture « everything is a plugin » repose sur le framework Cordis, et n'importe quel nœud — d'un outil à un adaptateur de modèle — se remplace sans toucher au cœur. Le code est ouvert sous licence MIT.

Pas besoin d'installation — Node.js suffit (série 22 à partir de 22.19, ou 24 et plus récent) :

npx @deepseek-ai/dsh web

La commande lance l'interface Web sur http://127.0.0.1:3080 et l'ouvre dans le navigateur ; en cas de lancement via SSH, l'adresse est simplement affichée dans le terminal. Le flag --no-open démarre le serveur sans navigateur, --port change le port. Le répertoire depuis lequel dsh est lancé devient le répertoire de travail par défaut, mais l'interface ne démarrera une session qu'après la sélection explicite d'un workspace.

ModeCommandePour quoi faire
Web UIdsh webInterface principale : sessions, réglages, confirmations d'opérations
Tâche ponctuelledsh --profile headless "task"Scripts et CI : réponse sur stdout, raisonnement sur stderr
ACPdsh --profile acpÉditeurs et clients compatibles avec l'Agent Client Protocol
SDKdsh --profile sdkClients en JSON-RPC, y compris le SDK Python

La couche modèle se compose de deux adaptateurs. Le direct s'adresse à l'API officielle du fournisseur. Le multi-fournisseur — dsh-llm-pi-ai — repose sur la bibliothèque pi-ai, la même qui sous-tend l'agent terminal Pi ; il permet de connecter aussi bien les fournisseurs intégrés au catalogue que n'importe quel endpoint personnel. C'est pourquoi les noms de champs dans les réglages — api, contextWindow, maxTokens — correspondent à ceux que vous connaissez avec Pi.

À propos de la maturité. Le README du projet commence par un avertissement : developer preview, itérations rapides, changements cassants. Un document distinct, SAFETY.md, précise qu'aucun audit de sécurité n'a été réalisé et que l'agent exécute des commandes générées par le modèle. La conclusion pratique est simple : lancez dsh dans un conteneur, une machine virtuelle ou sous un compte dédié, et gardez des sauvegardes de tout ce à quoi il peut accéder.

Connexion via Web UI : Settings → Models

Étape 1 : la clé. Inscrivez-vous sur gate.joingonka.ai/register : après confirmation de votre adresse, 3M jetons gratuits seront crédités sur votre compte. Dans votre espace, ouvrez la section « Clés API » et créez une clé avec le préfixe jg-. Astuce : créez une clé dédiée au harness — son trafic apparaîtra alors sur une ligne distincte dans les statistiques.

Étape 2 : le premier écran. Après la notification de statut de test (bouton Continue), dsh vous proposera de saisir une clé API officielle (« Add an API key to get started »). Elle n'est pas obligatoire : cliquez sur Configure later.

Étape 3 : le fournisseur. Ouvrez Settings → Models et choisissez Add a custom provider. Les champs du formulaire :

ChampValeurRemarque
Provider IDjoingonkaEn minuscules latines, commençant par une lettre. L'identifiant est permanent : il apparaît dans les requêtes, les sessions enregistrées et le nom de référence de la clé. Impossible de le renommer — il faut créer un nouveau fournisseur et supprimer l'ancien
Display nameJoinGonka GatewayN'importe quel libellé pour les listes
Base URLhttps://gate.joingonka.ai/v1Avec le suffixe /v1
API protocolopenai-completionsComment choisir le protocole — voir le tableau ci-dessous
API keyjg-your-keyChamp en écriture seule : après l'enregistrement, la page ne reçoit qu'un descripteur masqué, pas la clé elle-même

Étape 4 : les modèles. Dans le bloc Models, cliquez sur Fetch available models : dsh interroge la passerelle pour obtenir la liste et ouvre la fenêtre « Choose models to add ». Lors de notre test, les trois modèles du réseau y figuraient — MiniMaxAI/MiniMax-M2.7, deepseek-ai/DeepSeek-V4-Flash-0731 et zai-org/GLM-5.3-Flash — et après Add selected, le harness a automatiquement attribué à chacun la fenêtre de contexte et le plafond de réponse, d'après les données de la passerelle. Il ne reste plus qu'à cliquer sur Create provider.

Étape 5 : choisir le modèle. Fermez les paramètres, cliquez sur Choose workspace et ajoutez le dossier du projet. Les modèles du nouveau fournisseur apparaissent dans le sélecteur ; celui que vous choisissez devient le modèle par défaut des nouvelles sessions.

dsh stocke la clé séparément des paramètres : dans le fichier ~/.dsh/.credentials.yaml, avec des droits réservés au propriétaire. Dans settings.yaml ne reste que le nom de référence — dans notre test JOINGONKA_API_KEY, d'après l'identifiant du fournisseur.

Quel protocole choisir. La passerelle parle les trois ; ce qui change, c'est l'adresse de base et les commodités annexes :

API protocolBase URLQuand le choisir
openai-completionshttps://gate.joingonka.ai/v1Option principale : le chemin canonique de la passerelle, la liste des modèles se récupère d'un clic, et le raisonnement des modèles reasoning arrive dans un flux séparé
openai-responseshttps://gate.joingonka.ai/v1Si vos plugins ou vos scénarios reposent sur l'API Responses
anthropic-messageshttps://gate.joingonka.aiFormat Anthropic Messages ; le client ajoute lui-même le chemin /v1/messages

Dans dsh, un fournisseur parle un seul protocole : le second protocole implique donc un second fournisseur avec un Provider ID différent. Pour un usage quotidien, la première option suffit ; lors de notre test, la boucle agentique avec appel d'outils a fonctionné sur les trois.

Configuration par fichier : settings.yaml

Le formulaire Models écrit dans un document YAML classique — $DSH_HOME/settings.yaml, par défaut ~/.dsh/settings.yaml. Vous pouvez le modifier directement : le bouton Open configuration file en haut des paramètres ouvre le fichier, et les adaptateurs le relisent à la requête suivante — aucun redémarrage nécessaire. Voici la version complète pour le réseau Gonka :

# ~/.dsh/settings.yaml
llm-pi-ai:
  providers:
    joingonka:
      displayName: JoinGonka Gateway
      apiKeyEnv: JOINGONKA_API_KEY
      api: openai-completions
      baseURL: https://gate.joingonka.ai/v1
      models:
        - id: deepseek-ai/DeepSeek-V4-Flash-0731
          name: DeepSeek V4 Flash
          contextWindow: 380000
          maxTokens: 32768
        - id: zai-org/GLM-5.3-Flash
          name: GLM-5.3 Flash
          contextWindow: 390000
          maxTokens: 8192
          reasoningEfforts:
            off: low
            high: high
        - id: MiniMaxAI/MiniMax-M2.7
          name: MiniMax M2.7
          contextWindow: 200000
          maxTokens: 8192
agent-default-model:
  provider: joingonka
  model: deepseek-ai/DeepSeek-V4-Flash-0731

Ce qu'il faut retenir :

  • apiKeyEnv — ce n'est pas la clé, mais le nom de la référence vers celle-ci. dsh cherche la valeur dans l'ordre : la variable d'environnement au moment du lancement, puis .credentials.yaml (où écrit le formulaire), puis .env dans le répertoire de lancement, puis ~/.dsh/.env. Si vous configurez le harness sans navigateur, une ligne JOINGONKA_API_KEY=jg-your-key dans ~/.dsh/.env avec les permissions 600 suffit. Une variable exportée après le démarrage ne sera pas vue par le processus déjà lancé.
  • contextWindow et maxTokens : définissez-les explicitement. Pour un modèle que dsh ne connaît pas, il attribue 262 144 et 32 768 tokens — ce qui ne correspond pas aux limites réelles. Le maxTokens défini devient aussi la limite de réponse par défaut pour chaque requête.
  • reasoningEfforts — les niveaux de raisonnement pour le menu Effort. Un modèle ajouté manuellement n'a aucun niveau, et le menu n'apparaît pas pour lui. Pour GLM-5.3 Flash, le commutateur est binaire : la valeur low désactive le raisonnement, toute autre valeur le laisse complet. C'est pourquoi le niveau off est associé à low, et high est transmis tel quel. Dans notre test avec off, aucun bloc de raisonnement n'est apparu ; avec high, ils sont revenus.
  • agent-default-model — le modèle pour les nouveaux agents, y compris le mode headless. La sélection du modèle dans l'interface fait la même chose ; vous pouvez également y ajouter reasoningEffort.

Les commutateurs compat que la documentation dsh recommande pour les passerelles strictes (supportsDeveloperRole: false, maxTokensField: max_tokens) ne seront pas nécessaires ici : JoinGonka Gateway accepte à la fois le rôle developer et le champ max_completion_tokens.

L'installateur npx @joingonka/setup ne configure pas ce harness : toute la connexion se résume au formulaire de la section précédente ou au fragment YAML ci-dessus.

Vérification et erreurs courantes

Le moyen le plus rapide de vérifier le montage est un test ponctuel depuis le répertoire contenant le code. Placez à côté un petit fichier avec un bug évident et demandez à l'agent de le trouver :

cd /path/to/project
npx @deepseek-ai/dsh --profile headless "Read calc.py and tell me in one sentence whether it has a bug."

La réponse finale s'affiche sur stdout, le raisonnement va sur stderr avec le préfixe dsh: reasoning:. L'agent doit appeler lui-même l'outil de lecture de fichier et répondre au fond : dans notre test, chacun des trois modèles du réseau a identifié la ligne fautive. Le cycle complet « requête → appel d'outil → résultat → réponse » via la passerelle se monte donc correctement.

La seconde moitié du test se passe côté passerelle. Dans votre espace, ouvrez « Utilisation » : vous y voyez les requêtes par heure et par jour, la répartition par modèles et par clés. Une ligne apparaît avec la clé du harnais et un horodatage récent de dernière requête — le trafic passe bien par la passerelle.

En cas de problème, le diagnostic se lit généralement directement dans le message :

Ce qu'on voitCe que ça signifieQue faire
AUTH: 401: … Invalid API keyLa passerelle a refusé la cléRessaisissez la clé sur la page Models ou corrigez la variable référencée par apiKeyEnv
MISSING_CREDENTIAL: … no credential for provider route "joingonka"Rien n'a été trouvé à l'emplacement pointé par apiKeyEnvEnregistrez la clé dans le formulaire ou définissez la variable avant de lancer dsh : l'environnement est lu une seule fois, au démarrage
UNKNOWN_MODELLe modèle n'est pas dans la liste models du fournisseurAjoutez-le dans le formulaire ou le fichier, ou choisissez un modèle déjà configuré
400 … Model "…" not found. Available: …L'identifiant est mal saisi, le plus souvent sans le préfixe du vendeurCopiez l'id depuis la liste que la passerelle fournit dans le message lui-même
429 … currently overloaded … (rate limit)La capacité libre du modèle sur le réseau est épuiséeSituation normale en cas de charge : dsh réessaie de lui-même. Si les tentatives sont épuisées, changez de modèle ou attendez une minute ; l'état est visible sur la page de statut
Fetch available models répond 401La liste a été demandée avec une clé invalideVérifiez la clé dans le formulaire ; les modèles peuvent aussi être saisis à la main — ils fonctionneront de la même manière
Un modèle de raisonnement n'a pas de menu EffortLes niveaux ne sont pas déclarés pour cette entrée de modèleAjoutez reasoningEfforts dans settings.yaml, comme dans l'exemple ci-dessus
La réponse d'un modèle de raisonnement est tronquée ou videLe raisonnement entre dans la limite de réponse et l'a consommée entièrementNe baissez pas maxTokens ; pour les tâches courtes, choisissez le niveau off
Le champ de saisie affiche Select model, la saisie est bloquéeLe modèle par défaut pointe vers un fournisseur suppriméChoisissez un autre modèle dans le sélecteur

Quel modèle choisir

Le prix est le même pour tous les modèles du réseau, donc le choix dépend du comportement et non du budget. Voici ci-dessous les limites et la façon dont les modèles se sont comportés lors de notre test dsh sur une même tâche : lire un fichier et y trouver une erreur.

ModèleIdentifiantContexte / réponseComportement dans dsh
DeepSeek V4 Flashdeepseek-ai/DeepSeek-V4-Flash-0731380K / 32768Réponse propre avec indication de ligne. Le plus grand plafond de réponse du réseau : idéal pour les modifications longues et les gros fichiers en une seule passe.
GLM-5.3 Flashzai-org/GLM-5.3-Flash390K / 8192Modèle de raisonnement : dsh affiche les réflexions dans un flux séparé, la réponse reste propre. Le raisonnement est inclus dans la limite de réponse.
MiniMax M2.7MiniMaxAI/MiniMax-M2.7200K / 8192Résout la tâche correctement ; le raisonnement est transmis dans un champ séparé reasoning_content, le texte de la réponse ne contient que la réponse elle-même.

La recommandation par défaut est DeepSeek V4 Flash : le travail des agents atteint rapidement les limites de la fenêtre de contexte et de la longueur des modifications, et ce modèle offre une marge de sécurité sur les deux paramètres. Lorsque la tâche nécessite une réflexion sur une logique complexe, passez à GLM-5.3 Flash et maintenez le niveau de raisonnement sur high ; pour des modifications rapides, le même fournisseur le propose avec un niveau off. MiniMax M2.7 est une option équilibrée pour les tâches courtes, lorsque le flux de raisonnement visible n'est pas gênant. Le modèle peut être modifié dans le sélecteur de l'interface ou via la ligne model dans le bloc agent-default-model.

La composition du réseau est déterminée par le vote des participants et évolue avec le temps ; la liste actualisée ainsi que les limites sont toujours fournies par GET https://gate.joingonka.ai/v1/models — c'est également ce qu'utilise le bouton Fetch available models.

Combien cela coûte-t-il et que prendre en compte

Les outils d'agent consomment des jetons différemment du chat : pour chaque phrase, le harness ajoute un prompt système et les descriptions de tous les outils, puis mène un dialogue à plusieurs tours avec le modèle. Lors de notre test, la tâche « lire le fichier et trouver l'erreur » a pris deux ou trois tours et de 14 à 22 mille jetons, dont la quasi-totalité est en entrée : environ sept mille jetons sont consommés à chaque tour avant même votre question. C'est le prix normal à payer pour l'autonomie — et c'est précisément pourquoi le prix par jeton est déterminant.

Via le JoinGonka Gateway, les jetons coûtent $0.0069 par million en entrée et $0.021 par million en sortie — le prix est identique pour tous les modèles du réseau et est mis à jour sur cette page à partir d'une source en temps réel. Ordres de grandeur des prix en septembre 2026 :

ScénarioConsommationVia Gateway
Tâche ponctuelle (lire le fichier, trouver l'erreur)14-22K jetonscentimes de cent
Journée de travail actif3-7M jetonsquelques centimes
Mois de développement actif~150M jetonsde l'ordre du dollar

Le paiement s'effectue à la consommation réelle, sans abonnement ni quotas de requêtes ; le solde et la consommation quotidienne sont visibles dans votre espace client.

Version. Tant que le projet est en version developer preview, vérifiez après chaque mise à jour que le fournisseur est présent, et pour la reproductibilité, fixez la version directement dans la commande : npx @deepseek-ai/[email protected] web.

Droits. Les nouvelles sessions fonctionnent par défaut en mode Workspace Write — écriture limitée au répertoire de travail ; l'interface demande confirmation pour les opérations dépassant cette politique. Le mode peut être modifié dans Settings → General.

Tentatives. En cas d'erreur réseau ponctuelle, dsh relance la requête lui-même — jusqu'à cinq fois selon la documentation —, de sorte qu'une brève pointe de charge réseau passe généralement inaperçue.

Confidentialité. La passerelle ne stocke pas le contenu des prompts et des réponses : seules les statistiques globales de consommation sont conservées. L'agent lit les fichiers du projet localement, sur votre machine.

Si vous avez besoin de travailler avec des images — capture d'écran d'interface, schéma sur une photo — ajoutez un second fournisseur à proximité avec un modèle capable de vision : dsh gère plusieurs fournisseurs simultanément, tandis que les modèles du réseau Gonka sont textuels.

DeepSeek Harness n'est pas le seul agent publié par le laboratoire développeur des modèles : Z.ai, les auteurs de GLM, possède l'environnement ZCode, et MiniMax propose le terminal MiniMax Code. Les deux se connectent à la même passerelle avec la même clé.

DeepSeek Harness — un harness d'agent open-source de DeepSeek AI en statut developer preview : Web UI, exécutions ponctuelles, ACP et SDK basés sur une architecture de plugins. Votre propre endpoint se connecte normalement : Settings → Models → Add a custom provider, adresse https://gate.joingonka.ai/v1, protocole openai-completions, clé jg-… ; le bouton Fetch available models récupère automatiquement DeepSeek V4 Flash, GLM-5.3 Flash et MiniMax M2.7 avec leurs limites. La même configuration peut être saisie en un bloc llm-pi-ai dans ~/.dsh/settings.yaml. Pour GLM-5.3 Flash, déclarez les niveaux off: low et high: high — le raisonnement deviendra commutable. Exécutez le harness dans un environnement isolé et fixez la version tant que le format n'est pas stabilisé.

Vous voulez en savoir plus ?

Explorez d'autres sections ou commencez à gagner des GNK dès maintenant.

Obtenir une clé et des jetons gratuits →