DeepSeek Harness : installation, profils et premier lancement
Updated August 16, 2026 · first published August 16, 2026
Voici la moitié pratique de notre couverture de DeepSeek Harness : comment faire tourner dsh, ce que le modèle de composition attend de vous, et quelles démos valent dix minutes.
La voie la plus rapide
npx @deepseek-ai/dsh web
Cela démarre l'interface web sur http://127.0.0.1:3080. À partir de là, deux choses doivent se produire avant que le compositeur de session devienne utilisable :
- Paramètres → Modèles, et saisir votre clé d'API DeepSeek. La route s'active immédiatement, sans redémarrage.
- Choisir l'espace de travail, pour ajouter et activer le répertoire du projet. Tant qu'aucun espace n'est actif, le compositeur reste indisponible.
Une fois lancé, l'agent peut lire et modifier des fichiers, exécuter des commandes, déléguer des tâches à des sous-agents et planifier. Il demande confirmation selon la politique de permissions active.
Depuis les sources
git clone https://github.com/deepseek-ai/deepseek-harness
pnpm install
pnpm run build
pnpm dsh web
Planchers à connaître : Node 22.19 ou plus récent (la CI couvre 22.19, 24 et 26), Git 2.26 ou plus récent, et Corepack avec pnpm épinglé à pnpm@11.7.0. Une DEEPSEEK_API_KEY est facultative, lue depuis l'environnement ou un .env ignoré par git à la racine du dépôt ; à côté, DEEPSEEK_BASE_URL peut pointer vers un autre endpoint. Les suites de bout en bout contre l'API réelle s'auto-ignorent quand la clé est absente, si bien qu'un checkout sans clé se construit et se teste proprement.
Profils et bundles : le modèle de composition
Puisque chaque partie du harness est un plugin, quelque chose doit dire quels plugins sont chargés. C'est le rôle du profil : une composition nommée stockant une liste ordonnée de bundles plus les correctifs de l'utilisateur. Un bundle distribue des lignes de configuration Cordis et du code.
Trois profils modèles sont livrés :
| Profil | Ce qu'il compose |
|---|---|
dsh-base | Adaptateurs de modèle, outils, persistance |
dsh-web-app | L'interface navigateur |
dsh-headless | Exécuteur en un coup |
L'ordre de surcharge en quatre couches
La configuration se résout dans un ordre fixe, les couches ultérieures l'emportant :
- Bundles du profil
- Correctifs du profil
- Correctifs au niveau home
- Surcharges en ligne de commande
Apprenez cet ordre avant de commencer à déboguer. Presque toute question du genre « pourquoi utilise-t-il ce modèle » dans un système de configuration en couches se résout en trouvant quelle couche a touché la valeur en dernier, et une surcharge en ligne de commande bat tout ce qui se trouve en dessous.
Les sous-systèmes que vous rencontrerez
Six clés de registre portent l'essentiel du comportement : ctx.sessions (le journal d'événements en ajout seul), ctx.systemPrompt, ctx.tools (un registre à scopes avec exécution gardée), ctx.agents, ctx.agentLoop et ctx.llm. Si vous étendez le harness, ce sont les noms à chercher en premier.
Trois démos à lancer
- Headless en un coup :
pnpm dsh --profile headless "summarize this workspace". La forme que vous câbleriez dans la CI ou dans une tâche planifiée. - Introspection Cordis :
pnpm run demo:cordis. Auto-référentielle : elle inspecte et modifie son propre runtime de plugins en cours d'exécution. C'est la démonstration la plus nette que l'argument des plugins est structurel et non marketing. - Automatisation ACP :
pnpm run demo:acp. Un serveur d'automatisation parlant JSON-RPC sur stdio, qui est la surface d'intégration pour piloter le harness depuis un autre système.
Si vous comptez contribuer
Quelques conventions font gagner du temps. Les marqueurs TODO sont gradués par urgence : FIXME bloque une release, TODO veut dire bientôt, XXX veut dire un jour. Lefthook exécute pre-commit (enregistrements de pairing en staged, .oxlintrc.staged.json, régénération des avis tiers, espaces, gardien du manifeste vendor), pre-merge-commit et pre-push (pnpm run typecheck). Les hooks sautent délibérément les tests et les builds : la CI possède la couverture exhaustive, et pnpm run check:all est la porte locale complète et optionnelle.
Deux bizarreries expliquent une structure autrement déroutante. Le build se scinde en agrégats tsconfig Host et Client parce que les deux côtés fusionnent par déclaration l'interface Context de Cordis sous les mêmes clés, et un seul programme TypeScript voyant les deux fusions signale une collision. Et les exemples de code de la documentation restent honnêtes grâce aux blocs ts type-equiv plus pnpm run verify-type-equiv, de sorte que des déclarations collées ne peuvent pas dériver silencieusement des sources.
Fixer les attentes
Le README le dit sans détour : ceci est une developer preview, et il y aura des changements cassant la compatibilité. La découverte des plugins passe par le topic GitHub dsh-plugin, le projet est sous licence MIT et les dépendances tierces sont listées dans THIRD_PARTY_NOTICES.md. Évaluez-le maintenant ; standardisez plus tard.
Related
- DeepSeek Harness : le guide complet
- Ce que « tout est un plugin » apporte vraiment (EN)
- Où placer les garde-fous de dépense (EN)
- Le journal de session comme registre de coûts (EN)
Want this applied to your own LLM spend? FinOps LLM runs a free audit of your AI costs and shows where the savings are. Book free audit →