Evidence snapshot reviewed Sep 10, 2026GitHub checked Aug 21, 2026
Evidence-verifiedPlugin BundleModels & RoutingWeb Profile

dsh-translate

A DeepSeek Harness plugin for cross-vendor LLM parameter translation and deterministic JSON repair.

At a glance

What it does

A DeepSeek Harness plugin for cross-vendor LLM parameter translation and deterministic JSON repair.

Use cases
Models & RoutingModel RoutingIntegrationsData
Works with
Deepseek HarnessCordisDsh CommandsDsh SessionDsh Tools
Compatibility

Web Profile
DSH 0.1.2-rc.1; peers >=0.1.2-rc.1 <0.2.0; Node ^22.19.0 || >=24.0.0

Trust & status

Evidence-verified
Checked Sep 6, 2026, 1:51 PM UTC

Code-evidenced contributions

What it adds to DSH

Model Toolsfix_json and post-execute repair

Repairs eligible successful JSON-text tool results with bounded deterministic strategies and schema validation.

Mechanism evidence

Before you choose it

Adds a /translate command for mapping canonical request parameters across 11 listed LLM vendors, plus fix_json and a post-execute repair layer for eligible successful JSON-text tool results. Repair uses bounded text transformations and schema validation; unrepairable results remain unchanged.

Best for

DeepSeek Harness users who switch LLM vendors or need resilient handling of malformed JSON returned by tools.

Common tasks

  • Compare or convert parameters such as temperature, top_p, max_tokens, stop, and system between supported vendors.
  • Repair a JSON-text payload with fix_json against an optional schema.
  • Enable bounded automatic repair for eligible successful tool results, including named opt-in tools.

Permissions and data

The manifest declares filesystem read and session append permissions, with no network access or native code.

Permissions
  • fs:read
  • session:append
  • network:none
  • native-code:none
Data handling
  • The optional rosettaDataPath reads a user-configured mapping-data file.
  • Session audit events are described as carrying metadata such as tool name, strategy names, edit counts, and truncation flags rather than payloads.
  • Repaired canonical values and fix_json diffs can be model-visible.
External services
  • No network access is declared.
Credentials
  • No credentials are declared.

Limitations

  • The supported JSON Schema subset is limited; unsupported keywords and circular schemas are rejected.
  • Automatic repair applies only to eligible successful JSON-text results and does not turn failed tool results into successes.
  • Missing required fields are only completed with null when the schema accepts null.
  • On certain older hosts, session audit appends are skipped, so the in-log audit mirror is unavailable.

What DSHub checked

  • Pinned source, package structure, bundle patch, npm registry identity, and Apache-2.0 license evidence are present.
  • The manifest declares DSH peer dependencies, Node requirements, profile-bundle integration, and permissions.

What DSHub did not check

  • Installation, restart, runtime behavior, and compatibility with this user's Harness profile were not executed in the supplied evidence.
  • The npm package contents were not audited in the supplied evidence.

Pinned install

Install dsh-translate

This plugin bundle does not have a DSH Plugin install action. Use its source documentation for the delivery method.

Visit the source project

Maintainer source

Project README

View at commit d11772c
Maintainer-authored contentCaptured from README.md on Sep 6, 2026. The text and repository-relative media are fixed to commit d11772c414f5 with content hash b1ac8aa0f3e2; provider-hosted badges may update independently. README commands are upstream documentation; the DSHub copy action above is the verified, version-pinned install.
<div align="center">

🔁 dsh-translate

  • 1024 store channel: npm i -g dsh1024 once, then dsh1024 plugin --profile web add dsh-translate (counts toward the deepseek1024.com install ranking). Gitee

Vendor parameter translation and deterministic JSON repair for DeepSeek Harness.

Same request, every vendor. Broken JSON, fixed without inventing data.

Official repository. This is the only official repository of dsh-translate, maintained by PerryLink. Same-name repositories under other accounts are not affiliated.

License DSH plugin Node CI Version npm version npm downloads

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

