@ran-sh/dsh-crew 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/.claude-plugin/marketplace.json +17 -0
  2. package/.claude-plugin/plugin.json +8 -0
  3. package/.mcp.json +8 -0
  4. package/LICENSE +21 -0
  5. package/README.de.md +359 -0
  6. package/README.es.md +359 -0
  7. package/README.fr.md +359 -0
  8. package/README.hi.md +359 -0
  9. package/README.id.md +359 -0
  10. package/README.ja.md +359 -0
  11. package/README.ko.md +359 -0
  12. package/README.md +360 -0
  13. package/README.pt.md +359 -0
  14. package/README.ru.md +359 -0
  15. package/README.th.md +359 -0
  16. package/README.tr.md +359 -0
  17. package/README.vi.md +359 -0
  18. package/README.zh-TW.md +359 -0
  19. package/README.zh.md +305 -0
  20. package/agents/ds-flash.md +26 -0
  21. package/agents/ds-pro.md +32 -0
  22. package/agents/ds-reviewer.md +23 -0
  23. package/agents/ds-worker.md +22 -0
  24. package/codex/agents/ds-flash.toml +30 -0
  25. package/codex/agents/ds-pro.toml +31 -0
  26. package/codex/agents/ds-reviewer.toml +28 -0
  27. package/codex/agents/ds-worker.toml +28 -0
  28. package/codex/prompts/dsh-config.md +3 -0
  29. package/codex/prompts/dsh-status.md +1 -0
  30. package/commands/config.md +11 -0
  31. package/commands/off.md +5 -0
  32. package/commands/on.md +5 -0
  33. package/commands/status.md +5 -0
  34. package/cordis.patch.yml +4 -0
  35. package/docs/images/dsh-crew-host.png +0 -0
  36. package/docs/images/dsh-crew-jobs.png +0 -0
  37. package/docs/images/dsh-crew-logo.png +0 -0
  38. package/docs/images/dsh-crew-overview.png +0 -0
  39. package/lib/client.js +2765 -0
  40. package/package.json +125 -0
  41. package/scripts/build-client.mjs +28 -0
  42. package/scripts/live-crew-smoke.mjs +39 -0
  43. package/scripts/live-policy-matrix.mjs +177 -0
  44. package/scripts/policy-probe.mjs +101 -0
  45. package/scripts/setup.mjs +294 -0
  46. package/scripts/smoke-real.mjs +110 -0
  47. package/scripts/smoke.mjs +78 -0
  48. package/scripts/verify-installer-fix.mjs +26 -0
  49. package/src/adaptive-routing.mjs +260 -0
  50. package/src/client/activation-summary.tsx +64 -0
  51. package/src/client/entry.tsx +236 -0
  52. package/src/client/index.tsx +1120 -0
  53. package/src/config-readiness.mjs +59 -0
  54. package/src/delivery.mjs +205 -0
  55. package/src/dsh-cli-runtime.mjs +251 -0
  56. package/src/failure-classification.mjs +172 -0
  57. package/src/hub/entry.mjs +98 -0
  58. package/src/hub/index.mjs +757 -0
  59. package/src/hub-client.mjs +132 -0
  60. package/src/hub-compatibility.mjs +49 -0
  61. package/src/i18n.mjs +19 -0
  62. package/src/install/cli.mjs +28 -0
  63. package/src/install/install-legacy.mjs +460 -0
  64. package/src/install/install.mjs +451 -0
  65. package/src/jobs.mjs +275 -0
  66. package/src/mcp-runtime.mjs +257 -0
  67. package/src/model-catalog.mjs +173 -0
  68. package/src/model-routing.mjs +391 -0
  69. package/src/multimodal.mjs +0 -0
  70. package/src/policy-legacy.mjs +830 -0
  71. package/src/policy.mjs +197 -0
  72. package/src/readiness-matrix.mjs +169 -0
  73. package/src/runtime-controls.mjs +90 -0
  74. package/src/runtime-identity.mjs +108 -0
  75. package/src/server.mjs +477 -0
  76. package/src/status-shard.mjs +52 -0
  77. package/src/structured-error-code.mjs +39 -0
  78. package/src/vision-route.mjs +138 -0
  79. package/src/workflow-runtime.mjs +567 -0
  80. package/src/workflow.mjs +160 -0
  81. package/src/workspace-audit.mjs +231 -0
  82. package/src/workspace-isolation.mjs +306 -0
  83. package/statusline/statusline.sh +14 -0
  84. package/statusline/worker-segment.sh +35 -0
  85. package/worker.cordis.yml +77 -0
