DeepSeek Harness Plugin

JNNarrator/dsh-deckseek

Stars ★ 1 Downloads (30d) 97 Category UI Enhancements Added 2026-09-07 npm dsh-deckseek

A calmer reading view for DeepSeek Harness with auto-collapsing process, a minimap-style message navigation rail, in-page search, unified failure cards, and generative MCP Apps (SEP-1865) in sandboxed iframes.

Install

# from npm (prebuilt)

dsh plugin --profile web add dsh-deckseek

# from a prebuilt release tarball

dsh plugin --profile web add "https://github.com/JNNarrator/dsh-deckseek/releases/download/v0.4.5/dsh-deckseek-0.4.5.tgz"

# from GitHub (first run asks for allowBuilds approval — follow the hint, retry)

dsh plugin --profile web add github:JNNarrator/dsh-deckseek

Any plugin you install runs third-party code with your own permissions — it can read your files, use your credentials, and reach the network, and tool approvals don’t sandbox it. GitHub-sourced plugins also run build scripts at install time — pnpm blocks those until you allow them, so an install can stop with ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED or ERR_PNPM_IGNORED_BUILDS; dsh prints the exact key to add under allowBuilds in your profile’s pnpm-workspace.yaml, and the install works on the next run. Allowing a build is a trust decision: only install sources you trust, and pin a commit (github:owner/repo#sha).

README

English | 中文

🙏 Thanks to the original repository aa2246740/dsh-better-display (MIT) and its authors and contributors.

dsh-deckseek is a fork of aa2246740/dsh-better-display, independently maintained by JNNarrator as a DeepSeek Harness display & interaction enhancement plugin (MIT).

Screenshots

DeckSeek reading view

The DeckSeek reading view: the execution record folds away and the final answer renders in full; the message rail hugs the right edge; spacing above the task bar and composer stays compact — no hollow gaps under long task lists.

Message navigation rail In-view search
Message navigation rail In-view search
Hovering a mark shows a "Turn N · title" info bubble; clicking scrolls the message into view with a landing flash Live match counts with previous / next navigation; hits scroll precisely into view with a flash
Execution process & tool rows Unified failure cards
Execution process & tool rows Unified failure cards
Write/edit rows show +N -M change stats and per-family state labels (Written / Found…); thinking cards scroll and expand Failure reason, exit code, and an expandable raw record

Features

  • Reading view: live native steps, thinking, and progress during execution; the process folds away on successful completion, leaving the final answer and interactive cards. An independent DeckSeek tab keeps the original Chat / Trajectory views, input box, model selector, tools, and approvals intact. Every known record kind (system prompts, turn processes, turn stats, …) is adapted; unknown kinds fall back to a copyable raw-record card — DSH is not stable yet, so the fallback stays. Failed tools / commands render as unified error cards: reason, exit code, and an expandable raw record.
  • Answer cards: the reply and its copy action sit in a card matching the reasoning/tool surfaces; the copy chip floats over the card's top-right corner on hover, keeping the answer at full density.
  • Three reading skins: Paper (typographic flow), Soft (cards), and Terminal (rows) — switch from the dedicated DeckSeek page in DSH settings and it takes effect immediately. Skins express structure, density, type, and radii only; colours always come from host theme tokens, so dark and light themes adapt automatically. Soft is the default.
  • Message navigation rail: a minimal right-edge rail of tiny pill marks — one per message you sent, editor-minimap style. It takes no layout space and the reading column stays truly centered; the mark at your reading position widens and highlights, hovering shows a styled "Turn N · title" info bubble, and clicking scrolls that message into view with a landing flash (at the document end the newest message owns the highlight; hidden on narrow widths). Marks compress to fit when turns pile up, so every mark stays visible.
  • Conversation export — one click in the reading-view toolbar exports the conversation as a Markdown file (your prompts + the assistant answers, in display order, process folded), filename auto-timestamped.
  • Turn keyboard navigation — Alt+Up / Alt+Down jump between your messages using the same landing logic as the rail highlight and flash (inactive while typing in an input).
  • Status & follow: the thinking card follows the latest lines and settles at the end; the open-turn status shows "BigFatFish is thinking… {time}" with a live clock, and tools show per-family start/done labels (Reading…/Read, Searching…/Found, Writing…/Written); scrolling up reveals a centered ⬇ back-to-latest button floating above the composer. Sending or steering a message returns the reader to the bottom (pinned follow takes over).
  • In-view search: live search across your questions and the model's answers; Cmd/Ctrl+F opens the panel; every match keeps a quiet tint with character-exact highlighting (CSS Custom Highlight API) and the active hit inverts; match counts, previous / next navigation, and jumps that scroll the exact hit into view with a flash highlight.
  • Reading position memory: reopening a session returns to your previous reading position with a brief notice; "Back to latest" jumps to the bottom anytime.
  • Copy enhancements: one-click code-block copy; every table shows a hover "Copy as CSV" action (RFC 4180 — quotes and newlines handled).
  • Bilingual UI (i18n): all reading-view copy follows the DSH app language (Chinese / English) with no restart.
  • Long-thinking follow: thinking folds into a fading card that follows two lines; expanding pauses scrolling; resume anytime.
  • Generative MCP Apps (SEP-1865): any mcp-app code block in the final answer is auto-mounted as a live interactive card inside a sandbox="allow-scripts allow-forms" iframe, communicating with the host via JSON-RPC postMessage (ui/initialize, ui/resize, ui/submit, ...).
  • Adaptive theme & height: live dark/light sync with zero first-frame flash; container height smoothly follows content (60–2400px).
  • Lossless fidelity: native Markdown, syntax-highlighted code, math, tables, images, and tool facts render faithfully.
  • 120 unit and component tests covering message projection, the Markdown pipeline, SEP-1865 parsing, adaptive height budgeting, two-line streaming follow, and the search / copy / reading-position interactions (happy-dom).

Installation & listings

Published on npm: dsh-deckseek

dsh plugin add dsh-deckseek

Listed in:

Development

  • Dependencies come from a DSH checkout, not from npm: dev dependencies are linked to a built Harness checkout via node scripts/link-harness-dependencies.mjs <checkout>; do not run pnpm install / pnpm add in this directory.
  • package-lock.json is a best-effort artifact refreshed under --legacy-peer-deps: the published @deepseek-ai/dsh-client-ui-settings declares a ^0.0.1-rc.1 peer on @deepseek-ai/dsh-client-ui-primitives that cannot intersect this plugin's 0.1.x range, so strict resolution always ERESOLVEs.
  • Therefore do not run npm ci in this directory — it will not reproduce a usable dependency tree.

Other

v0.7.4 · An unofficial DSH display & interaction enhancement plugin. It only changes presentation and interaction views — never the Agent's core execution, SDK, or model credentials.

Content from the project README on GitHub ↗

Links

More in this category

View the whole category →

Community comments

Comments are public GitHub Discussions. Loading them connects to GitHub and Giscus; a GitHub account is required to post.