DSH Plugin Hub

dsh-composer-polish

By tianji-qingtian · community

Composer draft polisher for DeepSeek Harness: a ✨ button in the composer tool row rewrites the current draft with a zero-prefix flash call and fills the polished text straight back into the input box. (Original language)

DeepSeek Harness plugin in Miscellaneous

Installation

Installation information is not available. Consult the upstream source; no install command is provided.

Alternative installation methods

Sources

README

README status: fetch_failed — GitHub metadata HTTP 403 · Showing previous excerpt fetched2026-11-05T22:11:29.495Z

dsh-composer-polish

One-click draft polisher for the DeepSeek Harness (dsh) composer. Type a rambling draft, hit the ✨ 润色 / Polish button in the input tool row, and a few seconds later the polished text replaces the draft in the input box — you preview, maybe edit, then send. No scoring, no evaluations: draft in → better draft out.

The harness is in developer preview and iterates quickly — expect compatibility-breaking changes.

中文说明见 README.zh.md。

Features

Screenshots

The ✨ Polish button in the composer tool row, next to the send button:

polish button demo

Install

Prerequisites

The dsh CLI must be on your PATH. If you only ever ran the harness through npx, dsh is not installed and you will get zsh: command not found: dsh — install it globally first. This release targets harness 0.2.0-rc.1 (for an older harness use tag v0.1.5):

npm install -g @deepseek-ai/dsh

pnpm add -g @deepseek-ai/dsh also works if your pnpm global bin dir is on PATH (otherwise pnpm asks you to run pnpm setup first). Alternatively skip the global install and prefix the commands below with npx @deepseek-ai/dsh ….

Add the bundle

# 1. add the bundle to your web profile (pnpm-backed; the built lib/ artifacts
#    are committed in this repo, so no build script runs at install time)
dsh plugin --profile web add "github:tianji-qingtian/dsh-composer-polish#v0.1.6"

# 2. restart the harness with that profile — `add` only edits the profile
#    files; a running instance does not hot-load the new bundle
dsh --profile web

After the restart the ✨ button appears in the composer tool row, next to the send button, and the /polish command is registered once the host half loads. Verify under Settings → Plugins that dsh-composer-polish is listed.

How it works

Piece Mechanism
Button seat conversation.input.right list slot (session scope); the standard kit's selector hook useInput((s) => s) reads the draft, inputActions.setDraft() writes it back
Client → Host built-in commands remote, hard-injected (inject: ['remote', 'remote.commands']): ctx.remote.commands.execute(sessionId, '/polish ' + draft) — the same roundtrip the shipped slash commands use; no custom RPC
Host rewrite /polish command handler → zero-prefix ctx.llm.stream on deepseek-official / deepseek-v4-flash (reasoningEffort: 'off', maxTokens 2000), one-shot, with a one-time catalog fallback when the pinned model id is unavailable
Result channel handler returns { kind: 'success', text }; the client reads it from CommandExecution.result.text and fills it back via setDraft
Privacy recordInput: false → command/run omits args, so the raw draft is never written to the session log
Stale-edit guard the client captures draftRev at click time; if the draft changed while polishing, the result is discarded instead of clobbering newer edits
Draft cap both halves cap the draft at 50 KB; longer drafts are truncated client-side before sending

Behavior spec (from REQUIREMENTS.md)

# Scenario Behavior
1 Non-empty draft, click ✨ read draft → flash rewrite → fill back
2 Empty / whitespace-only draft button disabled
3 Rewrite fails / returns empty draft untouched, console log only, no toast
4 Rewrite in flight button shows spinner, repeat clicks blocked
5 Draft has image attachments only the text is polished; images untouched
6 Chinese / English draft rewritten in the draft's language
7 Code blocks / lists / technical terms structure kept, code verbatim, no accuracy changes

Harness compatibility

Built and verified against harness 0.2.0-rc.1.

The harness checks a plugin's @deepseek-ai/dsh* peerDependencies ranges both when the package is installed and when a profile starts. A plugin whose declared range does not cover the running dsh --version is refused or skipped (skipping profile bundle "dsh-composer-polish": Plugin dsh-composer-polish@… is incompatible with dsh …), which is why an outdated plugin simply disappears from the composer after a harness upgrade. v0.1.6 widens the ranges to ^0.2.0-rc.1; the host code itself needed no change — commands.register (with recordInput), llm.stream, and the client-side useInput selector + inputActions.setDraft + remote.commands.execute(sessionId, line, []) are unchanged in 0.2.0. For the 0.1.x harness line use tag v0.1.5.

Build

pnpm install
pnpm build   # tsdown: lib/index.js (ESM host) + lib/client.js (ModuleLoader client bundle)

Known limitations

License

MIT

Read original README

Data as of 2026-11-05

Related plugins

Community

dsh-theme-cyberpunk2077

Cyberpunk 2077 / Night City theme for the DeepSeek Harness Web UI — NC yellow × neon cyan identity, CRT scanlines, Kiroshi hover lock-on, combat-state HUD, synthesized typewriter & message SFX, boot glitch, Relic interference, slang chips, and hidden easter eggs (try sending: relic / johnny).

Community

@anionex/dsh-vision-toolkit

DeepSeek Harness-native integration for agent-vision-toolkit: image Q&A, OCR, grounding, UI restoration, pixel diff, Artifacts, and Web UI.

Community

local-shell-mcp-dsh

DeepSeek Harness bridge for the full local-shell-mcp tool surface and per-session Live Workspace.

Community

@nanmicoder/dsh-agent-teams

AgentTeams for DeepSeek Harness: multi-agent team collaboration (captain, members, tasks with dependencies, messaging) driven by natural language, with a tree monitor in the web GUI

Community

@mars-sea/dsh-commandcode-provider

Unofficial DeepSeek Harness LLM provider plugin for Command Code, ported from pi-commandcode-provider (MIT). Registers the 'commandcode' provider route with a Models-page card and live model catalog.