Bootstrap des plugins DSH
Restaure un ensemble connu de plugins DeepSeek Harness (DSH) sur une nouvelle machine.
La source de vérité est plugins.json : chaque plugin est figé à une version exacte, avec des notes et une configuration post-installation optionnelle. Les scripts reproduisent la configuration sans demander à l'utilisateur de se souvenir des noms de paquets.
Récit utilisateur
Je suis sur une nouvelle machine. Je veux que DSH installe tous les plugins que j'utilise sur mon autre machine, avec les mêmes versions et les mêmes comportements clés.
Récupérer ce skill sur la nouvelle machine
La copie publique canonique se trouve à :
https://github.com/GGGengXXX/make-dsh-better
Sur la nouvelle machine :
git clone https://github.com/GGGengXXX/make-dsh-better.git
mkdir -p ~/.agents/skills
cp -R make-dsh-better/skills/dsh-plugin-bootstrap ~/.agents/skills/
Si vous avez déjà cloné le dépôt, copiez simplement le répertoire du skill. Lancez ensuite une nouvelle session DSH. DSH découvre les skills dans ~/.agents/skills/<nom>/SKILL.md ; le skill apparaît sous le nom dsh-plugin-bootstrap. Si le skill se trouve déjà dans ce répertoire, ignorez la copie.
La copie de travail est la source de vérité pour l'édition ; recopiez-la après l'avoir modifiée.
Ce que fait ce skill
- Lit
plugins.json(la liste des plugins avec versions figées). - Détecte l'interface CLI DSH appropriée. Le profil
desktopest réservé par l'application Desktop, donc le skill privilégie le wrapper CLI fourni par l'application plutôt qu'une commandedshgénérique dans lePATH. - Vérifie la version de DSH par rapport au manifeste et émet un avertissement ou bloque en cas de divergence.
- Affiche un plan d'installation/mise à jour/ignorance, demande une confirmation, puis installe chaque plugin avec
dsh plugin --profile <profil> add <nom>@<version>. - Applique éventuellement la configuration de profil
dsh-browser-cdp(chemin Chrome +--headless) danscordis.patch.yml. - Vérifie que chaque plugin est à la fois une dépendance et un bundle sélectionné.
- Applique éventuellement les deux correctifs locaux versionnés :
[email protected]:optimizeComposerKeyspar défaut à true.[email protected]: Entrée = nouvelle ligne, Cmd/Ctrl+Entrée = envoyer.
Il ne copie pas les secrets, les clés API, les sessions, les fichiers de travail, ni l'intégralité du répertoire ~/.dsh.
Flux de travail lorsque l'utilisateur invoque ce skill
Travaillez depuis le répertoire du skill (celui qui contient ce SKILL.md).
1. Inspecter avant de toucher à quoi que ce soit
node scripts/install.mjs --profile desktop --dry-run
Affichez le plan à l'utilisateur. Si le plan installe ou met à jour quelque chose, demandez une confirmation explicite avant de l'exécuter sans --dry-run.
Si la cible de l'utilisateur n'est pas l'application Desktop, passez le profil réel (par exemple --profile web ou --profile tui). Pour un profil non Desktop, une commande dsh normale dans le PATH suffit ; le script gère cela.
2. Installer
node scripts/install.mjs --profile desktop --yes
Drapeaux utiles :
| Drapeau | Signification |
|---|---|
--dry-run | Affiche le plan ; ne modifie rien |
--yes / -y | Confirmation non interactive |
--json | Résumé lisible par machine sur stdout (les logs vont sur stderr) |
--no-config | Ne touche pas à cordis.patch.yml |
--skip <pkg> | Ignore un plugin (répétable) |
--strict | Exige une correspondance exacte de version DSH |
--allow-dsh-mismatch | Continue même si les versions majeures/mineures diffèrent |
--dsh-cli <chemin> | Chemin explicite vers l'interface CLI |
--manifest <chemin> | Utilise un autre manifeste |
Le script est idempotent : les plugins déjà installés à la version figée et sélectionnés comme bundles sont ignorés.
3. Appliquer les correctifs locaux optionnels
Uniquement si l'utilisateur souhaite le comportement clé exact de la machine source :
node scripts/apply-patches.mjs --profile desktop --dry-run
node scripts/apply-patches.mjs --profile desktop --yes
Ceci modifie les fichiers tiers installés sous node_modules/. Il refuse en cas de divergence de version sauf si --force est donné, et conserve une copie .bak-<horodatage>. Informez l'utilisateur qu'il s'agit d'un correctif local qu'une future mise à jour du plugin pourrait écraser ; après une mise à jour, réexécutez le script de correctif ou définissez le comportement dans les paramètres du plugin.
--only keyboard et --only markdown limitent la portée du correctif.
4. Redémarrer / actualiser
Après l'installation des plugins, dites à l'utilisateur de redémarrer DeepSeek Harness (ou d'effectuer une actualisation forcée de l'interface Web avec Cmd+Maj+R sur macOS). Les bundles clients sont mis en cache par chargement de page ; une actualisation normale peut ne pas suffire.
5. Vérifier
Le programme d'installation affiche un tableau de vérification. Si un plugin affiche ÉCHEC, vérifiez :
- les dépendances du
package.jsondu profil et lesdsh.profile.bundles; - si la version du paquet est compatible avec la version DSH en cours ;
- les logs du gestionnaire de plugins sous
~/.dsh/profiles/<profil>/.plugin-manager/logs/.
Mettre à jour le manifeste (capture sur la machine source)
Lorsque l'utilisateur installe/supprime des plugins sur sa machine principale, actualisez le manifeste :
node scripts/capture.mjs --profile desktop --dry-run # aperçu
node scripts/capture.mjs --profile desktop # écrit plugins.json
Ceci lit les bundles sélectionnés du profil, enregistre la version installée de chacun et conserve les champs note existants. Effectuez ensuite un commit/push du répertoire du skill (ou copiez-le sur la nouvelle machine).
Règle du profil desktop
L'interface CLI DSH générique refuse délibérément --profile desktop :
error: profile "desktop" is managed exclusively by the Electron application
Utilisez le wrapper CLI de l'application Desktop à la place :
/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh
install.mjs le trouve automatiquement sur macOS. Sur d'autres plateformes, ou si l'application se trouve ailleurs, définissez DSH_CLI ou passez --dsh-cli.
Format du manifeste
plugins.json :
{
"schemaVersion": 1,
"targetProfile": "desktop",
"dshVersion": "0.2.1-rc.2",
"plugins": [
{ "name": "@scope/plugin", "version": "1.2.3", "note": "pourquoi il est là" }
],
"config": {
"dsh-browser-cdp": {
"chromePath": "auto",
"runtimeArgs": "--headless"
}
},
"localPatches": [
{ "package": "dsh-keyboard-shortcut", "version": "0.2.0", "description": "..." }
]
}
dshVersionest la version sur laquelle le manifeste a été capturé. Même version majeure/mineure est autorisée avec un avertissement ; une version majeure/mineure différente nécessite--allow-dsh-mismatch.targetProfilen'est qu'une valeur par défaut ;--profilela remplace.config.dsh-browser-cdp.chromePath : "auto"fait en sorte que le programme d'installation sonde les emplacements courants de Chrome/Chromium/Edge/Brave. Définissez un chemin explicite si la sonde ne trouve rien.localPatchesest une documentation pour les humains ; le programme d'installation ne l'applique pas automatiquement. Exécutezapply-patches.mjsexplicitement.
Ensemble de plugins inclus (capturé le 2026-10-24)
| Plugin | Version | Rôle |
|---|---|---|
@flyer103/dsh-side-chat | 0.6.0 | Conversation latérale native dans la barre latérale droite |
dsh-browser-cdp | 1.6.0 | Navigateur agent via Chrome/CDP ; panneau de surveillance sans tête |
dsh-keyboard-shortcut | 0.2.0 | Entrée = nouvelle ligne, Cmd/Ctrl+Entrée = envoyer |
dsh-markdown-bubble | 0.1.5 | Messages utilisateur rendus en Markdown |
dsh-markdown-input | 0.2.0-alpha.20 | Éditeur Markdown en direct (alpha) |
dsh-better-sidebar | 0.28.0 | Arborescence de fichiers + CodeMirror éditable + Git/tâches/terminal (lourd) |
Notes :
dsh-markdown-inputest en alpha ; si sa prise en charge de l'éditeur se comporte mal, désactivez-la dans Paramètres → Plugins.dsh-better-sidebarest lourd et inclut son propre chat latéral ; il peut coexister avec@flyer103/dsh-side-chat, mais l'utilisateur verra deux points d'entrée de chat latéral. Décidez lequel conserver.- Les Fichiers et Aperçu du document intégrés font partie de DSH lui-même ; ils ne figurent pas dans ce manifeste et ne nécessitent aucune installation.
Sécurité
- Les plugins DSH tiers s'exécutent dans le processus et peuvent agir avec les autorisations de l'utilisateur. N'installez que depuis le manifeste auquel l'utilisateur fait confiance.
- Les versions exactes sont figées. Ne les remplacez pas silencieusement par
latest. - Les correctifs locaux modifient
node_modules; ils sont facultatifs, versionnés, sauvegardés et réversibles (restaurez le fichier.bakou réinstallez le plugin). - Ne copiez pas
~/.dsh/.credentials.yaml, les journaux de session ou les fichiers de travail dans le cadre de "l'installation des plugins".
Dépannage
| Symptôme | Correctif |
|---|---|
profile "desktop" is managed exclusively… | Utilisez le wrapper CLI de l'application Desktop ou DSH_CLI ; voir ci-dessus |
Could not find a dsh CLI | Installez DSH Desktop, ou passez --dsh-cli /chemin/vers/dsh |
profile "desktop" is not initialized | Ouvrez DSH Desktop une fois pour que ~/.dsh/profiles/desktop soit créé |
ECONNRESET / fetch failed | Réessayez ; le programme d'installation réessaie une fois automatiquement ; vérifiez le réseau/le proxy/le registre |
| Le plugin s'installe mais l'interface ne change pas | Redémarrez DSH ou effectuez une actualisation forcée (Cmd+Maj+R) ; les bundles clients sont mis en cache |
| Plugin installé mais pas actif | Confirmez qu'il est dans dsh.profile.bundles ; la commande add du gestionnaire de plugins l'ajoute normalement |
Composer de dsh-markdown-input manquant | Vérifiez Paramètres → Plugins ; plugin alpha ; actualisation forcée ; vérifiez la console pour les erreurs de slot/composer |
Conflit dsh-better-sidebar/side-chat | Les deux peuvent démarrer ; choisissez un point d'entrée de chat latéral ou supprimez un plugin |
Le correctif dit already-patched | Normal ; le fichier a déjà le comportement cible |
Le correctif dit skipped — version … | La version du manifeste/plugin a changé ; examinez la nouvelle version avant d'utiliser --force |
Fichiers
| Fichier | Objectif |
|---|---|
SKILL.md | Ce flux de travail |
plugins.json | Manifeste des plugins avec versions figées |
scripts/install.mjs | Simulation/installation/vérification |
scripts/capture.mjs | Actualiser le manifeste depuis un profil actif |
scripts/apply-patches.mjs | Correctifs locaux optionnels pour les comportements clés |
patches/README.md | Justification des correctifs et solution manuelle de repli |