package/README.fr.md ADDED
@@ -0,0 +1,359 @@
1
+ <p align="center">
2
+ <img src="./docs/images/dsh-crew-logo.png" alt="DSH Crew" width="120" />
3
+ </p>
4
+
5
+ <h1 align="center">DSH Crew</h1>
6
+
7
+ <p align="center">
8
+ <strong>Un plugin <a href="https://github.com/deepseek-ai/deepseek-harness">DeepSeek Harness</a> : envoyer du travail à des agents DSH depuis Claude Code / Codex, sans renoncer à l'interface native de subagents de l'hôte.</strong><br />
9
+ <sub>Interface de progression native &bull; Politique de tier et escalade &bull; Sessions DSH dans l'hôte &bull; Vision et génération d'images &bull; Installation en un clic</sub>
10
+ </p>
11
+
12
+ <p align="center">
13
+ <sub>GitHub: <code>Ran-sh/dsh-crew</code> &middot; Version actuelle du plugin : <code>0.1.0-rc.1</code> &middot; Testé avec DSH <code>0.1.0-rc.6</code></sub>
14
+ </p>
15
+
16
+ <p align="center">
17
+ <a href="./README.md"><b>English</b></a> &middot; <a href="./README.zh.md">简体中文</a> &middot; <a href="./README.zh-TW.md">繁體中文</a> &middot; <a href="./README.ja.md">日本語</a> &middot; <a href="./README.ko.md">한국어</a> &middot; <a href="./README.fr.md"><b>Français</b></a> &middot; <a href="./README.es.md">Español</a> &middot; <a href="./README.de.md">Deutsch</a> &middot; <a href="./README.pt.md">Português</a> &middot; <a href="./README.ru.md">Русский</a> &middot; <a href="./README.hi.md">हिन्दी</a> &middot; <a href="./README.tr.md">Türkçe</a> &middot; <a href="./README.th.md">ไทย</a> &middot; <a href="./README.vi.md">Tiếng Việt</a> &middot; <a href="./README.id.md">Bahasa Indonesia</a>
18
+ </p>
19
+
20
+ <p align="center">
21
+ <a href="https://github.com/Ran-sh/dsh-crew/blob/main/LICENSE"><img src="https://img.shields.io/github/license/Ran-sh/dsh-crew?color=64748b" alt="License" /></a>
22
+ </p>
23
+
24
+ <br />
25
+
26
+ <p align="center">
27
+ <img src="./docs/images/dsh-crew-overview.png" alt="DSH Crew — settings page" width="100%" />
28
+ </p>
29
+ <p align="center"><sub>La page de paramètres de DSH Crew — intégrations hôte, politique d'envoi, exécution et pont multimodal</sub></p>
30
+
31
+ ## Pourquoi DSH Crew
32
+
33
+ DSH Crew est un plugin pour [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (DSH) — un harness open-source pour agents. Il permet d'envoyer des agents DSH depuis Claude Code et Codex : l'orchestrateur conserve son propre modèle, le travail s'exécute sur un véritable agent DSH avec les outils, le sandbox, les presets et l'historique de session de ce harness, et l'hôte l'affiche toujours comme un subagent natif avec une progression en direct.
34
+
35
+ Ce qui exécute le travail est un agent DSH, pas un simple appel de modèle. Les tiers (`flash` / `pro`) sélectionnent le niveau de capacité que cet agent reçoit depuis le roster configuré du harness — DeepSeek V4 Flash et V4 Pro aujourd'hui — donc un changement de modèle dans DSH ne nécessite aucun changement ici.
36
+
37
+ <table>
38
+ <tr>
39
+ <td width="50%">
40
+
41
+ ### 🧵 Interface de progression native
42
+
43
+ Les workers apparaissent comme des subagents normaux dans Claude Code / Codex — le nombre d'envois, l'étape en cours, les appels d'outils et l'utilisation de tokens s'affichent dans le panneau de tâches de l'hôte, plus un segment statusline claude-hud : `⚙dsh 1▶pro 2m14s 21.7k/606 ✓3`.
44
+
45
+ </td>
46
+ <td width="50%">
47
+
48
+ ### 🎚️ Politique de tier et escalade
49
+
50
+ `flash` pour le travail mécanique, `pro` pour le raisonnement, `effort` de `off` à `max`. `tier_policy` peut verrouiller chaque envoi sur un seul tier au niveau de la couche d'outils, et `escalate_on_failure` relance une fois sur pro une exécution flash ayant échoué — sur la base de preuves, pas en devinant la difficulté à l'avance.
51
+
52
+ </td>
53
+ </tr>
54
+ <tr>
55
+ <td width="50%">
56
+
57
+ ### 🏛️ Sessions DSH dans l'hôte
58
+
59
+ Avec le bundle installé dans un profil DSH, chaque worker est une session DSH de première classe : visible dans la Web UI, regroupée par répertoire de travail, montée avec le preset Agent que vous choisissez par tier. Sans DSH en cours d'exécution, l'envoi retombe sur un runtime DSH standalone, donc les environnements CI et headless fonctionnent toujours.
60
+
61
+ </td>
62
+ <td width="50%">
63
+
64
+ ### 👁️ Vision et génération d'images
65
+
66
+ Les modèles de DSH sont uniquement textuels. `describe_image` et `generate_image` empruntent les yeux et le pinceau des CLI que vous avez déjà — Claude, Codex, Grok, Antigravity — ou de toute API compatible OpenAI que vous configurez. Les images collées restent visibles dans la conversation et arrivent au modèle sous forme de texte.
67
+
68
+ </td>
69
+ </tr>
70
+ <tr>
71
+ <td width="50%">
72
+
73
+ ### 🔌 Fournisseurs personnalisés
74
+
75
+ Apportez votre propre endpoint (Base URL + clé API + modèles) ou un modèle de commande local. Chaque fournisseur dispose d'un test de connectivité qui vérifie l'accessibilité et l'authentification, puis effectue un véritable appel vision pour que vous le sachiez maintenant, pas en pleine tâche.
76
+
77
+ </td>
78
+ <td width="50%">
79
+
80
+ ### 📦 Installation en un clic
81
+
82
+ La page de paramètres installe et met à jour le plugin Claude Code et les fichiers de rôle Codex pour vous — enregistrement marketplace, liste blanche de permissions, câblage HUD, chemins absolus rendus pour cette machine — et les restaure tout aussi facilement. Chaque fichier de paramètres est d'abord sauvegardé.
83
+
84
+ </td>
85
+ </tr>
86
+ </table>
87
+
88
+ ## Comment ça marche
89
+
90
+ ```
91
+ Claude Code / Codex (orchestrator, keeps its own model)
92
+ └─ ds-flash / ds-pro ← native subagent shell (progress shows in the host's task UI)
93
+ └─ MCP: dsh_run_worker(tier, effort, cwd)
94
+ ├─ hub reachable → session inside DSH (visible in the Web UI, grouped by cwd)
95
+ └─ otherwise → dsh-jsonrpc-agent runtime (worker.cordis.yml)
96
+ └─ DeepSeek V4 Flash / Pro (DSH SDK, event stream → progress and token stats)
97
+ ```
98
+
99
+ ## Une exécution, deux points de vue
100
+
101
+ La répartition s'étale. Ci-dessous, dix-huit workers traduisent ce README en parallèle : l'hôte les compte comme ses propres subagents, tandis que le harness les exécute comme de vraies sessions.
102
+
103
+ <p align="center">
104
+ <img src="./docs/images/dsh-crew-host.png" alt="Claude Code" width="100%" />
105
+ </p>
106
+ <p align="center"><sub>Dans Claude Code, les workers dsh-crew sont des subagents natifs ; le segment de statusline suit les tiers en cours, le temps écoulé et les tokens.</sub></p>
107
+
108
+ <p align="center">
109
+ <img src="./docs/images/dsh-crew-jobs.png" alt="DSH Crew" width="100%" />
110
+ </p>
111
+ <p align="center"><sub>Le panneau DSH Crew montre la même exécution côté harness : quel hôte a lancé chaque tâche, son tier et son effort, sa progression et ses tokens.</sub></p>
112
+
113
+ ## Installation
114
+
115
+ Installer depuis GitHub dans un profil DSH :
116
+
117
+ ```bash
118
+ node scripts/setup.mjs install # Safe install: see the canonical Install section of README.md (dedicated Crew home/profile; official web profile is never modified).
119
+ Repository source: github:Ran-sh/dsh-crew
120
+ npx -y @deepseek-ai/dsh web
121
+ ```
122
+
123
+ Ou, pour le développement local depuis les sources :
124
+
125
+ ```bash
126
+ node scripts/setup.mjs install # Safe install: see the canonical Install section of README.md (dedicated Crew home/profile; official web profile is never modified).
127
+ Repository source: github:Ran-sh/dsh-crew
128
+ npx -y @deepseek-ai/dsh web
129
+ ```
130
+
131
+ Le protocole `link:` crée un lien symbolique vers ce dépôt, donc chaque rebuild est visible immédiatement.
132
+
133
+ ### Configurer les identifiants DeepSeek (standalone uniquement)
134
+
135
+ En mode hub — l'installation ci-dessus — les workers s'exécutent dans l'instance DSH et utilisent les identifiants DeepSeek avec lesquels elle est déjà configurée. Rien d'autre à configurer.
136
+
137
+ Seul le fallback standalone a besoin d'une clé propre : envoyer du travail depuis Claude Code / Codex sans instance DSH en cours d'exécution lance un worker runtime comme processus séparé. Récupérez une clé API sur [platform.deepseek.com](https://platform.deepseek.com) et écrivez-la dans `~/.config/dsh-crew/.env` :
138
+
139
+ ```
140
+ DEEPSEEK_API_KEY=sk-...
141
+ ```
142
+
143
+ ### Vérifier
144
+
145
+ ```bash
146
+ node scripts/smoke.mjs
147
+ ```
148
+
149
+ Le smoke test envoie une tâche peu coûteuse par le chemin disponible — le hub si une instance DSH tourne, sinon standalone — et affiche lequel a été utilisé. En une dizaine de secondes, `smoke test passed — configuration OK` doit s'afficher. En cas d'échec, la raison est imprimée et limitée au chemin qui a été testé.
150
+
151
+ Ouvrez ensuite Réglages → DSH Crew pour installer les intégrations Claude Code / Codex en un clic.
152
+
153
+ ## Contexte et terminologie
154
+
155
+ - **DSH** (DeepSeek Harness) : le harness open-source pour agents de DeepSeek, un agent code sous forme de Web UI, similaire à Claude Code mais pilotant les modèles DeepSeek.
156
+ - **MCP** (Model Context Protocol) : le protocole d'intégration d'outils IA d'Anthropic, qui permet aux LLM d'appeler en toute sécurité des outils externes et des sources de données.
157
+ - **Cordis bundle** : le format de plugin de DSH ; ce projet peut s'exécuter en standalone comme service MCP ou s'installer dans DSH Web en mode hub.
158
+ - **tier** : niveau de capacité — quel emplacement du roster de modèles configuré de DSH un worker reçoit. `flash` est rapide et peu coûteux (tâches simples), `pro` raisonne plus en profondeur (problèmes complexes). Aujourd'hui, ils correspondent à DeepSeek V4 Flash et V4 Pro ; changez les modèles dans DSH et rien ne change ici.
159
+ - **worker** : l'agent DSH qui effectue le travail — une session complète avec ses propres outils, sandbox et preset, pas un simple appel de modèle.
160
+ - **effort** : intensité de raisonnement, `off` = aucun raisonnement, `high` = investissement de raisonnement élevé, `max` = investissement de raisonnement maximal.
161
+
162
+ ## Claude Code
163
+
164
+ ### Installation
165
+
166
+ Installation en un clic (choisissez une option) :
167
+
168
+ - **Page de paramètres DSH** (quand le mode hub est installé) : Paramètres → DSH Crew → « Install to Claude Code »
169
+ - **Ligne de commande** : `node src/install/cli.mjs all`
170
+
171
+ Les deux font la même chose : enregistrer le marketplace local (le répertoire parent `dsh-plugins/` comme racine marketplace) + `claude plugin install` + liste blanche de permissions des outils MCP + configuration du segment de statut worker claude-hud (sauvegarde automatique de settings.json avant modification, idempotent). **Redémarrez la session après l'installation pour que les changements prennent effet.**
172
+
173
+ ### Utilisation
174
+
175
+ - Directement en conversation, dites « dispatch X to ds-flash » ou « dispatch X to ds-pro » et le subagent exécute la tâche
176
+ - Le nombre d'envois et la progression en temps réel s'affichent dans l'interface de tâches de Claude Code
177
+ - **Segment de ligne de statut HUD** : `⚙dsh 1▶pro 2m14s 21.7k/606 ✓3` (tier actuel / temps écoulé / utilisation de tokens / nombre de tâches terminées)
178
+ - Pour le développement local, `statusline/statusline.sh` ou `statusline/worker-segment.sh` peuvent être intégrés indépendamment
179
+ - **Tâches longues** : CC a des limites de timeout sur les appels MCP (`MCP_TOOL_TIMEOUT` ajustable) ; pour les tâches longues, l'orchestrateur peut utiliser `dsh_spawn_worker` + `dsh_worker_result(wait_seconds)` en polling
180
+ - **Développement local et débogage** : `claude --plugin-dir /path/to/dsh-crew` pour charger temporairement
181
+
182
+
183
+ ### Commandes de session
184
+
185
+ Elles ne remplacent les valeurs globales que pour la session courante, et sont appliquées au niveau de l'outil plutôt que par le prompt :
186
+
187
+ | Commande | Effet |
188
+ |---|---|
189
+ | `/dsh-crew:config` | Afficher ou définir les valeurs par défaut de la session : `tier=flash\|pro`, `effort=off\|high\|max`, `mode=auto\|hub\|standalone`, `timeout=<secondes>`, `policy=auto\|flash-only\|pro-only`, `escalate=true\|false`, `reset` |
190
+ | `/dsh-crew:on` · `/dsh-crew:off` | Activer ou désactiver la répartition pour cette session (désactivé = interrupteur strict, l'outil refuse) |
191
+ | `/dsh-crew:status` | État en direct des jobs worker : tier, progression, tokens, outil courant |
192
+
193
+ ## Codex
194
+
195
+ ### Installation
196
+
197
+ Il est recommandé d'utiliser l'installeur (génère automatiquement les chemins pour cette machine, copie les commandes `/dsh-config`, `/dsh-status`) :
198
+
199
+ ```bash
200
+ node src/install/cli.mjs codex
201
+ ```
202
+
203
+ Ou copie manuelle (nécessite une modification manuelle des chemins après copie) :
204
+
205
+ ```bash
206
+ cp codex/agents/*.toml ~/.codex/agents/ # global or project-level .codex/agents/
207
+ ```
208
+
209
+ Les fichiers de rôle sont préconfigurés avec :
210
+
211
+ - Configuration de montage du serveur MCP
212
+ - `default_tools_approval_mode = "approve"` (**requis**, sinon les appels d'outils sont automatiquement annulés en mode exec)
213
+ - `tool_timeout_sec = 3600`
214
+
215
+ **Remarque** : en cas de copie manuelle, les chemins absolus dans le champ `args` doivent être mis à jour pour correspondre à l'emplacement réel d'installation ; l'installeur s'en charge automatiquement.
216
+
217
+ ### Utilisation
218
+
219
+ - Dans la TUI interactive, sélectionnez « spawn ds-pro to ... » pour envoyer des tâches ; les panneaux Active/Done affichent la progression
220
+ - Le mode `codex exec` peut aussi appeler directement `dsh_run_worker`
221
+
222
+
223
+ ### Commandes de session
224
+
225
+ Les deux mêmes prompts sont installés pour Codex :
226
+
227
+ | Commande | Effet |
228
+ |---|---|
229
+ | `/dsh-config` | Afficher ou définir les valeurs par défaut de la session : `tier=flash\|pro`, `effort=off\|high\|max`, `mode=auto\|hub\|standalone`, `timeout=<secondes>`, `policy=auto\|flash-only\|pro-only`, `escalate=true\|false`, `reset` |
230
+ | `/dsh-status` | État en direct des jobs worker : tier, progression, tokens, outil courant |
231
+
232
+ ## Outils MCP
233
+
234
+ | Outil | Description |
235
+ |---|---|
236
+ | `dsh_run_worker` | Envoi de tâche synchrone (`tier` : flash/pro, `effort` : off/high/max, `cwd`), attend le résultat |
237
+ | `dsh_spawn_worker` | Envoi de tâche asynchrone, renvoie un identifiant de job (pour le fan-out parallèle) |
238
+ | `dsh_worker_status` | Interroge la progression en temps réel de tous les jobs (turn/step/outil actuel/token) |
239
+ | `dsh_worker_result` | Récupère le résultat, peut spécifier `wait_seconds` pour attendre |
240
+ | `dsh_worker_cancel` | Annule le job spécifié et termine son processus runtime |
241
+
242
+ La progression est simultanément répliquée dans `~/.config/dsh-crew/status.d/` (un fichier shard par écrivain, lisible par statusline / surveillance externe).
243
+
244
+ ## Multimodal : vision et génération d'images
245
+
246
+ **DeepSeek est un modèle uniquement textuel** et ne prend pas en charge la saisie ou la génération d'images. Ce plugin obtient ces capacités en externe via des outils MCP :
247
+
248
+ | Outil | Description |
249
+ |---|---|
250
+ | `describe_image` | Répond aux questions en visualisant des images (captures d'écran, maquettes, graphiques, etc.) ; résultats mis en cache par fournisseur + modèle + image + question |
251
+ | `generate_image` | Génère une image à partir d'une description textuelle, l'enregistre dans le chemin absolu spécifié ; la sortie est un bitmap plat (nécessite OpenPencil pour l'édition en couches) |
252
+
253
+ **Collage d'images en session** : dans DSH, passez le modèle sur `DeepSeek (vision) ◉` pour coller directement des images. Les images restent dans la session et s'affichent normalement ; le plugin ajoute le texte transcrit après elles et retire les images avant l'envoi — vous voyez l'image, le modèle lit le texte.
254
+
255
+ ### Configuration
256
+
257
+ Dans **la page de paramètres DSH → DSH Crew → Multimodal** (ou modifiez directement `~/.config/dsh-crew/config.json`) :
258
+
259
+ **Fournisseur de vision** (visualisation d'images) :
260
+
261
+ - `claude-code` (par défaut, utilise haiku, peu coûteux)
262
+ - `codex` (utilise GPT, peut spécifier un modèle particulier)
263
+ - `grok` (utilise Grok)
264
+ - `agy` (Antigravity)
265
+ - `custom` (API compatible OpenAI ou commande locale)
266
+ - `off` (désactivé)
267
+
268
+ **Fournisseur de génération d'images** (génération d'images) :
269
+
270
+ - `codex` (`$imagegen`, gpt-image-2)
271
+ - `agy` (Nano Banana)
272
+ - `grok` (Imagine)
273
+ - `custom` (API compatible OpenAI ou commande locale)
274
+ - `off` (désactivé)
275
+
276
+ ### Fournisseur personnalisé
277
+
278
+ Deux méthodes d'intégration :
279
+
280
+ **API** : tout endpoint compatible OpenAI
281
+ - Renseignez Base URL, la clé API et la liste de modèles
282
+ - La vision utilise `/chat/completions` avec des images base64 en ligne
283
+ - La génération d'images utilise `/images/generations`
284
+ - **Vous devez spécifier le « modèle de génération d'images » pour disposer de la capacité de génération**, sinon le fournisseur n'apparaît que dans la sélection de vision
285
+
286
+ **CLI** : modèle de commande locale, avec des espaces réservés remplacés par des références sûres
287
+ - Vision : `{image} {question} {model}` → stdout comme réponse
288
+ - Génération d'images : `{prompt} {output} {size}` → la commande doit écrire le fichier dans `{output}`
289
+ - Renseignez au moins une commande ; celle qui est remplie détermine la capacité
290
+
291
+ **Test de connectivité** : chaque fournisseur personnalisé dispose d'un bouton de test
292
+ - API : vérifier l'accessibilité de l'endpoint, l'authentification, envoyer une vraie requête vision pour valider
293
+ - CLI : vérifier le fichier exécutable, exécuter une vraie commande pour valider
294
+ - Génération d'images : valider uniquement la configuration, sans sortie d'image réelle
295
+
296
+ **CLI d'abonnement empruntées** (claude / codex / grok / agy) exigent que vous soyez connecté localement ; le plugin ne contournera pas leurs permissions à votre place.
297
+
298
+ ## Mode hub
299
+
300
+ Ce package est aussi un bundle DSH valide (`dsh.bundle` + `cordis.patch.yml`). Après installation dans un profil DSH Web avec `dsh plugin add dsh-crew` :
301
+
302
+ - **Les sessions worker deviennent des citoyens de première classe** : elles s'exécutent comme des sessions de première classe dans l'hôte DSH (`agents.create` + cascade modèle/effort par session + preset par défaut), apparaissent dans la liste des sessions de la Web UI et peuvent être ouvertes à tout moment pour voir l'exécution complète
303
+ - **Organisation par répertoire de travail** : gérez les sessions worker par cwd dans la Web UI
304
+ - **API loopback** :
305
+ - `POST/GET /_dsh/dsh-crew/jobs` : lancer des tâches, lister, long-poll des résultats, annuler
306
+ - `GET /_dsh/dsh-crew/ping` : health check (le shim MCP l'utilise pour détecter si le hub fonctionne)
307
+ - `POST /_dsh/dsh-crew/install` : installation en un clic de l'intégration Claude Code / Codex (backend de `src/install/`)
308
+ - **Détection automatique** : le shim MCP de CC/Codex détecte automatiquement le hub (variable d'environnement `DSH_CREW_HUB`, défaut `http://127.0.0.1:3080`)
309
+ - DSH Web actif → les jobs passent en mode hub (`mode: "hub"`)
310
+ - Non actif → repli sur le runtime standalone
311
+
312
+ ## Choix de solution et limitations
313
+
314
+ ### Abonnés réguliers → approche par subagent shell (recommandé)
315
+
316
+ - **État actuel** : le shell subagent de Claude Code utilise haiku comme intermédiaire ; chaque envoi ajoute des centaines à des milliers de tokens
317
+ - **Compromis** : utiliser une petite quantité de tokens Anthropic en échange de l'interface de tâches native, de l'affichage de progression en temps réel et d'aucune configuration supplémentaire
318
+ - **Recommandation** : si vous êtes déjà abonné à Claude Pro ou utilisez Claude Code, utilisez cette approche — pratique et transparente
319
+
320
+ ### Paiement à l'usage / environnements CI → approche routeur direct
321
+
322
+ - **État actuel** : le frontmatter de subagent de Claude Code ne prend pas en charge la connexion directe à un modèle tiers ; l'expérience de routeur de ce dépôt dans scratchpad nécessite des identifiants de type clé API pour Claude Code, mais l'OAuth par abonnement est bloqué en amont par Anthropic avec une 403
323
+ - **Recommandation** :
324
+ - Si vous utilisez des identifiants par clé API (pas OAuth) et souhaitez économiser les tokens Anthropic, vous pouvez exécuter un routeur local pour une connexion directe à DeepSeek
325
+ - Les environnements CI utilisent généralement aussi des clés API ; cette approche est plus économique (uniquement des tokens DeepSeek)
326
+ - Nécessite de tester soi-même l'intégration du routeur (non officiellement prise en charge)
327
+
328
+ ### DSH Web en cours d'exécution → mode hub activé automatiquement
329
+
330
+ - **État actuel** : si `dsh plugin add dsh-crew` est installé dans un profil DSH Web, les jobs s'exécutent comme des sessions de première classe dans l'hôte et apparaissent dans la liste des sessions de la Web UI
331
+ - **Recommandation** : lors des itérations de développement local, il est recommandé d'activer le mode hub ; la progression des workers peut être entièrement observée dans la Web UI ; pour la collaboration entre machines ou les environnements sans Web UI, utilisez l'approche shell Claude Code / Codex
332
+
333
+ ### Points connus
334
+
335
+ - Le rôle Codex peut théoriquement essayer `model_provider` pointant directement vers DeepSeek (non vérifié) ; ce pont n'en dépend pas
336
+ - La sortie de génération d'images est un bitmap plat ; l'édition en couches nécessite OpenPencil
337
+ - **Dépendances runtime** : uniquement `@modelcontextprotocol/sdk` et `zod` ; `@deepseek-ai/*` sont des peerDependencies (fournies par l'hôte DSH)
338
+ - **Codex doit configurer** : `default_tools_approval_mode = "approve"`, sinon les appels d'outils sont automatiquement annulés
339
+
340
+ ## Développement
341
+
342
+ ```bash
343
+ pnpm install
344
+ node_modules/.bin/tsdown src/client/index.tsx --format cjs --platform browser \
345
+ --target es2022 --tsconfig tsconfig.client.json --out-dir .client-build --clean
346
+ node scripts/build-client.mjs # wraps the bundle for the DSH module loader
347
+ node scripts/smoke.mjs # dispatches one real flash task end to end
348
+ ```
349
+
350
+ Les dépendances runtime sont uniquement `@modelcontextprotocol/sdk` et `zod` ; chaque package `@deepseek-ai/*` est une peer dependency fournie par l'hôte DSH, ce qui maintient le plugin dans le realm de module unique de l'hôte.
351
+
352
+ ## Écosystème
353
+
354
+ - [DSH Noema](https://github.com/ZSeven-W/dsh-noema) — mémoire à long terme pour DSH
355
+ - [DSH OpenPencil](https://github.com/ZSeven-W/dsh-openpencil) — inspecter et modifier les documents de conception `.op` dans une conversation
356
+
357
+ ## Licence
358
+
359
+ MIT