Back to home@gaowei-AFK

dsh-prompt-polish

Prompt polish ✨ — one-click rewrite of rough input into a structured professional prompt for DeepSeek Harness WebUI

Stars
0
Language
TypeScript
Created
Aug 26, 2026
Updated
Aug 26, 2026
GitHub repo

Introduction

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.

GitHub topic: dsh-plugin

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
SettingDefaultDescription
provider(from request or unset)LLM provider to use for polish
model(from request or unset)Model id to use for polish
maxTokens2000Output 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.