dsh-mask
September 6, 2026 · View on GitHub
dsh-mask
- Canal 1024 store:
npm i -g dsh1024uma vez, depoisdsh1024 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.
Compatibility
| Superfície | Estado |
|---|---|
| Harness | DeepSeek 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 |
| Plataformas | Onde o DSH rodar (host puro, regex sem dependências; sem metade de navegador) |
| Modelo | Modelos 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-steppara 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 → originalvive 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/appliedregistra apenas «N valores substituídos + distribuição por tipo». - Comando
/mask—status,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 agit+https://github.com/PerryLink/dsh-mask.git). Sem etapa de build. - Canal npm:
dsh plugin --profile web add dsh-mask. - Canal tarball:
pnpm packe depoisdsh 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.
| Chave | Padrão | Significado |
|---|---|---|
enabled | true | Interruptor mestre |
mode | regex | Só regex 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] |
registerCommand | true | Registra o comando /mask |
registerTools | true | Registra a ferramenta mask_test |
persistRestoreTable | true | Persiste a tabela no domínio dsh_mask |
maxRestoreEntriesPerSession | 500 | Limite de entradas por sessão |
maxSessions | 1000 | Limite de sessões em memória |
Tools & surfaces
| Superfície | Revela texto simples | Notas |
|---|---|---|
Mascaramento agent/pre-step | nunca | Reescreve mensagens para marcadores |
/mask status | nunca | Estado, total substituído, distribuição |
/mask on / /mask off | nunca | Alternância em tempo de execução |
/mask restore <text> | sim (explícito) | Desmapeia marcadores para os valores desta sessão |
mask_test | nunca | Mascara um trecho e reporta o resultado |
Permissions & data
- Permissões: sem rede, sem credenciais (
network:none,credentials:none). - Dados: a tabela
marcador → originalvive em memória e, compersistRestoreTable: true, no domíniodsh_mask; nunca no registro de sessão. - Registro de sessão:
mask/appliedé declarado emtypes.d.tse 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.mjsredige 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.
personeaddressexigem 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 registramask/*, 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
- @PerryLink — criador e mantenedor.
PerryLink DSH Plugin Family
Este projeto é um dos 33 plugins de DeepSeek Harness mantidos por PerryLink. Se este ajuda você, os outros provavelmente também:
| Plugin | One-liner |
|---|---|
| dsh-dsh-auto-review | Auto-revisão de segundo modelo na cadeia de aprovação, com falha fechada por padrão |
| dsh-dsh-background-agents | Agentes filhos em segundo plano duráveis com barra lateral de UI web, mensagens e interrupção |
| dsh-dsh-budget | Governança de custos para DeepSeek Harness: orçamentos, carbono e latência em um painel. |
| dsh-dsh-checkpoint-rewind | Equivalente ao /rewind do Claude Code: instantâneos, bifurcações de sessão, restauração de uso único |
| dsh-dsh-claude-move | Migre sessões, memória, habilidades e CLAUDE.md do Claude Code para o DSH |
| dsh-dsh-click | Controle de desktop nativo multiplataforma para DeepSeek Harness — Windows primeiro. |
| dsh-dsh-composer-history | Histórico de entrada estilo terminal para o compositor web: setas, busca Ctrl+R |
| dsh-dsh-data-quality | Verificações de qualidade de datasets e verificação de citações (a ponte numérica opcional consumida aqui) |
| dsh-dsh-defend | Defesa contra injeção de prompt, jailbreak e vazamento de segredos para DeepSeek Harness. |
| dsh-dsh-doublecheck | Guardião de disciplina de engenharia: sabatina de requisitos, portões de teste, revisão adversária |
| dsh-dsh-draw | Roteamento unificado de geração de imagens estáticas para DeepSeek Harness. |
| dsh-dsh-fast | Diagnóstico de desempenho só de leitura para DeepSeek Harness. |
| dsh-dsh-fund-research | Relatórios de pesquisa deterministas para fundos mútuos públicos chineses |
| dsh-dsh-github | Integração de PR/issues do GitHub para o DSH, cada escrita controlada por aprovação |
| dsh-dsh-industry-research | Orquestração de pesquisa setorial que sela as suas entregas através do ctx.researchReport.assemble deste plugin |
| dsh-dsh-library | Base de conhecimento documental local para DeepSeek Harness. |
| dsh-dsh-local-ai | Integração de modelos locais (Ollama) para DeepSeek Harness. |
| dsh-dsh-lsp-actions | Diagnósticos, formatação, autocompletar, ações de código e renomeação LSP sobre servidores de linguagem |
| dsh-dsh-mcp-panel | Painel de tempo de execução MCP somente leitura: comando /mcp + aba Settings com status, ferramentas e erros |
| dsh-dsh-memento | Memória entre sessões controlada por aprovação: costura ctx.memory + SQLite + ferramenta de memória |
| dsh-dsh-observe | Exportador de observabilidade OpenTelemetry e Langfuse para DeepSeek Harness. |
| dsh-dsh-output-styles | Troca de estilo em tempo de execução equivalente ao outputStyles do Claude Code |
| dsh-dsh-permission-rules | Regras de permissão declarativas allow/deny/ask estilo Claude Code com auditoria |
| dsh-dsh-plugin-guide | Base de conhecimento de desenvolvimento de plugins como habilidade de agente sob demanda |
| dsh-dsh-research-report | Motor de relatórios de pesquisa verificáveis com evidência endereçada por conteúdo |
| dsh-dsh-score | Pontuação de qualidade multidimensional para plugins de DeepSeek Harness. |
| dsh-dsh-session-pin | Fixe sessões na barra lateral web com ordenação durável |
| dsh-dsh-session-sync | Sincronização de sessões entre dispositivos para DeepSeek Harness — um espelho git dedicado do seu armazenamento de sessões. |
| dsh-dsh-skill-pack-security | Pacote de habilidades de auditoria de segurança: varredura de segredos, revisão de dependências e cadeia de suprimentos |
| dsh-dsh-talk | Loop de sessão com voz para DeepSeek Harness: fale e ouça a resposta. |
| dsh-dsh-test-drive | Test drives isolados de instalação e smoke para plugins de DeepSeek Harness. |
| dsh-dsh-translate | Traduçã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.