Switch the language of the agent's thinking/reasoning process (chain-of-thought): 简体中文, English, Русский, Français, Deutsch, Español, 日本語, 한국어 and more, or auto-follow the system locale. Adds a Settings → General row, a system-prompt instruction (per-prompt assembly, applies to new sessions), and the /thinking-language command.
Install
# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)
dsh plugin --profile web add github:qingmomo233/dsh-thinking-language
Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).
README
简体中文 | 🌐 English
dsh-thinking-language
A DeepSeek Harness plugin that lets you switch the language of the agent's thinking/reasoning process (chain-of-thought). Supports Chinese, English, Russian, French, German, Spanish, Japanese, Korean and many more mainstream languages, or "auto" to follow the system locale.
What it does
- Settings row — Settings → General now shows a Thinking language picker with the same Setting-Cell layout as the built-in Language / Permission rows: title and hint on the left, the selector pill (dropdown menu) on the right.
- System prompt instruction — when a language is selected, the plugin injects an instruction telling the model to write its internal reasoning in that language. With Follow the system (auto) the instruction uses the system UI locale (Settings → General → Language; defaults to Chinese). The instruction is evaluated per prompt assembly, so it applies to every new session. Existing sessions keep the prompt they already composed.
/thinking-languagecommand — set or inspect the language directly from chat, e.g./thinking-language ruor/thinking-language auto.
The setting is stored in the standard user-settings document under the
thinking-language namespace, so it survives restarts and is shared by the
settings row and the command.
The final answer to the user is not affected: the setting only targets the model's internal thinking/chain-of-thought.
Supported languages
auto (follow the system) · zh-CN 简体中文 · zh-TW 繁體中文 · en English ·
ru Русский · fr Français · de Deutsch · es Español · pt Português ·
it Italiano · ja 日本語 · ko 한국어 · ar العربية · hi हिन्दी ·
tr Türkçe · vi Tiếng Việt · th ไทย · pl Polski · uk Українська ·
nl Nederlands · sv Svenska · id Bahasa Indonesia · cs Čeština
Install
Run once from a shell (adjust the profile name if you use a different profile,
e.g. desktop):
From GitHub (recommended):
dsh plugin --profile web add github:qingmomo233/dsh-thinking-language
Or from a local source checkout:
dsh plugin --profile web add C:\ZiYong\ds-hs-work\dsh-thinking-language
The command installs the package into the profile and appends it to the
profile's bundle layer (because the package declares dsh.bundle.patch).
One-time harness patch (settings exposure)
DeepSeek Harness keeps a hard-coded allowlist of settings namespaces that the
browser may read/write (WEB_SETTINGS_NAMESPACES in dsh-host-apiproxy), so a
plugin-owned namespace is registered host-side but refused by the browser
(settings-not-exposed) until it is added to that list. This installation
already applied the one-line patch to the installed dsh-host-apiproxy
(both the profile copy and the CLI install share the same file). To re-apply it
after a reinstall or on another machine, run:
node scripts\patch-apiproxy.mjs
Then restart the GUI (dsh web / the desktop app) — bundle layers, the
client-module scan, and the patched allowlist are read at boot, so a page
refresh alone is not enough.
Usage
- Open Settings (gear icon) → General.
- Pick a language in the Thinking language row (or choose Follow the system (auto) to use the system UI locale).
- Start a new session — its thinking process is written in the selected language.
Or from chat:
/thinking-language → show the current value and usage
/thinking-language ru → set Russian
/thinking-language auto → back to auto
/thinking-language 日本語 → ids, English names, and native names all work
How it works
| Part | File | Role |
|---|---|---|
| Host entry | lib/index.js |
registers the thinking-language settings namespace, the app:thinking-language system-prompt section (order 85), and the /thinking-language command |
| Browser bundle | lib/client.js |
registers the picker row into the settings.general.item slot; reads/writes the same namespace through the client settings scope |
| Bundle patch | cordis.patch.yml |
inserts the plugin row into the composed profile tree |
The two halves share the thinking-language settings namespace, so changing
the value in either surface keeps the other in sync.
Links
More in this category
liangmianya/dsh-synapse★ 264
Visual, non-linear conversation workspace for DeepSeek Harness — sessions, follow-ups and branches become a browsable conversation map.
Totoro-qaq/dsh-plugin-bridge★ 163
Moves an existing DSH session to another agent preset through a previewable five-section handoff, preserving the source session and either pausing the target for confirmation or continuing immediately.
Nwflower/dsh-chat-import★ 125
Import full-fidelity chat histories from 13 coding agents (Claude Code, Codex, ChatGPT, Cursor, Gemini, opencode, and more) as resumable DeepSeek Harness sessions, with reverse export back to Claude Code.
Anionex/dsh-turn-rewind★ 106
Rewind conversation and workspace state, powered by a persistent Change Ledger.
Renzic-Stone/DSH-EasyRewrite★ 98
Inline-edit and recall your own user messages in dsh web — lazily and seamlessly, with a version pager and per-session draft persistence.
lamost423/dsh-trace-compare★ 60
Trace Compare & Live Maze: draw the agent's real exploration — main path, failed or dead-end detours, backtracks, and subagent branches — on one wall-clock timeline; upload 1–2 session logs for a same-axis compare, or watch it grow live in a session tab.
Community comments
Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.