dsh-prompt-polish
English | 中文
A DeepSeek Harness (DSH) plugin that adds a ✨ sparkle button to the web composer's tool row. Click it, pick a rewrite style, and the already-connected LLM rewrites your draft prompt to be more professional and easier for an AI to understand — then replaces the draft so you can review before sending.
- Icon-only button — a sparkle glyph in the composer tool row; no text, tooltip gives the full description.
- Four rewrite styles — balanced / concise / detailed / code-oriented.
- Multi-language UI — menu copy follows your browser language (zh, en, ja, ko, fr, de, es, pt, ru, it, tr, vi; falls back to English).
- Uses your connected model — resolves the current default agent model
(
agentDefaultModel), or an explicitprovider/modelfrom config.
Requirements
- DeepSeek Harness (
@deepseek-ai/dsh) web profile running, with a model adapter configured (e.g. the DeepSeek provider with an API key in Settings).
Install
# from a checkout of this repository (or the directory containing it)
dsh plugin --profile web add ./dsh-prompt-polish
Then restart dsh web so the profile picks up the new bundle:
dsh web
Open the web UI, type a draft, and click the sparkle button in the composer tool row.
Configuration
The plugin accepts optional config in the profile's cordis.patch.yml
(user layer, applied after the bundle layer):
- id: prompt-polish
config:
provider: deepseek-official # explicit route (optional)
model: deepseek-v4-flash # must be paired with provider
style: balanced # default rewrite style: balanced | concise | detailed | code
maxTokens: 2048 # output cap for the rewrite call
# system: '...' # custom rewrite instruction (replaces the built-in per-style prompts)
Without provider/model, the plugin uses
agentDefaultModel.currentSelection() — the same default model the session
uses.
How it works
| Half | File | Role |
|---|---|---|
| Host | lib/index.js |
Registers POST /prompt-polish on the web server; streams one LLM rewrite via ctx.llm |
| Browser | lib/client.js |
Registers the sparkle button into conversation.input.right; opens a style menu; posts the draft and replaces it with the polished text |
The bundle's package.json declares both faces of the dual-face plugin:
dsh.bundle— the profile patch layer (cordis.patch.yml) that inserts theprompt-polishloader row.dsh.client— the web boot row;client-modulesserveslib/client.jsat/plugins/dsh-prompt-polish/client.js.
Development
Edit lib/index.js (host) and lib/client.js (browser). The browser bundle is
a hand-built closure-factory artifact (window.__ModuleLoader__.load({ id, factory })) — keep externals limited to the platform modules
(react, @deepseek-ai/dsh-client-ui-primitives) and inline everything else,
matching the loader's module-table rules.
Verify on a scratch port before touching the live profile:
dsh web --port 3099
curl -s http://127.0.0.1:3099/plugins/dsh-prompt-polish/client.js | head
curl -s -X POST http://127.0.0.1:3099/prompt-polish \
-H 'content-type: application/json' \
-d '{"text":"read a.csv and sort by b","style":"code"}'
License
MIT
No comments yet. Be the first to write one.