AbelKeithsun/dsh-question-nav2

@luziyang2026/dsh-question-nav

In-session question navigator for the DSH web GUI: a vertical minimap of round dots overlaid on the edge of the conversation column (left or right, configurable in settings), one dot per user question — hover enlarges and shows the full question text, click jumps to that message.

包名
@luziyang2026/dsh-question-nav
版本
0.5.0
许可证
MIT
最近更新
2026年8月25日

安装

$npx -p @deepseek-ai/dsh dsh plugin --profile web add github:AbelKeithsun/dsh-question-nav

dsh-question-nav

English | 简体中文

In-session question navigator for the DeepSeek Harness (DSH) Web GUI: a vertical column of small round dots overlaid on the left edge of the conversation column — one dot per user question. Hover a dot to enlarge it and see the question's full text immediately; click a dot to scroll the chat to that question.

It is an external plugin bundle with zero runtime dependencies — the browser half (lib/client.js) externalizes everything to the DSH shell, so it adds only a small bundle to the GUI at load time.

Package: @luziyang2026/dsh-question-nav (npm · GitHub).

Preview

Full DSH Web GUI screenshot with the question-nav dot rail embedded on the left edge of the conversation column

What it does

  • Left-edge dot minimap (embedded, not reserving any width). The rail's anchor edge is configurable — Settings → Plugins → Question Nav → Rail alignment switches it between the left and right edge of the conversation column.
  • Vertically centered in the conversation column.
  • One dot = one turn that asked a question (strictly aligned with the Trajectory view's turn numbering), with a small count above the dot column.
  • Full history, persisted, no render-window expansion: the plugin's host half registers a questionIndex session projection — the projection registry folds the whole event log (read-only, the chat's paged window is never touched), the official projection cache persists it across restarts, and push frames deliver new questions live.
  • Hover: the dot enlarges and an instant tooltip (portal-rendered, no native-title delay) shows the turn label (Turn N) plus the turn's full question text (all of them, when one turn batched several).
  • Click: jumps to that question. Only then does the jump loop page the window (loadOlder()) to bring that specific page into view — never the whole history up front.
  • Empty/left areas of the rail pass pointer events through to the conversation (it never blocks the chat).

Requirements

  • DeepSeek Harness Web GUI (a runnable DSH profile; the dsh CLI).
  • Node.js >= 20 (matches the DSH SDK peer range).

Install

Install the prebuilt package from npm and add it to a profile:

dsh plugin --profile web add @luziyang2026/dsh-question-nav

Then restart the DSH Web GUI to load the new bundle.

Build from source / develop locally

This repository is a standalone plugin project — build it, then add the checkout to a profile as an installable bundle:

pnpm install       # install devDependencies (DSH SDK peers, tsdown, vitest)
pnpm build         # tsc declarations + tsdown client bundle -> lib/
dsh plugin --profile web add ./dsh-question-nav

Development

pnpm typecheck     # tsc --noEmit
pnpm test          # vitest run
pnpm build         # build host lib/index.js + client lib/client.js

How it is built

The client half uses the shared DSH client-bundle preset (tsdown.client.ts, vendored into this repo), which emits a window.__ModuleLoader__.load({ id, factory }) closure-factory artifact with CSS Modules inlined and externals resolved through the loader module table.

License

MIT.