DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Turn Navigator — DeepSeek Harness 插件(DSH Plugin)
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins

dsh-turn-navigator

Turn Navigator

Smoothly Turn Nav (Smoothly TN):适用于 DeepSeek Harness (dsh) 网页对话的全历史钢琴键式轮次导航栏——一眼查看每个轮次,悬停预览,点击跳转到任意位置,并替换官方(不可禁用)的轮次导航栏。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-turn-navigator@0.4.3
README兼容性版本

兼容性与来源证明

Turn Navigator 以 dsh-turn-navigator 发布,当前版本为 0.4.3。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/21

版本

0.4.3stable
2026/9/6
0.4.2stable
2026/9/5
0.4.1stable
2026/9/3
查看其余 3 个版本收起版本
0.4.0stable
2026/8/30
0.1.1stable
2026/8/19
0.1.0stable
2026/8/19

相关插件

正在加载相关插件…

最新版
0.4.3
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
193.1 kB
文件数
10
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 1
周下载
64
最近提交
2026/9/5
查看源码 ↗项目主页 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题

相关插件

继续浏览 ui-customization 分类下经过校验的插件。

Web App@deepseek-ai/dsh-web-appdsh 浏览器界面捆绑包:位于 dsh-base 之上的 Web 补丁层,加上运行时粘合插件(提供前端 dist、Web 界面提示符、bash 运行时变量和 URL 行)Experimental Agent Team Web Profile@deepseek-ai/dsh-experimental-agent-team-web-profile用于 Agent Teams Remote 和 UI 插件的实验性 Web 配置层Remote Web Ui@linxin666/dsh-remote-web-ui通过扫码配对访问 dsh Web GUI,共享一个官方界面:设置按钮旁的二维码可将手机和 PC 配对到同一个 Web GUI(手机采用竖屏触控适配层,PC 使用完整桌面界面),通过一次性令牌和 rClient Ui Task Board@linxin666/dsh-client-ui-task-board面向 DSH Web GUI 的主机权威任务面板,支持实际会话执行、主机 cron 调度以及可选的跨平台空闲睡眠保护;以挂载方式提供,无需修改 DSH 源代码。

README

Smoothly Turn Nav (Smoothly TN)

Smoothly · 思磨力 — brand · 中文名:思磨力轮次胶囊条

English · 简体中文

Every turn of your conversation, one glance away.

Smoothly Turn Nav (Smoothly TN) — 思磨力轮次胶囊条 — is an external plugin for DeepSeek Harness (dsh) that puts a piano-key turn rail on the right edge of every conversation — a vertical column of tiny capsules, one per turn. It gives you a full minimap of the conversation: every turn ever made (not just the ones currently loaded), hover previews, click-to-jump to any turn's start, and follow-scroll highlighting. It can also replace the official built-in turn rail, which has no off-switch of its own.

Turn navigation rail

Why

In the default DSH web UI, the official turn rail historically showed only the currently loaded window of turns — in a long conversation, most turns are invisible until you scroll and load more. As of dsh 0.1.3-alpha.1 the built-in rail also gained full-session scope and out-of-window jumps through a host-side turnOutline projection, but it still cannot be switched off. Smoothly TN solves the long-session problem and stays fully replaceable:

  • Full history at a glance — every persisted turn is shown as plain data, including turns far outside the loaded window. No scrolling, no loading, no waiting.
  • Hover to preview — the capsule glows with the theme color and widens in a wave ripple; a DSH-style tooltip shows the turn's number, time, and user-message summary.
  • Click to jump anywhere — jumps to any turn's start, even turns not yet loaded (the window is extended on demand with instant feedback).
  • Know where you are — the current turn is highlighted as you scroll.

Features

