DeepSeek Harness Plugin

wuaisaber/dsh-think-zh-plus

Stars ★ 2 Category UI Enhancements Added 2026-10-22

Keeps DSH reasoning in Simplified Chinese and auto-expands every Think row in the Web UI.

Install

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:wuaisaber/dsh-think-zh-plus

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

A DeepSeek Harness plugin with two halves:

  1. Chinese reasoning — contributes a system-prompt section that asks the model to think in Simplified Chinese, with code, commands, paths and errors kept verbatim.
  2. Always-visible thinking — a browser half that auto-expands every collapsed Think row in the Web UI and keeps thinking visually distinct from the final answer.

Why

DSH's model usually reasons in English even when the user writes Chinese, and every reasoning row starts folded; a long Turn additionally folds its whole process block. This plugin makes the reasoning channel Chinese and keeps every Think row open, without touching React internals.

Install

# from GitHub (works today)
dsh plugin --profile desktop add github:wuaisaber/dsh-think-zh-plus

# from npm, once published
dsh plugin --profile desktop add dsh-think-zh-plus

Use the profile that the app actually boots (desktop for DSH Desktop, web for dsh web). Restart the app or refresh the page afterwards.

To avoid DSH folding the whole completed Turn (not just the Think row), set the work-details mode to verbose in the profile patch:

- id: ui-chat
  name: "@deepseek-ai/dsh-client-ui-chat"
  config:
    transcriptView: verbose

Config

- id: think-zh-plus
  name: dsh-think-zh-plus
  config:
    language: 简体中文   # any language name
    target: think        # think = reasoning only; all = reasoning + reply
    enabled: true
    verbatim: true       # keep code/commands/paths untranslated
    # instruction: custom text, overrides the default section

Section order is -999 (right after the harness identity, before the persona) — a rule placed late in DSH's long English prompt was ignored in practice.

Behaviour notes

  • Auto-expansion clicks the row's own data-disclosure-row element, i.e. the component's supported toggle. It never calls React internals.
  • A row the reader toggles by hand is remembered in a WeakSet and left alone.
  • Injected style: an expanded Think block gets a thin left rule so it cannot be confused with the answer.
  • Diagnostics: window.__DSH_THINK_ZH_PLUS__ exposes { loadedAt, applied, scans, rowsSeen, expanded, lastError }.
  • Tested against DSH 0.2.1-rc.2 (DOM contract of ReasoningRow in @deepseek-ai/dsh-client-ui-chat).

Development

node --test test/host.test.mjs test/client.test.mjs

License

MIT. The host-half instruction text and config schema are adapted from lance808/dsh-think-zh (MIT). The DOM contract follows DSH's own ReasoningRow; the client code is original.

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.