画卷式消息导航栏:右侧竖条悬停展开画卷,scroll-spy 高亮跟随;消息收藏、快速填充;自动屏蔽 DSH 自带轮次导航,无冲突 · 给 DeepSeek Harness 的滚动画卷消息栏:悬停展开,scroll-spy 高亮…
34.9/100
综合分
7
GitHub 星标
274
npm 周下载
—/5
用户评分
数据截至 2026/10/21 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add @max-null/dsh-chat-railnpm 源 · @max-null/dsh-chat-rail 的发布者账号已校验与本仓库一致
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · market
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 14 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查✓ 自动检查通过展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包@max-null/dsh-chat-rail @ 0.6.13
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/2 00:30:58
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件
查看扫描证据(共 3 处,展示前 3 条)
- 读取本地文件lib/index.mjs:93
const parsed = JSON.parse(readFileSync(FAVORITES_PATH, "utf8")); - 写入本地文件lib/index.mjs:101
mkdirSync(dirname(FAVORITES_PATH), { recursive: true }); - 写入本地文件lib/index.mjs:102
writeFileSync(FAVORITES_PATH, JSON.stringify(map), "utf8");
扫描于 2026/11/3(0 天前) · 范围 入口闭包 + 全包扫描 · 来源 npm 发布包
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery@deepseek-ai/cordis@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-conversation@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-settings@deepseek-ai/dsh-api-session-controller@deepseek-ai/dsh-client-ui-plugin-manager@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-renderer给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
界面预览
2 张 · 点击查看大图功能亮点
- 右侧竖条悬停展开
- 滚动高亮跟随
- 消息收藏与快速填充
最近更新
在 GitHub 查看全部 →v0.6.132026-10-02
· 修复
· 点击跳转后高亮会落到上一条(issue #1)。落位把目标行居中(视口 50%),而 scroll-spy 按「离 40% 线最近」选行——相邻条目中心间距小于视口高度的 20% 时,40% 线离上一条更近;落位自己派发的那次 scroll 经 60ms 去抖就把高亮改判到上一条。消息越矮、间距越密越容易中(行高 40/60/80/100px 实测全部选中上一条)。
· 新增
· 点击条目立即变蓝,不再等滚动结束——未加载的条目本就要先分页,落位前根本没有 scroll 事件可供 scroll-spy 更新。
· 跳转落位期间冻结 scroll-spy 的重算:settle 之后再等一个 150ms 去抖窗口才交还,且交还时不重算,高亮留在点击的那条,直到用户自己滚动。
· 说明
· issue #1 报的另两件事——「平滑滚动期间悬浮窗乱跳」与「多个平滑动画互相抢占」——在当前版本已不成立。0.6.x 早已把落位改成瞬时定位(jumpToMessage 直接赋 scrollport.scrollTop,见 docs/决策/2026-09-28-跳转改瞬时定位-方案.md),那条「smooth → 连续 scroll → 高亮反复改判 → 高亮跟随再把 rail 自己滚」的链条失去了触发源。无头浏览器按两边真实几何重放:
| 落位方式 | scroll 事件 | updateActive 执行 | 高亮变化 | rail 自我滚动 |
|---|---|---|---|---|
| 0.3.1(smooth) | 31 | 7 | 5 | 5 次 |
| 0.6.12(瞬时) | 1 | 1 | 1 | 1 次 |
· 因此没有采用建议里的「150ms 滚动静止检测」:在瞬时落位下它会让落位刚结束就重算一次,而那次重算正好判给上一条,等于把刚修好的问题制造回来。
· 跳转所有权改用单调递增 token 表示:连点两条已加载的条目时,被取代的旧跳转不得解除新冻结、也不得抹掉新跳转的分页指示。
· 测试 50 → 57(新增 7 条钉所有权规则;做过变异验证——移除所有权检查后对应用例确实转红)。
· 未包含「滚动中点击其它条目直接接管」:分页期间条目仍 disabled,去掉这道守卫会让 loadThrough 并发,安全性未在真机验证,留作后续。
v0.6.122026-10-02
· 修复
· 附件回填在 DSH 0.2.0-rc.2 上失效(表现为「加号只把文本填进输入框、图片不进去」)。该内核把两个运行时方法改了名:createDraftImages(files) → createDrafts(sessionId, files)、addImages(ids) → addAttachments(ids);旧调用藏在可选链与降级分支后面,所以不报错也没有提示。现在两代名字都探测,按内核实际提供的那一代调用。
· 收藏 ★ / 添加 + 的按钮提示移到按钮下方,与官方复制按钮一致(原先挂在上方,会伸进消息行盖住正文)。
· 升级
dsh plugin --profile add @max-null/dsh-chat-rail
或精确 pin:
dsh plugin --profile add @max-null/dsh-chat-rail@0.6.12
v0.6.112026-10-02
· 修复
· tip 面板不再越过输入区。悬停到靠下的条目时,面板此前会从条目顶边一路向下探(最高 70vh)压到 composer 上——既盖住发送按钮,又因为 tip 自己接管指针事件而把点击一并吞掉。现在面板底边钉在 composer 座位(官方锚点 [data-composer-seat])上沿之外,空间不够就内部滚动;连 120px 的最小可读高度都放不下时,top 整体上移。
· .crl_tip 补 box-sizing: border-box:content-box 下 max-height 只约束内容高度,padding 与 border 会再撑出 22px,足以把上面那道闸门顶穿。
· 升级
dsh plugin --profile add @max-null/dsh-chat-rail
或精确 pin:
dsh plugin --profile add @max-null/dsh-chat-rail@0.6.11
数据来自仓库的 GitHub Release,可能与插件实际版本不一致。
README
由 DeepSeek 最新模型翻译生成@max-null/dsh-chat-rail
本插件属于 @max-null/ 插件系列——这一系列共同构成 SSID(思灵 · Seek Soul in Darkness) 桌面体验。SSID 是整合它们的盒:dsh-capture · dsh-chat-rail · dsh-chinese-thinking · dsh-draft-polish · dsh-guardian · dsh-habit · dsh-memory · dsh-node-appearance · dsh-plugin-center · dsh-quick-toolbar · dsh-skill-mcp-center · dsh-ssid-panels · dsh-ssid-zh-ui · dsh-achievements。
展开完整文档(README 剩余 1 节)
@max-null/dsh-chat-rail
本插件属于 @max-null/ 插件系列——这一系列共同构成 SSID(思灵 · Seek Soul in Darkness) 桌面体验。SSID 是整合它们的盒:dsh-capture · dsh-chat-rail · dsh-chinese-thinking · dsh-draft-polish · dsh-guardian · dsh-habit · dsh-memory · dsh-node-appearance · dsh-plugin-center · dsh-quick-toolbar · dsh-skill-mcp-center · dsh-ssid-panels · dsh-ssid-zh-ui · dsh-achievements。
This plugin belongs to the @max-null/ family — a set of plugins that together form the SSID (思灵 · Seek Soul in Darkness) desktop experience.
面向 DeepSeek Harness 的画卷式消息导航栏:会话面板右侧的一条竖排导航,每条用户消息一个指示点,scroll-spy 跟随阅读位置,hover 展开画卷查看消息列表,点击跳转任意历史消息;消息 hover tip 内嵌「提问&回答」直达区,收藏 + 一键回填输入框。
不同于市面上"面板弹出式"的导航插件,dsh-chat-rail 采用画卷式展开:收起时是一条干净的竖条,hover 时从右往左平滑展开,像打开画卷一样。
截图
| 画卷展开:只显示收藏(通栏 header + 黄色收藏条) | 消息操作按钮(收藏 ★ / 填充 ➕ / 复制)+ 折叠态导航条 |
| rail-fav-1 | rail-fav-2 |
为什么比市面上的导航栏优秀
市面上的会话导航插件(chat-timeline / milestone / msg-nav / turn-rail…)大多只做"指示条 + 点击跳转",在真实使用中有一堆体验问题。dsh-chat-rail 针对每一个问题给出了答案:
| 能力 | 市面同类 | dsh-chat-rail |
| 与侧边栏/底栏共存 | ❌ 展开时与 better-sidebar 错位、遮挡 | ✅ 锚定会话区右列 + 底栏变量避让:导航条实时跟随会话列右缘,官方右侧边栏 push 展开时会话列左移、导航同步左移(共享同一段过渡动画),不再被压在面板下面;底栏展开收起按 --dsh-sidebar-height 垂直避让,互不遮挡 |
| 空间不足 | ❌ 依然悬浮,遮挡会话 | ✅ 自动退场:会话区剩余宽度不足(<260px,如窄屏右侧边栏完全遮住会话)时导航条整体淡出,空间恢复即回来 |
| 展开形态 | ❌ 面板突兀弹出,高度错位 | ✅ 画卷式展开:单容器从右往左平滑展开,高度天然一致 |
| 阅读位置跟随 | 高亮点会跑出显示区 | ✅ 导航条自动滚动,高亮点持续居中:无论会话滚到哪里,当前消息的指示点始终在导航可视区中央 |
| 切换会话定位 | 回到顶部 | ✅ 自动定位到新会话当前阅读位置 |
| 消息预览 | 浏览器原生 title(与悬停双重提示) | ✅ 自绘 tip 面板:完整内容、动画结束后精准定位、无原生 title 干扰;面板底边不越过输入区(贴底时内部滚动或整体上移);含图消息在文本上方显示缩略图,tip 底部还有「提问&回答」直达区 |
| 消息信息 | 只有预览文本 | ✅ 编号 + 相对时间 + 文本三列对齐:编号固定宽、时间靠右,文本区域最大化且整齐 |
| 长会话跳转 | 干等卡死 | ✅ 加载反馈:跳转远距离消息时显示 spinner + "加载中",收起态只留图标 |
| 消息收藏 | ❌ 大多数只能看不能存 | ✅ 收藏 + 快速填充:消息行星标收藏(黄色导航条联动)、「只显示收藏」为面板通栏 header(折叠/展开同构、贴顶不遮条目)、加号一键全文+附件回填输入框 |
| 主题适配 | 部分 | ✅ 全部使用 DSH 主题变量(--dsw-alias-),浅深色无缝适配 |
| 无侧边栏兜底 | ❌ 依赖特定插件 | ✅ 纯 DSH 环境开箱即用,锚定会话区右缘 + 垂直居中 |
兼容性(重点)
- 与 dsh-better-sidebar 深度兼容:底栏展开/收起时导航按 --dsh-sidebar-height 垂直避让,与面板共享同一段 transition 动画同步移动,永不错位(包括底栏右上角的收起按钮)。
- 右缘锚定会话区右列:导航条实时测量会话列右缘定位——官方右侧边栏默认 push 展开时会话列左移,导航同步左移(同段过渡动画),不再被压在文件面板下面;不再依赖恒为 0 的 --dsh-sidebar-width。
- 空间不足自动退场:会话区剩余宽度 < 260px 时(如窄屏右侧边栏完全遮住会话),导航条整体淡出,空间恢复即回来。
- 会话区滚动条隐藏:会话区([data-conversation-scroll])自带的 Y 轴滚动条被本插件画成透明——它与导航条的位置指示功能重复,官方内核 0.1.5 起又把 bar 从「紧贴内容边缘」改为「离边缘 2px」,观感上更显眼。只覆盖 thumb 颜色、保留官方 8px 槽位(scrollbar-gutter: stable 是官方为输入卡跨视图不位移而保留的),滚轮/触控板滚动不受影响。
- 无 better-sidebar 也能用:变量缺失时走 CSS fallback(垂直居中 + 视口右缘),纯 DSH 环境开箱即用。
- 与 DSH 自带轮次导航协同:DSH 0.1.2-alpha.1+ 自带 TurnNavigator(轮次导航竖轨)。安装本插件后自动隐藏官方竖轨(aria-label 双文案锚点,不依赖构建 hash),由本插件统一承担会话导航;未安装本插件时官方导航照常显示。设置卡片另提供「使用官方轮次导航条(对比模式)」开关,可随时切回官方竖轨对比(免重启生效)。
- 不遮挡 DSH 的菜单与浮层:官方 frame 的浮层梯度是「右侧面板 10 → 拖拽手柄 11 → 标题栏座位 15 → shell.overlay 20 → 全屏右面板 40」(正本 AppFrame.module.css)。导航条定在 19——这条梯度里能取的最大值:压过右侧面板、拖拽手柄与标题栏座位,又停在 shell.overlay 之下。菜单与 tooltip(100)、以及 shell.overlay 里的应用级浮层(例如插件中心的「插件更新」弹窗)仍然赢它。
- 附件回填跨两代接口:加号的「全文 + 附件回填」依赖两个不在 IConversation 类型面上的运行时方法。内核 0.2.0-rc.2 把它们改成了 createDrafts(sessionId, files) / addAttachments(ids)(此前是 createDraftImages(files) / addImages(ids))。插件对两代名字都探测,按内核实际提供的那一代调用;两代都没有时退回纯文本填充。
- 深历史跳转(DSH 0.1.2-alpha.3+ 内核):会话历史按窗口分页加载(hasMore)时,点击跳转走官方 loadThrough(seq) 精确跳转装载器(200 条/页一次到位),替代旧版逐页 loadOlder(50 条/页)循环;旧内核无 loadThrough 时自动回退逐页循环。
- DSH 版本要求:>=0.1.7-rc.2 <0.3.0,与 peerDependencies 一致。内核按 semver.satisfies(运行时, 范围, { includePrerelease: true }) 逐个校验 @deepseek-ai/dsh- peer——预发布版参与比较,caret 写法 ^0.1.7-rc.2 的上界是 0.2.0-0,对 0.2.0-rc.1 判 false 会让插件不被装载,所以上界写成显式的 <0.3.0。
安装
dsh plugin --profile <name> add @max-null/dsh-chat-rail
或手动加入 profile 的 package.json dependencies + dsh.profile.bundles:
- id: chat-rail
name: '@max-null/dsh-chat-rail'
交互
- hover 导航条:画卷展开,显示编号 / 相对时间 / 消息预览
- hover 消息项:左侧弹出完整内容 tip 面板(含图消息在文本上方显示图片缩略图;tip 底部「提问&回答」区列出该消息内的提问——SVG 图标 + 单行问题,点击直达提问/回答位置)
- 点击消息项:跳转到会话中对应消息(未加载的历史自动补载;DSH 0.1.2-alpha.3+ 走官方 loadThrough 精确跳转,旧内核回退逐页循环)
- 滚动会话:高亮点跟随,导航条自动滚动保持居中
- 含图消息:展开态显示柔和图片角标(收起态不显示,保持竖条干净)
收藏与快速填充
- 消息操作按钮:每条用户消息的复制按钮左侧新增两个按钮
- 星 ★:收藏/取消收藏该消息(收藏后变成黄色实心星);收藏按会话持久化在 host 文件($DSH_HOME/chat-rail-favorites.json,缺省 ~/.dsh/),刷新与重启后保留——不走 localStorage(按 origin 隔离,端口一变就丢),旧 localStorage 数据只在首次加载时迁移一次
- 加号 +:一键把该消息全文 + 附件填入输入框(草稿设为消息全文,历史图片经官方附件通道回填入输入框)
- 导航条联动:收藏的消息指示条显示为黄色;展开态在标题前显示小星标
- 只显示收藏:过滤开关是导航面板的通栏 header(星标 + 文案 + 底部分隔线,折叠/展开同构、贴顶),点击点亮(黄色实心)后导航栏只显示已收藏的消息;再点恢复全部。列表在 header 之下独立滚动,开关不压住条目;无收藏时不显示该开关,过滤中取消最后一条收藏会自动退出过滤
架构
- host 半端(lib/index.mjs):注册 chatRail 会话投影——从 session log 折叠用户消息锚点 { seq, time, text, hasImage, images, id }(排除插件/工具注入的上下文行)
- client 半端(lib/client.js):conversation.input.dock 槽注入,portal 渲染到 body;右缘实时测量会话列定位(ResizeObserver + 兜底采样),侧边栏 push 展开时跟随移动,空间不足时淡出
- 数据源优先序:chatRail 投影 → 已加载聊天节点 → 后台 loadOlder 循环
SSID 系列
本插件是 SSID(思灵 · Seek Soul in Darkness) 全家桶的一员;也可以单独安装到任意 DSH profile——除设置卡片外不依赖其它同系列插件(右侧边栏避让、导航条定位都走官方 DOM 契约,缺失时自动降级)。
开发
pnpm install
pnpm typecheck # tsc 严格类型检查
pnpm build # 产出 lib/
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Max-Null/dsh-chat-rail
画卷式消息导航栏:右侧竖条悬停展开画卷,scroll-spy 高亮跟随;消息收藏、快速填充;自动屏蔽 DSH 自带轮次导航,无冲突 · 给 DeepSeek Harness 的滚动画卷消息栏:悬停展开,scroll-spy 高亮…
相关插件 · 市场 / 管理
插件精选列表awesome-dsh-plugin/awesome-dsh-plugin
DeepSeek Harness(dsh)插件精选列表
★ 22,225未汉化DSH
73.6
新词雷达zhuyansen/new-term-radar
new-term-radar新词雷达
★ 2,049已汉化MCP
72.8
插件生态导航0xsline/awesome-deepseek-harness
安装 贡献指南 DeepSeek Docs 公开插件目录 Issues
★ 1,188已汉化DSH
72.6
技能注册中心iflytek/skillhub
企业级开源智能体技能注册中心——发布、发现并管理组织内可复用的技能包。
★ 5,370已汉化DSH
71.9
插件市场目录imsai-sh/awesome-deepseek-harness-plugins
面向 DeepSeek Harnessdsh生态的社区插件目录,共收录 13941 个插件含 PR 收录与…
★ 355已汉化DSH
71.8
插件精选清单Anil-matcha/awesome-dsh-plugin
DeepSeek Harnessdsh精选指南——DeepSeek…
★ 1,013已汉化DSH
71.7
这是你的仓库?认领条目