Bundle
dsh-prompt-polish
DSH prompt-polish plugin: an icon-only composer toolbar button that rewrites the current draft through the connected LLM (balanced / concise / detailed / code styles), with multi-language UI.
- Source
- JoukoPuro
- stars
- 5 stars
- License
- MIT
- Updated
- Updated 27 minutes ago
Readme
# dsh-prompt-polish
English | [中文](README.zh.md)
A [DeepSeek Harness](https://github.com/deepseek-ai/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 explicit `provider`/`model` from 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
```sh
# 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:
```sh
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):
```yaml
- 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 the
`prompt-polish` loader row.
- `dsh.client` — the web boot row; `client-modules` serves `lib/client.js` at
`/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:
```sh
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
Install
dsh plugin --profile web add github:JoukoPuro/dsh-prompt-polish
Profile: web
With the hub plugin installed, ask your agent to install it by name — it resolves the same plan shown here.
dsh plugin --profile web add github:stvlynn/dsh.fish#path:packages/dsh-plugin-hub
install dsh-prompt-polish from the hub
- This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.