vibeinging/dsh-turn-navigator
Private DSH Web turn navigation plugin
已收录
2
Ui
Bundle 已验证
功能介绍
对话轮次导航。
适合
- 需要浏览至少包含三个用户轮次的 DSH Web 会话的读者。
- 希望通过悬停预览和点击跳转浏览长会话的用户。
- 键盘用户,以及需要浅色、深色或减少动态效果支持的界面。
- 需要按需加载更早历史记录,同时保持当前阅读位置的工作流。
不适合
- 用户轮次少于三个的会话;此时导航器会保持隐藏。
- 未实现所需 `conversation.chat.navigator` 插槽的宿主;本地类型补丁不能替代真实插槽。
- 要求尚未加载的历史记录立即显示导航标记的用户。
- 需要超出纯文本用户轮次预览的丰富预览工作流。
README
@deepseek-ai/dsh-turn-navigator
| English | 中文 |
A compact turn navigator for long DSH Web conversations. It follows the conversation scroll, previews a user turn on hover, and jumps to that turn on click. It stays hidden until the conversation contains at least three user turns.
Preview

It supports keyboard focus, light and dark themes, and reduced-motion preferences. When needed, it loads only enough older history to decide whether the navigator should appear without moving the reader’s current position.
Installation
The plugin is private and not published. Its private repository is dsh-external/dsh-turn-navigator, but the repository remains empty until the first reviewed push. Use the local installation path until a reviewed commit is available, then start Web:
dsh plugin --profile web add -w "/path/to/dsh-turn-navigator"
dsh web
After the first reviewed commit is pushed, install that exact private revision with:
dsh plugin --profile web add -w github:dsh-external/dsh-turn-navigator#<reviewed-commit>
The checked-in lib/ output installs without rebuilding. A compatible DSH Web version is required. To remove the plugin:
dsh plugin --profile web remove -w @deepseek-ai/dsh-turn-navigator
Required DSH Web slot
This plugin registers into conversation.chat.navigator; it does not own or render that slot. A compatible DSH Web build must ship the same contract in both the host runtime and the official private client SDK declarations. A plugin-local type augmentation is not a substitute: it could make TypeScript pass while a host that does not render the slot silently shows no navigator.
Add the slot in the owning @deepseek-ai/dsh-client-ui-conversation package at these points:
- In the slot contract, declare a session-scoped single slot whose owner supplies anchored older-history loading, and include it in the chat view’s
PropsRenderSlotsunion:
export interface TurnNavigatorOwnerProps {
loadOlder: () => void
}
interface SlotMap {
'conversation.chat.navigator': {
kind: 'single'
scope: 'session'
owner: TurnNavigatorOwnerProps
}
}
- In the chat view registration, claim the child slot with the same kind and scope:
children: {
'conversation.chat.navigator': { kind: 'single', scope: 'session' },
}
- In the chat view component, render the slot beside the transcript scroll container and pass the callback that preserves the current reading row while older history is prepended:
{renderSlot('conversation.chat.navigator', { loadOlder: loadOlderAnchored })}
- Cover declaration and disposal, render dispatch, and anchored older-history loading in the host package tests, then publish a matching private SDK version for
@deepseek-ai/dsh-client-ui-conversationand its aligned client peers. A source-only host change does not unblock an external plugin that develops only against official registry packages.
Development and verification
The project .npmrc selects the private @deepseek-ai/* scope; pnpm 11 reads its ${NPM_TOKEN} authentication mapping from the trusted user-level ~/.npmrc. The SDK packages are pinned to the reviewed 0.0.1-rc.2 set. Set NPM_TOKEN, install without lifecycle scripts, then run the checks:
pnpm install --ignore-scripts
pnpm run check
Do not link a DSH source checkout into this directory. Use pnpm run watch beside dsh web --dev for live browser changes. See compat/ for the isolated assembled Web fixture.
Model Experience
None. The plugin only renders existing conversation data in the browser.
KV Cache effect
None.
Known Limitations and Deferred Work
- The private
0.0.1-rc.2SDK does not yet declare the requiredconversation.chat.navigatorslot, so the full development check remains blocked until a matching official SDK release. Do not add a local type shim; the installation target must provide the real slot. - Only loaded history receives markers; earlier turns appear after older history is loaded.
- Previews show text only.
常见问题常见问题
在启用了 DSH 的终端中执行已验证命令 dsh plugin --profile default add github:vibeinging/dsh-turn-navigator。命令会解析公开 package 元数据,并保持插件与本页展示的目录身份一致。
兼容性以页面上展示的 bundle 与 profile 状态为准。如果某个 profile 尚未检测到,请先保持禁用,并在生产启用前阅读仓库文档。
GitHub 链接和 activity 元数据是 release 与维护状态的来源。新版本发布后重新查看本页,确认目录已经观察到最新版本。