CommunityProgramación y desarrollogithub.com

GGGengXXX/make-dsh-better

Reinstala el conjunto de plugins de DeepSeek Harness de un usuario en una máquina nueva a partir de un manifiesto con versiones fijas, utilizando la CLI consciente del escritorio, configuración opcional de perfil y parches locales con versiones fijas. Úsalo cuando el usuario diga que está en una máquina nueva, quiera restaurar sus plugins de DSH o quiera reproducir su configuración actual de DSH en otro lugar.

¿Qué es make-dsh-better?

Esta skill permite a un agente restaurar o reproducir la configuración exacta de plugins de DeepSeek Harness (DSH) de un usuario en una máquina nueva. La fuente de verdad es un archivo `plugins.json` que fija cada plugin a una versión concreta, con notas y configuración post-instalación opcional. Es útil porque evita que el usuario tenga que recordar nombres de paquetes o versiones, y garantiza un entorno de trabajo idéntico al de la máquina original. Soporta el cliente de escritorio de DSH, detectando automáticamente la CLI del wrapper incluido en la aplicación, y también perfiles web o TUI mediante la CLI genérica `dsh`. El proceso incluye inspección previa con dry-run, instalación idempotente, aplicación opcional de parches locales (como modificar el comportamiento de teclado o entrada de Markdown), verificación de que cada plugin esté correctamente instalado y seleccionado como bundle, y actualización del manifiesto desde la máquina fuente con un script de captura. La skill se basa en scripts Node.js (`install.mjs`, `capture.mjs`, `apply-patches.mjs`) y está diseñada para ser segura: no copia secretos, claves API, sesiones ni archivos del workspace, y solo instala versiones exactas, nunca `latest`.

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

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

DSH Plugin Bootstrap

Restaura un conjunto conocido de plugins de DeepSeek Harness (DSH) en una máquina nueva.

La fuente de verdad es plugins.json: cada plugin está fijado a una versión exacta, con notas y configuración post-instalación opcional. Los scripts reproducen la configuración sin pedir al usuario que recuerde nombres de paquetes.

Historia de usuario

Estoy en una máquina nueva. Quiero que DSH instale todos los plugins que uso en mi otra máquina, con las mismas versiones y los mismos comportamientos clave.

Cómo llevar esta skill a la máquina nueva

La copia pública canónica está en:

https://github.com/GGGengXXX/make-dsh-better

En la máquina nueva:

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 ya tienes el repositorio clonado, solo copia el directorio de la skill. Luego inicia una nueva sesión de DSH. DSH descubre las skills en ~/.agents/skills/<nombre>/SKILL.md; la skill aparece como dsh-plugin-bootstrap. Si la skill ya está en ese directorio, omite la copia.

La copia del workspace es la fuente de verdad para editar; vuelve a copiar después de cambiarla.

Qué hace esta skill

  1. Lee plugins.json (la lista de plugins con versiones fijas).
  2. Detecta la CLI correcta de DSH. El perfil desktop está reservado por la aplicación de escritorio, por lo que la skill prefiere el wrapper de CLI incluido en la aplicación antes que una dsh genérica en PATH.
  3. Comprueba la versión de DSH contra el manifiesto y advierte/bloquea en caso de discrepancia.
  4. Muestra un plan de instalación/actualización/omisión, pide confirmación y luego instala cada plugin con dsh plugin --profile <perfil> add <nombre>@<versión>.
  5. Opcionalmente aplica la configuración de perfil dsh-browser-cdp (ruta de Chrome + --headless) a cordis.patch.yml.
  6. Verifica que cada plugin esté como dependencia y como bundle seleccionado.
  7. Opcionalmente aplica los dos parches locales con versiones fijas:

No copia secretos, claves de API, sesiones, archivos del workspace ni todo el directorio ~/.dsh.

Flujo de trabajo cuando el usuario invoca esta skill

Trabaja desde el directorio de la skill (el directorio que contiene este SKILL.md).

1. Inspeccionar antes de tocar nada

