DSH Plugin Store
Back to home

pinkllo

dsh-reasoning-translator

DeepSeek Harness plugin: make the model write its chain-of-thought in your language

Stars
2
Language
TypeScript
Created
Aug 13, 2026
Updated
Aug 14, 2026
Other
GitHub repo

Introduction

dsh-reasoning-translator

English | 中文

A DeepSeek Harness plugin that translates visible reasoning and final answers in the Web UI only. Session logs are not rewritten.

How it works

The plugin is a Host + browser pair:

  • Chrome Translator / LanguageDetector (desktop Chrome 138+ or recent Edge): free, on-device, no API key. The first use of a language pair may download a pack and needs a click.
  • OpenAI-compatible API: the Host process calls the endpoint you configure in Settings, so the browser does not hit CORS.

Before translating, the plugin detects the source language and skips text that is already in the target language. You can translate reasoning, the final answer, or both; run automatically or from a per-block Translate button. Preferences restore instantly from localStorage (the API key is never cached there) and sync to the Host settings.yaml translation section, debounced; when the two copies differ, the most recently edited one wins. The Web settings RPC does not expose out-of-tree namespaces, so the plugin uses its own same-origin route.

This is not Chrome’s right-click “Translate this page”. Web pages cannot invoke that menu. The plugin uses the Translator API instead.

Install

# From a local checkout
dsh plugin --profile web add /absolute/path/to/dsh-reasoning-translator

# From GitHub (source install — allow the prepare build when prompted)
dsh plugin --profile web add github:pinkllo/dsh-reasoning-translator

# From npm, once published
dsh plugin --profile web add dsh-reasoning-translator

Then start dsh web (or pnpm dsh web from a harness checkout). Open Settings → Translation.

Settings

OptionDefaultEffect
Target languagezhLanguage of the displayed translation.
Translate reasoningonShow a control on Think blocks.
Translate answeronShow a control on the final answer.
ModeOn demandalways translates when a turn settles; on demand waits for the button.
DisplayOriginal and translationTranslation only replaces the reasoning/answer body instead of showing both languages.
BackendChrome built-inOr OpenAI-compatible.
Endpoint / model / API keyOpenAI defaultsUsed only for the OpenAI backend. TRANSLATION_OPENAI_API_KEY or OPENAI_API_KEY can supply the key instead.

Develop

pnpm install
pnpm run build
pnpm test        # pure-function unit tests, needs Node 22.6+ (type stripping)
# from a deepseek-harness checkout:
pnpm dsh plugin --profile web add /absolute/path/to/dsh-reasoning-translator
pnpm dsh web

Open http://127.0.0.1:3080. After changing client sources, rebuild and restart dsh web.

Cursor’s embedded browser is Chromium without Chrome’s on-device Translator. If 'Translator' in self is false there, retest in desktop Chrome at the same URL.

License

MIT