notload/dsh-session-toc

notload★ 2JavaScriptLast synced: 2026-08-26

Open on GitHub

为 DeepSeek Harness Web UI 每个会话页右侧加一个类似deepseek网页端的常驻、可折叠的目录栏:每条用户提问对应一个条目,点击即可滚动定位到对应消息并高亮当前条目。

README excerpt

dsh-session-toc 右侧会话目录(Table of Contents)插件,为 DeepSeek Harness Web UI 的每个会话页加一个 右侧中间常驻、可折叠 的目录栏:把会话里的每个「用户提问」作为一条目录项列出,点一下尽量把会话滚动到对应消息,并高亮当前条目。 对应 DeepSeek 官网网页版里"右侧目录索引,点一下跳转到对应内容"的能力。 特性 - 常驻右侧 : shell.overlay 浮动层,垂直居中靠右,默认 click-through,条目可交互。 - 每问一条 :目录条目来自 完整会话日志 (host 端 sessionQuery.readSession ),覆盖整段会话(含早期未加载进内存的消息)。 - 点击跳转 :点目录项用 DSH 节点稳定 key( data-chat-anchor-key )精确定位并滚动;早期消息自动 loadOlder 补加载后定位;定位不可靠时降级为"仅高亮当前条目"。 - 可折叠 :可收起成右侧一个窄条按钮,再点展开。 - 样式自切换 + 主题跟随 ( data-dsh-toc-theme ):目录栏 明/暗皮肤三档 auto (默认,跟随 DSH 全局主题,读不到则退化系统 prefers-color-scheme )/ light / dark ,通过卡片顶部 齿轮(设置抽屉) 一键切换;并可调节 背景不透明度 (只影响背景、文字始终不透明)。选择持久化到 localStorage ( dsh-session-toc.theme / dsh-session-toc.bgAlpha ),跨会话、刷新保留,独立于 DSH 全局主题。 - 自动隐藏 :当前会话的用户提问不足阈值(默认 3 条)时目录栏不显示,避免噪音。 - 长会话友好 :目录列表超过 200 条时启用固定行高虚拟列表,只渲染可见窗口 ± 缓冲,避免长会话撑大 DOM 内存;条目数据全量保留,点击定位不受影响。 - 切换不卡顿 :宿主侧做「进程内 LRU 缓存 + 落盘索引」双层降频,切换会话不再反复触发全量 readSession (磁盘读 + 深拷贝 + 全量 replay);persisted 会话按 revision 失效、live 会话按消息序号增量失效。 - 重启秒开 :落盘索引( $DSH HOME/storages/session-toc/ )跨进程/重启保留,重启后切换会话也能秒开。 - 触发性更新 (issue 本轮):监听会话快照, 新提问 1.2s 内自动进入目录 (本地即时插入 + 后台全量矫正),不再等切换/手动重载。 - 美术细节 (issue 9):悬浮圆角化(卡片四角 12px + 右侧 8px 不贴屏、dock 独立圆钮、active 左侧强调条、折叠窄条圆角);设置抽屉化(控制条只留…

View full README on GitHub →
Skins / UIdeepseekdeepseek-harnessdshdsh-pluginweb ui

Category