node scripts/install.mjs --profile desktop --dry-run

Muestra el plan al usuario. Si el plan instala o actualiza algo, pide confirmación explícita antes de ejecutarlo sin --dry-run.

Si el objetivo del usuario no es la aplicación de escritorio, pasa el perfil real (por ejemplo --profile web o --profile tui). Para un perfil que no sea de escritorio, una dsh normal en PATH es suficiente; el script lo maneja.

2. Instalar

node scripts/install.mjs --profile desktop --yes

Banderas útiles:

BanderasSignificado
--dry-runImprime el plan; no cambia nada
--yes / -yConfirmación no interactiva
--jsonResumen legible por máquina en stdout (los logs van a stderr)
--no-configNo tocar cordis.patch.yml
--skip <pkg>Omitir un plugin (repetible)
--strictExigir una coincidencia exacta de versión de DSH
--allow-dsh-mismatchContinuar incluso si major.minor difiere
--dsh-cli <ruta>Ruta explícita de la CLI
--manifest <ruta>Usar otro manifiesto

El script es idempotente: los plugins ya instalados en la versión fijada y seleccionados como bundles se omiten.

3. Aplicar los parches locales opcionales

Solo si el usuario quiere el comportamiento clave exacto de la máquina de origen:

node scripts/apply-patches.mjs --profile desktop --dry-run
node scripts/apply-patches.mjs --profile desktop --yes

Esto modifica archivos instalados de terceros dentro de node_modules/. Se niega si hay discrepancia de versiones a menos que se use --force, y guarda una copia .bak-<timestamp>. Informa al usuario de que esto es un parche local que una futura actualización del plugin podría sobrescribir; después de una actualización, vuelve a ejecutar el script de parches o configura el comportamiento en los ajustes del plugin.

--only keyboard y --only markdown limitan el ámbito del parche.

4. Reiniciar / refrescar

Después de instalar plugins, dile al usuario que reinicie DeepSeek Harness (o que haga un refresco duro de la interfaz web con Cmd+Shift+R en macOS). Los bundles del cliente se almacenan en caché por carga de página; un refresco normal puede no ser suficiente.

5. Verificar

El instalador imprime una tabla de verificación. Si un plugin muestra FAIL, comprueba:

  • las dependencias de package.json del perfil y los bundles de dsh.profile;
  • si la versión del paquete es compatible con la versión de DSH en ejecución;
  • los logs del gestor de plugins en ~/.dsh/profiles/<perfil>/.plugin-manager/logs/.

Actualizar el manifiesto (capturar en la máquina de origen)

Cuando el usuario instala/elimina plugins en su máquina principal, refresca el manifiesto:

node scripts/capture.mjs --profile desktop --dry-run   # vista previa
node scripts/capture.mjs --profile desktop             # escribir plugins.json

Esto lee los bundles seleccionados del perfil, registra la versión instalada de cada uno y conserva los campos note existentes. Haz commit/push del directorio de la skill (o cópialo a la máquina nueva) después.

Regla del perfil de escritorio

La CLI genérica de DSH rechaza deliberadamente --profile desktop:

error: profile "desktop" is managed exclusively by the Electron application

Usa el wrapper de CLI de la aplicación de escritorio:

/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh

install.mjs lo encuentra automáticamente en macOS. En otras plataformas, o si la aplicación está en otro lugar, establece DSH_CLI o pasa --dsh-cli.

Formato del manifiesto

plugins.json:

{
  "schemaVersion": 1,
  "targetProfile": "desktop",
  "dshVersion": "0.2.1-rc.2",
  "plugins": [
    { "name": "@scope/plugin", "version": "1.2.3", "note": "por qué está aquí" }
  ],
  "config": {
    "dsh-browser-cdp": {
      "chromePath": "auto",
      "runtimeArgs": "--headless"
    }
  },
  "localPatches": [
    { "package": "dsh-keyboard-shortcut", "version": "0.2.0", "description": "..." }
  ]
}
  • dshVersion es la versión con la que se capturó el manifiesto. Se permite el mismo major.minor con una advertencia; un major.minor diferente necesita --allow-dsh-mismatch.
  • targetProfile es solo un valor por defecto; --profile lo anula.
  • config.dsh-browser-cdp.chromePath: "auto" hace que el instalador busque ubicaciones comunes de Chrome/Chromium/Edge/Brave. Establece una ruta explícita si la búsqueda falla.
  • localPatches es documentación para humanos; el instalador no lo aplica automáticamente. Ejecuta apply-patches.mjs explícitamente.

