Qu'est-ce que DeepSeek Harness a changé ? Du Agent Framework à l'infrastructure Coding Agent nouvelle génération
En août 2026, DeepSeek a open-sourcé DeepSeek Harness (dsh). Ce n'est pas un nouveau modèle, ni une autre API de chaînes façon LangChain. Officiellement, l'agent est scindé : le modèle est l'âme ; le harness est tout ce qui lui permet de voir l'environnement, d'appeler des outils et de continuer à travailler. Cet article explique ce que ce basculement change — et pourquoi JSON Schema, les événements de session et les arbres de config comptent soudain plus qu'un prompt plus long.
Aperçu rapide
| Couche | En une ligne | Ce que vous maintenez |
|---|---|---|
| Agent Framework | Orchestre prompts, outils et étapes dans le code applicatif | Graphes d'appels Python/TS |
| Agent Harness | Runtime qui monte outils, FS, sandbox et boucle en plugins | Profile / Bundle / SessionEvent |
| DeepSeek Harness | dsh MIT open-source sur Cordis : everything is a plugin | Services ctx.* + JSON tool schemas |
Retenir la découpe : le Framework livre des chaînes ; le Harness livre un hôte remplaçable. Les modèles changent ; les seams et contrats JSON doivent rester.
Qu'est-ce que DeepSeek Harness ?
DeepSeek Harness (dsh) est le runtime open-source qui connecte un modèle de langage au monde réel : système de fichiers, terminal, navigateur et les outils que vous montez. Ce n'est pas une nouvelle sortie de modèle. La découpe officielle est simple : le modèle est l'âme ; le harness est tout ce qui lui permet de voir l'environnement, d'appeler des outils et de continuer sur plusieurs tours.
Le slogan de conception est Everything is a Plugin. Modèles, outils, sandboxes, sessions, stockage, Agent Loop et même l'UI se chargent comme plugins Cordis. Vous recomposer l'agent dans la configuration au lieu de forker une classe monolithique.
- Connecte le LLM au FS, au terminal et au web via des plugins remplaçables
- Enregistre chaque entrée visible par le modèle dans un Session Log append-only
- Expose les outils par des contrats JSON Schema (
inputSchema), pas seulement par de la prose dans le prompt
Si vous mélangez encore « chatbot », « modèle avec Function Calling » et « runtime multi-étapes » en un seul mot, commencez par Qu'est-ce qu'un agent IA ?. Cet article se concentre sur la moitié harness de cette pile.
Du Agent Framework à l'Agent Harness
Le code Agent Framework traditionnel enterre souvent l'Agent Loop dans une seule classe d'orchestration : prompts, dispatch d'outils, retries et mémoire partagent le même graphe d'appels. L'étendre veut dire éditer le code produit.
Un harness inverse la frontière. La boucle, les outils, le sandbox et la session deviennent des plugins remplaçables derrière des Capability Seams. Les équipes produit composent un Profile et un Bundle ; elles ne réécrivent pas le noyau pour ajouter un outil de recherche dans le dépôt.
- Noyau privilégié vs plugins : les frameworks figent l'orchestration ; les harnesses montent et démontent des capacités.
- Historique de chat vs Session Log : les frameworks gardent des messages de conversation ; les harnesses ajoutent des événements typés que le modèle a vraiment vus.
- Sandbox en dur vs seams : les frameworks encodent la politique FS/shell dans l'app ; les harnesses exposent Definition / Provider / Consumer.
- Prompt comme produit vs composition de config : les frameworks livrent des system prompts plus longs ; les harnesses livrent des arbres cordis.yml et des contrats JSON.
Ce basculement compte parce que les modèles continueront de changer. Les seams et schemas doivent survivre à n'importe quel snapshot fournisseur.
Plugins Cordis et cordis.yml
DeepSeek Harness tourne sur Cordis. Les plugins se montent et se démontent de façon réversible ; dépendances et services passent par ctx.*. La forme produit vit dans la configuration, pas dans un fork privé de dsh.
Un patch typique remplace l'adaptateur de modèle et ajoute un outil sans toucher à l'Agent Loop :
# cordis.patch.yml — swap model + add a tool
plugins:
- name: llm/deepseek
config:
model: deepseek-v4-pro
- name: tools/my-repo-search
config:
root: ./src
C'est le sens pratique de « everything is a plugin » : changer le Bundle, redémarrer l'hôte, garder stables le format du Session Log et les tool schemas.
Capability Seams
Un Capability Seam est la façon dont les plugins coopèrent sans importer les internes les uns des autres. Trois rôles reviennent souvent :
- Definition : déclarer le contrat de service (par exemple une interface d'exécution bash).
- Provider : implémenter le contrat (shell local, sandbox distant, mock).
- Consumer : appeler le service depuis l'Agent Loop ou un autre outil sans savoir quel provider a gagné.
Les outils eux-mêmes sont des seams à face JSON. Le modèle ne voit qu'un nom, une description et inputSchema — le même diamètre utilisé par Function Calling et MCP.
Un outil d'édition de fichier ressemble à ceci :
{
"name": "str_replace_editor",
"description": "Edit a file by exact string replacement",
"inputSchema": {
"type": "object",
"properties": {
"path": { "type": "string" },
"old_str": { "type": "string" },
"new_str": { "type": "string" }
},
"required": ["path", "old_str", "new_str"],
"additionalProperties": false
}
}
Traitez ce Schema comme du code produit. MCP Tool Schema vs Function Calling explique la frontière de protocole ; Pourquoi l'IA a besoin de JSON Schema explique pourquoi le diamètre doit vivre dans git, pas seulement dans un prompt.
Session Log : reconstruire ce que le modèle a vu
Chaque exécution ajoute un Session Log : system prompts, raisonnement, tool_calls, résultats d'outils, ordonnancement de subagents et injections de contexte. Resume, fork, search et replay lisent tous le même flux d'événements.
Un résultat d'outil est un événement typé, pas un paragraphe dans une UI de chat :
{
"type": "tool/result",
"tool_call_id": "call_7f2a",
"name": "bash",
"ok": true,
"content": {
"stdout": "passed 12",
"exit_code": 0
},
"ts": "2026-09-11T06:12:04.221Z"
}
Quand un coding agent « a soudain oublié » un test en échec, ouvrez le log avant de réécrire le prompt. formater et vérifier la syntaxe l'événement en local, puis JSON Diff contre la trajectoire d'hier. Ne collez pas de secrets sur un site JSON public.
Profile, Bundle et Agent Loop
La composition runtime a quelques couches nommées :
- Profile : comment vous lancez l'hôte (UI web vs headless).
- Bundle : l'ensemble empilé de plugins qui définit outils, sandboxes et comportement de boucle.
- Turn / step : un tour utilisateur peut contenir beaucoup d'étapes d'outils ; les événements restent granulaires.
- Événements agent/* : des hooks de cycle de vie que d'autres plugins peuvent observer sans patcher la boucle.
Une fois ces couches explicites, changer de fournisseur de modèle est un changement de config — pas une réécriture de l'orchestration produit.
Quatre modes : Standard, Code, Minimal, Creation
dsh livre plusieurs modes runtime pour changer la surface d'outils sans forker le dépôt :
| Mode | À quoi ça sert |
|---|---|
| Standard | Coding agent complet : édition, shell, recherche, skills, planning, subagents, workflows |
| Code | Outils Standard exposés via le Code Mode SDK pour composer des ops multi-étapes dans un programme TypeScript |
| Minimal | Surface à deux outils (bash + str_replace_editor) pour des benchmarks serrés |
| Creation | Inspecter le runtime, expérimenter des plugins Cordis en mémoire, écrire de nouveaux presets |
Choisissez le plus petit mode qui répond à votre question. Minimal Mode suffit souvent pour évaluer un modèle ; Creation Mode est pour les développeurs de harness, pas pour des utilisateurs non fiables.
Ce que signifie « infrastructure Coding Agent nouvelle génération »
Appeler dsh une infrastructure n'est pas du marketing. Cela veut dire quatre habitudes d'ingénierie :
- Capability Seams au lieu d'imports privés entre outils et boucle
- Sécurité fail-closed autour des montages FS, shell et réseau
- Contrats JSON pour les arguments d'outils et les événements de session
- Session Logs rejouables au lieu de captures d'écran de chat non reproductibles
Ces habitudes rejoignent déjà la façon dont tournent les workflows d'agents en production. workflows d'agents JSON Schema projette la même idée sur des portes Schema entre les sauts.
Framework vs Harness en un coup d'œil
Utilisez ce tableau quand on vous demande si vous avez encore besoin d'« un autre Agent Framework » :
| Dimension | Agent Framework | Agent Harness |
|---|---|---|
| Extension | Éditer l'orchestrateur / sous-classer | Monter un plugin / patcher cordis.yml |
| Observabilité | Logs et traces rajoutés après coup | Le Session Log est l'artefact principal |
| Changer de backend | Réécrire les adaptateurs dans le code app | Remplacer le Provider derrière un seam |
| Frontière produit | Le code de chaînes est le produit | Schemas, seams et Bundles sont le produit |
Les frameworks aident encore à prototyper. Les harnesses comptent quand l'hôte doit survivre aux changements de modèle et aux outils tiers.
Pièges fréquents
- Prendre DeepSeek Harness pour un nouveau modèle. dsh est de l'infrastructure runtime. Qualité de modèle et conception du harness sont deux molettes séparées.
- Forker tout le dépôt pour ajouter un outil. Écrivez plutôt un plugin Cordis et un JSON
inputSchema. - Sauter la validation Schema des arguments d'outils. Les
tool_callsexigent encore un contrôle côté hôte avant effets shell ou FS. - Ignorer le Session Log. Si vous ne pouvez pas reconstruire ce que le modèle a vu, vous ne pouvez pas déboguer un coding agent.
- Lancer Creation Mode dans un environnement non fiable. Il sert à inspecter et composer des plugins — gardez-le hors des hôtes de production partagés.
FAQ
En quoi est-ce différent de Claude Code ou d'autres coding agents ?
Les coding agents produit livrent un Bundle opinionné. DeepSeek Harness open-source l'hôte remplaçable : plugins, seams, Session Log et modes. Vous pouvez construire une expérience proche de Claude Code — ou une bien plus mince — sans forker un runtime fermé.
Faut-il un modèle DeepSeek pour utiliser dsh ?
Non. L'adaptateur de modèle est un plugin. Les modèles DeepSeek sont un choix naturel, mais l'idée du harness est indépendante du fournisseur : remplacez le Provider, gardez seams et schemas.
Cordis est-il obligatoire ?
Pour DeepSeek Harness tel qu'il est livré, oui — Cordis est le noyau de plugins. Vous pouvez quand même reprendre les idées de seam et de Session Log dans un autre hôte.
Quel est le rôle du JSON ici ?
Les inputSchema d'outils, les événements de session et les arbres de config sont les contrats stables. Function Calling et MCP sont deux façons de projeter le même Schema. Le prompt n'est pas la source de vérité.
Est-ce prêt pour la production ?
C'est une developer preview. Attendez-vous à des breaking changes. Servez-vous-en pour concevoir plugins et contrats dès maintenant ; épinglez prudemment avant de le mettre sous astreinte.
Conclusion
DeepSeek Harness n'a pas livré « un DeepSeek plus intelligent ». Il a livré l'autre moitié de l'agent : un hôte remplaçable où outils, sandboxes, boucles et UI sont des plugins.
Si vous construisez des coding agents en 2026, écrivez d'abord schemas et Capability Seams. Les modèles tourneront. Le Session Log et les contrats JSON ne devraient pas.
Pour aller plus loin
- Qu'est-ce qu'un agent IA ? Tool Calling et JSON Boucle runtime vs chatbot vs Function Calling
- Pourquoi l'IA a besoin de JSON Schema Le Schema comme contrat d'exécution
- MCP Tool Schema vs Function Calling Où vit le JSON d'outils selon les protocoles
- JSON Schema dans les workflows d'agents IA Portes entre les sauts multi-étapes
- Outils locaux JSONSort Formater, valider, Diff dans le navigateur
- Tous les articles Autres notes sur JSON et le développement IA
Journal : première publication