</div>

Compatibility

Surface Status
Harness Main version dsh-v0.1.3-alpha.1 (GitHub tag, verified 2026-09-06: full gate chain + profile install smoke). npm dependency line pinned to 0.1.2-rc.1; peers >=0.1.2-rc.1 <0.2.0.
Node ^22.19.0 || >=24.0.0
Form Pure-host JS plugin (no browser half)
Model Any model — repair is deterministic, no extra model calls

What you get

Two independent surfaces, one bundle:

  • /translate — the vendor parameter translation table: temperature, top_p, max_tokens, stop, system, and 8 more canonical parameters mapped across 11 vendors (OpenAI, ERNIE, Qwen, Anthropic, Google, DeepSeek, Mistral, Cohere, xAI, Groq, Azure). Ask for a pairwise mapping, list vendors/params, or convert a whole standard request (transformRequest in lib/rosetta.mjs).
  • The repair layer — a tools/post-execute listener plus the fix_json tool. When a successful tool result carries broken JSON as a string (string-rooted or json-rooted output schema, or a tool opted in by name), the layer repairs it deterministically: markdown-fence extraction, escape repair, trailing-comma removal, truncation closure, and required-field completion with explicit null placeholders. No value is ever invented — a result that still violates the schema fails closed, and failed tool results are never flipped into successes.
tool result (success, JSON text) ──▶ extract fence ──▶ parse
    │ ok? ──▶ schema-validate ──▶ accept { kind: 'accept', value }  (registry re-validates + re-renders)
    │ broken ──▶ escape / trailing-comma / close / fill-null ──▶ validate
    │ unrepairable ──▶ next()  (original value preserved) + translate/fix audit (counts only)

Quick start

# 1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-translate#main"

# or from npm (published releases)
dsh plugin --profile web add dsh-translate

# 2. restart and verify the row
dsh --profile web --dump-config | grep -A2 'id: dsh-translate'

Then ask the agent to check a mapping or repair a payload:

> /translate openai ernie max_tokens
> Use fix_json to repair: {"a": 1,} against {"type":"object","properties":{"a":{"type":"integer"}},"required":["a"]}

Install & uninstall

  • git channel (latest main): dsh plugin --profile web add "github:PerryLink/dsh-translate#main" — pure JS, no build step.
  • npm channel (published releases): dsh plugin --profile web add dsh-translate.
  • tarball channel: pnpm pack in this repo, then dsh plugin --profile web add ./dsh-translate-<version>.tgz.
  • uninstall: dsh plugin --profile web remove dsh-translate (or remove the row from the profile patch).

Configuration

All tunables are Schemastery Config fields (changeable from cordis.yml). An id-targeted override replaces the whole row — restate every key you need. cordis.patch.yml documents each key inline.

Key Default Meaning
enabled true Master switch; false registers nothing
repair.enabled true Post-execute repair layer switch
repair.toolNames [] Extra tool names whose JSON-text results may be repaired (on top of string-rooted / json-rooted schemas)
repair.strategies.escapeRepair true Escape raw control characters inside strings
repair.strategies.trailingComma true Remove commas directly before a closing bracket
repair.strategies.truncationClosure true Close an unclosed string or container cut off by truncation
repair.strategies.fieldCompletion true Complete missing required fields with explicit null placeholders
repair.maxSteps 8 Strategy application budget (repair-loop passes, 1..64)
diffMaxChars 200 Cap on one logged diff fragment, in characters
diffMaxEntries 50 Cap on logged diff entries
registerCommand true Register the /translate command
registerTool true Register the fix_json tool
rosettaDataPath (none) Optional external rosetta data file (same shape as the bundled lib/rosetta-data.json); overrides the built-in mapping table

Example override in your profile patch:

- 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

Tools & surfaces

Surface Kind Notes
/translate command vendors, params, or <from> <to> [param] pairwise mapping
fix_json tool { text, schema?, strategies? }{ ok, repaired?, diff?, strategies, truncated, validated, error? }; diff fragments are bounded and sanitized
post-execute repair listener Automatic for successful string results from string-rooted / json-rooted schemas (plus repair.toolNames); always calls next() unless it claims the call

