dsh-mask

September 6, 2026 · View on GitHub

dsh-mask

  • Canal 1024 store: npm i -g dsh1024 una vez, luego dsh1024 plugin --profile web add dsh-mask (cuenta para el ranking de instalaciones de deepseek1024.com).

Middleware de enmascaramiento de PII para DeepSeek Harness: anonimiza los datos personales antes de que lleguen al modelo y los restaura en la capa de visualización.

Teléfonos, correos, documentos, tarjetas, claves y más se convierten en marcadores de posición en el límite del modelo; el texto plano nunca entra en tu registro de sesión.

License DSH plugin Node CI Version npm version npm downloads

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


Compatibility

SuperficieEstado
HarnessDeepSeek Harness dsh-v0.1.3-alpha.1 (adaptado el 2026-09-02): el sobre de sesión conserva su campo ignorable solo para compatibilidad de lectura de logs almacenados - Session.append aún no puede estamparlo, por lo que el comportamiento de la puerta no cambia. Verificado el 2026-09-06 contra el checkout master dsh-v0.1.3-alpha.1 (cadena completa de puertas + smoke de instalación de perfil).
Node^22.19.0 || >=24.0.0
PlataformasDonde corra DSH (host puro, regex sin dependencias; sin mitad de navegador)
ModeloModelos de texto totalmente soportados

What you get

dsh-mask anonimiza datos personales en el límite del modelo y mantiene una tabla de restauración para volver de los marcadores a los originales:

  • Enmascarado antes de la petición — reescribe los mensajes de agent/pre-step para que teléfonos, correos, documentos, tarjetas, claves e IP (opt-in) se vuelvan marcadores como <PHONE_1>. El texto enmascarado es lo que se registra y se envía al modelo.
  • Tabla de restauración — el mapa marcador → original vive solo en memoria y en un dominio de almacenamiento controlado (dsh_mask); el texto plano nunca entra en el registro de sesión.
  • Auditoría sin texto plano — el evento mask/applied solo registra «N valores reemplazados + distribución por tipo».
  • Comando /maskstatus, on/off, restore <text>, help.
  • Herramienta mask_test — prueba un fragmento y ve el resultado con marcadores; nunca revela los valores originales.
mensaje de usuario ──agent/pre-step──▶ marcadores ──modelo──▶ marcadores ──restore──▶ pantalla
                                          ▲                                              │
                                          └──── tabla de restauración (memoria + dsh_mask) ─┘

Quick start

dsh plugin --profile web add "github:PerryLink/dsh-mask#main"
# o desde 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). Sin paso de build.
  • Canal npm: dsh plugin --profile web add dsh-mask.
  • Canal tarball: pnpm pack y luego dsh plugin --profile web add ./dsh-mask-<version>.tgz.
  • Desinstalar: dsh plugin --profile web remove dsh-mask.

dsh-mask ya no incluye la pila de almacenamiento. Los perfiles que ya la componen (el perfil web lo hace, vía @deepseek-ai/dsh-web-app) aportan storageDomain, así que la persistencia funciona de inmediato. En un perfil bare sin almacenamiento el plugin se monta y enmascara igualmente, pero la tabla es solo en memoria (se pierde al reiniciar): compón la pila de almacenamiento en tu parche de perfil, o pon persistRestoreTable: false.

Configuration

Todas las opciones son campos Schemastery Config (modificables desde cordis.yml). cordis.patch.yml documenta cada clave.

ClavePredeterminadoSignificado
enabledtrueInterruptor maestro
moderegexSolo regex implementado (regex+ner reservado)
entities[phone, email, id-card, bank-card, key]Tipos de PII a enmascarar; ip opt-in, person/address requieren NER
scope[messages]Superficies: messages (mensajes agent/pre-step) y tools (texto de resultados de herramientas). Acepta una cadena o un array, p. ej. [messages, tools]
registerCommandtrueRegistra el comando /mask
registerToolstrueRegistra la herramienta mask_test
persistRestoreTabletruePersiste la tabla en el dominio dsh_mask
maxRestoreEntriesPerSession500Tope de entradas por sesión
maxSessions1000Tope de sesiones en memoria

Tools & surfaces

SuperficieRevela texto planoNotas
Enmascarado agent/pre-stepnuncaReescribe mensajes a marcadores
/mask statusnuncaEstado, total reemplazado, distribución
/mask on / /mask offnuncaAlternancia en tiempo de ejecución
/mask restore <text>sí (explícito)Desmapea marcadores a los valores de esta sesión
mask_testnuncaEnmascara un fragmento y reporta el resultado

Permissions & data

  • Permisos: sin red, sin credenciales (network:none, credentials:none).
  • Datos: la tabla marcador → original vive en memoria y, con persistRestoreTable: true, en el dominio dsh_mask; nunca en el registro de sesión.
  • Registro de sesión: mask/applied se declara en types.d.ts y se añade solo cuando el host registra el tipo.

Security boundaries

  • El texto plano nunca entra en el registro de sesión. Lo registrado y enviado es la forma enmascarada; los originales quedan en la tabla de restauración.
  • Sanitizar antes de mostrar/registrar. lib/sanitize.mjs redacta PII, secretos y credenciales de URL.
  • Restauración controlada. /mask restore es la única superficie de revelado explícita.
  • Fallo cerrado. mode/scope/entidades no implementados y números fuera de rango fallan al cargar.
  • Registros como efectos. Listener, comando, herramienta y cierre de dominio son efectos Cordis.

