{"id":201,"date":"2026-11-06T10:40:51","date_gmt":"2026-11-06T06:40:51","guid":{"rendered":"https:\/\/demensdeum.com\/blog\/2026\/11\/06\/deepseek-harness-install-usage\/"},"modified":"2026-11-06T17:04:10","modified_gmt":"2026-11-06T13:04:10","slug":"deepseek-harness-install-usage","status":"publish","type":"post","link":"https:\/\/demensdeum.com\/blog\/fr\/2026\/11\/06\/deepseek-harness-install-usage\/","title":{"rendered":"DeepSeek Harness\u00a0: installation, capacit\u00e9s et premier lancement"},"content":{"rendered":"<p>DeepSeek Harness, ou dsh en abr\u00e9g\u00e9, est un harnais d&#8217;agent IA open source de DeepSeek AI. Si le mod\u00e8le r\u00e9pond aux questions, alors le harnais lui donne la main : lit et \u00e9dite des fichiers, ex\u00e9cute des commandes, organise des sessions, montre la trajectoire d&#8217;ex\u00e9cution et se permet d&#8217;\u00eatre \u00e9tendu avec des plugins. Le projet est distribu\u00e9 sous licence MIT et est en pr\u00e9version publique.<\/p>\n<p>L&#8217;id\u00e9e principale de DeepSeek Harness est formul\u00e9e comme \u00ab tout est un plugin \u00bb &#8211; litt\u00e9ralement \u00ab tout est un plugin \u00bb. L&#8217;ensemble du produit est construit sur cela\u00a0: des adaptateurs de mod\u00e8le, un registre d&#8217;outils, un journal de session, une interface et m\u00eame le cycle d&#8217;agent lui-m\u00eame. Il est bas\u00e9 sur le framework Cordis, donc un d\u00e9veloppeur peut non seulement ajouter une nouvelle commande, mais remplacer l&#8217;int\u00e9gralit\u00e9 du comportement de l&#8217;agent sans bifurquer le noyau.<\/p>\n<p>Vous pouvez travailler avec dsh de plusieurs mani\u00e8res\u00a0: via l&#8217;interface Web locale, via une application de bureau, depuis la ligne de commande en mode sans t\u00eate ou depuis le SDK Python. Vous trouverez ci-dessous l&#8217;installation, le premier lancement et un aper\u00e7u des fonctionnalit\u00e9s.<\/p>\n<h2>Ce dont vous avez besoin<\/h2>\n<p>L&#8217;interface Web et la CLI n\u00e9cessitent Node.js. Le projet a des exigences strictes :<\/p>\n<ul>\n<li><b>Node.js 22.19.0 ou version ult\u00e9rieure<\/b> dans la ligne 22.x.<\/li>\n<li><b>Node.js 24.0.0 ou version ult\u00e9rieure<\/b> dans la ligne 24.x.<\/li>\n<li><b>Node.js 23.x n&#8217;est pris en charge<\/b> dans aucun patch\u00a0: cette ligne n&#8217;est pas LTS et a d\u00e9j\u00e0 \u00e9t\u00e9 abandonn\u00e9e.<\/li>\n<\/ul>\n<p>En plus de Node.js, vous aurez besoin de la cl\u00e9 API DeepSeek. Il est cr\u00e9\u00e9 dans votre compte personnel sur platform.deepseek.com. L&#8217;application de bureau n&#8217;a pas besoin de Node.js &#8211; l&#8217;environnement y est d\u00e9j\u00e0 packag\u00e9.<\/p>\n<p>Vous pouvez v\u00e9rifier la version avec la commande\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>node -v\n<\/code><\/pre>\n<\/div>\n<h2>Installation via npx<\/h2>\n<p>Le moyen le plus rapide de conna\u00eetre le projet est de ne rien installer globalement. Ex\u00e9cutez simplement\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>npx @deepseek-ai\/dsh web\n<\/code><\/pre>\n<\/div>\n<p>La commande t\u00e9l\u00e9chargera le package <b>@deepseek-ai\/dsh<\/b> depuis npm, configurera un serveur Web local et ouvrira l&#8217;interface dans le navigateur. Par d\u00e9faut, il \u00e9coute l&#8217;adresse\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code><a href=\"https:\/\/127.0.0.1:3080\" rel=\"noopener\" target=\"_blank\">https:\/\/127.0.0.1:3080<\/a><\/code><\/pre>\n<\/div>\n<p>Si vous n&#8217;avez pas besoin d&#8217;ouvrir le navigateur, par exemple sur une machine distante, ajoutez le flag <b>&#8211;no-open<\/b>\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>npx @deepseek-ai\/dsh web --no-open\n<\/code><\/pre>\n<\/div>\n<p>Lorsqu&#8217;il est lanc\u00e9 via SSH, dsh imprime l&#8217;adresse mais ne tente pas d&#8217;ouvrir le navigateur : l&#8217;adresse locale appartient au client ou \u00e0 l&#8217;\u00e9diteur SSH.<\/p>\n<h2>Installation globale<\/h2>\n<p>Si vous avez constamment besoin d\u2019un outil, il est plus pratique de l\u2019installer globalement. Le package fournit le binaire <b>dsh<\/b>\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>npm install -g @deepseek-ai\/dsh\ndsh web\n<\/code><\/pre>\n<\/div>\n<p>Apr\u00e8s cela, la commande dsh est disponible depuis n&#8217;importe quel r\u00e9pertoire. La mise \u00e0 jour s&#8217;effectue de la mani\u00e8re habituelle :<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>npm install -g @deepseek-ai\/dsh@latest\n<\/code><\/pre>\n<\/div>\n<h2>Application de bureau<\/h2>\n<p>Pour ceux qui ne souhaitent pas d\u00e9tenir de terminal et Node.js, DeepSeek publie des versions de bureau. Ils sont disponibles sur la page de t\u00e9l\u00e9chargement officielle :<\/p>\n<ul>\n<li><b>macOS<\/b>\u00a0\u2013 Apple Silicon, macOS\u00a013 ou version ult\u00e9rieure, format DMG.<\/li>\n<li><b>Windows<\/b>\u00a0\u2013\u00a0Assemblage 64\u00a0bits, format EXE.<\/li>\n<\/ul>\n<p>L&#8217;application fonctionne avec les m\u00eames fichiers locaux, peut effectuer des t\u00e2ches en arri\u00e8re-plan et stocke les sessions de la m\u00eame mani\u00e8re que la version Web. C&#8217;est une option pratique pour le travail quotidien, lorsque vous ne souhaitez pas \u00e9lever le serveur manuellement \u00e0 chaque fois.<\/p>\n<h2>Construire \u00e0 partir des sources<\/h2>\n<p>Si vous avez besoin d&#8217;un contr\u00f4le total sur le code, vos propres correctifs ou le d\u00e9veloppement de plugins, le projet est collect\u00e9 \u00e0 partir du r\u00e9f\u00e9rentiel. Vous aurez besoin de pnpm et le r\u00e9f\u00e9rentiel corrige une version sp\u00e9cifique, vous devez donc d&#8217;abord activer Corepack\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>corepack enable\ngit clone https:\/\/github.com\/deepseek-ai\/deepseek-harness.git\ncd deepseek-harness\npnpm install\npnpm run build\npnpm dsh web\n<\/code><\/pre>\n<\/div>\n<p>La commande <b>pnpm run build<\/b> pr\u00e9pare les artefacts du package et du frontend, et <b>pnpm dsh web<\/b> ex\u00e9cute la version d\u00e9j\u00e0 construite sans reconstruction. Pour le d\u00e9veloppement, il existe un mode <b>pnpm run dev:web<\/b>\u00a0: il construit, d\u00e9marre le serveur et reconstruit les bundles clients lorsque les sources changent.<\/p>\n<h2>Premier lancement<\/h2>\n<p>Apr\u00e8s avoir d\u00e9marr\u00e9 l&#8217;interface web, la proc\u00e9dure est la suivante.<\/p>\n<p>Tout d&#8217;abord, ouvrez <b>Param\u00e8tres \u2192 Mod\u00e8les<\/b> et saisissez la cl\u00e9 API DeepSeek. La cl\u00e9 est enregistr\u00e9e dans le fichier <b>$DSH_HOME\/.credentials.yaml<\/b>, et seul un lien vers celle-ci reste dans les param\u00e8tres. La page des param\u00e8tres re\u00e7oit une description d\u00e9j\u00e0 masqu\u00e9e du secret, il est donc impossible de relire la cl\u00e9 depuis l&#8217;interface. Les modifications du mod\u00e8le sont appliqu\u00e9es \u00e0 partir de la demande suivante\u00a0; il n&#8217;est pas n\u00e9cessaire de red\u00e9marrer le serveur.<\/p>\n<p>S\u00e9lectionnez ensuite votre dossier de travail via <b>Choisir un espace de travail<\/b>. Tant que l&#8217;espace de travail n&#8217;est pas s\u00e9lectionn\u00e9, le champ de saisie de la t\u00e2che reste gris\u00e9. Ceci est fait intentionnellement : l&#8217;agent doit comprendre les limites dans lesquelles il est autoris\u00e9 \u00e0 lire et \u00e0 modifier des fichiers.<\/p>\n<p>Apr\u00e8s cela, vous pouvez soumettre la premi\u00e8re t\u00e2che. Par exemple:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>Summarize this repository and identify its main packages.\n<\/code><\/pre>\n<\/div>\n<p>L&#8217;agent lira le projet, \u00e9tablira un plan, appellera les outils n\u00e9cessaires et montrera le r\u00e9sultat. Pour les op\u00e9rations qui n\u00e9cessitent une confirmation bas\u00e9e sur la politique d&#8217;acc\u00e8s actuelle, dsh demandera avant de s&#8217;ex\u00e9cuter.<\/p>\n<h2>Mod\u00e8les et fournisseurs<\/h2>\n<p>DeepSeek se connecte en une seule \u00e9tape : la fiche du fournisseur dans les param\u00e8tres ne contient qu&#8217;un champ pour la cl\u00e9 API. De plus, vous pouvez ajouter des services tiers. Le r\u00e9pertoire int\u00e9gr\u00e9 conna\u00eet des identifiants tels que <b>anthropic<\/b>, <b>openai<\/b>, <b>moonshotai<\/b> pour Kimi et <b>zai<\/b> pour GLM.<\/p>\n<p>Pour votre propre passerelle, proxy d&#8217;entreprise ou serveur local, il existe un mode <b>API de mod\u00e8le personnalis\u00e9<\/b>. Il demande\u00a0:<\/p>\n<ul>\n<li>identifiant permanent du fournisseur\u00a0;<\/li>\n<li>nom d&#8217;affichage\u00a0;<\/li>\n<li>Adresse de base de l&#8217;API\u00a0;<\/li>\n<li>protocole\u00a0:\u00a0ach\u00e8vements de chat OpenAI, r\u00e9ponses OpenAI ou messages anthropiques\u00a0;<\/li>\n<li>cl\u00e9 et liste des mod\u00e8les.<\/li>\n<\/ul>\n<p>Le protocole est important\u00a0: un fournisseur parle un protocole. Si une passerelle prend en charge \u00e0 la fois OpenAI et Anthropic, elle devra \u00eatre d\u00e9crite par deux fournisseurs. Pour les mod\u00e8les, vous pouvez sp\u00e9cifier la taille de la fen\u00eatre contextuelle, le nombre maximum de jetons de sortie et les types de donn\u00e9es d&#8217;entr\u00e9e pris en charge, y compris les images.<\/p>\n<p>Les mod\u00e8les DeepSeek ont \u200b\u200bdes niveaux de raisonnement <b>off<\/b>, <b>faible<\/b>, <b>\u00e9lev\u00e9<\/b> et <b>max<\/b>. Le niveau est s\u00e9lectionn\u00e9 dans le menu <b>Effort<\/b> \u00e0 c\u00f4t\u00e9 du mod\u00e8le. Pour les t\u00e2ches de routine dans le r\u00e9f\u00e9rentiel, un mod\u00e8le rapide suffit, mais pour les t\u00e2ches architecturales complexes, il est logique d&#8217;augmenter l&#8217;effort ou d&#8217;utiliser un mod\u00e8le de classe sup\u00e9rieure.<\/p>\n<h2>Plugins et mode Cr\u00e9ateur<\/h2>\n<p>Les plugins sont la principale fonctionnalit\u00e9 de DeepSeek Harness. Gr\u00e2ce \u00e0 eux, des outils, des comp\u00e9tences, des \u00e9l\u00e9ments d&#8217;interface et des applications enti\u00e8res sont ajout\u00e9s. L&#8217;interface dispose d&#8217;un gestionnaire de plugins avec des ensembles officiels et exp\u00e9rimentaux : commandes d&#8217;agent, auto-confirmation, t\u00e2ches planifi\u00e9es, saisie vocale, terminal, sous-agents.<\/p>\n<p>Le <b>mode Cr\u00e9ateur<\/b> se d\u00e9marque s\u00e9par\u00e9ment. Dans ce mode, vous pouvez demander \u00e0 l&#8217;agent d&#8217;\u00e9crire un plugin directement dans le chat. Il t\u00e9l\u00e9chargera la comp\u00e9tence de d\u00e9veloppement du plugin Cordis, cr\u00e9era une structure de package, \u00e9crira du code, installera le plugin et v\u00e9rifiera son statut. Il y a un exemple sur la page officielle du projet o\u00f9 une minuterie Pomodoro flottante est assembl\u00e9e de cette mani\u00e8re.<\/p>\n<p>Les plugins peuvent \u00e9galement \u00eatre install\u00e9s \u00e0 partir de la ligne de commande. Pour un profil Web, la commande ressemble \u00e0 ceci\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>dsh plugin --profile web add some-dsh-plugin\n<\/code><\/pre>\n<\/div>\n<p>Les packages Npm, les liens comme github:owner\/repo, les r\u00e9pertoires locaux et les archives tgz sont pris en charge. Apr\u00e8s installation, il est utile de v\u00e9rifier que la couche plugin est bien incluse dans la configuration :<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>dsh --profile web --dump-config\n<\/code><\/pre>\n<\/div>\n<p>La commande imprime l&#8217;arborescence des plugins assembl\u00e9e sans d\u00e9marrer le serveur. S&#8217;il n&#8217;y a pas de nouvelle couche, le bundle n&#8217;a probablement pas d\u00e9clar\u00e9 de manifeste dsh.bundle et n&#8217;a pas \u00e9t\u00e9 install\u00e9 en tant que biblioth\u00e8que standard plut\u00f4t qu&#8217;en tant que plugin inclus.<\/p>\n<p>Les param\u00e8tres exp\u00e9rimentaux incluent les <b>march\u00e9s de plugins personnalis\u00e9s<\/b>. Il s&#8217;agit d&#8217;un fichier d&#8217;index JSON avec une liste de plugins, leurs versions, ic\u00f4nes et sources. En activant l&#8217;ensemble, vous obtenez un onglet <b>D\u00e9couvrir<\/b> sur la page des plugins et la possibilit\u00e9 de connecter des march\u00e9s tiers. Comme toute source tierce, un tel march\u00e9 ne doit \u00eatre ajout\u00e9 que si vous faites confiance \u00e0 ses auteurs.<\/p>\n<h2>Trajectoire et audit<\/h2>\n<p>Pour chaque session, dsh \u00e9crit un journal des \u00e9v\u00e9nements en ajout uniquement &#8211; <b>Trajectoire<\/b>. Il stocke l&#8217;invite du syst\u00e8me, le raisonnement, les appels d&#8217;outils et leurs r\u00e9sultats, 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.<\/p>\n<p>L\u2019avantage pratique est que la conversation cesse d\u2019\u00eatre une bo\u00eete noire. Dans l&#8217;interface, vous pouvez ouvrir la trajectoire et voir quels outils ont \u00e9t\u00e9 appel\u00e9s, combien de temps a dur\u00e9 chaque \u00e9tape, quels fichiers ont \u00e9t\u00e9 modifi\u00e9s et combien de jetons ont \u00e9t\u00e9 d\u00e9pens\u00e9s pour la demande. Si un agent s&#8217;est comport\u00e9 de mani\u00e8re \u00e9trange, la raison est g\u00e9n\u00e9ralement visible ici, et non dans une courte r\u00e9ponse dans le chat.<\/p>\n<p>Les sessions se trouvent dans <b>~\/.dsh\/sessions<\/b> sous la forme de logs JSONL. Vous pouvez les lire, les rechercher et cr\u00e9er vos propres analyses. Cela permet \u00e9galement de calculer avec pr\u00e9cision les d\u00e9penses et les acc\u00e8s au cache qui ne sont pas visibles dans une facture API classique.<\/p>\n<h2>T\u00e2ches et plannings en arri\u00e8re-plan<\/h2>\n<p>DeepSeek Harness peut fonctionner non seulement en mode \u00ab demander et recevoir une r\u00e9ponse \u00bb. Les t\u00e2ches peuvent \u00eatre lanc\u00e9es en arri\u00e8re-plan et planifi\u00e9es. Par exemple, demandez \u00e0 l&#8217;agent de collecter un rapport hebdomadaire \u00e0 partir des notes de projet tous les vendredis \u00e0 17h00. Dans l&#8217;interface, ces t\u00e2ches sont visibles s\u00e9par\u00e9ment : vous pouvez v\u00e9rifier l&#8217;\u00e9tat, afficher l&#8217;historique et ouvrir les d\u00e9tails de l&#8217;ex\u00e9cution.<\/p>\n<p>Il existe un profil sans t\u00eate pour l&#8217;automatisation. Il d\u00e9marre une session, imprime la r\u00e9ponse finale et quitte\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>dsh --profile headless \"run the tests\"\n<\/code><\/pre>\n<\/div>\n<p>Ce mode est pratique pour les CI, cron et les scripts pour lesquels une interface Web n&#8217;est pas n\u00e9cessaire. En plus du headless, les profils <b>sdk<\/b> et <b>acp<\/b> sont disponibles\u00a0: le premier sert les clients SDK via JSON-RPC, le second sert les clients d&#8217;automatisation via ACP stdio.<\/p>\n<h2>Sous-agents, MCP et comp\u00e9tences<\/h2>\n<p>Une t\u00e2che complexe peut \u00eatre d\u00e9compos\u00e9e en sous-agents. L&#8217;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&#8217;int\u00e9gralit\u00e9 de l&#8217;historique dans chaque requ\u00eate.<\/p>\n<p>Les outils externes et les sources de donn\u00e9es sont connect\u00e9s via MCP. La documentation comprend un guide distinct sur la m\u00e9moire MCP, ainsi que des int\u00e9grations telles que les sessions de r\u00e9vision GitHub. Les comp\u00e9tences d\u00e9crivent des proc\u00e9dures reproductibles que l&#8217;agent charge selon les besoins, plut\u00f4t que de conserver en permanence toutes les instructions dans une invite syst\u00e8me.<\/p>\n<h2>Profils, bundles et correctifs<\/h2>\n<p>La configuration dsh est assembl\u00e9e \u00e0 partir de trois couches. <b>Bundle<\/b> est un ensemble de lignes de configuration et de code de plugin, c&#8217;est-\u00e0-dire une fonctionnalit\u00e9 pr\u00eate \u00e0 l&#8217;emploi. <b>Profil<\/b> est une composition nomm\u00e9e de bundles, qui est stock\u00e9e dans <b>$DSH_HOME\/profiles\/<name><\/b>. <b>Patch<\/b> est un fichier YAML qui modifie les lignes d\u00e9j\u00e0 charg\u00e9es par identifiant, les d\u00e9sactive ou en ajoute de nouvelles.<\/p>\n<p>L&#8217;ordre d&#8217;application est le suivant\u00a0: d&#8217;abord les bundles par ordre de profil, puis le patch de profil, puis le patch g\u00e9n\u00e9ral <b>$DSH_HOME\/cordis.patch.yml<\/b> et \u00e0 la fin les overlays transmis via <b>&#8211;patch<\/b>. Cela signifie que presque tous les param\u00e8tres peuvent \u00eatre remplac\u00e9s sans toucher aux sources du bundle. Vous pouvez visualiser l&#8217;arborescence r\u00e9sultante avec la commande\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>dsh --profile web --dump-config\n<\/code><\/pre>\n<\/div>\n<p>Un profil Web standard est appel\u00e9 <b>web<\/b>, un profil sans serveur est appel\u00e9 <b>headless<\/b>. Leurs fichiers de param\u00e8tres se trouvent dans <b>$DSH_HOME\/profiles\/web\/cordis.patch.yml<\/b> et <b>$DSH_HOME\/profiles\/headless\/cordis.patch.yml<\/b>. C&#8217;est ici que dsh \u00e9crit les modifications apport\u00e9es via l&#8217;interface des param\u00e8tres.<\/p>\n<h2>SDK Python<\/h2>\n<p>Il existe un SDK officiel pour les projets Python. Il est install\u00e9 dans un environnement virtuel et apporte un runtime natif, de sorte que le syst\u00e8me Node.js n&#8217;est pas n\u00e9cessaire pour le travail normal\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>python -m venv .venv\n.venv\\Scripts\\Activate.ps1\npython -m pip install deepseek-harness-sdk\n<\/code><\/pre>\n<\/div>\n<p>Un exemple de d\u00e9marrage minimal ressemble \u00e0 ceci\u00a0:<\/p>\n<div class=\"hcb_wrap\">\n<pre class=\"prism undefined-numbers lang-unknown\" data-lang=\"unknown\"><code>from pathlib import Path\n\nfrom deepseek_harness import DeepSeekHarness\n\nworkspace = Path(\"C:\/work\/disposable-workspace\").resolve()\ndsh_home = Path(\"C:\/work\/example-dsh-home\").resolve()\n\nwith DeepSeekHarness(\n    provider=\"deepseek-official\",\n    model=\"deepseek-v4-flash\",\n    max_tokens=49_152,\n    cwd=str(workspace),\n    dsh_home=str(dsh_home),\n    profile=\"sdk-minimal\",\n) as harness:\n    result = harness.run(\n        \"Inspect the repository and fix the failing tests.\",\n        session_id=\"example-001\",\n    )\n\nprint(result.final_response)\n<\/code><\/pre>\n<\/div>\n<p>Le SDK d\u00e9marre le processus dsh fourni avec le profil sdk-minimal et le r\u00e9utilise avant de quitter le gestionnaire de contexte. Le profil minimal est intentionnellement limit\u00e9\u00a0: il comporte bash ou pwsh, une lecture d&#8217;images et un r\u00e9pertoire de travail, mais aucun outil Web, sous-agent ou certains outils de fichiers. Pour les t\u00e2ches ponctuelles, c\u2019est un plus : il y a moins de surface \u00e0 contr\u00f4ler.<\/p>\n<h2>\u00c0 quoi faire attention<\/h2>\n<p>DeepSeek Harness est une <b>aper\u00e7u pour les d\u00e9veloppeurs<\/b> version 0.1.0-rc.x. Le README avertit explicitement que la compatibilit\u00e9 sera rompue. Pour les exp\u00e9riences, les projets personnels et l&#8217;automatisation, c&#8217;est tr\u00e8s bien, mais pour un processus qui rapporte de l&#8217;argent en ce moment, cela vaut la peine de peser les risques et de conserver un plan de sauvegarde.<\/p>\n<p>Le deuxi\u00e8me point est Node.js. Si vous disposez de 22.18 ou 23.x, l&#8217;installation plantera ou se comportera de mani\u00e8re impr\u00e9visible. V\u00e9rifiez la version \u00e0 l&#8217;avance\u00a0: le projet utilise node:sqlite et l&#8217;effacement int\u00e9gr\u00e9 de TypeScript des types n\u00e9cessitant une nouvelle branche.<\/p>\n<p>Le troisi\u00e8me point concerne le bac \u00e0 sable et les droits. Par d\u00e9faut, l&#8217;agent fonctionne dans une politique proche de l&#8217;\u00e9criture de l&#8217;espace de travail : il peut modifier les fichiers du dossier s\u00e9lectionn\u00e9 et les op\u00e9rations potentiellement dangereuses n\u00e9cessitent une confirmation. Le mode danger-acc\u00e8s complet donne plus de libert\u00e9, mais le risque devient plus \u00e9lev\u00e9. Avant d&#8217;exp\u00e9rimenter avec un v\u00e9ritable r\u00e9f\u00e9rentiel, il est utile d&#8217;effectuer un commit ou une sauvegarde.<\/p>\n<p>Le quatri\u00e8me point est le co\u00fbt. DSH lui-m\u00eame est gratuit, mais pour en d\u00e9duire, vous payez le fournisseur en jetons. Pour les longues sessions, la mise en cache des pr\u00e9fixes est importante\u00a0: dsh compose les requ\u00eates de mani\u00e8re \u00e0 ce que l&#8217;historique et les sch\u00e9mas des outils restent inchang\u00e9s le plus longtemps possible. Si le score s&#8217;av\u00e8re plus \u00e9lev\u00e9 que pr\u00e9vu, regardez non seulement le prix par token, mais \u00e9galement la part des cash hits dans la trajectoire.<\/p>\n<h2>Est-ce que \u00e7a vaut la peine d&#8217;essayer<\/h2>\n<p>DeepSeek Harness int\u00e9resse principalement ceux qui souhaitent non seulement \u00ab une autre conversation avec un mod\u00e8le \u00bb, mais \u00e9galement un environnement contr\u00f4l\u00e9 pour les agents. Il y a une trajectoire transparente, un travail normal avec des fichiers et des commandes, des t\u00e2ches en arri\u00e8re-plan, des sous-agents et une expansion vraiment profonde via des plugins. La possibilit\u00e9 de remplacer une boucle d&#8217;agent par la v\u00f4tre est rare et potentiellement tr\u00e8s utile pour la recherche et l&#8217;orchestration personnalis\u00e9e.<\/p>\n<p>Si vous avez besoin d&#8217;un outil stable pour un travail r\u00e9mun\u00e9r\u00e9 quotidien, il est d\u00e9sormais plus sage de traiter dsh comme un deuxi\u00e8me agent \u00e0 c\u00f4t\u00e9 du principal : essayez-le sur un projet personnel, comparez le co\u00fbt et la qualit\u00e9 de vos t\u00e2ches, et transf\u00e9rez-le ensuite seulement vers le workflow.<\/p>\n<h2>Liens<\/h2>\n<p><a href=\"https:\/\/www.deepseek.com\/harness\/\" rel=\"noopener\" target=\"_blank\">https:\/\/www.deepseek.com\/harness\/<\/a><br \/>\n<a href=\"https:\/\/www.deepseek.com\/download\/\" rel=\"noopener\" target=\"_blank\">https:\/\/www.deepseek.com\/download\/<\/a><br \/>\n<a href=\"https:\/\/github.com\/deepseek-ai\/deepseek-harness\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/deepseek-ai\/deepseek-harness<\/a><br \/>\n<a href=\"https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/quickstart\" rel=\"noopener\" target=\"_blank\">https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/quickstart<\/a><br \/>\n<a href=\"https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/providers\" rel=\"noopener\" target=\"_blank\">https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/providers<\/a><br \/>\n<a href=\"https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/python-sdk\" rel=\"noopener\" target=\"_blank\">https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/python-sdk<\/a><br \/>\n<a href=\"https:\/\/platform.deepseek.com\/\" rel=\"noopener\" target=\"_blank\">https:\/\/platform.deepseek.com\/<\/a><\/p>\n<h2>Sources<\/h2>\n<p><a href=\"https:\/\/github.com\/deepseek-ai\/deepseek-harness\/blob\/master\/README.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/deepseek-ai\/deepseek-harness\/blob\/master\/README.md<\/a><br \/>\n<a href=\"https:\/\/github.com\/deepseek-ai\/deepseek-harness\/blob\/master\/apps\/cli\/README.md\" rel=\"noopener\" target=\"_blank\">https:\/\/github.com\/deepseek-ai\/deepseek-harness\/blob\/master\/apps\/cli\/README.md<\/a><br \/>\n<a href=\"https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/quickstart\" rel=\"noopener\" target=\"_blank\">https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/quickstart<\/a><br \/>\n<a href=\"https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/providers\" rel=\"noopener\" target=\"_blank\">https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/providers<\/a><br \/>\n<a href=\"https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/python-sdk\" rel=\"noopener\" target=\"_blank\">https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/python-sdk<\/a><br \/>\n<a href=\"https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/plugin-market\" rel=\"noopener\" target=\"_blank\">https:\/\/deepseek-harness.github.io\/deepseek-harness\/en\/guide\/plugin-market<\/a><br \/>\n<a href=\"https:\/\/dshdocs.com\/getting-started\/installation\/\" rel=\"noopener\" target=\"_blank\">https:\/\/dshdocs.com\/getting-started\/installation\/<\/a><br \/>\n<a href=\"https:\/\/dshdocs.com\/concepts\/profiles-bundles-patches\/\" rel=\"noopener\" target=\"_blank\">https:\/\/dshdocs.com\/concepts\/profiles-bundles-patches\/<\/a><br \/>\n<a href=\"https:\/\/dshdocs.com\/guides\/dsh-vs-claude-code\/\" rel=\"noopener\" target=\"_blank\">https:\/\/dshdocs.com\/guides\/dsh-vs-claude-code\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>DeepSeek Harness, ou dsh en abr\u00e9g\u00e9, est un harnais d&#8217;agent IA open source de DeepSeek AI. Si le mod\u00e8le r\u00e9pond aux questions, alors le harnais lui donne la main : lit et \u00e9dite des fichiers, ex\u00e9cute des commandes, organise des sessions, montre la trajectoire d&#8217;ex\u00e9cution et se permet d&#8217;\u00eatre \u00e9tendu avec des plugins. Le projet [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-201","post","type-post","status-publish","format-standard","hentry","category-notes"],"translation":{"provider":"WPGlobus","version":"3.0.6","language":"fr","enabled_languages":["en","ru","zh","de","ja","fr","es","pt","hi"],"languages":{"en":{"title":true,"content":true,"excerpt":false},"ru":{"title":true,"content":true,"excerpt":false},"zh":{"title":true,"content":true,"excerpt":false},"de":{"title":true,"content":true,"excerpt":false},"ja":{"title":true,"content":true,"excerpt":false},"fr":{"title":true,"content":true,"excerpt":false},"es":{"title":true,"content":true,"excerpt":false},"pt":{"title":true,"content":true,"excerpt":false},"hi":{"title":true,"content":true,"excerpt":false}}},"_links":{"self":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/201","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/comments?post=201"}],"version-history":[{"count":2,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/201\/revisions"}],"predecessor-version":[{"id":203,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/posts\/201\/revisions\/203"}],"wp:attachment":[{"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/media?parent=201"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/categories?post=201"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/demensdeum.com\/blog\/fr\/wp-json\/wp\/v2\/tags?post=201"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}