Permissions & data

  • Permissions: no network, no subprocess, no credentials — the plugin only consumes the official commands and tools services and appends to the session log.
  • Data: repair never fabricates values; the only model-visible additions are the repaired canonical value and the fix_json diff. Session audit events (translate/fix) carry tool name, call id, strategy names, edit counts, and truncation flags — never payloads. The audit write is gated by the host’s session-event vocabulary: hosts that know translate/fix get the plain two-argument append, hosts with the ignorable append envelope get the marked append, and envelope-less hosts (0.1.0-rc.60.1.1-rc.2, 0.1.2-rc.1) get no audit append — the tool result remains the model-visible log. 0.1.2-rc.1 (adapted 2026-09-04): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged.

Security boundaries

  • Deterministic only. Repair is bounded text surgery; the upstream LLM-retry arm of JSON-Schema-Enforcer-Proxy was deliberately not ported — a post-execute listener never calls a model.
  • Fail closed. Unrepairable syntax and schema violations leave the original result untouched (or return a structured error from fix_json); null placeholders only land when the schema accepts null.
  • Hostile input bounded. Unsupported schema keywords and circular schemas are rejected; oneOf validation is capped by depth (MAX_ONE_OF_DEPTH) and a branch budget (MAX_ONE_OF_BUDGET), so an exponential schema cannot exhaust the process.
  • No payload leakage. Logs and audit events never contain repaired payloads; diffs are truncated and capped before display or storage.

Known limitations

  • The supported JSON Schema subset mirrors the harness tool registry (type/oneOf/properties/required/additionalProperties/items/enum/const); other keywords are rejected as unsupported, not silently ignored.
  • Repair only applies to successful results whose canonical value is a JSON-text string; a value that already failed schema validation arrives as a failed result and is never flipped.
  • The translation table covers 11 vendors × 13 canonical parameters; extended rows follow public API references (not the upstream trio) and are marked as such in lib/rosetta.mjs.
  • On hosts that neither know translate/fix nor expose the ignorable append envelope — the published 0.1.0-rc.60.1.1-rc.2 line and 0.1.2-rc.1, which fails closed on unknown event types at read — the adaptive gate skips the audit append so the session log is never polluted; the in-log audit mirror is lost on those hosts until the event type is registered.

Development

pnpm install        # node ^22.19 || >=24
pnpm test           # node --test: 79 tests (pure lib suites + real-service assembly suite)
pnpm run check      # tsc checkJs against types.d.ts
pnpm run verify:self-contained  # dependency specs resolve from the registry
pnpm run verify:artifacts       # ESM face imports under plain Node + lib exports present
node scripts/check-readme-sync.mjs  # five-language README sync gate (also in CI)
pnpm pack           # the published tarball

Topics

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

Contributors

  • @PerryLink — creator and maintainer: translation table and repair pipeline ports, plugin surfaces, tests, and the five-language docs.

PerryLink DSH Plugin Family

This project is one of the 33 DeepSeek Harness plugins maintained by PerryLink. If this one helps you, the others likely will too:

