All plugins

DSH / BUNDLE / CLIENT-UI

dsh-prompt-polish

v0.1.0gaowei-AFK / dsh-prompt-polishf3396dbc00

InstallableBundlesUI & client pluginsCommunity · Topic auto-analysisWeb UI

Overview

dsh-prompt-polish

Prompt polish ✨ — a DeepSeek Harness WebUI plugin that adds a one-click button to rewrite rough input into a structured, professional prompt, written back into the input box.

README / EN

Package documentation

dsh-prompt-polish

A DeepSeek Harness WebUI plugin that adds a one-click Prompt Polish ✨ button to the input toolbar. Rewrite a rough, fragmented request into a structured, professional prompt — written straight back into the input box.

What it does

  1. You type a rough request into the input box.
  2. Click ✨ 润色 at the right end of the toolbar.
  3. The plugin calls your configured LLM (DeepSeek by default) to rewrite the request into a clear, actionable prompt.
  4. The polished text replaces your draft. Review it, then send normally.

Polish is non-destructive and reviewable — nothing is sent automatically.

Install

If your profile uses dshmarket, install from the marketplace UI. Otherwise:

dsh plugin --profile web add dsh-prompt-polish

Then restart the WebUI so the bundle is loaded.

Building from source (e.g. while developing): the published package ships pre-built lib/ artifacts. If you must build yourself, run pnpm install && pnpm build (uses tsdown).

Configure

The plugin is mounted via its cordis.patch.yml. Override defaults by supplying config in the patch, or pass provider/model per request from the client:

- insert:
    - id: prompt-polish
      name: 'dsh-prompt-polish'
      config:
        provider: openrouter
        model: deepseek/deepseek-v4-flash-0731
        maxTokens: 2000
Setting Default Description
provider (from request or unset) LLM provider to use for polish
model (from request or unset) Model id to use for polish
maxTokens 2000 Output token cap per polish pass

If neither the config nor the request supplies provider/model, the request is rejected (no model route available) — configure one of the two so polish is always routable.

Endpoint

POST /dsh-prompt-polish/polish (WebUI server, same-origin only)

{ "text": "..." }

Response:

{ "ok": true, "text": "the rewritten prompt", "truncated": false, "provider": "...", "model": "..." }
  • text — the polished prompt.
  • truncatedtrue when the model hit the token cap; the text is still usable and is written back into the box.
  • On failure: { "error": "..." } with 4xx.

The endpoint enforces same-origin (Origin must match Host) to prevent cross-site abuse.

Architecture

  • Server (src/index.ts) — registers the HTTP route, streams the LLM via ctx.llm.stream + BlockAssembler, and returns the rewritten text. Peer deps: @deepseek-ai/cordis, @deepseek-ai/dsh-llm.
  • Client (src/client/index.tsx) — registers a button on the conversation.input.right slot, fetches the endpoint, and writes back via inputActions.setDraft. CSS is self-contained (one injected <style> tag) so the browser bundle builds with a plain tsdown config.

Both halves build with tsdown. The client bundle is emitted in DSH's window.__ModuleLoader__.load({ id, factory }) format and externalizes react / react/jsx-runtime to the browser module table.

License

MIT. See LICENSE.