DeepSeek Harness plugin

dsh-chat-tweaks

DSH web UI-tweak plugin: show the provider display name next to the model name in the composer model seat, remove the chat column max-width, and more — every feature has its own switch on a dedicated

Jump to install

Source facts

Repository
haiyoucuv/dsh-chat-tweaks
Latest update
Aug 17, 2026
Category
Models & Providers
GitHub stars
1
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/haiyoucuv/dsh-chat-tweaks
Plugin: dsh-chat-tweaks
Author: haiyoucuv

Check the source files

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

File explorer4 files
README_EN.mdSource · read only
README language

dsh-chat-tweaks

> A UI-tweak plugin for the DeepSeek Harness: show the provider display name in the composer model seat, remove the chat column max-width, and more — every feature has its own switch on a dedicated Settings → Chat Tweaks page, applied live without a restart. > > DeepSeek Harness 的界面美化插件:在模型选择器显示 厂商名、取消对话内容最大宽度等,每个功能都在独立的设置 → 聊天增强 页面中独立开关,全部即时生效、无需重启。

![License: MIT](LICENSE) ![GitHub release](https://github.com/haiyoucuv/dsh-chat-tweaks/releases)

中文 | English

Features

SwitchEffect
Show provider nameThe composer model seat shows the provider display name next to the model name, so identical model names from different providers are distinguishable (e.g. DeepSeek · DeepSeek-V4-Flash)
Remove content max-widthThe message column is no longer capped at 748px (--dsh-chat-content-width) and fills the available space

Features are organized as a registry (src/client/features.ts) — adding a UI tweak = one registry entry + two locale keys, and the settings page grows a switch automatically (see [Adding a feature](#adding-a-ui-feature)).

Screenshots

Settings → Chat Tweaks (dedicated page):

![Chat Tweaks settings](docs/screenshots/settings-section.png)

Model seat with provider label:

![Model seat with provider label](docs/screenshots/model-seat.png)

Install

# From GitHub (recommended, once published)
dsh plugin --profile web add https://github.com/haiyoucuv/dsh-chat-tweaks/archive/refs/tags/v0.1.0.tar.gz

# Or from a local directory (development)
dsh plugin --profile web add link:/path/to/dsh-chat-tweaks

> You can also install it with pnpm directly in the profile directory: > > ``bash > cd ~/.dsh/profiles/web && pnpm add /path/to/dsh-chat-tweaks > ``

> ⚠️ The old dsh-model-provider-label plugin is deprecated: its "show provider name" feature has been merged into this plugin. If you installed the old version, remove it first — both shadow the single conversation.input.model slot at priority -100, and coexistence throws: > > ``bash > dsh plugin --profile web remove dsh-model-provider-label > `` > > Guide and historical releases of the old plugin: <https://github.com/haiyoucuv/dsh-model-provider-label>

Restart dsh web (Ctrl+C, then run dsh web again) so the browser client loads the plugin bundle.

Expose the settings namespace (required, once)

> ⚠️ Known limitation of this DSH version: browser-visible settings namespaces are gated by a hardcoded allowlist (WEB_SETTINGS_NAMESPACES) in dsh-host-apiproxy. Without this step the switches render disabled and writes fail (error settings-not-exposed).

Run the idempotent patch script shipped with the plugin (re-run after a profile reinstall or a dsh upgrade):

npm run expose   # same as: node scripts/patch-apiproxy.mjs

Then restart dsh web again. The switches now read/write normally and values persist in ~/.dsh/settings.yaml.

Usage

Open Settings → Chat Tweaks and toggle:

  • Show provider name — provider prefix on the model seat;
  • Remove content max-width — full-width message column.

All changes apply immediately; no restart needed.

Development

pnpm install          # installs esbuild / typescript dev deps
npm run build         # builds lib/index.js (node half) + lib/client.js (browser half)
npm run typecheck     # TypeScript type check

lib/ is generated by scripts/build.mjs and committed; rebuild after editing src/ (a page refresh is enough, no server restart).

How it works

  • Node half (src/index.ts): registers the dsh-chat-tweaks settings namespace (defaults on); values persist to ~/.dsh/settings.yaml.
  • Browser half (src/client/):

- subscribes to the settings via ctx.settingsScope.bind; features carrying an apply run their side effect live; - registers a dedicated Settings tab (settings.section) "Chat Tweaks" (nav label + page, alongside Models / Plugins / Agent Presets / File Mentions), with one switch per FEATURES registry entry; - shadows the conversation.input.model seat at priority -100; the provider-name switch drives the trigger reactively (data reuses the host modelDirectories service, so behavior matches the stock implementation).

The full-width CSS targets the stable [data-chat-flow] attribute (hash-independent) and overrides the stock rule with !important; the switch injects/removes a <style> tag live.

Adding a UI feature

1. Add one entry to FEATURES in src/client/features.ts: { key, labelKey, descKey, default, apply? } - apply(enabled) — side effect when the switch flips (inject/remove CSS or DOM); - render features (e.g. provider name) don't need apply; components read the settings scope reactively. 2. Add the label / desc locale keys to zh / en in src/client/index.tsx. 3. Add the matching field to the schema in src/index.ts (default must match the registry). 4. npm run build, refresh — the settings page grows a switch automatically.

FAQ

SymptomCause & fix
Switches are disabledNamespace not exposed: run npm run expose, then restart dsh web
UI unchanged after code editslib/ not rebuilt: run npm run build, then refresh
Model seat missing / errorCoexists with old dsh-model-provider-label: uninstall the old plugin
Where are values storedThe dsh-chat-tweaks section of ~/.dsh/settings.yaml

Compatibility

  • Target: DeepSeek Harness web (dsh --profile web), 0.1.0-rc.6 series;
  • Dependencies: see peerDependencies in package.json.

License

[MIT](LICENSE) © dsh-chat-tweaks contributors