GGGengXXX/make-dsh-better

Réinstalle un ensemble de plugins DeepSeek Harness sur une nouvelle machine à partir d'un manifeste avec versions figées, en utilisant l'interface CLI adaptée au bureau, un profil optionnel et des correctifs locaux versionnés.

Qu'est-ce que make-dsh-better ?

Ce skill DSH (DeepSeek Harness) permet de restaurer rapidement et fidèlement l'ensemble des plugins d'un utilisateur sur une nouvelle machine. Il s'appuie sur un fichier `plugins.json` qui spécifie chaque plugin avec une version exacte, ainsi que des configurations optionnelles. Le skill détecte automatiquement l'interface CLI appropriée (en priorisant le wrapper intégré à l'application Desktop plutôt qu'une commande `dsh` générique), vérifie la compatibilité de version avec DSH, affiche un plan d'installation, puis procède à l'installation interactive ou non. Il peut également appliquer des correctifs locaux versionnés (comme `dsh-keyboard-shortcut` ou `dsh-markdown-input`) et configurer le navigateur pour `dsh-browser-cdp`. Il inclut des fonctionnalités de vérification post-installation, de capture du manifeste depuis la machine source, et de gestion des conflits. Le skill est conçu pour être sûr (pas de copie de secrets ou de fichiers sensibles) et idempotent (les plugins déjà installés avec la bonne version sont ignorés). Il supporte les profils `desktop`, `web`, `tui` et s'utilise via des scripts Node.js dans le répertoire du skill. Une table de dépannage complète facilite la résolution des problèmes courants.

Compatible avec✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/GGGengXXX/make-dsh-better/tree/HEAD/skills/dsh-plugin-bootstrap

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

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

  1. Lit plugins.json (la liste des plugins avec versions figées).
  2. Détecte l'interface CLI DSH appropriée. Le profil desktop est réservé par l'application Desktop, donc le skill privilégie le wrapper CLI fourni par l'application plutôt qu'une commande dsh générique dans le PATH.
  3. Vérifie la version de DSH par rapport au manifeste et émet un avertissement ou bloque en cas de divergence.
  4. Affiche un plan d'installation/mise à jour/ignorance, demande une confirmation, puis installe chaque plugin avec dsh plugin --profile <profil> add <nom>@<version>.
  5. Applique éventuellement la configuration de profil dsh-browser-cdp (chemin Chrome + --headless) dans cordis.patch.yml.
  6. Vérifie que chaque plugin est à la fois une dépendance et un bundle sélectionné.
  7. Applique éventuellement les deux correctifs locaux versionnés :

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 :

DrapeauSignification
--dry-runAffiche le plan ; ne modifie rien
--yes / -yConfirmation non interactive
--jsonRésumé lisible par machine sur stdout (les logs vont sur stderr)
--no-configNe touche pas à cordis.patch.yml
--skip <pkg>Ignore un plugin (répétable)
--strictExige une correspondance exacte de version DSH
--allow-dsh-mismatchContinue 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.json du profil et les dsh.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": "..." }
  ]
}
  • dshVersion est 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.
  • targetProfile n'est qu'une valeur par défaut ; --profile la 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.
  • localPatches est une documentation pour les humains ; le programme d'installation ne l'applique pas automatiquement. Exécutez apply-patches.mjs explicitement.

Ensemble de plugins inclus (capturé le 2026-10-24)

PluginVersionRôle
@flyer103/dsh-side-chat0.6.0Conversation latérale native dans la barre latérale droite
dsh-browser-cdp1.6.0Navigateur agent via Chrome/CDP ; panneau de surveillance sans tête
dsh-keyboard-shortcut0.2.0Entrée = nouvelle ligne, Cmd/Ctrl+Entrée = envoyer
dsh-markdown-bubble0.1.5Messages utilisateur rendus en Markdown
dsh-markdown-input0.2.0-alpha.20Éditeur Markdown en direct (alpha)
dsh-better-sidebar0.28.0Arborescence de fichiers + CodeMirror éditable + Git/tâches/terminal (lourd)

Notes :

  • dsh-markdown-input est en alpha ; si sa prise en charge de l'éditeur se comporte mal, désactivez-la dans Paramètres → Plugins.
  • dsh-better-sidebar est 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 .bak ou 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ômeCorrectif
profile "desktop" is managed exclusively…Utilisez le wrapper CLI de l'application Desktop ou DSH_CLI ; voir ci-dessus
Could not find a dsh CLIInstallez DSH Desktop, ou passez --dsh-cli /chemin/vers/dsh
profile "desktop" is not initializedOuvrez DSH Desktop une fois pour que ~/.dsh/profiles/desktop soit créé
ECONNRESET / fetch failedRé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 pasRedémarrez DSH ou effectuez une actualisation forcée (Cmd+Maj+R) ; les bundles clients sont mis en cache
Plugin installé mais pas actifConfirmez qu'il est dans dsh.profile.bundles ; la commande add du gestionnaire de plugins l'ajoute normalement
Composer de dsh-markdown-input manquantVérifiez Paramètres → Plugins ; plugin alpha ; actualisation forcée ; vérifiez la console pour les erreurs de slot/composer
Conflit dsh-better-sidebar/side-chatLes deux peuvent démarrer ; choisissez un point d'entrée de chat latéral ou supprimez un plugin
Le correctif dit already-patchedNormal ; 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

FichierObjectif
SKILL.mdCe flux de travail
plugins.jsonManifeste des plugins avec versions figées
scripts/install.mjsSimulation/installation/vérification
scripts/capture.mjsActualiser le manifeste depuis un profil actif
scripts/apply-patches.mjsCorrectifs locaux optionnels pour les comportements clés
patches/README.mdJustification des correctifs et solution manuelle de repli

Skills associés