dsh-notify
Notificações de sistema para o DSH: turno concluído, turno com erro ou interrompido, ferramenta que falha, objetivo concluído ou bloqueado, workflow concluído e aprovação pendente (macOS: osascript; Linux: notify-send). Fork em português de zhengjy01/dsh-notify. 适合需要离开电脑时接收任务结束或待审批系统通知的用户。
同名パッケージの別リポジトリ
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:WalcimarZD/dsh-notify-ptドキュメント
README 全文を読む ↗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 · | Ferramenta pede permissão: + → Aprove ou negue na interface do DSH. |
aprovação auto-rejeitada (never) | Permissão negada automaticamente · | Ferramenta : |
| turno concluído | Tarefa concluída · | Resposta finalizada. |
| turno com erro | Tarefa falhou · | Erro na execução do turno. |
| turno interrompido | Tarefa interrompida · | Motivo: abortada. / limite de tokens. / bloqueada. |
| ferramenta falhou | Ferramenta falhou · | : |
| workflow concluído | Workflow concluído · | run — |
| objetivo concluído / bloqueado | Objetivo concluído · / Objetivo bloqueado · | objetivo / motivo |
| subtarefa concluída | Subtarefa concluída · | Subtarefa finalizada (). |
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.