Bootstrap de Plugins DSH
Restaura um conjunto de plugins conhecido do DeepSeek Harness (DSH) em uma nova máquina.
A fonte da verdade é plugins.json: cada plugin está fixado em uma versão exata, com notas e configuração pós-instalação opcional. Os scripts reproduzem a configuração sem que o usuário precise lembrar nomes de pacotes.
História do usuário
Estou em uma máquina nova. Quero que o DSH instale todos os plugins que uso na minha outra máquina, com as mesmas versões e os mesmos comportamentos principais.
Obtendo esta skill na máquina nova
A cópia pública canônica está em:
https://github.com/GGGengXXX/make-dsh-better
Na máquina nova:
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/
Se você já tem o repositório clonado, apenas copie o diretório da skill. Em seguida, inicie uma nova sessão DSH. O DSH descobre skills em ~/.agents/skills/<nome>/SKILL.md; a skill aparece como dsh-plugin-bootstrap. Se a skill já estiver nesse diretório, pule a cópia.
A cópia de trabalho é a fonte da verdade para edição; copie novamente após alterá-la.
O que esta skill faz
- Lê
plugins.json(a lista de plugins com versões fixas). - Detecta a CLI correta do DSH. O perfil
desktopé reservado pelo aplicativo Desktop, então a skill prefere o wrapper de CLI do aplicativo em vez de umdshgenérico noPATH. - Verifica a versão do DSH em relação ao manifesto e avisa/bloqueia em caso de incompatibilidade.
- Mostra um plano de instalação/atualização/salto, pede confirmação e instala cada plugin com
dsh plugin --profile <profile> add <nome>@<versão>. - Opcionalmente aplica a configuração de nível de perfil
dsh-browser-cdp(caminho do Chrome +--headless) emcordis.patch.yml. - Verifica se cada plugin é uma dependência e um pacote selecionado.
- Opcionalmente aplica os dois patches locais com versões fixas:
[email protected]:optimizeComposerKeyspadrão true.[email protected]: Enter=nova linha, Cmd/Ctrl+Enter=enviar.
Ele não copia segredos, chaves de API, sessões, arquivos de workspace ou o diretório ~/.dsh inteiro.
Fluxo de trabalho quando o usuário invoca esta skill
Trabalhe a partir do diretório da skill (o diretório que contém este SKILL.md).
1. Inspecione antes de tocar em qualquer coisa
node scripts/install.mjs --profile desktop --dry-run
Mostre o plano ao usuário. Se o plano instalar ou atualizar algo, peça confirmação explícita antes de executar sem --dry-run.
Se o alvo do usuário não for o aplicativo Desktop, passe o perfil real (por exemplo --profile web ou --profile tui). Para um perfil não-Desktop, um dsh normal no PATH é suficiente; o script lida com isso.
2. Instalar
node scripts/install.mjs --profile desktop --yes
Flags úteis:
| Flag | Significado |
|---|---|
--dry-run | Imprime o plano; não altera nada |
--yes / -y | Confirmação não interativa |
--json | Resumo legível por máquina no stdout (logs vão para stderr) |
--no-config | Não modifica cordis.patch.yml |
--skip <pkg> | Pula um plugin (repetível) |
--strict | Exige correspondência exata da versão do DSH |
--allow-dsh-mismatch | Continua mesmo quando major.minor difere |
--dsh-cli <caminho> | Caminho explícito da CLI |
--manifest <caminho> | Usa outro manifesto |
O script é idempotente: plugins já instalados na versão fixada e selecionados como pacotes são ignorados.
3. Aplicar os patches locais opcionais
Somente se o usuário quiser o comportamento exato da máquina de origem:
node scripts/apply-patches.mjs --profile desktop --dry-run
node scripts/apply-patches.mjs --profile desktop --yes
Isso modifica arquivos de terceiros instalados em node_modules/. Ele recusa em caso de incompatibilidade de versão, a menos que --force seja fornecido, e mantém uma cópia .bak-<timestamp>. Informe ao usuário que isso é um patch local que uma futura atualização do plugin pode sobrescrever; após uma atualização, execute novamente o script de patch ou configure o comportamento nas configurações do plugin.
--only keyboard e --only markdown limitam o escopo do patch.
4. Reiniciar / atualizar
Após instalar plugins, informe ao usuário para reiniciar o DeepSeek Harness (ou forçar atualização da interface Web com Cmd+Shift+R no macOS). Os pacotes do cliente são armazenados em cache por carregamento de página; uma atualização normal pode não ser suficiente.
5. Verificar
O instalador imprime uma tabela de verificação. Se um plugin mostrar FAIL, verifique:
- as dependências do
package.jsondo perfil e osdsh.profile.bundles; - se a versão do pacote é compatível com a versão do DSH em execução;
- os logs do gerenciador de plugins em
~/.dsh/profiles/<profile>/.plugin-manager/logs/.
Atualizando o manifesto (capturar na máquina de origem)
Quando o usuário instalar/remover plugins na máquina principal, atualize o manifesto:
node scripts/capture.mjs --profile desktop --dry-run # pré-visualizar
node scripts/capture.mjs --profile desktop # escrever plugins.json
Isso lê os pacotes selecionados do perfil, registra a versão instalada de cada um e preserva os campos note existentes. Faça commit/push do diretório da skill (ou copie-o para a máquina nova) em seguida.
Regra do perfil Desktop
A CLI genérica do DSH rejeita deliberadamente --profile desktop:
error: perfil "desktop" é gerenciado exclusivamente pelo aplicativo Electron
Use o wrapper de CLI do aplicativo Desktop:
/Applications/DeepSeek Harness.app/Contents/Resources/runtime/cli/bin/dsh
install.mjs o encontra automaticamente no macOS. Em outras plataformas, ou se o aplicativo estiver em outro local, defina DSH_CLI ou passe --dsh-cli.
Formato do manifesto
plugins.json:
{
"schemaVersion": 1,
"targetProfile": "desktop",
"dshVersion": "0.2.1-rc.2",
"plugins": [
{ "name": "@scope/plugin", "version": "1.2.3", "note": "por que está aqui" }
],
"config": {
"dsh-browser-cdp": {
"chromePath": "auto",
"runtimeArgs": "--headless"
}
},
"localPatches": [
{ "package": "dsh-keyboard-shortcut", "version": "0.2.0", "description": "..." }
]
}
dshVersioné a versão na qual o manifesto foi capturado. Mesmo major.minor é permitido com um aviso; major.minor diferente precisa de--allow-dsh-mismatch.targetProfileé apenas um padrão;--profileo substitui.config.dsh-browser-cdp.chromePath: "auto"faz com que o instalador procure locais comuns de Chrome/Chromium/Edge/Brave. Defina um caminho explícito se a busca falhar.localPatchesé documentação para humanos; o instalador não o aplica automaticamente. Executeapply-patches.mjsexplicitamente.
Conjunto de plugins incluído (capturado em 2026-10-24)
| Plugin | Versão | Função |
|---|---|---|
@flyer103/dsh-side-chat | 0.6.0 | Conversa lateral nativa na barra lateral direita |
dsh-browser-cdp | 1.6.0 | Navegador agente via Chrome/CDP; painel de watch headless |
dsh-keyboard-shortcut | 0.2.0 | Enter=nova linha, Cmd/Ctrl+Enter=enviar |
dsh-markdown-bubble | 0.1.5 | Mensagens de usuário renderizadas em Markdown |
dsh-markdown-input | 0.2.0-alpha.20 | Editor Markdown ao vivo (alfa) |
dsh-better-sidebar | 0.28.0 | Árvore de arquivos + CodeMirror editável + Git/tarefas/terminal (pesado) |
Notas:
dsh-markdown-inputé alfa; se sua tomada do editor se comportar mal, desabilite-o em Configurações → Plugins.dsh-better-sidebaré pesado e inclui seu próprio chat lateral; pode coexistir com@flyer103/dsh-side-chat, mas o usuário verá dois pontos de entrada para chat lateral. Decida qual manter.- Os Arquivos e Pré-visualização de Documentos internos fazem parte do próprio DSH; não estão neste manifesto e não precisam ser instalados.
Segurança
- Plugins DSH de terceiros são executados no mesmo processo e podem executar ações com as permissões do usuário. Instale apenas a partir do manifesto em que o usuário confia.
- Versões exatas são fixadas. Não substitua silenciosamente por
latest. - Os patches locais modificam
node_modules; são opcionais, com versões fixas, com backup e reversíveis (restaure o arquivo.bakou reinstale o plugin). - Não copie
~/.dsh/.credentials.yaml, logs de sessão ou arquivos de workspace como parte de "instalar plugins".
Solução de problemas
| Sintoma | Correção |
|---|---|
perfil "desktop" é gerenciado exclusivamente… | Use o wrapper de CLI do aplicativo Desktop ou DSH_CLI; veja acima |
Não foi possível encontrar uma CLI dsh | Instale o DSH Desktop, ou passe --dsh-cli /caminho/para/dsh |
perfil "desktop" não está inicializado | Abra o DSH Desktop uma vez para que ~/.dsh/profiles/desktop seja criado |
ECONNRESET / falha na busca | Tente novamente; o instalador tenta automaticamente uma vez; verifique rede/proxy/registro |
| Plugin instalado mas UI inalterada | Reinicie o DSH ou force atualização (Cmd+Shift+R); os pacotes do cliente estão em cache |
| Plugin instalado mas não ativo | Confirme se está em dsh.profile.bundles; o add do gerenciador de plugins normalmente o anexa |
Editor dsh-markdown-input ausente | Verifique Configurações → Plugins; plugin alfa; force atualização; verifique console para erros de slot/editor |
Conflito dsh-better-sidebar/side-chat | Ambos podem iniciar; escolha uma entrada de chat lateral ou remova um plugin |
Patch diz já-patched | Esperado; o arquivo já possui o comportamento alvo |
Patch diz pulado — versão … | Versão do manifesto/plugin mudou; revise a nova versão antes de usar --force |
Arquivos
| Arquivo | Propósito |
|---|---|
SKILL.md | Este fluxo de trabalho |
plugins.json | Manifesto de plugins com versões fixas |
scripts/install.mjs | Simulação/instalação/verificação |
scripts/capture.mjs | Atualizar manifesto a partir de um perfil ativo |
scripts/apply-patches.mjs | Patches locais opcionais de comportamento principal |
patches/README.md | Justificativa dos patches e fallback manual |