Skip to content
dsh.fish
Bundle

dsh-prompt-boost-pro

Adds an Enhance prompt button to the DSH composer that rewrites the draft in a structured or light mode and shows an original-versus-enhanced preview before applying it.

Source
xiaoshengliang2002
License
MIT
Updated
Updated 17 days ago

Readme

# dsh-prompt-boost-pro — enhance the draft before you send it

English | [中文](README.zh.md)

> A sparkle button in the DeepSeek Harness (DSH) composer tool row. Click it, pick a mode, and the
> model rewrites your draft into a better prompt — shown as an original-versus-enhanced preview that
> you accept, re-run in the other mode, or discard. Nothing touches your draft until you accept.

Inspired by Trae CN's "optimize input": type a rough idea, get a directly executable instruction.
Unlike a one-shot rewrite, this plugin keeps you in control — you always see both versions first, and
after accepting, the same button becomes an undo until you change or send the text.

## Features

- **Two modes, picked per use** — **Structured** reorganises the draft for the task at hand (goal,
  constraints, expected output, acceptance), **Light** only disambiguates, fixes wording and tightens;
  both keep your intent and your language, and neither invents requirements you did not write.
- **It never interrogates you.** The prompt policy forbids handing back information the agent can look
  up itself (repo layout, stack, scope, previous conclusions). At most **one** `[待补充: …]` placeholder
  survives, and only for a decision that is genuinely yours.
- **Comparison preview, never a silent overwrite** — original and enhanced side by side; accept,
  re-run in the other mode, copy, or discard. If you edited the draft while the preview was open, it
  says so and makes the overwrite explicit.
- **Undo that knows when it is over** — after accepting, the button reads "undo" only while the draft
  still equals the enhanced text; sending or editing the draft returns it to normal instead of offering
  an undo that cannot work.
- **Truncation is surfaced, not swallowed** — output budget adapts to the draft (4000 → 8192 tokens) and
  a capped answer is still returned, flagged, with a hint instead of an error.
- **Model route resolved four ways** — plugin config → the model currently shown in the picker → the
  session's last request → the deployment default. A brand-new session works on the first click.
- **Dismissals everywhere** — click the icon again, click anywhere outside, or press `Esc`; the preview
  also closes with `Esc`. The button stays clickable while its menu is open, so the menu can never trap
  you.
- **Bilingual UI** (zh / en), theme-native (real DSH design tokens), no tracking, no config files
  written.

## Requirements

- DSH web GUI (`dsh web`), harness `0.1.2-alpha.1` or newer; the current line (`0.1.5-rc.x`) is tested.
- Node `^22.19.0 || >=24.0.0` (the host half runs inside the harness process).
- A session whose model is routable — the default model counts, so no setup is needed.

## Install

```sh
# from the profile that runs your web GUI (usually "web")
dsh plugin --profile web add github:xiaoshengliang2002/dsh-prompt-boost-pro

# or from a released tarball
dsh plugin --profile web add https://github.com/xiaoshengliang2002/dsh-prompt-boost-pro/releases/latest/download/dsh-prompt-boost-pro.tgz

# or from a local checkout (symlinked; rebuild shows up without reinstalling)
dsh plugin --profile web add link:/path/to/dsh-prompt-boost-pro
```

Then restart `dsh web` and reload the page. The `lib/` bundles are committed, so installing from source
needs **no build step and no pnpm build approval**.

Uninstall: `dsh plugin --profile web remove dsh-prompt-boost-pro`.

## Where the button lives

`+` | permission control | **✨ enhance** | summon-expert entry | … | model | context meter | send

It registers `conversation.input.left` with `order: -10`, so it sits immediately after the permission
control. Move it after the summon-expert entry by changing `order` to `20` in `src/client/index.ts`.

## How it works

| Half | Role |
|---|---|
| Host (`lib/index.js`) | Registers `POST /api/prompt-boost-pro/enhance` on the shared API channel (same-origin, cookie-authenticated), resolves the model route, calls `ctx.llm.stream()` once, cleans the text and answers JSON. |
| Browser (`lib/client.js`) | Registers two slots: the tool-row button with its mode menu, and the preview dialog in the composer overlay. Keeps one state machine per session and writes the draft through `inputActions.setDraft` only on accept. |

Wire contract, error codes and the prompt policy are documented in
[`docs/design.md`](docs/design.md); the awesome-dsh-plugin checklist is in
[`docs/awesome-dsh-plugin-checklist.md`](docs/awesome-dsh-plugin-checklist.md).

## Development

The repository is a normal npm package; `lib/` is build output that is committed on purpose (so source
installs are build-free).

```sh
npm run typecheck      # tsc --noEmit, 0 errors
npm run build          # esbuild → lib/index.js + lib/client.js
npm test               # 4 offline suites: host 28, client 28, UI dismissal/undo 40, prompt policy 27
npm run release:pack   # sync docs + build + npm pack
npm run release:verify # unpack the tarball and assert 31 contract/listing conditions
```

No network is required: `node scripts/link-dsh.mjs` links the packages of a local DSH checkout into
`node_modules` (esbuild, typescript, react, @types) so the build and tests run offline.

`preview/index.html` is a clickable preview of the composer UI built from DSH's real design tokens and
this plugin's real stylesheet; `preview/shot-preview.cjs` renders the state screenshots into
`preview/shots/` (declared for the storefront via `screenshots.json`).

## Version history

- **0.1.2** — reasoning-effort passthrough. The client sends the model picker's current reasoning
  effort (low/high/max) with each request and the host passes it to the LLM call; deployments can pin
  one via the new `reasoningEffort` config key. Fixes `400 {"code":"1210"}` on models that always
  think (e.g. GLM-5.3-Flash), whose default effort is "off" and gets rejected by the upstream API.
- **0.1.1** — upgrade-window compatibility. The host registers the legacy `POST /api/prompt-boost/enhance`
  path alongside the current one, and the client falls back to it when the current path answers 404/405 —
  so a half-updated pair (page refreshed but server not restarted, or the reverse) keeps working instead of
  failing with "unexpected response (HTTP 404)".
- **0.1.0** — first release. Two enhancement modes (structured / light); original-versus-enhanced
  preview before applying; undo that expires with the draft; click-outside/`Esc` dismissal; adaptive
  output budget with a `truncated` flag instead of dropping a capped answer; four-level model route
  resolution so a brand-new session works on the first click; bilingual UI and a custom sparkle icon.
  123 offline assertions plus 34 packaging checks. Wire path: `POST /api/prompt-boost-pro/enhance`; the
  button sits after the permission control.

## License

MIT

Install

dsh plugin --profile web add github:xiaoshengliang2002/dsh-prompt-boost-pro

Profile: web

  • This package builds from source on install. pnpm will ask you to allow its build script — that is permission to run the package’s code on your machine, outside the agent sandbox. Only allow sources you trust.
  • This source has no pinned commit, so a later push upstream changes what installs. Prefer pinning a commit.
Source