L'essentiel : Creator Mode est le mode de DeepSeek Harness qui sert à étendre Harness lui-même. Vous décrivez l'outil voulu en une phrase, et l'agent écrit un plugin, l'installe dans le profil courant et vérifie qu'il est bien chargé.
- Selon la publication officielle de @DeepSeekHarness (2 novembre), Creator Mode transforme des idées en plugins utilisables ; la démo montre un espace de design, un jeu bac à sable et un visualiseur 3D de LLM.
- Harness se lance avec
npx @deepseek-ai/dsh web. Nous avons testé la version 0.2.1-rc.5 sous Linux l'après-midi du 3 novembre (heure de Pékin) ; l'installation des dépendances a pris environ 37 secondes. - Il accepte une « Custom model API » : URL de base, protocole et clé suffisent pour parler à une API tierce compatible OpenAI. Avec aicodewith,
claude-sonnet-5-5,gpt-6.1-soletdeepseek-flashont tous appelé les outils correctement. - Le plugin
todo_scanconstruit avec Creator Mode a été terminé en 1 min 33 s : 6 fichiers écrits et plugin installé. Les appels depuis une nouvelle session et en mode headless ont renvoyé le bon résultat.
Créer une API Key et utiliser Claude et GPT dans DeepSeek Harness, Claude Code, Codex et Cursor →
Ce que sont DeepSeek Harness et Creator Mode
DeepSeek Harness (commande dsh) est un harnais d'agent open source de DeepSeek, publié sur GitHub sous licence MIT. Sa devise est « Everything is a Plugin » : outils, skills, panneaux d'interface et même les modes sont des plugins assemblés sur le framework Cordis. C'est une préversion pour développeurs, et le README annonce des changements incompatibles.
À la création d'une session dans l'interface web, quatre modes sont proposés (libellés relevés dans l'interface pendant notre test) :
| Mode | Description dans l'interface |
|---|---|
| Standard mode | Travailler sur du code, des fichiers et des informations ; convient à la plupart des tâches |
| PTC mode | Tout Standard, mieux adapté aux appels d'outils par lots suivis d'un tri des résultats |
| Minimal mode | Terminal et lecture d'images seulement ; utile pour tester le comportement de base |
| Creator mode | Personnaliser DSH en conversation : l'agent écrit des plugins qui ajoutent des fonctions ou de l'interface, ou combine outils et prompts en un mode à vous |
Selon le guide officiel des plugins dynamiques et le README Agent Preset, l'identifiant interne de Creator Mode est cordis. Par rapport à Standard, il ajoute trois choses :
- Inspection du runtime : deux outils en lecture seule,
cordis_inspect_listetcordis_inspect_query, qui montrent les services, les schémas d'outils et les schémas de configuration réels, pour que l'agent ne devine pas les API à partir du code source. - Gestion des plugins : l'outil
plugin_manager(présent aussi dans Standard) installe, active, désactive et supprime des bundles. La configuration des plugins appartient au profil courant, s'applique à toutes ses sessions et survit aux redémarrages. - Skills de création : des skills comme
cordis-plugin-developmentsont montés automatiquement, avec les étapes et des modèles pour écrire plugins, bundles et modes.
Il utilise le modèle choisi dans le sélecteur de modèles. En plus du sélecteur de nouvelle session, le menu Add plugin de la page Plugins propose « Let the agent create a plugin », qui ouvre le même parcours Creator.
Quelques retours tiers :
- Selon @rohanpaul_ai, la fonction existe depuis août ; le 2 novembre, DeepSeek a publié une vidéo de démo et les prompts de ses 7 exemples.
- Selon @testingcatalog, Creator Mode crée des plugins réutilisables pour des usages variés, du jeu au travail.
- Selon l'utilisateur @superalesha, il fait tourner Kimi, GLM, MiniMax, DeepSeek et d'autres modèles ouverts dans Harness, et a « même ajouté les modèles GPT via un plugin ».
Pour l'autre projet de DeepSeek basé sur Harness, Super-agent, voir notre test de DeepSeek Super-agent et du prototype dsh-superagent ; nous ne le répétons pas ici.
Installer DeepSeek Harness
Installez Node.js (nous avons utilisé la 22.23), puis lancez :
# Node.js 22 or newer
npx @deepseek-ai/dsh --version
# 0.2.1-rc.5
npx @deepseek-ai/dsh web
# dsh web: http://127.0.0.1:3080/?token=...
En local, le navigateur s'ouvre tout seul ; sur un serveur ou en SSH, ajoutez --no-open et seule l'adresse s'affiche. L'adresse contient un token : ouvrez ce lien complet, car http://127.0.0.1:3080/ seul renvoie 401.
Pour exécuter une tâche dans le terminal sans interface web, utilisez le mode headless : la réponse va sur stdout et les diagnostics sur stderr, pratique pour les scripts et la CI. Les options sont dans l'aide CLI officielle.
La note de sécurité officielle rappelle que Harness exécute du code et des commandes générés par le modèle, charge des plugins tiers et n'a pas été audité. Faites-le tourner dans une VM jetable, un conteneur ou un dossier dédié, loin de vos projets et identifiants importants.
Connecter DeepSeek Harness à une API tierce (aicodewith)
Les modèles se configurent dans Settings → Models. En plus de la carte DeepSeek et des fournisseurs tiers intégrés, vous pouvez choisir Custom model API pour un relais, une passerelle d'entreprise ou un serveur auto-hébergé. Selon le guide officiel de configuration des modèles, trois protocoles sont proposés : OpenAI Chat Completions, OpenAI Responses et Anthropic Messages.
Créer une API Key pour DeepSeek Harness →
Méthode 1 : remplir la page Models
Settings → Models → Add model provider → Custom model API
Provider ID aicodewith
Base URL https://api.aicodewith.ai/v1
API protocol OpenAI Chat Completions
API key (your aicodewith key)
Models claude-sonnet-5-5, gpt-6.1-sol, deepseek-flash
Après enregistrement, les trois modèles apparaissent dans le sélecteur. Une clé enregistrée depuis la page est écrite dans ~/.dsh/.credentials.yaml, et la configuration ne garde qu'une référence.
Méthode 2 : modifier le fichier de configuration
La page écrit le cordis.patch.yml du profil. Avec dsh web le profil s'appelle web, en headless headless. Voici exactement le fichier testé (la clé vient d'une variable d'environnement, elle n'est pas écrite dans le fichier) :
# ~/.dsh/profiles/web/cordis.patch.yml
- id: llm-pi-ai
config:
providers:
aicodewith:
displayName: aicodewith
apiKeyEnv: AICODEWITH_API_KEY
api: openai-completions
baseURL: https://api.aicodewith.ai/v1
models:
- id: claude-sonnet-5-5
- id: gpt-6.1-sol
- id: deepseek-flash
- id: agent-default-model
config:
provider: aicodewith
model: claude-sonnet-5-5
Exportez la clé avant le lancement :
export AICODEWITH_API_KEY="VOTRE_API_KEY"
npx @deepseek-ai/dsh web
Windows PowerShell :
$env:AICODEWITH_API_KEY = "VOTRE_API_KEY"
npx @deepseek-ai/dsh web
Les modifications s'appliquent à la requête suivante, sans redémarrage. Envoyez un message pour vérifier :
npx @deepseek-ai/dsh headless "Reply with exactly: harness ok"
# harness ok
Nos résultats (3 novembre, heure de Pékin) :
| Test | Modèle | Résultat | Durée |
|---|---|---|---|
| Réponse d'une ligne | claude-sonnet-5-5 | harness ok renvoyé | 4,5 s |
| Réponse d'une ligne | gpt-6.1-sol | harness ok renvoyé | 3,7 s |
| Écrire hello.py et l'exécuter (appels write + bash) | claude-sonnet-5-5 | Sortie 5050 | 8,2 s |
| Idem avec le protocole Anthropic Messages et l'URL https://api.aicodewith.ai | claude-sonnet-5-5 | harness ok renvoyé | 3,0 s |
Pour le modèle de DeepSeek, ajoutez deepseek-flash à la liste ; voir les nouveautés de DeepSeek V4.1 Flash 1017 et son usage dans Claude Code / Codex.
Premier plugin avec Creator Mode : todo_scan
Objectif : un outil todo_scan qui trouve les lignes contenant TODO ou FIXME et renvoie fichier:ligne: texte, 50 entrées au maximum.
Dans l'interface web, ouvrez le sélecteur de mode, choisissez Creator mode et envoyez cette demande (nous avons utilisé claude-sonnet-5-5 avec la permission par défaut Workspace Write) :
Write a DSH plugin that adds a tool named todo_scan. It takes an optional path
(default: the working directory), recursively scans text files for lines
containing TODO or FIXME (skip node_modules and .git), and returns a list of
file:line: text entries, at most 50. Install it into this profile and verify
it loaded.
Il a demandé une confirmation une fois, car installer un plugin est une action à haute confiance ; nous avons cliqué Allow once. Réponse finale (extrait) :
Completed in 1m 33s
The todo_scan plugin is installed and loaded, and a test call returned correct results.
Install: @local/todo-scan installed with application: applied and no warnings.
Tool registration: todo_scan appears in the live tool list with the schema from my plugin.
...
It skips symlinks, binary files and files over 1 MiB.
If more than 50 matches exist, it returns 50 and marks the result as truncated.
Edited 6 files +147 -0
Le plugin généré dans le dossier de travail :
todo-scan/
├── package.json # "dsh": { "bundle": { "patch": "./cordis.patch.yml" } }
├── cordis.patch.yml # inserts the plugin into the profile
├── index.js # 127 lines: registers the todo_scan tool
├── icon.svg
└── locale/
├── en.json
└── zh.json
Les deux fichiers clés sont cordis.patch.yml et index.js. Le premier demande à Harness d'insérer le plugin dans le profil :
# todo-scan/cordis.patch.yml
- insert:
- id: todo-scan
name: '@local/todo-scan'
config: {}
Le second enregistre l'outil, comme dans le tutoriel officiel du premier plugin : exporter name, inject et apply, puis appeler ctx.tools.register dans apply :
// todo-scan/index.js (abridged)
export const name = 'todo-scan'
export const inject = ['tools', 'workingDirectory']
export function apply(ctx) {
return ctx.effect(() =>
ctx.tools.register({
name: 'todo_scan',
description: 'Recursively scan text files for lines containing TODO or FIXME ...',
parameters: {
type: 'object',
properties: { path: { type: 'string', description: 'File or directory to scan ...' } },
additionalProperties: false,
},
output: { schema: { /* entries: string[], truncated: boolean */ }, render: (_a, v) => [/* text */] },
async execute(args, exec) {
const cwd = await ctx.workingDirectory.ensure(exec.agent, exec.signal)
return scan(args.path ? resolve(cwd, args.path) : cwd, exec.signal)
},
}),
)
}
Après installation, le package.json du profil gagne une dépendance link: et @local/todo-scan dans bundles ; le plugin reste donc après un redémarrage.
Vérifier le plugin
Dans une nouvelle session Standard, nous lui avons demandé d'appeler todo_scan : 7 secondes. Nous avions ajouté un fichier de 60 lignes TODO, et le résultat s'arrête pile à 50 :
many.txt:1: TODO item 0 many.txt:2: TODO item 1 ... many.txt:50: TODO item 49 (truncated at 50 entries)
Puis nous avons vérifié l'exclusion de node_modules et .git : des lignes TODO aussi dans demo/node_modules et demo/.git, plugin installé dans le profil headless, appel en ligne de commande :
npx @deepseek-ai/dsh plugin --profile headless add link:/absolute/path/to/todo-scan
# dependencies:
# + @local/todo-scan <- .../todo-scan
# Done in 23ms using pnpm v12.15.0
npx @deepseek-ai/dsh headless --json "Call the todo_scan tool once with path demo and paste its raw output verbatim, nothing else."
{"type":"tool_call","tool":"todo_scan","input":{"path":"demo"}}
{"type":"tool_result","status":"completed","result":"src/app.py:2: # TODO: handle empty input\nsrc/app.py:4: # FIXME: off by one"}
{"type":"final","text":"src/app.py:2: # TODO: handle empty input\nsrc/app.py:4: # FIXME: off by one"}
Seules les deux lignes de src/app.py sont revenues ; celles de node_modules et .git ont été ignorées. Le même plugin avec trois modèles :
| Modèle | Appel de todo_scan | Sortie | Durée |
|---|---|---|---|
| claude-sonnet-5-5 | Oui | Deux lignes, correctes | 5,5 s |
| gpt-6.1-sol | Oui | Deux lignes, correctes | 6,9 s |
| deepseek-flash | Oui | Deux lignes, correctes | 7,6 s |
Erreurs courantes
Mauvaise clé :
{ERR401}
Vérifiez que AICODEWITH_API_KEY contient la clé complète, sans espace en trop.
Variable d'environnement non exportée :
dsh: MISSING_CREDENTIAL: llm-pi-ai: no credential for provider route "aicodewith"; its profile
resolves AICODEWITH_API_KEY, which is not set — store AICODEWITH_API_KEY through the credentials
service (the web Models page writes it) or export it ...
La variable nommée dans apiKeyEnv doit être exportée dans le terminal qui lance dsh, ou la clé doit être enregistrée une fois depuis la page Models.
Modèle par défaut absent de la liste :
dsh: UNKNOWN_MODEL: pi-ai provider "aicodewith" has no configured model "claude-sonnet-9"
Le model de agent-default-model doit figurer dans la liste models du fournisseur.
Identifiant de modèle inconnu de la passerelle :
{ERR400}
Prenez les identifiants dans la liste des modèles aicodewith, ou cliquez sur Fetch available models dans la page Models.
| Symptôme | Cause | Solution |
|---|---|---|
| http://127.0.0.1:3080/ affiche 401 | Le token de démarrage manque | Ouvrir le lien complet affiché dans le terminal |
| AUTH: 401 | Clé erronée ou supprimée | Utiliser une clé valide |
| MISSING_CREDENTIAL | Variable non exportée | L'exporter ou enregistrer la clé dans la page Models |
| UNKNOWN_MODEL | Modèle par défaut hors de la liste models | Ajouter le modèle à la liste |
| INVALID_REQUEST: 400 modèle inexistant | La passerelle ne connaît pas l'identifiant | Corriger l'identifiant d'après la liste |
| Plugin installé mais outil absent | Plugin non chargé ou en échec | Demander à Creator Mode de lister les bundles installés et les avertissements |
Faire la même chose dans Claude Code / Codex / Cursor
Un plugin Harness donne un nouvel outil à l'agent. Dans les autres clients, l'équivalent le plus proche est une Skill (étapes et scripts rangés dans un dossier) ou un serveur MCP :
| Client | Emplacement des Skills |
|---|---|
| Claude Code | ~/.claude/skills/<nom>/SKILL.md |
| Codex | ~/.agents/skills/<nom>/SKILL.md |
| Cursor | ~/.cursor/skills/ ou ~/.agents/skills/ |
Pour les écrire et les déclencher, voir comment utiliser les Agent Skills dans Claude Code et Codex.
Ces clients peuvent aussi utiliser aicodewith. Claude Code :
export ANTHROPIC_BASE_URL="https://api.aicodewith.ai"
export ANTHROPIC_AUTH_TOKEN="VOTRE_API_KEY"
claude
Codex (~/.codex/config.toml) :
# ~/.codex/config.toml
model_provider = "aicodewith"
model = "gpt-6.1-sol"
[model_providers.aicodewith]
name = "aicodewith"
base_url = "https://api.aicodewith.ai/chatgpt/v1"
wire_api = "responses"
experimental_bearer_token = "VOTRE_API_KEY"
Plus de détails : connecter Claude Code à une API tierce.
FAQ
Creator Mode est-il un nouveau modèle ?
Non. C'est un mode qui utilise le modèle choisi dans le sélecteur, avec en plus des outils et skills pour inspecter le runtime, gérer et écrire des plugins. Nous avons utilisé claude-sonnet-5-5.
Faut-il l'API de DeepSeek ?
Non. Harness gère des fournisseurs tiers intégrés et des endpoints personnalisés compatibles OpenAI. Avec aicodewith, nous avons utilisé des modèles Claude, GPT et DeepSeek, y compris pour écrire un plugin en Creator Mode.
Les plugins installés par Creator Mode sont-ils sûrs ?
Selon le README officiel du Plugin Manager, le code d'un plugin installé s'exécute dans le processus hôte de Harness, hors du bac à sable de l'espace de travail. C'est pourquoi chaque action de plugin_manager exige un accès complet ou une approbation ponctuelle ; nous avons eu une demande de confirmation pendant le test. Essayez d'abord dans un profil ou dossier jetable et lisez le code avant d'installer dans votre environnement principal.
Peut-on utiliser Creator Mode sans navigateur ?
Nous avons choisi Creator mode dans l'interface web. Le mode headless nous a servi à lancer des tâches et à appeler le plugin installé, et l'installation peut aussi se faire en ligne de commande avec dsh plugin --profile <nom> add.
Comment désinstaller un plugin ?
Désactivez ou supprimez le bundle dans Creator Mode ou la page Plugins, ou en ligne de commande :
npx @deepseek-ai/dsh plugin --profile headless remove @local/todo-scan
# dependencies:
# - @local/todo-scan link:.../todo-scan
Après suppression dans notre test, @local/todo-scan n'était plus dans la liste bundles du profil, et le modèle, invité à appeler todo_scan, a répondu que cet outil n'existe pas.
Pour aller plus loin
- Qu'est-ce que DeepSeek Super-agent ? Architecture, résultats officiels et test du prototype dsh-superagent
- Les nouveautés de DeepSeek V4.1 Flash 1017 et son usage dans Claude Code / Codex
- Connecter Claude Code à une API tierce : URL de base, clé API et modèles
- Utiliser les Agent Skills : dossiers d'installation et déclenchement dans Claude Code / Codex
Sources : DeepSeek Harness sur GitHub · guide de configuration des modèles · tutoriel du premier plugin · aide CLI · note de sécurité · site DeepSeek Harness · publication @DeepSeekHarness (vérifié le 2026-11-03)



