Back to home

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).sessionSessionFace,即 ObservableSnapshot<ConversationSnapshot>)读取当前会话快照
  • 遍历 snapshot.chat.order + snapshot.chat.nodes,提取 user / assistant 节点的文本
  • 跳转时按 data-chat-anchor-key 属性值匹配 DOM 锚点(ChatNodeSeat 渲染),遍历匹配避免 CSS 转义问题

安装(web profile)

  1. 将插件链接到 profile 的 node_modules(junction,Windows):

    New-Item -ItemType Junction -Path "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-session-jump" -Target "(本仓库路径)"
    
  2. 在 profile 组合文件 cordis.patch.yml 追加:

    - insert:
        - id: dsh-session-jump
          name: dsh-session-jump
    
  3. 重启 DSH 桌面应用 / 刷新 Web 界面(客户端 bundle 仅在重启时重新加载)。

使用

  1. 打开任意会话
  2. 点击侧边栏底部的定位图标「会话内跳转」
  3. 面板列出当前会话所有消息,可输入关键词筛选
  4. 点击任意一条,会话即滚动到该消息位置

构建

在 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/nodesdata-chat-anchor-key DOM 锚点,随 DSH 版本演进可能变化。

License

MIT