DeepSeek Harness, ou dsh en abrégé, est un harnais d’agent IA open source de DeepSeek AI. Si le modèle répond aux questions, alors le harnais lui donne la main : lit et édite des fichiers, exécute des commandes, organise des sessions, montre la trajectoire d’exécution et se permet d’être étendu avec des plugins. Le projet est distribué sous licence MIT et est en préversion publique.
L’idée principale de DeepSeek Harness est formulée comme « tout est un plugin » – littéralement « tout est un plugin ». L’ensemble du produit est construit sur cela : des adaptateurs de modèle, un registre d’outils, un journal de session, une interface et même le cycle d’agent lui-même. Il est basé sur le framework Cordis, donc un développeur peut non seulement ajouter une nouvelle commande, mais remplacer l’intégralité du comportement de l’agent sans bifurquer le noyau.
Vous pouvez travailler avec dsh de plusieurs manières : via l’interface Web locale, via une application de bureau, depuis la ligne de commande en mode sans tête ou depuis le SDK Python. Vous trouverez ci-dessous l’installation, le premier lancement et un aperçu des fonctionnalités.
Ce dont vous avez besoin
L’interface Web et la CLI nécessitent Node.js. Le projet a des exigences strictes :
- Node.js 22.19.0 ou version ultérieure dans la ligne 22.x.
- Node.js 24.0.0 ou version ultérieure dans la ligne 24.x.
- Node.js 23.x n’est pris en charge dans aucun patch : cette ligne n’est pas LTS et a déjà été abandonnée.
En plus de Node.js, vous aurez besoin de la clé API DeepSeek. Il est créé dans votre compte personnel sur platform.deepseek.com. L’application de bureau n’a pas besoin de Node.js – l’environnement y est déjà packagé.
Vous pouvez vérifier la version avec la commande :
node -v
Installation via npx
Le moyen le plus rapide de connaître le projet est de ne rien installer globalement. Exécutez simplement :
npx @deepseek-ai/dsh web
La commande téléchargera le package @deepseek-ai/dsh depuis npm, configurera un serveur Web local et ouvrira l’interface dans le navigateur. Par défaut, il écoute l’adresse :
Si vous n’avez pas besoin d’ouvrir le navigateur, par exemple sur une machine distante, ajoutez le flag –no-open :
npx @deepseek-ai/dsh web --no-open
Lorsqu’il est lancé via SSH, dsh imprime l’adresse mais ne tente pas d’ouvrir le navigateur : l’adresse locale appartient au client ou à l’éditeur SSH.
Installation globale
Si vous avez constamment besoin d’un outil, il est plus pratique de l’installer globalement. Le package fournit le binaire dsh :
npm install -g @deepseek-ai/dsh
dsh web
Après cela, la commande dsh est disponible depuis n’importe quel répertoire. La mise à jour s’effectue de la manière habituelle :
npm install -g @deepseek-ai/dsh@latest
Application de bureau
Pour ceux qui ne souhaitent pas détenir de terminal et Node.js, DeepSeek publie des versions de bureau. Ils sont disponibles sur la page de téléchargement officielle :
- macOS – Apple Silicon, macOS 13 ou version ultérieure, format DMG.
- Windows – Assemblage 64 bits, format EXE.
L’application fonctionne avec les mêmes fichiers locaux, peut effectuer des tâches en arrière-plan et stocke les sessions de la même manière que la version Web. C’est une option pratique pour le travail quotidien, lorsque vous ne souhaitez pas élever le serveur manuellement à chaque fois.
Construire à partir des sources
Si vous avez besoin d’un contrôle total sur le code, vos propres correctifs ou le développement de plugins, le projet est collecté à partir du référentiel. Vous aurez besoin de pnpm et le référentiel corrige une version spécifique, vous devez donc d’abord activer Corepack :
corepack enable
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
La commande pnpm run build prépare les artefacts du package et du frontend, et pnpm dsh web exécute la version déjà construite sans reconstruction. Pour le développement, il existe un mode pnpm run dev:web : il construit, démarre le serveur et reconstruit les bundles clients lorsque les sources changent.
Premier lancement
Après avoir démarré l’interface web, la procédure est la suivante.
Tout d’abord, ouvrez Paramètres → Modèles et saisissez la clé API DeepSeek. La clé est enregistrée dans le fichier $DSH_HOME/.credentials.yaml, et seul un lien vers celle-ci reste dans les paramètres. La page des paramètres reçoit une description déjà masquée du secret, il est donc impossible de relire la clé depuis l’interface. Les modifications du modèle sont appliquées à partir de la demande suivante ; il n’est pas nécessaire de redémarrer le serveur.
Sélectionnez ensuite votre dossier de travail via Choisir un espace de travail. Tant que l’espace de travail n’est pas sélectionné, le champ de saisie de la tâche reste grisé. Ceci est fait intentionnellement : l’agent doit comprendre les limites dans lesquelles il est autorisé à lire et à modifier des fichiers.
Après cela, vous pouvez soumettre la première tâche. Par exemple:
Summarize this repository and identify its main packages.
L’agent lira le projet, établira un plan, appellera les outils nécessaires et montrera le résultat. Pour les opérations qui nécessitent une confirmation basée sur la politique d’accès actuelle, dsh demandera avant de s’exécuter.
Modèles et fournisseurs
DeepSeek se connecte en une seule étape : la fiche du fournisseur dans les paramètres ne contient qu’un champ pour la clé API. De plus, vous pouvez ajouter des services tiers. Le répertoire intégré connaît des identifiants tels que anthropic, openai, moonshotai pour Kimi et zai pour GLM.
Pour votre propre passerelle, proxy d’entreprise ou serveur local, il existe un mode API de modèle personnalisé. Il demande :
- identifiant permanent du fournisseur ;
- nom d’affichage ;
- Adresse de base de l’API ;
- protocole : achèvements de chat OpenAI, réponses OpenAI ou messages anthropiques ;
- clé et liste des modèles.
Le protocole est important : un fournisseur parle un protocole. Si une passerelle prend en charge à la fois OpenAI et Anthropic, elle devra être décrite par deux fournisseurs. Pour les modèles, vous pouvez spécifier la taille de la fenêtre contextuelle, le nombre maximum de jetons de sortie et les types de données d’entrée pris en charge, y compris les images.
Les modèles DeepSeek ont des niveaux de raisonnement off, faible, élevé et max. Le niveau est sélectionné dans le menu Effort à côté du modèle. Pour les tâches de routine dans le référentiel, un modèle rapide suffit, mais pour les tâches architecturales complexes, il est logique d’augmenter l’effort ou d’utiliser un modèle de classe supérieure.
Plugins et mode Créateur
Les plugins sont la principale fonctionnalité de DeepSeek Harness. Grâce à eux, des outils, des compétences, des éléments d’interface et des applications entières sont ajoutés. L’interface dispose d’un gestionnaire de plugins avec des ensembles officiels et expérimentaux : commandes d’agent, auto-confirmation, tâches planifiées, saisie vocale, terminal, sous-agents.
Le mode Créateur se démarque séparément. Dans ce mode, vous pouvez demander à l’agent d’écrire un plugin directement dans le chat. Il téléchargera la compétence de développement du plugin Cordis, créera une structure de package, écrira du code, installera le plugin et vérifiera son statut. Il y a un exemple sur la page officielle du projet où une minuterie Pomodoro flottante est assemblée de cette manière.
Les plugins peuvent également être installés à partir de la ligne de commande. Pour un profil Web, la commande ressemble à ceci :
dsh plugin --profile web add some-dsh-plugin
Les packages Npm, les liens comme github:owner/repo, les répertoires locaux et les archives tgz sont pris en charge. Après installation, il est utile de vérifier que la couche plugin est bien incluse dans la configuration :
dsh --profile web --dump-config
La commande imprime l’arborescence des plugins assemblée sans démarrer le serveur. S’il n’y a pas de nouvelle couche, le bundle n’a probablement pas déclaré de manifeste dsh.bundle et n’a pas été installé en tant que bibliothèque standard plutôt qu’en tant que plugin inclus.
Les paramètres expérimentaux incluent les marchés de plugins personnalisés. Il s’agit d’un fichier d’index JSON avec une liste de plugins, leurs versions, icônes et sources. En activant l’ensemble, vous obtenez un onglet Découvrir sur la page des plugins et la possibilité de connecter des marchés tiers. Comme toute source tierce, un tel marché ne doit être ajouté que si vous faites confiance à ses auteurs.
Trajectoire et audit
Pour chaque session, dsh écrit un journal des événements en ajout uniquement – Trajectoire. Il stocke l’invite du système, le raisonnement, les appels d’outils et leurs résultats, la planification des sous-agents et les insertions de contexte. La reprise de session, les forks, la recherche et la relecture sont construits sur ce journal.
L’avantage pratique est que la conversation cesse d’être une boîte noire. Dans l’interface, vous pouvez ouvrir la trajectoire et voir quels outils ont été appelés, combien de temps a duré chaque étape, quels fichiers ont été modifiés et combien de jetons ont été dépensés pour la demande. Si un agent s’est comporté de manière étrange, la raison est généralement visible ici, et non dans une courte réponse dans le chat.
Les sessions se trouvent dans ~/.dsh/sessions sous la forme de logs JSONL. Vous pouvez les lire, les rechercher et créer vos propres analyses. Cela permet également de calculer avec précision les dépenses et les accès au cache qui ne sont pas visibles dans une facture API classique.
Tâches et plannings en arrière-plan
DeepSeek Harness peut fonctionner non seulement en mode « demander et recevoir une réponse ». Les tâches peuvent être lancées en arrière-plan et planifiées. Par exemple, demandez à l’agent de collecter un rapport hebdomadaire à partir des notes de projet tous les vendredis à 17h00. Dans l’interface, ces tâches sont visibles séparément : vous pouvez vérifier l’état, afficher l’historique et ouvrir les détails de l’exécution.
Il existe un profil sans tête pour l’automatisation. Il démarre une session, imprime la réponse finale et quitte :
dsh --profile headless "run the tests"
Ce mode est pratique pour les CI, cron et les scripts pour lesquels une interface Web n’est pas nécessaire. En plus du headless, les profils sdk et acp sont disponibles : le premier sert les clients SDK via JSON-RPC, le second sert les clients d’automatisation via ACP stdio.
Sous-agents, MCP et compétences
Une tâche complexe peut être décomposée en sous-agents. L’agent principal planifie le travail et les sous-agents individuels travaillent sur leurs zones. Cela permet de garder le contexte compact et de ne pas faire glisser l’intégralité de l’historique dans chaque requête.
Les outils externes et les sources de données sont connectés via MCP. La documentation comprend un guide distinct sur la mémoire MCP, ainsi que des intégrations telles que les sessions de révision GitHub. Les compétences décrivent des procédures reproductibles que l’agent charge selon les besoins, plutôt que de conserver en permanence toutes les instructions dans une invite système.
Profils, bundles et correctifs
La configuration dsh est assemblée à partir de trois couches. Bundle est un ensemble de lignes de configuration et de code de plugin, c’est-à-dire une fonctionnalité prête à l’emploi. Profil est une composition nommée de bundles, qui est stockée dans $DSH_HOME/profiles/
L’ordre d’application est le suivant : d’abord les bundles par ordre de profil, puis le patch de profil, puis le patch général $DSH_HOME/cordis.patch.yml et à la fin les overlays transmis via –patch. Cela signifie que presque tous les paramètres peuvent être remplacés sans toucher aux sources du bundle. Vous pouvez visualiser l’arborescence résultante avec la commande :
dsh --profile web --dump-config
Un profil Web standard est appelé web, un profil sans serveur est appelé headless. Leurs fichiers de paramètres se trouvent dans $DSH_HOME/profiles/web/cordis.patch.yml et $DSH_HOME/profiles/headless/cordis.patch.yml. C’est ici que dsh écrit les modifications apportées via l’interface des paramètres.
SDK Python
Il existe un SDK officiel pour les projets Python. Il est installé dans un environnement virtuel et apporte un runtime natif, de sorte que le système Node.js n’est pas nécessaire pour le travail normal :
python -m venv .venv
.venv\Scripts\Activate.ps1
python -m pip install deepseek-harness-sdk
Un exemple de démarrage minimal ressemble à ceci :
from pathlib import Path
from deepseek_harness import DeepSeekHarness
workspace = Path("C:/work/disposable-workspace").resolve()
dsh_home = Path("C:/work/example-dsh-home").resolve()
with DeepSeekHarness(
provider="deepseek-official",
model="deepseek-v4-flash",
max_tokens=49_152,
cwd=str(workspace),
dsh_home=str(dsh_home),
profile="sdk-minimal",
) as harness:
result = harness.run(
"Inspect the repository and fix the failing tests.",
session_id="example-001",
)
print(result.final_response)
Le SDK démarre le processus dsh fourni avec le profil sdk-minimal et le réutilise avant de quitter le gestionnaire de contexte. Le profil minimal est intentionnellement limité : il comporte bash ou pwsh, une lecture d’images et un répertoire de travail, mais aucun outil Web, sous-agent ou certains outils de fichiers. Pour les tâches ponctuelles, c’est un plus : il y a moins de surface à contrôler.
À quoi faire attention
DeepSeek Harness est une aperçu pour les développeurs version 0.1.0-rc.x. Le README avertit explicitement que la compatibilité sera rompue. Pour les expériences, les projets personnels et l’automatisation, c’est très bien, mais pour un processus qui rapporte de l’argent en ce moment, cela vaut la peine de peser les risques et de conserver un plan de sauvegarde.
Le deuxième point est Node.js. Si vous disposez de 22.18 ou 23.x, l’installation plantera ou se comportera de manière imprévisible. Vérifiez la version à l’avance : le projet utilise node:sqlite et l’effacement intégré de TypeScript des types nécessitant une nouvelle branche.
Le troisième point concerne le bac à sable et les droits. Par défaut, l’agent fonctionne dans une politique proche de l’écriture de l’espace de travail : il peut modifier les fichiers du dossier sélectionné et les opérations potentiellement dangereuses nécessitent une confirmation. Le mode danger-accès complet donne plus de liberté, mais le risque devient plus élevé. Avant d’expérimenter avec un véritable référentiel, il est utile d’effectuer un commit ou une sauvegarde.
Le quatrième point est le coût. DSH lui-même est gratuit, mais pour en déduire, vous payez le fournisseur en jetons. Pour les longues sessions, la mise en cache des préfixes est importante : dsh compose les requêtes de manière à ce que l’historique et les schémas des outils restent inchangés le plus longtemps possible. Si le score s’avère plus élevé que prévu, regardez non seulement le prix par token, mais également la part des cash hits dans la trajectoire.
Est-ce que ça vaut la peine d’essayer
DeepSeek Harness intéresse principalement ceux qui souhaitent non seulement « une autre conversation avec un modèle », mais également un environnement contrôlé pour les agents. Il y a une trajectoire transparente, un travail normal avec des fichiers et des commandes, des tâches en arrière-plan, des sous-agents et une expansion vraiment profonde via des plugins. La possibilité de remplacer une boucle d’agent par la vôtre est rare et potentiellement très utile pour la recherche et l’orchestration personnalisée.
Si vous avez besoin d’un outil stable pour un travail rémunéré quotidien, il est désormais plus sage de traiter dsh comme un deuxième agent à côté du principal : essayez-le sur un projet personnel, comparez le coût et la qualité de vos tâches, et transférez-le ensuite seulement vers le workflow.
Liens
https://www.deepseek.com/harness/
https://www.deepseek.com/download/
https://github.com/deepseek-ai/deepseek-harness
https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart
https://deepseek-harness.github.io/deepseek-harness/en/guide/providers
https://deepseek-harness.github.io/deepseek-harness/en/guide/python-sdk
https://platform.deepseek.com/
Sources
https://github.com/deepseek-ai/deepseek-harness/blob/master/README.md
https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.md
https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart
https://deepseek-harness.github.io/deepseek-harness/en/guide/providers
https://deepseek-harness.github.io/deepseek-harness/en/guide/python-sdk
https://deepseek-harness.github.io/deepseek-harness/en/guide/plugin-market
https://dshdocs.com/getting-started/installation/
https://dshdocs.com/concepts/profiles-bundles-patches/
https://dshdocs.com/guides/dsh-vs-claude-code/
Leave a Reply