🔁 dsh-translate

September 6, 2026 · View on GitHub

🔁 dsh-translate

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

Traducción de parámetros entre proveedores y reparación determinista de JSON para DeepSeek Harness.

La misma petición, en cada proveedor. JSON roto, arreglado sin inventar datos.

License DSH plugin Node CI Version npm version npm downloads

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


Compatibilidad

SuperficieEstado
HarnessVersión principal dsh-v0.1.3-alpha.1 (tag de GitHub, verificado el 2026-09-06: cadena completa de puertas + smoke de instalación de perfil). Línea de dependencias npm fijada en 0.1.2-rc.1; peers >=0.1.2-rc.1 <0.2.0.
Node^22.19.0 || >=24.0.0
FormaPlugin JS de host puro (sin mitad de navegador)
ModeloCualquier modelo — la reparación es determinista, sin llamadas extra al modelo

Qué obtienes

Dos superficies independientes en un solo bundle:

  • /translate — la tabla de traducción de parámetros entre proveedores: temperature, top_p, max_tokens, stop, system y 8 parámetros canónicos más, mapeados en 11 proveedores (OpenAI, ERNIE, Qwen, Anthropic, Google, DeepSeek, Mistral, Cohere, xAI, Groq, Azure). Consulta un mapeo entre dos proveedores, lista proveedores/parámetros, o convierte una petición estándar completa (transformRequest en lib/rosetta.mjs).
  • La capa de reparación — un listener de tools/post-execute más la herramienta fix_json. Cuando un resultado exitoso lleva JSON roto como texto (esquema con raíz string o raíz json sin restricciones, o una herramienta optada por nombre), la capa lo repara de forma determinista: extracción de vallas markdown, reparación de escapes, eliminación de comas finales, cierre por truncamiento y completado de campos requeridos con marcadores null explícitos. Nunca se inventa un valor — un resultado que aún viole el esquema falla cerrado, y los resultados fallidos nunca se convierten en éxitos.
resultado de herramienta (éxito, texto JSON) ──▶ extraer valla ──▶ parsear
    │ ok? ──▶ validar contra esquema ──▶ accept { kind: 'accept', value }  (el registro revalida y re-renderiza)
    │ roto ──▶ escapes / comas / cierre / null ──▶ validar
    │ irreparable ──▶ next()  (valor original intacto) + auditoría translate/fix (solo conteos)

Inicio rápido

# 1. instala el bundle en tu perfil
dsh plugin --profile web add "github:PerryLink/dsh-translate#main"

# o desde npm (versiones publicadas)
dsh plugin --profile web add dsh-translate

# 2. reinicia y verifica la fila
dsh --profile web --dump-config | grep -A2 'id: dsh-translate'

Luego pídele al agente un mapeo o una reparación:

> /translate openai ernie max_tokens
> Usa fix_json para reparar: {"a": 1,} contra {"type":"object","properties":{"a":{"type":"integer"}},"required":["a"]}

Instalación y desinstalación

  • Canal git (último main): dsh plugin --profile web add "github:PerryLink/dsh-translate#main" — JS puro, sin paso de compilación.
  • Canal npm (versiones publicadas): dsh plugin --profile web add dsh-translate.
  • Canal tarball: pnpm pack en este repositorio y luego dsh plugin --profile web add ./dsh-translate-<version>.tgz.
  • Desinstalar: dsh plugin --profile web remove dsh-translate (o elimina la fila del parche del perfil).

Configuración

Todos los ajustes son campos Config de Schemastery (modificables desde cordis.yml). Una sobrescritura dirigida por id reemplaza toda la fila — vuelve a declarar cada clave que necesites. cordis.patch.yml documenta cada clave en línea.

ClavePor defectoSignificado
enabledtrueInterruptor maestro; false no registra nada
repair.enabledtrueInterruptor de la capa de reparación post-execute
repair.toolNames[]Nombres extra de herramientas cuyos resultados de texto JSON pueden repararse (además de raíces string / json)
repair.strategies.escapeRepairtrueEscapar caracteres de control crudos dentro de strings
repair.strategies.trailingCommatrueEliminar comas directamente antes de un cierre
repair.strategies.truncationClosuretrueCerrar un string o contenedor abierto cortado por truncamiento
repair.strategies.fieldCompletiontrueCompletar campos requeridos faltantes con marcadores null explícitos
repair.maxSteps8Presupuesto de aplicación de estrategias (pasadas del bucle, 1..64)
diffMaxChars200Tope de un fragmento de diff registrado, en caracteres
diffMaxEntries50Tope de entradas de diff registradas
registerCommandtrueRegistrar el comando /translate
registerTooltrueRegistrar la herramienta fix_json
rosettaDataPath(none)Archivo de datos rosetta externo opcional (misma forma que el lib/rosetta-data.json incluido); anula la tabla de mapeo integrada

Ejemplo de sobrescritura en el parche de tu perfil:

