dsh-mask

September 6, 2026 · View on GitHub

dsh-mask

  • Canal 1024 store: npm i -g dsh1024 uma vez, depois dsh1024 plugin --profile web add dsh-mask (conta para o ranking de instalações do deepseek1024.com).

Middleware de mascaramento de PII para o DeepSeek Harness: anonimize dados pessoais antes que cheguem ao modelo e restaure-os na camada de exibição.

Telefones, e-mails, documentos, cartões, chaves e mais viram marcadores no limite do modelo; o texto simples nunca entra no seu registro de sessão.

License DSH plugin Node CI Version npm version npm downloads

English · 简体中文 · Español · Português · हिन्दी


Compatibility

SuperfícieEstado
HarnessDeepSeek Harness dsh-v0.1.3-alpha.1 (adaptado em 2026-09-02): o envelope de sessão mantém seu campo ignorable apenas para compatibilidade de leitura de logs armazenados - o Session.append ainda não consegue estampá-lo, então o comportamento da porta não muda. Verificado em 2026-09-06 contra o checkout master dsh-v0.1.3-alpha.1 (cadeia completa de portas + smoke de instalação de perfil).
Node^22.19.0 || >=24.0.0
PlataformasOnde o DSH rodar (host puro, regex sem dependências; sem metade de navegador)
ModeloModelos de texto totalmente suportados

What you get

O dsh-mask anonimiza dados pessoais no limite do modelo e mantém uma tabela de restauração:

  • Mascaramento antes da requisição — reescreve mensagens de agent/pre-step para que telefones, e-mails, documentos, cartões, chaves e IPs (opt-in) virem marcadores como <PHONE_1>. O texto mascarado é o que é registrado e enviado ao modelo.
  • Tabela de restauração — o mapa marcador → original vive só em memória e num domínio de armazenamento controlado (dsh_mask); o texto simples nunca entra no registro de sessão.
  • Auditoria sem texto simples — o evento mask/applied registra apenas «N valores substituídos + distribuição por tipo».
  • Comando /maskstatus, on/off, restore <text>, help.
  • Ferramenta mask_test — teste um trecho e veja o resultado com marcadores; nunca revela os originais.
mensagem do usuário ──agent/pre-step──▶ marcadores ──modelo──▶ marcadores ──restore──▶ tela
                                          ▲                                            │
                                          └──── tabela de restauração (memória + dsh_mask) ─┘

Quick start

dsh plugin --profile web add "github:PerryLink/dsh-mask#main"
# ou via npm
dsh plugin --profile web add dsh-mask
dsh --profile web --dump-config | grep -A2 'id: mask'
- insert:
    - id: mask
      name: dsh-mask
      config:
        entities: [phone, email, id-card, bank-card, key]
> /mask status
> /mask restore <PHONE_1>

