DeepSeek Harness Plugin Hub

Publish and manage complete Harness Profiles. Discover Plugins for your next setup.

Explore

PluginsPresetsDocsNews

Community

Publish a pluginContactReport an issue

Resources

Plugin Hub on GitHubDeepSeek HarnessSystem statusPrivacy notice
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

Independent and unofficial. Not affiliated with, authorized by, or endorsed by DeepSeek.

Reasoning Language — DSH Plugin for DeepSeek Harness
DeepSeek Harness Plugin Hub
ProfilesPluginsCategoriesNewsDocsSign inManage Profiles
ProfilesPluginsCategoriesNewsDocsSign in
← Plugins
R

dsh-reasoning-language

Reasoning Language

Make the DSH agent's thinking process (reasoning) use a language you choose — Simplified Chinese by default — and expand thinking rows by default. / 让 DSH 的思考过程用指定语言(默认简体中文)输出,并把思考行默认展开。

The plugin will be installed here. Keep web if you are unsure.

npx -y @deepseek-ai/dsh plugin --profile web add github:jide315/dsh-reasoning-language#c2273c8ae1bcd3723c564a7c0cda05c03960427b
READMECompatibilityVersions

Compatibility and provenance

Reasoning Language is published as dsh-reasoning-language and currently resolves to version 0.1.0. The Hub verifies its manifest and preserves the exact installation source for reproducible installs.

DSH compatibility
*
Runtime surfaces
web
Release source
github
Registry updated
9/24/2026

Versions

0.1.0stable
9/24/2026
Latest
0.1.0
DSH
*
HMR
Process restart
Tree shaking
Safe tree shaking not declared
Unpacked size
Unavailable
Files
Unavailable
Surface
web
License
MIT
Source
github
GitHub
★ 0
Weekly downloads
0
Last push
9/24/2026
View source ↗
README badge

Click the badge to copy Markdown for your README.

Do you maintain this Plugin?Claim benefit · Priority security scan

Verify the GitHub repository declared in package.json to manage this listing. After you claim it, Hub will prioritize a security scan of the current version and publish the result when it passes.

Claim this Plugin →
Report an issue

README

dsh-reasoning-language

Make the DeepSeek Harness agent think in a language you choose — Simplified Chinese by default — and expand its thinking rows so you can actually read the reasoning while it runs.

The problem it solves: the model reasons in English (or another language you don't read), so the thinking process is an opaque box and you can't tell whether it is on track. This plugin injects the language requirement into systemPrompt, so the reasoning is written in your language from the start — and expands the Think rows by default so you can watch it.

What it does

CapabilityBehaviour
Thinking languageInjects a systemPrompt section asking the model to reason in a chosen language (Simplified Chinese by default)
Protects non-proseThe injected instruction explicitly requires code, identifiers, paths, commands, config keys, errors, logs, URLs and proper nouns to stay verbatim — so "make it Chinese" never degrades the reasoning
Answer language unchangedOnly the reasoning is constrained; the final answer still follows the user's language
Thinking rows expandedThink rows open by default, including while streaming. A row you collapse by hand stays collapsed — the plugin never fights your clicks, and turning the setting off only reclaims rows it expanded itself
Configurable in the GUISettings → Plugins → Thinking language. Changes apply to the next turn with no restart
New turns onlyExisting history is never rewritten (rewriting stored reasoning means rewriting compacted context — poor risk/reward)

Install

From GitHub:

dsh plugin --profile web add github:jide315/dsh-reasoning-language

The package is plain JavaScript and commits its runtime files, so GitHub installs do not need a build allowlist. Restart DSH Desktop after installation, then refresh the page.

After the catalog submission is merged, you can also install it from Settings → Plugin market by searching for reasoning-language.

For local development, run this from the directory containing the checkout:

dsh plugin --profile web add ./dsh-reasoning-language

Local-development gotcha: don't install a local plugin with file:*.tgz. Measured here: the resulting node_modules/dsh-reasoning-language lost its lib/index.js after a later pnpm install, the Harness failed to boot with Cannot find module ...\lib\index.js, and the desktop's startup-repair quarantined the plugin. link: is stable and needs no repacking.

If it fails to boot

Run dsh plugin --profile web remove dsh-reasoning-language. If DSH cannot boot, use the desktop's startup-repair dialog and choose uninstall this plugin; it keeps a recovery backup.

Settings

Settings → Plugins → Thinking language:

  • Enabled — turning it off is exactly equivalent to not having the plugin installed.
  • Thinking language — defaults to 简体中文. Set it to English to go back to English reasoning; any language name works, the model reads it as natural language. Effective from the next turn (the prompt is assembled per turn); existing history is untouched.
  • Expand thinking rows by default — on by default. Toggling it applies to the current page immediately (existing thinking rows expand or collapse) and persists across reloads.

Reset to defaults clears the fields you changed (unset) rather than writing the defaults back, so no redundant "equals the default" entries are left in settings.yaml.

Settings live under the reasoning-language key of $DSH_HOME/settings.yaml:

reasoning-language:
  enabled: true
  language: 简体中文
  expandThinking: true

How it works

  • Host half uses only public seams: ctx.settings.register() for the namespace and ctx.systemPrompt.section() for the section. The section's text is a function re-evaluated on every prompt assembly — that is why a settings change needs no restart.
  • No DSH source is modified and no built-in component is replaced.
  • Browser half: (1) binds the same settings namespace through ctx.settingsScope.bind() for the settings card; (2) the thinking-row collapsed state is a per-row useState(false) inside the built-in ReasoningRow with no global switch, so a MutationObserver plus a fallback poll finds collapsed Think rows and dispatches a real click — which goes through React's event delegation, so the component's state updates too (no "DOM expanded but state still collapsed" desync).
  • Bookkeeping: only rows the plugin actually opened are recorded, so a row you collapsed by hand stays collapsed, a row you opened by hand is never collapsed by the plugin, and turning the setting off only reclaims rows the plugin expanded.
  • The settings schema is a real schemastery schema. This matters: settings.describe() calls registration.schema.toJSON() unconditionally and has no fallback, so a schema that does not satisfy the contract breaks the entire settings panel, not just this card.

Tests

pnpm test                       # 26 assertions: host logic, settings-card interaction, expander
pnpm run test:integration       # 10 assertions: real DSH SettingsProvider / SystemPrompt

The smoke suite stubs the environment. The integration suite requires DSH Desktop, or a DSH_APP_ROOT pointing to a compatible DSH node_modules; it drives DSH's own FileSettingsProvider and SystemPrompt to prove describe() does not throw, the schema serialises, and a written setting reaches the rendered prompt.

Publishing

See PREPUBLISH.md for the full market-submission process, and node scripts/check-release.mjs for the pre-flight check.

Limitations

  • The thinking language is a request to the model, not a hard guarantee: an occasional model may ignore it. The instruction is placed late and specifically, which works well in practice; if a model does not comply, phrasing the language the way that model prefers (e.g. Chinese (中文)) usually helps.
  • Only newly generated reasoning is affected; history is untouched.
  • The expander relies on the built-in thinking row's data-variant="think" marker. If DSH drops that attribute the expander fails silently (no error, no broken UI) — update the selector.

Compatibility

  • Requires @deepseek-ai/dsh >= 0.1.5-rc.1.
  • Developed and verified on DSH Desktop 0.9.1 (dsh 0.1.5-rc.2).
  • Needs only the slots / locale / settingsScope client services; a missing one degrades rather than crashes.

License

MIT