- insert:
    - id: dsh-translate
      name: dsh-translate
      config:
        enabled: true
        repair:
          enabled: true
          toolNames: ['emit-json']
          strategies:
            escapeRepair: true
            trailingComma: true
            truncationClosure: true
            fieldCompletion: true
          maxSteps: 8
        diffMaxChars: 200
        diffMaxEntries: 50
        registerCommand: true
        registerTool: true

Herramientas y superficies

SuperficieTipoNotas
/translatecomandovendors, params, o mapeo por pares <from> <to> [param]
fix_jsonherramienta{ text, schema?, strategies? }{ ok, repaired?, diff?, strategies, truncated, validated, error? }; los fragmentos del diff están acotados y sanitizados
reparación post-executelistenerAutomática para resultados de éxito de tipo string con raíces string / json (más repair.toolNames); siempre llama next() salvo que reclame la llamada

Permisos y datos

  • Permisos: sin red, sin subprocesos, sin credenciales — el plugin solo consume los servicios oficiales commands y tools y escribe en el registro de sesión.
  • Datos: la reparación nunca inventa valores; las únicas adiciones visibles para el modelo son el valor canónico reparado y el diff de fix_json. Los eventos de auditoría (translate/fix) llevan nombre de herramienta, call id, estrategias, conteos de ediciones y marcas de truncamiento — nunca payloads. La escritura de auditoría está controlada por el vocabulario de eventos de sesión del host: los hosts que conocen translate/fix reciben el append llano de dos argumentos, los hosts con el envoltorio ignorable reciben el append marcado, y los hosts sin envoltorio (0.1.0-rc.60.1.1-rc.2, 0.1.2-rc.1) no reciben auditoría — el resultado de la herramienta sigue siendo el registro visible para el modelo. 0.1.2-rc.1 (adaptado el 2026-09-04): 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.

Límites de seguridad

  • Solo determinista. La reparación es cirugía de texto acotada; la rama de reintento con LLM del upstream JSON-Schema-Enforcer-Proxy no fue portada a propósito — un listener post-execute nunca llama a un modelo.
  • Fallo cerrado. La sintaxis irreparable y las violaciones de esquema dejan el resultado original intacto (o devuelven un error estructurado desde fix_json); los marcadores null solo se aplican cuando el esquema acepta null.
  • Entrada hostil acotada. Las palabras clave de esquema no soportadas y los esquemas circulares se rechazan; la validación oneOf está limitada por profundidad (MAX_ONE_OF_DEPTH) y por un presupuesto de ramas (MAX_ONE_OF_BUDGET), así un esquema exponencial no puede agotar el proceso.
  • Sin fuga de payloads. Los logs y eventos de auditoría nunca contienen payloads reparados; los diffs se truncan y acotan antes de mostrarse o almacenarse.

Limitaciones conocidas

  • El subconjunto de JSON Schema soportado refleja el registro de herramientas del harness (type/oneOf/properties/required/additionalProperties/items/enum/const); otras palabras clave se rechazan como no soportadas, no se ignoran en silencio.
  • La reparación solo aplica a resultados exitosos cuyo valor canónico es un string de texto JSON; un valor que ya falló la validación llega como resultado fallido y nunca se invierte.
  • La tabla cubre 11 proveedores × 13 parámetros canónicos; las filas extended siguen referencias públicas de API (no el trío upstream) y están marcadas como tales en lib/rosetta.mjs.
  • En hosts que ni conocen translate/fix ni exponen el envoltorio ignorable en session.append — la línea publicada 0.1.0-rc.60.1.1-rc.2 y 0.1.2-rc.1, que falla cerrado ante tipos de evento desconocidos al leer — la puerta adaptativa omite el append de auditoría para que el registro de sesión nunca se contamine; el espejo de auditoría se pierde en esos hosts hasta que el tipo de evento se registre.

Desarrollo

pnpm install        # node ^22.19 || >=24
pnpm test           # node --test: 70 tests (suites puras + suite de ensamblaje con servicios reales)
pnpm run check      # tsc checkJs contra types.d.ts
pnpm run verify:self-contained  # las especificaciones de dependencias resuelven desde el registry
pnpm run verify:artifacts       # la cara ESM importa bajo Node plano + exports de lib presentes
node scripts/check-readme-sync.mjs  # puerta de sincronización de los cinco READMEs (también en CI)
pnpm pack           # el tarball publicado

Topics

dsh, dsh-plugin, deepseek-harness, deepseek, cordis, json-repair, schema-validation, parameter-mapping, llm-api, tooling

Contributors

  • @PerryLink — creador y mantenedor: portes de la tabla de traducción y del pipeline de reparación, superficies del plugin, tests y documentación en cinco idiomas.

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-maskMiddleware de enmascaramiento de PII: anonimiza en el límite del modelo, restaura en la capa de visualización
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.

License

Apache License 2.0 © 2026 dsh-translate 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.