Install & uninstall

  • Canal git: dsh plugin --profile web add "github:PerryLink/dsh-mask#main" (equivale a git+https://github.com/PerryLink/dsh-mask.git). Sem etapa de build.
  • Canal npm: dsh plugin --profile web add dsh-mask.
  • Canal tarball: pnpm pack e depois dsh plugin --profile web add ./dsh-mask-<version>.tgz.
  • Desinstalar: dsh plugin --profile web remove dsh-mask.

dsh-mask não inclui mais a pilha de armazenamento. Perfis que já a compõem (o perfil web o faz, via @deepseek-ai/dsh-web-app) fornecem storageDomain, então a persistência funciona imediatamente. Em um perfil bare sem armazenamento o plugin monta e mascara mesmo assim, mas a tabela é só em memória (perdida ao reiniciar): componha a pilha de armazenamento no seu patch de perfil, ou defina persistRestoreTable: false.

Configuration

Todas as opções são campos Schemastery Config (alteráveis via cordis.yml). O cordis.patch.yml documenta cada chave.

ChavePadrãoSignificado
enabledtrueInterruptor mestre
moderegexregex implementado (regex+ner reservado)
entities[phone, email, id-card, bank-card, key]Tipos de PII; ip opt-in, person/address exigem NER
scope[messages]Superfícies: messages (mensagens agent/pre-step) e tools (texto de resultados de ferramentas). Aceita string ou array, ex. [messages, tools]
registerCommandtrueRegistra o comando /mask
registerToolstrueRegistra a ferramenta mask_test
persistRestoreTabletruePersiste a tabela no domínio dsh_mask
maxRestoreEntriesPerSession500Limite de entradas por sessão
maxSessions1000Limite de sessões em memória

Tools & surfaces

SuperfícieRevela texto simplesNotas
Mascaramento agent/pre-stepnuncaReescreve mensagens para marcadores
/mask statusnuncaEstado, total substituído, distribuição
/mask on / /mask offnuncaAlternância em tempo de execução
/mask restore <text>sim (explícito)Desmapeia marcadores para os valores desta sessão
mask_testnuncaMascara um trecho e reporta o resultado

Permissions & data

  • Permissões: sem rede, sem credenciais (network:none, credentials:none).
  • Dados: a tabela marcador → original vive em memória e, com persistRestoreTable: true, no domínio dsh_mask; nunca no registro de sessão.
  • Registro de sessão: mask/applied é declarado em types.d.ts e anexado só quando o host registra o tipo.

Security boundaries

  • Texto simples nunca entra no registro de sessão. O registrado e enviado é a forma mascarada; os originais ficam na tabela.
  • Sanitizar antes de exibir/registrar. lib/sanitize.mjs redige PII, segredos e credenciais de URL.
  • Restauração controlada. /mask restore é a única superfície de revelação explícita.
  • Falha fechada. mode/scope/entidades não implementados e números fora de faixa falham ao carregar.
  • Registros como efeitos. Listener, comando, ferramenta e fechamento de domínio são efeitos Cordis.

Known limitations

  • Somente regex. person e address exigem um reconhecedor NER externo; falham ao carregar. Coberto de série: telefone, e-mail, documento, cartão, chave e IP (opt-in).
  • A restauração visual precisa de uma metade de cliente. Mascarar é host-side; desmascarar bolhas na UI é uma função de navegador que esta forma host puro não inclui. A tabela e restore() são o seam host-side completo.
  • Eventos em 0.1.2-rc.1. O host ainda não registra mask/*, então os appends de auditoria são omitidos (sessões continuam carregando).

Development

pnpm install
pnpm run typecheck && pnpm run typecheck:ci
pnpm test
pnpm run verify:self-contained
pnpm run verify:artifacts
pnpm run check:readmes
pnpm pack

Sem etapa de build: ESM puro, index.mjs e lib/ são os artefatos enviados.

Benchmark

O benchmark de PII (P/R/F1 por tipo em 108 amostras sintéticas) está em benchmark/RESULTS.md; regenere-o com node benchmark/run.mjs (sem build, zero dependências novas).

Topics

dsh, dsh-plugin, deepseek-harness, deepseek, cordis, pii, mask, privacy, anonymization, security

Contributors

Este projeto é um dos 33 plugins de DeepSeek Harness mantidos por PerryLink. Se este ajuda você, os outros provavelmente também:

PluginOne-liner
dsh-dsh-auto-reviewAuto-revisão de segundo modelo na cadeia de aprovação, com falha fechada por padrão
dsh-dsh-background-agentsAgentes filhos em segundo plano duráveis com barra lateral de UI web, mensagens e interrupção
dsh-dsh-budgetGovernança de custos para DeepSeek Harness: orçamentos, carbono e latência em um painel.
dsh-dsh-checkpoint-rewindEquivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único
dsh-dsh-claude-moveMigre sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH
dsh-dsh-clickControle de desktop nativo multiplataforma para DeepSeek Harness — Windows primeiro.
dsh-dsh-composer-historyHistórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R
dsh-dsh-data-qualityVerificações de qualidade de datasets e verificação de citações (a ponte numérica opcional consumida aqui)
dsh-dsh-defendDefesa contra injeção de prompt, jailbreak e vazamento de segredos para DeepSeek Harness.
dsh-dsh-doublecheckGuardião de disciplina de engenharia: sabatina de requisitos, portões de teste, revisão adversária
dsh-dsh-drawRoteamento unificado de geração de imagens estáticas para DeepSeek Harness.
dsh-dsh-fastDiagnóstico de desempenho só de leitura para DeepSeek Harness.
dsh-dsh-fund-researchRelatórios de pesquisa deterministas para fundos mútuos públicos chineses
dsh-dsh-githubIntegração de PR/issues do GitHub para o DSH, cada escrita controlada por aprovação
dsh-dsh-industry-researchOrquestração de pesquisa setorial que sela as suas entregas através do ctx.researchReport.assemble deste plugin
dsh-dsh-libraryBase de conhecimento documental local para DeepSeek Harness.
dsh-dsh-local-aiIntegração de modelos locais (Ollama) para DeepSeek Harness.
dsh-dsh-lsp-actionsDiagnósticos, formatação, autocompletar, ações de código e renomeação LSP sobre servidores de linguagem
dsh-dsh-mcp-panelPainel de tempo de execução MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros
dsh-dsh-mementoMemória entre sessões controlada por aprovação: costura ctx.memory + SQLite + ferramenta de memória
dsh-dsh-observeExportador de observabilidade OpenTelemetry e Langfuse para DeepSeek Harness.
dsh-dsh-output-stylesTroca de estilo em tempo de execução equivalente ao outputStyles do Claude Code
dsh-dsh-permission-rulesRegras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria
dsh-dsh-plugin-guideBase de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda
dsh-dsh-research-reportMotor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo
dsh-dsh-scorePontuação de qualidade multidimensional para plugins de DeepSeek Harness.
dsh-dsh-session-pinFixe sessões na barra lateral web com ordenação durável
dsh-dsh-session-syncSincronização de sessões entre dispositivos para DeepSeek Harness — um espelho git dedicado do seu armazenamento de sessões.
dsh-dsh-skill-pack-securityPacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos
dsh-dsh-talkLoop de sessão com voz para DeepSeek Harness: fale e ouça a resposta.
dsh-dsh-test-driveTest drives isolados de instalação e smoke para plugins de DeepSeek Harness.
dsh-dsh-translateTradução de parâmetros entre fornecedores e reparo determinístico de JSON para DeepSeek Harness.

License

LICENSE (Apache License 2.0) © 2026 dsh-mask contributors

Instalar a partir do mercado do DSH Desktop

Todos os plugins PerryLink podem ser explorados no mercado integrado do DSH Desktop: Market → Sources → add source → colar https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → selecionar. A instalação continua passando pela verificação de identidade npm do mercado e pela sua confirmação.