wanglijie34
dsh-session-jump
No description
- Stars
- 1
- Language
- TypeScript
- Created
- Aug 16, 2026
- Updated
- Aug 16, 2026
Introduction
dsh-session-jump
DeepSeek Harness (DSH) 的 Web 插件:会话内消息跳转 —— 在一个会话的众多对话中快速定位并跳转到任意一条消息。
在侧边栏底部(sidebar.footer.action 槽位,设置按钮旁)注册「会话内跳转」按钮;点击弹出面板,列出当前会话的全部消息,点击任意条目平滑滚动到对应位置。
功能特性
- 🔘 侧边栏底部「会话内跳转」入口(定位图标)
- 📜 列出当前会话全部真实消息(用户「我」+ 助手,自动跳过 tool-call、turn-tail 等辅助节点),最新在前
- 🏷️ 每条显示角色徽标 + 消息序号 + 文本预览(从 text 块提取,截断 100 字)
- 🔍 输入框本地筛选当前会话消息
- 🎯 点击条目 → 平滑滚动(
scrollIntoView)到该消息,并自动关闭面板 - 🔄 实时订阅会话快照,新消息发出后列表自动更新
实现原理
- 通过
sessions.binding(currentId).session(SessionFace,即ObservableSnapshot<ConversationSnapshot>)读取当前会话快照 - 遍历
snapshot.chat.order+snapshot.chat.nodes,提取user/assistant节点的文本 - 跳转时按
data-chat-anchor-key属性值匹配 DOM 锚点(ChatNodeSeat 渲染),遍历匹配避免 CSS 转义问题
安装(web profile)
-
将插件链接到 profile 的 node_modules(junction,Windows):
New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-session-jump" -Target "(本仓库路径)" -
在 profile 组合文件
cordis.patch.yml追加:- insert: - id: dsh-session-jump name: dsh-session-jump -
重启 DSH 桌面应用 / 刷新 Web 界面(客户端 bundle 仅在重启时重新加载)。
使用
- 打开任意会话
- 点击侧边栏底部的定位图标「会话内跳转」
- 面板列出当前会话所有消息,可输入关键词筛选
- 点击任意一条,会话即滚动到该消息位置
构建
在 deepseek-harness 仓库内(本插件依赖其 workspace 构建链):
pnpm run build # tsc -b && tsdown,产出 lib/client.js 与 lib/index.js
目录结构
src/
├── index.ts # Host:no-op(纯客户端插件,行存在以挂载 client 图)
└── client/index.ts # Client:跳转面板全部逻辑
package.json
tsconfig.json
tsdown.config.ts
说明
- 本插件在 deepseek-harness 仓库内开发,
package.json使用workspace:^的 peer 依赖、tsdown.config.ts引用仓库内的clientBundle工具;脱离该仓库独立使用时需相应调整。 - 依赖会话数据模型:
ConversationSnapshot.chat.order/nodes与data-chat-anchor-keyDOM 锚点,随 DSH 版本演进可能变化。
License
MIT