DeepSeek Harness plugin

dsh-think-any-lang

DeepSeek Harness plugin: a General-settings selector that chooses which language the model reasons in, via a system-prompt section.

Jump to install

Source facts

Repository
lco117/dsh-think-any-lang
Latest update
Aug 14, 2026
Category
UI Enhancements
GitHub stars
3
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/lco117/dsh-think-any-lang
Plugin: dsh-think-any-lang
Author: lco117

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

dsh-think-any-lang

<p align="center"> <img src="https://img.shields.io/badge/DeepSeek%20Harness-Plugin-4D6BFE?style=for-the-badge&logo=deepseek" alt="DeepSeek Harness Plugin"> </p>

<div align="center">

![GitHub Stars](https://github.com/lco117/dsh-think-any-lang/stargazers) ![GitHub Forks](https://github.com/lco117/dsh-think-any-lang/network/members) ![GitHub Issues](https://github.com/lco117/dsh-think-any-lang/issues) ![GitHub Pull Requests](https://github.com/lco117/dsh-think-any-lang/pulls) ![License](LICENSE) ![English](README.en-US.md) !简体中文

</div>

<div align="center">

![dsh-plugin](https://github.com/topics/dsh-plugin) ![Languages](index.js) ![Zero latency](index.js) ![Plain JS](client.js)

</div>

A DeepSeek Harness plugin that adds a Thinking Language dropdown under Settings → General, letting you choose which language the model uses for its reasoning / chain of thought (中文, English, 日本語, 한국어, Deutsch, …). The final reply stays in the user's language.

<p align="center"> <a href="#screenshots">Screenshots</a> · <a href="#features">Features</a> · <a href="#how-it-works">How it works</a> · <a href="#installation">Installation</a> · <a href="#usage">Usage</a> · <a href="#development">Development</a> · <a href="#publishing">Publishing</a> · <a href="#star-history">Star History</a> </p>

---

Screenshots

<table> <tr> <td align="center" width="50%"><img src="screenshots/01.webp" alt="Thinking language selector in Settings → General"><br><b>Selector in General settings</b><br><sub>Pick it right from the settings page</sub></td> <td align="center" width="50%"><img src="screenshots/04.webp" alt="The thinking-language selector box"><br><b>The selector box</b><br><sub>Click to expand and pick a language</sub></td> </tr> <tr> <td align="center" width="50%"><img src="screenshots/02.webp" alt="Expanded language dropdown"><br><b>All languages in one dropdown</b><br><sub>off plus 12 languages in one list</sub></td> <td align="center" width="50%"><img src="screenshots/03.webp" alt="dsh-think-any-lang in the plugin list"><br><b>In the plugin list</b><br><sub>Listed under plugin management after install</sub></td> </tr> </table>

---

Features

  • Settings → General → Thinking Language: a dropdown to pick the language the model thinks in.
  • Zero latency, zero extra calls: implemented as a system-prompt instruction (systemPrompt.section) — no extra model calls or response delay like "translate the reasoning" approaches.
  • Instructions written in the target language: each instruction is written in its own language (e.g. the English instruction is written in English), which improves model adherence.
  • Persisted: the choice is stored in the user settings document (settings service) and survives restarts.
  • Plain JS, no build step: both the host and browser halves are hand-written JavaScript; install straight from GitHub with zero friction.

Supported languages: off (follow default, no instruction), Simplified Chinese, English, 日本語, 한국어, Deutsch, Français, Español, Português, Русский, Italiano, العربية, हिन्दी.

---

How it works

HalfResponsibility
index.js (host half)Registers the think-any-lang settings namespace (language field, enum, default zh); watches for changes and mounts systemPrompt.section (named think-any-lang) when non-off, unmounts on off; also registers a private loopback RPC channel /think-any-lang (get/set) that the browser half uses to read/write the namespace
client.js (browser half)Registers a settings.general.item row via the window.__ModuleLoader__.load contract; renders the dropdown and reads/writes the setting through the host half's /think-any-lang RPC channel

> Why a private RPC channel instead of the settings RPC surface? dsh-host-apiproxy only exposes an explicit allowlist of settings namespaces to configuration clients (WEB_SETTINGS_NAMESPACES / PRODUCT_SETTINGS_NAMESPACES); a third-party namespace answers settings-not-exposed, so the selection would never persist. The browser half therefore talks to a private channel registered in-process (ctx.connection.rpc.handle), and in-process ctx.settings access is not filtered by that allowlist — persistence and the systemPrompt linkage stay unchanged.

> The language table is maintained in two places — index.js (instruction texts) and client.js (display labels): the browser factory's require only resolves platform modules and cannot read local modules, so each half keeps its own language view. Keep both files in sync when adding a language.

---

Installation

Requirements: dsh CLI installed with an initialized profile (dsh plugin --profile <name> add auto-initializes).

From GitHub (recommended)

dsh plugin --profile web add github:lco117/dsh-think-any-lang

> The package is pure JS with no prepare build script, so no pnpm ≥10 allowBuilds approval is needed — install straight from GitHub. Pinning to a commit is recommended as in the official docs: github:lco117/dsh-think-any-lang#<commit-sha>.

From a local directory (development)

dsh plugin --profile web add ./dsh-think-any-lang

Verify

dsh --profile web --dump-config   # should show a "# == dsh-think-any-lang" layer

---

Usage

1. Start dsh web. 2. Open Settings → General. 3. Pick a language in the Thinking Language dropdown (default: Chinese). 4. Subsequent model calls receive the thinking-language instruction in the system prompt; DeepSeek reasoning models typically output reasoning_content in the chosen language.

---

Development

dsh-think-any-lang/
├── package.json       # declares dsh.bundle and dsh.client
├── cordis.patch.yml   # plugin row: mounts both halves of this package
├── index.js           # host half: settings namespace + systemPrompt.section
├── client.js          # browser half: settings row UI (hand-written factory bundle)
├── README.md          # 中文说明
├── README.en-US.md    # English docs
└── screenshots/       # README screenshots (webp)

---

Tech Stack

CategoryTech
Plugin platformDeepSeek Harness (DSH)
Plugin frameworkCordis
LanguageJavaScript (ESM)
Schema@deepseek-ai/schemastery
BuildNone (plain JS, install straight from GitHub)

---

License

[MIT](LICENSE) © 2026 lco117

---

⭐ Star History

If this project helps you, give it a ⭐ to help more people discover dsh-think-any-lang.

<a href="https://www.repostars.dev/?repos=lco117%2Fdsh-think-any-lang&theme=ocean"> <img alt="Star History Chart" src="https://www.repostars.dev/api/embed?repo=lco117%2Fdsh-think-any-lang&theme=ocean" /> </a>