🗺️ Full-history minimapAll turns visible immediately — read from the persisted session log as data, zero prepends into the conversation flow on open (long sessions stay responsive)
🎹 Piano-key designOne capsule per turn, ~3px tall, right-aligned on the right edge; auto-sizing (up to 30vh) with an internal hidden scrollbar
🌊 Wave hoverHovered capsule glows with the theme color and widens 150% leftward; its two neighbours widen 125% — a ripple across the rail
💬 Rich tooltipTurn number, timestamp, and full user-message summary, always fully inside the viewport
🎯 Jump to any turnPrecise scrollTop targeting (no scrollIntoView fights); out-of-window jumps extend the window on demand with a "Locating turn N…" pulse + bubble; the oldest-turn jump loads to the true first turn (hasMore = false)
👁️ Follow-scroll highlightThe capsule of the turn at the reading line is tinted as you scroll — and the rail's own viewport keeps the active turn in view
⬆️⬇️ Scroll buttonsClick or hover-hold to scroll the rail; greyed out when there is nothing to scroll
🎛️ Rail mode switchSettings → General → Turn navigation: DSH official / Smoothly TN (default) / Hide all — persisted across reloads, so the official rail can finally be turned off
🔌 Pure external pluginNo DSH source code modified; no host changes; no new dependencies; read-only DOM access

vs. the official DSH turn rail

The official built-in TurnNavigator has no off-switch and is always rendered in the chat view. The table below compares it at dsh 0.1.3-alpha.1 (the current DSH web TurnNavigator, which re-added full-session scope via its own host projection) against this plugin, Smoothly TN v0.4.3:

CapabilityDSH official rail (0.1.3-alpha.1)Smoothly TN (v0.4.3)
Turns shownEvery turn — host turnOutline projection (0.1.3+)Every persisted turn — client-side journal read
How full history is readHost-side projection embedded in the snapshotClient pages the persisted journal (session/page); older dsh falls back to sessions.history RPC — zero host changes
Jump to a turn outside the window✅ (0.1.3+ unloaded anchor pages history by seq)✅ on-demand window extension + "Locating turn N…" pulse/bubble
Long-session open performanceReads the projectionZero prepend — plain data, no flow re-render, no stall
Follow-scroll highlight✅ (0.1.3+ keeps the active mark in the rail viewport, with a pointer guard)✅ (v0.4.1+, same pointer-guarded follow)
Hover previewPrompt + response (≤3 lines each), no timestampTurn number + timestamp + full user-message summary
Wave ripple animation❌ (fixed-pitch ticks widen instead)✅ wave ripple
Scroll buttons (click / hover-hold)❌ (wheel + gradient fade)✅ click / hover-hold
Rail heightDynamic band (natural height … 420px)Auto-sized (≤30vh), internal hidden scrollbar
Narrow viewport (<900px)Auto-hiddenAuto-hidden (mirrors official)
Hide / switch rail❌ no off-switch✅ Settings → General → 3 modes; Hide all hides both
Keyboard accessibility✅ focus ring + aria-current/aria-busy/aria-describedby✅ focusable buttons (Turn N — time — summary aria-label)
SourceBuilt-in, cannot be disabledExternal plugin, can be replaced/disabled

As of dsh 0.1.3 the built-in rail caught up on full-session scope and out-of-window jumps. What still sets Smoothly TN apart: you can switch it off (the official rail cannot), the tooltip carries the timestamp + full summary, there are scroll buttons and wave hover, and it remains an external, read-only plugin with zero host changes. And on dsh ≤ 0.1.2 the built-in rail is simpler still (loaded window only), so the gap Smoothly TN closes is even larger there.

Version map

Which Smoothly TN release matches which dsh:

Smoothly TNdshNotes
v0.1.xdsh ≤ 0.1.1Full history via the legacy sessions.history browser→host RPC
v0.2.x – v0.4.1dsh 0.1.2+Adapted to the ui-chat refactor; full history via the journal session/page channel; v0.4.1 fixed true turn numbers and rail-viewport follow
v0.4.2dsh 0.1.2+, incl. 0.1.3-alpha.1Comparison/positioning updated against the 0.1.3 official rail (see above)
v0.4.3dsh 0.1.2+, incl. 0.1.3-alpha.1This release: brand naming standardized to Smoothly(思磨力)/ Smoothly Turn Nav(Smoothly TN)/ 思磨力轮次胶囊条 — technical IDs (npm package dsh-turn-navigator, plugin/slot IDs, locale namespace, CSS prefix, localStorage key) unchanged

