dsh-at-file
FSMargoo/dsh-at-fileCodex 风格的 `@file` 文件引用,输入框里直接搜索并引用工作区文件。
DSH Web UI 会话内提问导航:对话栏左/右缘(可在设置中切换)的圆点迷你地图,一个圆点对应一个用户提问——悬停显示全文,点击跳转到该提问。
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 magnify it (together with its two neighbors on each side) and reveal a vertical cascade of crisp question cards with each question's full text and sent time (clicking any card jumps to it); 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).
Plugin settings (rail alignment + dots per page):
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.HH:MM on the same day,
MM-DD HH:MM across days, YYYY-MM-DD HH:MM across years). The hierarchy
is two-tier: the center card is the focus — full-contrast text, a brand
accent bar and a raised shadow — while the four neighbors are clean
context cards (same surface, narrower, fewer lines) that light up on
hover to show they are clickable too. Clicking any card jumps to that
question exactly like clicking its dot.loadOlder()) to bring that specific page into view — never the
whole history up front.dsh CLI).>= 20 (matches the DSH SDK peer range).The package publishes two lines under the same name, so pick the one that matches the DSH build your GUI runs on:
| npm dist-tag | Version | Targets the DSH | Status |
|---|---|---|---|
latest | 0.7.x | 0.1.1-rc.1 SDK line | Stable — recommended for everyday use |
alpha | 0.8.0-alpha.x | 0.1.2-alpha.2 SDK line | Alpha — for the Alpha GUI build |
latest (stable) line — it tracks the stable DSH
release and is safe for daily use.0.1.2-alpha.2)? Install the alpha
dist-tag instead. The stable build reads a chat snapshot API
(session.getSnapshot().chat) that was removed in the Alpha SDK; the
alpha build reads the live chat through the new conversation service
instead. Installing the stable line on an Alpha GUI would leave the strip
degraded (projection-only dots).dsh --version; if it reports 0.1.1-rc.x, use latest; if it reports
0.1.2-alpha.x, use alpha.Install the prebuilt package from npm and add it to a profile. Use the dist-tag that matches your DSH build (see above):
Stable line (DSH 0.1.1-rc.1, most users):
dsh plugin --profile web add @luziyang2026/dsh-question-nav # latest → 0.7.x
Alpha line (DSH 0.1.2-alpha.2 GUI):
dsh plugin --profile web add @luziyang2026/dsh-question-nav@alpha # alpha → 0.8.0-alpha.x
If you prefer a specific version, pin it explicitly:
dsh plugin --profile web add @luziyang2026/dsh-question-nav@0.7.7 # stable pin
dsh plugin --profile web add @luziyang2026/dsh-question-nav@0.8.0-alpha.0 # alpha pin
Then restart the DSH Web GUI to load the new bundle.
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
pnpm typecheck # tsc --noEmit
pnpm test # vitest run
pnpm build # build host lib/index.js + client lib/client.js
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.
MIT.