Skip to content
dsh-market Browse plugins GitHub 中文

hoyyang/dsh-concise

One-click Concise output style for DeepSeek Harness: results first, no filler, same work depth. Every final reply opens with a plain-language digest card (select text to copy), scoped per session, working in headless/CLI too, with /concise command, style.md overrides and a local API. Links and file paths inside the digest card render as clickable chips: URLs jump, local files open with the OS default app (v0.9+). A per-step pre-generation contract reminder (v0.11.2+) measurably fixes digest misses on audit-report/table-shaped replies.

Stars ★ 2 Category Sessions & Messages Listed 2026-09-18 npm dsh-concise

Install

Inside DeepSeek Harness, with dsh-market

dsh plugin --profile web add dshmarket

Or from the command line

dsh plugin --profile web add dsh-concise

Installing runs third-party code with your own permissions — it can read your files, use your credentials and reach the network. Review the source first, and pin a commit (github:owner/repo#sha) when you can.

README

banner

Based on Claude Code's built-in Concise output style (unchanged upstream since 2.1.258) plus this plugin's own extension, for DeepSeek Harness (dsh): a composer toggle in the zone left of the model picker — hugging the prompt-enhancer button — that makes every reply lead with results and skip the filler — while the depth of investigation, verification, and double-checking stays exactly the same. With Concise on, every final reply opens with an engineering-blueprint digest card (intermediate tool-step narration is exempt) — faint grid, corner measurement ticks, monospace 1.18em — and selecting text inside the card copies it on mouse-up.

中文 · Releases · Changelog

Install

dsh plugin add hoyyang/dsh-concise

Zero config — no API keys, no accounts, no settings. Refresh the web UI after install and the toggle appears left of the model picker, hugging the prompt-enhancer button when it is present. Requires dsh web 0.1.0-rc.8+ (verified on 0.1.0-rc.8).

Toggle off vs on — same question, same model

Asked "introduce JavaScript closures with one use case" in two sessions, differing only by the Concise toggle:

Before/after: off = a 1.2K-tok article, on = two sentences straight to the point

With Concise on you get:

  • The answer is the first sentence — no "Sure, let me explain…", no preamble, no narration
  • Water is removed, substance is not — commands, paths, risks, and next steps survive verbatim; what goes is recap, boilerplate closers, decorative sections
  • Work depth unchanged — investigation, verification, and double-checking happen exactly as before (it's written into the injected prompt)
  • Long sessions save tokens — the preamble and recaps you skip every turn add up

In one line: the answer didn't get smaller — the filler is gone.

30-second start

  1. Install, refresh the page
  2. Find the prompt-enhancer pill (✦ 标准/轻量, dsh-improve-prompt) in the composer tool row — the ● Concise toggle sits immediately LEFT of it (switch side hugging the pill), with the prompt-enhancer itself left of the model picker (without improve-prompt installed, Concise hugs the model picker's left side)
  3. Click it; the next reply follows the new style. Orange = on, grey = off

The toggle is per-session: turning it on here doesn't touch your other sessions (new sessions start off; set defaultEnabled: true to change that).

Features

  • One-click toggle (collapsed) immediately left of the prompt-enhancer button (row order: Concise → prompt-enhancer → model picker): only the switch shows by default, pinned against the pill — hover or keyboard focus expands the Concise label leftward with the right edge pinned, never shifting neighboring controls
  • Plain-language digest card: with Concise on, EVERY final reply opens with an engineering-blueprint card (intermediate step narration exempt) (faint grid + corner ticks + monospace 1.18em, dark text on light, works in both themes) — the rule is issued unconditionally and re-injected on every model assembly — 2-3 plain sentences restating the conclusion with key words bolded; it only restates what the body already says; selecting text inside copies it on mouse-up (header flashes COPIED ✓; this plugin's fork extension beyond upstream Concise); since 0.11.0 the digest writing style fuses caveman × humanizer essentials — the first sentence IS the conclusion (never background or process recap), telegraphic density (facts and numbers only), and no AI-tell filler (empty-summary phrases, rule-of-three parallelism, not-X-but-Y framing, vague attribution, inflated significance) — prompt-text only, card rendering and interactions untouched
  • Per-step pre-generation contract reminder (0.11.2): via the host agent/pre-step channel, a one-line transient digest-contract reminder is appended as the LAST message of every LLM request (not persisted, not in transcripts, zero accumulation; main sessions only) — it counters digest misses caused by attention decay across long multi-step tool loops under a huge system prompt (measured root-cause fix for audit-report/table-shaped replies)
  • /concise command in the slash menu and CLI sessions: /concise, /concise on|off, /concise status (parity with Claude Code's /output-style)
  • Headless/CLI sessions: the style injection and digest card work there too (without a web server only the local HTTP API degrades — use the /concise command)
  • Custom style: a non-empty ~/.dsh/dsh-concise/style.md overrides the built-in style text, effective on the next assembly (parity with /output-style:new)
  • Claude's Concise style: results first, no preamble, no narration, no filler closers
  • Same work depth: only reporting is compressed — never the rigor
  • Effective on the next turn via a dynamic system-prompt section (no restart, no session reload)
  • Per-session scope: the toggle only affects the current session's new replies — sessions stay independent (new sessions default off, configurable via defaultEnabled)
  • Persistent: per-session state survives restarts (atomic writes)
  • Auto re-sync: the button polls lightly every 15 s (visible tab only) plus on focus/visibility, so /concise, API, or other-tab changes are reflected without reload
  • Clear visual state: Claude-orange aurora gradient track with breathing glow when on, neutral glass when off; sheen sweep on hover and springy press feedback (all motion off under prefers-reduced-motion)
  • Accessible: aria-pressed toggle semantics, zh/en localized tooltip
  • Multi-tab sync via a custom DOM event
  • Precise placement: anchors immediately left of the prompt-enhancer entry (div.dip-root), whose own spot stays left of the model selection buttons; without improve-prompt it anchors left of the model button (the official right-slot actually renders left of the model button, which this plugin treats as its placement zone)
  • Graceful degradation when the model seat cannot be found
  • Clean uninstall: section, route, host command, styles, and client registration all removed

Usage

Example (real output, toggle on, asked "explain HTTP 302 in one sentence"):

HTTP 302 is a redirect status code indicating the requested resource has temporarily moved to the URL in the Location header; the client should re-issue the request there while the original URL remains valid (unlike 301, search engines do not transfer ranking).

Scriptable local API:

curl http://127.0.0.1:3080/dsh-concise/api/state   # → {"enabled":false}
curl -X POST http://127.0.0.1:3080/dsh-concise/api/toggle  # → {"enabled":true}
curl -X POST -H 'content-type: application/json' -d '{"enabled":true}' \
  http://127.0.0.1:3080/dsh-concise/api/set          # → {"enabled":true}

Slash command (also works in CLI sessions):

/concise          # toggle
/concise on|off   # explicit set
/concise status   # state + style source (built-in / custom)

Custom style: put your own text in ~/.dsh/dsh-concise/style.md to fully replace the built-in style text — saved edits apply from the next model assembly; delete the file to restore the built-in.

How it works

Layer Mechanism
Prompt injection systemPrompt.section({ name: 'dsh-concise:style', order: 40 }) with a function-valued text; disabled renders as an empty string and is dropped
Host command commands.register({ name: 'concise' }) — /concise [on|off|status], listed in the slash menu automatically
Custom style $DSH_HOME/dsh-concise/style.md overrides the built-in text when non-empty; mtime-cached per assembly
Toggle API webServer.register prefix route /dsh-concise/api: GET /state, POST /toggle, POST /set (loopback only)
UI placement client module anchors in the conversation.input.right slot and portals the button left of the prompt-enhancer entry (or left of the model seat when absent), kept in place by a MutationObserver
Per-session state $DSH_HOME/dsh-concise/state.json: default + per-session overrides (500-entry LRU), atomic tmp+rename write
State sync per-session dsh-concise:change DOM event on toggle + 15 s light polling (visible tab) + focus/visibility refetch
Digest rendering the style text asks for a > **摘要:** blockquote on final replies (intermediate steps exempt, plus a tail reminder section); the client watches the message DOM (subtree + rAF batching) and upgrades blockquotes prefixed 摘要: or the legacy 说人话: to an engineering-blueprint card (faint grid via ::before brightening on hover, corner brackets ::after drawing in on mount, monospace 1.18em, selection-copy interaction, concept assets/style-digest-v07e.png); original: a warm-paper amber card (gradient border + gradient label + corner glow, theme-independent); removed cleanly on uninstall

Use cases

Daily Q&A and study notes · code-review verdicts · bug triage reports · weekly updates · architecture decisions · ops runbooks · long multi-turn sessions · team-wide style consistency · per-stage style switching in automation pipelines.

License

MIT

Content from the project README on GitHub ↗

Comments

Comments live in GitHub Discussions. Sign in with GitHub to post or react.