The official-rail comparison in this README targets dsh 0.1.3-alpha.1; on older dsh the official rail is simpler, so Smoothly TN's advantage is larger there.

Installation

dsh plugin --profile web add dsh-turn-navigator

Then restart dsh web:

dsh web

Usage

  1. Choose which rail to show (Settings → General → Turn navigation): DSH official (the built-in rail), Smoothly TN (this plugin's rail — default), or Hide all. The official rail has no off-switch, so choosing Smoothly TN hides it with a stylesheet override and our rail takes over the right-edge center position. The choice persists across reloads.
  2. Open any conversation with at least one completed turn.
  3. A vertical rail of grey capsules appears on the right edge (one per turn). It auto-sizes — short conversations get a short rail, long ones hit the 30vh cap and scroll internally (hidden scrollbar, no layout jitter).
  4. Hover a capsule: it glows, widens in a wave, and shows the turn's number, timestamp, and summary in a tooltip to the left of the rail.
  5. Click a capsule to jump to that turn's start. Out-of-window turns pulse the capsule and show a "Locating turn N…" bubble while the window is extended on demand; the target row is highlighted on arrival. The activated capsule centers in the rail (unless it is the first or last turn).
  6. Scroll with the mouse wheel, the up/down buttons, or hover-hold on the buttons.

How it works

The plugin registers two additive slots — no DSH source code is modified:

SlotScopeRole
conversation.session.header.utilitiessessionThe floating turn rail (renders position: fixed; reads the live chat snapshot via the framework useChat/useSession kit)
settings.general.itemrootThe Turn navigation mode switch in Settings → General
  • Full history as data: on dsh 0.1.2+ the rail pages the same persisted log the official window reads, through the Typert Remote session/page channel (ctx.remote.session — mounted by the base web assembly; no host changes, no new dependencies). On older dsh it uses the sessions.history RPC. Every turn is derived from raw turn/start / user/message / turn/end events as plain data.
  • On-demand jumps: clicking a turn already in the window scrolls directly; for a turn outside it, the rail extends the window page by page through the official session store (loadOlder, with the authoritative hasMore as the loop terminator) until the target is in view — the only path that touches the flow, and it runs only when you click.
  • Precise scrolling: the rail locates the turn's first chat-node key, finds its DOM row via data-chat-anchor-key, and sets the scrollport's scrollTop directly (more predictable than scrollIntoView).
  • Replacing the official rail: the official rail lives inside the conversation scroll container; a container-scoped stylesheet rule (driven by the mode switch) hides it, and the rail takes over its right-edge center position. Verified structurally against dsh 0.1.3-alpha.1 — the [data-conversation-scroll] nav hide rule still matches. If a future dsh changes that structure, the worst case is the official rail reappearing (side by side) — never a crash.
  • Read-only: the plugin never writes to DSH state, never sends data anywhere, and only reads the DOM for targeting.

Compatibility

  • DeepSeek Harness (dsh) with the web client (dsh web); developed and verified against dsh 0.1.2+ and reviewed against dsh 0.1.3-alpha.1.
  • Requires the conversation.session.header.utilities and settings.general.item slot declarations (present in current DSH).
  • Default Smoothly TN mode hides the official rail (stylesheet override) and centers our rail in its place; DSH official mode shows the built-in rail instead; Hide all hides both. Both rails auto-hide below 900px width.
  • Coexists with full-screen plugin pages (e.g. the kanban board): the rail sits below their overlay layer.

Development

  • pnpm typecheck / pnpm test — TypeScript check (tsdown does not typecheck).
  • pnpm bundle — build the module-table client bundle into lib/.
  • scripts/verify-*.mjs — Playwright acceptance scripts against a live dsh web (rail, full-history journal, mode switch, jump, feedback, overlay, sizing, UI).
  • pnpm release:check — release gates (version, tag, tree, build, registry).

License

MIT