dsh-prompt-polish
开发工具 活跃维护

dsh-prompt-polish

gaowei-AFK/dsh-prompt-polish

提供一键式提示词润色能力,可将随手输入的粗糙需求快速重写为结构清晰、表述专业的可用提示词,无需手动调整格式与表述逻辑,开箱即适配各类大模型交互场景使用。

0
Stars 标星
0
Forks 分支
0
Watchers 关注
0
Open Issues
TypeScript
主要语言
MIT
开源协议
25 KB
仓库大小
27 天前
最后推送
一键安装扩展 / 插件指令
dsh plugin --profile web add github:gaowei-AFK/dsh-prompt-polish
git clone https://github.com/gaowei-AFK/dsh-prompt-polish.git
git clone git@github.com:gaowei-AFK/dsh-prompt-polish.git
README.md main

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
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.