tianji-qingtian/dsh-composer-polish
DeepSeek Harness plugin: one-click ✨ polish for composer drafts — flash rewrite, auto fill-back · DeepSeek Har
dsh-composer-polish is a one-click draft polisher for the DeepSeek Harness 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 rewrite answers in the draft's language and keeps the user's voice (strips filler without turning text more formal, salesy, or robotic); code blocks, file paths, command lines, identifiers, and technical terms stay verbatim. Image attachments are never touched — only the text is replaced. Failures leave the draft untouched (console log only, no toasts).
Install
dsh plugin --profile web add "github:tianji-qingtian/dsh-composer-polish#v0.1.5"GitHub bundle install per README (pinned release tag): dsh plugin --profile web add "github:tianji-qingtian/dsh-composer-polish#v0.1.5", then restart the harness with that profile (dsh --profile web) — add only edits the profile files; a running instance does not hot-load the new bundle. Built lib/ artifacts are committed, so no build script runs at install time. The dsh CLI must be on PATH (npm install -g @deepseek-ai/dsh) or prefix commands with npx @deepseek-ai/dsh. Verify under Settings → Plugins that dsh-composer-polish is listed. Re-verified 2026-09-18: README install line now pins #v0.1.5 (entry had #v0.1.3).
Compatibility
DeepSeek Harness (dsh) web profile, developer preview — compatibility-breaking changes expected. Client button sits in conversation.input.right (the official seat for clickable controls beside the send button); the host half rides the built-in commands remote (no custom wire protocol). Zero-prefix flash rewrite with a single deepseek-v4-flash stream (reasoningEffort 'off', ~2000 token cap); the main model never runs and its prefix cache is never touched, with a one-time flash-class fallback via llm.listModels. Draft cap 50 KB; stale-edit guard via draftRev; /polish registers recordInput: false so the raw draft never lands in the session log. i18n zh/en.
Details
- Repo: tianji-qingtian/dsh-composer-polish
- Category: Web UI Enhancements
- Stars: 6
- Version: GitHub bundle github:tianji-qingtian/dsh-composer-polish#v0.1.5 (README-pinned, re-verified 2026-09-18)
- Last push: 2026-09-03
- First seen: 2026-08-14
Recent updates
The current bilingual README (English primary) documents: features (the ✨ button, zero-prefix flash rewrite, fill-back not chat, fails silent, privacy, no custom wire protocol, i18n, language and voice following the draft), install with prerequisites, how it works (button seat, client → host commands remote, host rewrite, result channel, stale-edit guard, draft cap), and a behavior spec table from REQUIREMENTS.md.
FAQ
- Does polishing send the message?
- No — the polished text goes straight into the input box through inputActions.setDraft; nothing is sent until you press send. You can edit it again or polish a second time.
- What happens if the rewrite fails?
- It fails silent: a failed or empty rewrite leaves the draft untouched (console log only, no toasts), and double-clicks never fire a second request while the spinner is shown.
- Is my raw draft stored in the session log?
- No — the /polish command registers with recordInput: false, so the raw draft never lands in the session log; only the polished result is recorded in command/done.
Alternatives
timeance/dsh-approve-for-me · PerryLink/dsh-auto-review · whyihaveyou/dsh-suite