DeepSeek Harness Hub
← 返回列表

轮次导航条ai-pm-lab/dsh-turn-rail

DeepSeek Harnessspec-screened在 GitHub 查看 ↗
未验证

右侧悬浮导航条,悬停预览、点击跳转任意对话轮次

尚未跑自动兼容性验证,可查看页面内的依赖与入口分析。 · 最近上游提交 2026/9/5 · 已提供中文文档

DeepSeek Harness Web 对话轮次导航条插件:轮次导航、点击跳转自动翻页、iOS 风格加载动画

综合分
28.8
GitHub 分
28.8
用户评分
★ Stars
0
周下载量
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add ai-pm-lab/dsh-turn-rail
该插件未发布到 npm,走 GitHub 源安装(pnpm 若拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑)
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动

README

turn-rail — DeepSeek Harness Web 对话轮次导航条

给 DeepSeek Harness 的 Web 界面(dsh web)加一条悬浮在窗口右侧的对话轮次导航条:一眼看清会话里的全部轮次,悬停预览内容,点击直接跳转。跳转到尚未加载的早期轮次时自动翻页,并显示一个 iOS 风格的加载动画。

灵感与参考

灵感来源

- 轮次导航条:来自使用 DeepSeek 官方 Web 端(scrollNav 轮次导航)的体验——长对话里随时看清"聊到哪、每条说了什么",希望把这份体验带到 dsh web
- 加载动画:想要一个安静的苹果风进度指示器——12 根放射条逐条相位旋转,等待时不抢注意力

参考来源

- DeepSeek 官网网页端轮次导航的交互细节:右侧悬浮、悬停展开面板、消息预览、点击跳转
- Apple 平台进度指示器的视觉语言(放射条 spinner 形态)

本插件为社区作品,与 DeepSeek 官方无关,非官方出品。

功能

导航条

- 34×300px 玻璃长条固定在窗口右侧居中,收起时几乎不遮挡内容
- 每行代表一条用户消息:8×2px 指示线 + 消息标题
- 悬停长条 → 展开成面板(最宽 240px),显示全部轮次标题,顶/底渐隐提示可滚动
- 悬停某一行 → tooltip 预览该条消息(时间 + 最多 5 行截断)
- 点击一行 → 平滑滚动定位到该轮次,目标消息闪烁高亮
- 滚动跟随:当前阅读位置对应的轮次自动高亮(品牌蓝、指示线加长),导航条跟随滚动居中;手动滚动导航条可自由浏览全部轮次(暂停跟随 3 秒)
- 全量历史来自服务端投影(turn-rail-history),长会话也只传输几 KB 的轮次摘要,不加载整个对话

跳转轮次加载动画:iOS 风格的加载动画

- 点击尚未加载进窗口的早期轮次时,自动逐页点击"加载更早"翻找目标,同时在对话窗口右侧显示 42px 苹果风 spinner(12 根放射条、逐条相位旋转)
- 动画从窗口顶部上方滑入,加载完成滑回顶部淡出,不侵入标题栏

消息删除

- 每条用户消息的复制按钮旁新增删除按钮,点击弹出确认弹窗
- 确认后删除整轮(该消息 + 其回复,含工具结果),被删内容不再注入模型上下文
- 删除位置原位显示一行灰色"(已删除)"标记,右侧导航条同步移除该轮条目
- 正在生成的轮次拒绝删除,避免破坏对话状态

截图

| 收起态 | 悬停展开 |
| --- | --- |
| 收起态 | 展开态 |

| 消息预览 tooltip | 点击早期轮次时的加载动画 |
| --- | --- |
| tooltip | 加载动画 |

| 删除按钮 | 删除确认弹窗 |
| --- | --- |
| 删除按钮 | 确认弹窗 |

| 删除后的原位标记 |
| --- |
| 删除标记 |

安装

要求

- dsh ≥ 0.1.1-rc.8(需要 sessionProjections 投影注册接口与 wire.view 协议)
- 已生成 web profile:至少运行过一次 dsh web
- Node.js(安装脚本编辑 JSON 用)

一键安装

git clone https://github.com/ai-pm-lab/dsh-turn-rail.git
cd dsh-turn-rail
./install.sh

重启 dsh web 服务后生效(桌面端退出重开即可)。

手动安装(install.sh 做的事)

1. 复制两个包到 profile 的 node_modules:

cp -R turn-rail        ~/.dsh/profiles/node_modules/@dsh-user/turn-rail
cp -R turn-rail-bundle ~/.dsh/profiles/node_modules/@dsh-user/turn-rail-bundle

2. 在 ~/.dsh/profiles/web/package.json 的 dsh.profile.bundles 里追加 @dsh-user/turn-rail-bundle
3. 重启服务

卸载

./uninstall.sh

使用

- 窗口右侧的细条即导航条:悬停展开、悬停单行看预览、点击跳转
- 点击早期未加载的轮次:出现加载动画并自动翻页,到达后目标消息闪烁定位
- 手动滚动导航条浏览全部轮次,停止滚动 3 秒后恢复跟随当前阅读位置
- 悬停用户消息,点复制按钮旁的删除(垃圾桶)按钮 → 确认弹窗点"删除",整轮被移除并在原位留下灰色"(已删除)"标记

工作原理

| 包 | 作用 |
| --- | --- |
| turn-rail/ | 插件本体。服务端 index.js 注册 turn-rail-history 投影,把全量会话折叠成 [{seq, time, text}] 轮次摘要,并注册 /turn-rail-delete 命令;客户端 client.js 是手写的浏览器 bundle(window.__ModuleLoader__.load 契约,免构建),注入 conversation 槽位渲染导航条、spinner 与删除交互 |
| turn-rail-bundle/ | profile bundle:cordis.patch.yml 把插件行插入 web roster,随服务自动加载 |

目录结构

.
├── README.md
├── CHANGELOG.md
├── LICENSE
├── install.sh            # 一键安装
├── uninstall.sh          # 卸载
├── turn-rail/            # 插件本体
│   ├── client.js         # 浏览器端:导航条 + 加载动画 + 删除交互
│   ├── index.js          # 服务端:turn-rail-history 投影 + /turn-rail-delete 命令
│   └── package.json
├── turn-rail-bundle/     # profile bundle(安装器)
│   ├── cordis.patch.yml
│   ├── index.js
│   └── package.json
└── docs/screenshots/     # 效果截图

常见问题

改了 client.js 之后要做什么?
覆盖 ~/.dsh/profiles/node_modules/@dsh-user/turn-rail/client.js 后重启服务即可(bundle 的 rev 是内容哈希,浏览器会自动刷新缓存)。

为什么看不到导航条?
会话里还没有用户消息时不渲染。另外确认 web profile 里已注册 @dsh-user/turn-rail-bundle(install.sh 会做这件事)。

服务重启后插件会丢吗?
不会。插件通过 profile bundle 固化,随 dsh web 启动自动加载,不依赖任何会话。

能改样式吗?
可以。样式都在 client.js 顶部的 CSS 字符串里(.tr-* 类),改完按上面方式覆盖安装。

作者

ai-pm-lab —— 设计、开发与维护

License

MIT

上游仓库有新提交时邮件通知你(每天最多一封,无更新不打扰),随时一键退订。

💬 加入 DPharness 群聊

插件用法、部署报错、新插件第一时间同步——群里问,比一个人翻文档快。

点击加入 QQ 群
DPharness 群聊二维码,手机 QQ 扫码进群
扫码进群