Conjunto de plugins incluido (capturado el 2026-10-24)

PluginVersiónRol
@flyer103/dsh-side-chat0.6.0Conversación lateral nativa en la barra lateral derecha
dsh-browser-cdp1.6.0Navegador agente vía Chrome/CDP; panel de vigilancia headless
dsh-keyboard-shortcut0.2.0Enter=nueva línea, Cmd/Ctrl+Enter=enviar
dsh-markdown-bubble0.1.5Mensajes de usuario renderizados en Markdown
dsh-markdown-input0.2.0-alpha.20Compositor Markdown en vivo (alfa)
dsh-better-sidebar0.28.0Árbol de archivos + CodeMirror editable + Git/tareas/terminal (pesado)

Notas:

  • dsh-markdown-input es alfa; si su compositor se comporta mal, desactívalo en Ajustes → Plugins.
  • dsh-better-sidebar es pesado e incluye su propio chat lateral; puede coexistir con @flyer103/dsh-side-chat, pero el usuario verá dos puntos de entrada de chat lateral. Decide cuál conservar.
  • Los Archivos y Vista previa de documentos incorporados son parte de DSH mismo; no están en este manifiesto y no necesitan instalación.

Seguridad

  • Los plugins de DSH de terceros se ejecutan en proceso y pueden actuar con los permisos del usuario. Instala solo desde el manifiesto en el que el usuario confía.
  • Las versiones exactas están fijadas. No las reemplaces silenciosamente con latest.
  • Los parches locales modifican node_modules; son opcionales, tienen versiones fijadas, se respaldan y son reversibles (restaura el archivo .bak o reinstala el plugin).
  • No copies ~/.dsh/.credentials.yaml, registros de sesión ni archivos del workspace como parte de "instalar plugins".

Solución de problemas

SíntomaSolución
profile "desktop" is managed exclusively…Usa el wrapper de CLI de la aplicación de escritorio o DSH_CLI; ver arriba
Could not find a dsh CLIInstala DSH Desktop, o pasa --dsh-cli /ruta/a/dsh
profile "desktop" is not initializedAbre DSH Desktop una vez para que se cree ~/.dsh/profiles/desktop
ECONNRESET / fetch failedReintenta; el instalador reintenta una vez automáticamente; verifica red/proxy/registro
El plugin se instala pero la interfaz no cambiaReinicia DSH o haz un refresco duro (Cmd+Shift+R); los bundles del cliente están en caché
Plugin instalado pero no activoConfirma que está en dsh.profile.bundles; el add del gestor de plugins normalmente lo añade
Falta el compositor de dsh-markdown-inputVerifica Ajustes → Plugins; plugin alfa; refresco duro; revisa la consola en busca de errores de slot/compositor
Conflicto dsh-better-sidebar/side-chatAmbos pueden arrancar; elige un punto de entrada de chat lateral o elimina un plugin
El parche dice already-patchedEsperado; el archivo ya tiene el comportamiento objetivo
El parche dice skipped — version …La versión del manifiesto/plugin ha cambiado; revisa la nueva versión antes de usar --force

Archivos

ArchivoPropósito
SKILL.mdEste flujo de trabajo
plugins.jsonManifiesto de plugins con versiones fijas
scripts/install.mjsSimulación/instalación/verificación
scripts/capture.mjsRefrescar manifiesto desde un perfil en vivo
scripts/apply-patches.mjsParches locales opcionales de comportamiento clave
patches/README.mdJustificación de parches y alternativa manual

Skills relacionados