Skip to content
dsh.fish
Bundle

dsh-reasoning-translator

DeepSeek Harness plugin: display-layer translation of reasoning and answers via Chrome Translator or an OpenAI-compatible API

Source
pinkllo
stars
3 stars
License
MIT
Updated
Updated 19 hours ago

Readme

# dsh-reasoning-translator

English | [中文](README.zh.md)

A [DeepSeek Harness](https://github.com/deepseek-ai/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](https://developer.chrome.com/docs/ai/translator-api) instead.

## Install

```sh
# 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

| Option | Default | Effect |
|---|---|---|
| Target language | `zh` | Language of the displayed translation. |
| Translate reasoning | on | Show a control on Think blocks. |
| Translate answer | on | Show a control on the final answer. |
| Mode | On demand | `always` translates when a turn settles; on demand waits for the button. |
| Display | Original and translation | `Translation only` replaces the reasoning/answer body instead of showing both languages. |
| Backend | Chrome built-in | Or OpenAI-compatible. |
| Endpoint / model / API key | OpenAI defaults | Used only for the OpenAI backend. `TRANSLATION_OPENAI_API_KEY` or `OPENAI_API_KEY` can supply the key instead. |

## Develop

```sh
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](LICENSE)

Install

dsh plugin --profile web add github:pinkllo/dsh-reasoning-translator#5f87acf6917d3a15439a934a771d8a98c902f2a0

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
Source