dsh-notify-pt
Notificações de sistema para sessões do DSH: turno concluído, turno com erro ou interrompido, ferramenta que falha, objetivo concluído ou bloqueado, workflow concluído — e uma ação aguardando sua aprovação, que é o caso que exige você na frente da máquina.
É um fork em português do plugin zhengjy01/dsh-notify,
que escreve as mensagens em chinês embutidas no código e não tem configuração de
idioma.
Origem
| Upstream | zhengjy01/dsh-notify |
| Base | 0.5.1, commit 5e3c4af |
| Licença | MIT, a mesma do autor (LICENSE preservada) |
O que este fork muda em relação ao original — só texto e recorte de texto, nada de lógica, nomes de evento ou chaves de configuração, de propósito, para poder mesclar atualizações do autor:
- mensagens em português (tabela abaixo);
truncateReason(): normaliza espaços, porque popup não tem parágrafo; mantém a primeira frase quando ela cabe em 140 caracteres; e, quando não cabe, corta na última palavra inteira em vez de terminar no meio de uma palavra.
Os READMEs originais ficam preservados como README.en.md e README.zh.md.
O motivo dentro da notificação vem do próprio DSH — em geral o auto-review,
que escreve em inglês (Auto review denied tool 'bash': …). Isso é dado de
entrada, não texto do plugin: continua no idioma em que o DSH o produziu, e o
fork apenas o enquadra numa mensagem legível.
Instalação
dsh plugin --profile web add github:WalcimarZD/dsh-notify-pt#v0.5.1-pt.1
systemctl --user restart deepseek-harness.service
O plugin é server-side: sem o restart do dsh web ele não carrega. O restart
derruba a conexão da interface web; reabrir o app "DeepSeek Harness" reconecta.
Pinado na tag v0.5.1-pt.1 para a instalação ser reproduzível. Se preferir o
critério mais estrito, use o SHA do commit no lugar da tag.
O pacote continua se chamando dsh-notify de propósito: é a identidade que o
cordis.patch.yml resolve e que aparece no perfil do DSH. O que distingue este
fork é o repositório e a versão.
Para remover:
dsh plugin --profile web remove dsh-notify
Mensagens
| Evento | Título | Corpo |
|---|---|---|
aprovação pedida (política ask) |
Aprovação necessária · <sessão> |
Ferramenta <tool> pede permissão: <motivo> + → Aprove ou negue na interface do DSH. |
aprovação auto-rejeitada (never) |
Permissão negada automaticamente · <sessão> |
Ferramenta <tool>: <motivo> |
| turno concluído | Tarefa concluída · <sessão> |
Resposta finalizada. |
| turno com erro | Tarefa falhou · <sessão> |
Erro na execução do turno. |
| turno interrompido | Tarefa interrompida · <sessão> |
Motivo: abortada. / limite de tokens. / bloqueada. |
| ferramenta falhou | Ferramenta falhou · <sessão> |
<tool>: <mensagem> |
| workflow concluído | Workflow concluído · <sessão> |
run <id> — <motivo> |
| objetivo concluído / bloqueado | Objetivo concluído · <sessão> / Objetivo bloqueado · <sessão> |
objetivo / motivo |
| subtarefa concluída | Subtarefa concluída · <sessão> |
Subtarefa finalizada (<motivo>). |
Aprovação pedida, turno com erro e objetivo bloqueado vão como alerta crítico
(notify-send -u critical: fica na tela até você clicar). O resto é banner.
Configuração
No patch layer do perfil (~/.dsh/profiles/web/cordis.patch.yml), no formato que
o arquivo já usa:
- id: notify
config:
notifyTurnEnd: false # não avisar a cada turno concluído
notifyToolError: false # não avisar a cada ferramenta que falha
Chaves disponíveis: notifyTurnEnd, notifyTurnError, notifySubagentEnd,
notifyWorkflowEnd, notifyApproval, notifyToolError, toolErrorAllowlist,
toolErrorCooldownMs, notifyGoalComplete, notifyGoalBlocked, sound.
Testes
O canal Linux é notify-send, então o teste põe um shim no PATH e afirma o
argv exato entregue em cada tipo de evento — o texto que apareceria na tela, sem
depender do servidor rodando:
node --test test/messages.test.mjs
Versionamento e atualizações
A versão carrega o upstream que ela estende: 0.5.1-pt.1 é a primeira revisão
da tradução sobre o 0.5.1. Ver CHANGELOG.md.
Para trazer o upstream:
git fetch upstream && git merge upstream/main
Conflitos esperados: os literais de mensagem e o cabeçalho de documentação do
lib/index.js.
Licença
MIT — Copyright (c) 2026 o autor original; ver LICENSE.
No comments yet. Be the first to write one.