Plugin One-liner
dsh-dsh-auto-review Second-model auto-review on the approval chain, fail-closed by default
dsh-dsh-background-agents Durable background child agents with a Web UI sidebar, messaging and interrupt
dsh-dsh-budget Cost governance for DeepSeek Harness: budgets, carbon, and latency in one panel.
dsh-dsh-checkpoint-rewind Claude Code /rewind-equivalent: snapshots, session forks, one-shot restore
dsh-dsh-claude-move Migrate Claude Code sessions, memory, skills and CLAUDE.md into DSH
dsh-dsh-click Cross-platform native desktop control for DeepSeek Harness — Windows first.
dsh-dsh-composer-history Terminal-style input history for the web composer: arrows, Ctrl+R search
dsh-dsh-data-quality Dataset quality checks and citation cross-checks (the optional numeric bridge consumed here)
dsh-dsh-defend Prompt-injection, jailbreak, and secret-leak defense for DeepSeek Harness.
dsh-dsh-doublecheck Engineering-discipline guard: requirements grill, test gates, adversary review
dsh-dsh-draw Unified static-image generation routing for DeepSeek Harness.
dsh-dsh-fast Read-only performance diagnostics for DeepSeek Harness.
dsh-dsh-fund-research Deterministic research reports for Chinese public mutual funds
dsh-dsh-github GitHub PR/issues integration for DSH, every write gated by approval
dsh-dsh-industry-research Industry research orchestration that seals its deliverables through this plugin's ctx.researchReport.assemble
dsh-dsh-library Local document knowledge base for DeepSeek Harness.
dsh-dsh-local-ai Local-model (Ollama) integration for DeepSeek Harness.
dsh-dsh-lsp-actions LSP diagnostics, formatting, completion, code actions and rename over language servers
dsh-dsh-mask PII masking middleware: anonymize at the model boundary, restore at the display layer
dsh-dsh-mcp-panel Read-only MCP runtime panel: /mcp command + Settings tab with status, tools and errors
dsh-dsh-memento Approval-gated cross-session memory: ctx.memory seam + SQLite + memory tool
dsh-dsh-observe OpenTelemetry and Langfuse observability exporter for DeepSeek Harness.
dsh-dsh-output-styles Claude Code outputStyles-equivalent runtime style switching
dsh-dsh-permission-rules Claude Code-style declarative allow/deny/ask permission rules with audit
dsh-dsh-plugin-guide Plugin-development knowledge base as an on-demand agent skill
dsh-dsh-research-report Verifiable research-report engine: content-addressed evidence ledger and sealed versions
dsh-dsh-score Multi-dimensional quality scoring for DeepSeek Harness plugins.
dsh-dsh-session-pin Pin sessions in the Web sidebar with durable ordering
dsh-dsh-session-sync Cross-device session sync for DeepSeek Harness — a dedicated git mirror of your session store.
dsh-dsh-skill-pack-security Security-audit skill pack: secret scan, dependency and supply-chain review
dsh-dsh-talk Voice-first session loop for DeepSeek Harness: talk to it, hear it answer.
dsh-dsh-test-drive Isolated install-and-smoke test drives for DeepSeek Harness plugins.

Install from the DSH Desktop Market

All PerryLink plugins are browsable in the built-in DSH Desktop Market: Market → Sources → add source → paste https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → select it. Installation still goes through the Market's npm-identity verification and your confirmation.

License

Apache License 2.0 © 2026 dsh-translate contributors

Operate deliberately

Install and manage

Prerequisites and target Profile

Target Web Profile

Delivery Dsh Bundle Git — PerryLink/dsh-translate#d11772c414f5c290b24f9ce79511a63ab81a19d6

Verify, update, and remove

Show lifecycle commands
Verify
dsh plugin --profile web list

Compatibility and access

Declared DSH profile Bundle compatibility DSH 0.1.2-rc.1; peers >=0.1.2-rc.1 <0.2.0; Node ^22.19.0 || >=24.0.0

Review compatibility evidence

Risk facts

Permission

Reads files and may append session audit events; declares no network or native code.

Evidence
Data Handling

Optional external Rosetta mapping data can be read from a configured file path.

Evidence
Evidence and editorial reviewManifest, Bundle patch, distribution and freshness

Immutable evidence

Review status and source activity

AI reviewed

Use the immutable Git source when you want the reviewed bundle identity; assess its behavior in a non-production profile before relying on automatic repair.

AI reviewed Sep 10, 2026, 11:36 AM UTCGitHub facts last checked Sep 10, 2026, 11:36 AM UTC

No material source change has been recorded since this evidence baseline.

Next step

Follow the Plugin installation workflow

Subscribe to material changes for dsh-translate