Known limitations

  • Solo regex. person y address requieren un reconocedor NER externo; fallan al cargar. Cubierto de serie: teléfono, correo, documento, tarjeta, clave e IP (opt-in).
  • La restauración visual necesita una mitad de cliente. Enmascarar es host-side; desenmascarar burbujas en la UI es una función de navegador que esta forma host puro no incluye. La tabla y restore() son el seam host-side completo.
  • Eventos en 0.1.2-rc.1. El host aún no registra mask/*, así que los appends de auditoría se omiten (las sesiones siguen cargando).

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

Sin paso de build: ESM puro, index.mjs y lib/ son los artefactos enviados.

Benchmark

El benchmark de PII (P/R/F1 por tipo sobre 108 muestras sintéticas) está en benchmark/RESULTS.md; regenéralo con node benchmark/run.mjs (sin build, cero dependencias nuevas).

Topics

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

Contributors

Este proyecto es uno de los 33 complementos de DeepSeek Harness mantenidos por PerryLink. Si este te ayuda, probablemente los demás también:

PluginOne-liner
dsh-dsh-auto-reviewAuto-revisión de segundo modelo en la cadena de aprobación, con cierre en fallo por defecto
dsh-dsh-background-agentsAgentes hijos en segundo plano durables con barra lateral de UI web, mensajería e interrupción
dsh-dsh-budgetGobernanza de costes para DeepSeek Harness: presupuestos, carbono y latencia en un panel.
dsh-dsh-checkpoint-rewindEquivalente a /rewind de Claude Code: instantáneas, bifurcaciones de sesión, restauración de un solo uso
dsh-dsh-claude-moveMigra sesiones, memoria, habilidades y CLAUDE.md de Claude Code a DSH
dsh-dsh-clickControl de escritorio nativo multiplataforma para DeepSeek Harness — Windows primero.
dsh-dsh-composer-historyHistorial de entrada estilo terminal para el compositor web: flechas, búsqueda Ctrl+R
dsh-dsh-data-qualityComprobaciones de calidad de datasets y verificación de citas (el puente numérico opcional consumido aquí)
dsh-dsh-defendDefensa contra inyección de prompts, jailbreak y fuga de secretos para DeepSeek Harness.
dsh-dsh-doublecheckGuardián de disciplina de ingeniería: interrogatorio de requisitos, puertas de pruebas, revisión adversaria
dsh-dsh-drawEnrutamiento unificado de generación de imágenes estáticas para DeepSeek Harness.
dsh-dsh-fastDiagnóstico de rendimiento de solo lectura para DeepSeek Harness.
dsh-dsh-fund-researchInformes de investigación deterministas para fondos mutuos públicos chinos
dsh-dsh-githubIntegración de PR/issues de GitHub para DSH, cada escritura controlada por aprobación
dsh-dsh-industry-researchOrquestación de investigación sectorial que sella sus entregables mediante el ctx.researchReport.assemble de este plugin
dsh-dsh-libraryBase de conocimiento documental local para DeepSeek Harness.
dsh-dsh-local-aiIntegración de modelos locales (Ollama) para DeepSeek Harness.
dsh-dsh-lsp-actionsDiagnósticos, formato, autocompletado, acciones de código y renombrado LSP sobre servidores de lenguaje
dsh-dsh-mcp-panelPanel de tiempo de ejecución MCP de solo lectura: comando /mcp + pestaña Settings con estado, herramientas y errores
dsh-dsh-mementoMemoria entre sesiones controlada por aprobación: costura ctx.memory + SQLite + herramienta de memoria
dsh-dsh-observeExportador de observabilidad OpenTelemetry y Langfuse para DeepSeek Harness.
dsh-dsh-output-stylesCambio de estilo en tiempo de ejecución equivalente a outputStyles de Claude Code
dsh-dsh-permission-rulesReglas de permisos declarativas allow/deny/ask estilo Claude Code con auditoría
dsh-dsh-plugin-guideBase de conocimiento de desarrollo de plugins como habilidad de agente bajo demanda
dsh-dsh-research-reportMotor de informes de investigación verificables con evidencia direccionada por contenido
dsh-dsh-scorePuntuación de calidad multidimensional para plugins de DeepSeek Harness.
dsh-dsh-session-pinFija sesiones en la barra lateral web con orden durable
dsh-dsh-session-syncSincronización de sesiones entre dispositivos para DeepSeek Harness — un espejo git dedicado de tu almacén de sesiones.
dsh-dsh-skill-pack-securityPaquete de habilidades de auditoría de seguridad: escaneo de secretos, revisión de dependencias y cadena de suministro
dsh-dsh-talkBucle de sesión con voz para DeepSeek Harness: háblale y escucha su respuesta.
dsh-dsh-test-drivePruebas de instalación y humo aisladas para plugins de DeepSeek Harness.
dsh-dsh-translateTraducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness.

License

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

Instalar desde el mercado de DSH Desktop

Todos los plugins de PerryLink pueden explorarse en el mercado integrado de DSH Desktop: Market → Sources → add source → pegar https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → seleccionarlo. La instalación sigue pasando por la verificación de identidad npm del mercado y tu confirmación.