DeepSeek Harness plugin

dsh-conversation-navigator

Codex 风格的 DSH(DeepSeek Harness)会话导航插件:按轮折叠的对话大纲面板,支持节点点击跳转、滚动位置高亮与轨迹视图同款配色。

Jump to install

Source facts

Repository
gjj-star/dsh-conversation-navigator
Latest update
Aug 21, 2026
Category
Tools & Capabilities
GitHub stars
4
Format
plugin
Catalog evidence
Upstream dsh.bundle evidence
Evidence path
package.json#dsh.bundle
Checked against
0.1.0-rc.8
Upstream check date
2026-08-20

This evidence comes from the upstream catalog. This site has not installed, run, or security-reviewed the plugin.

Install

Start with a prompt that asks an agent to review the GitHub repository and source. Switch to the command if you want to install it yourself.

Copy this prompt into DSH, Codex, or another agent and ask it to review the GitHub repository and source first.

Do not install or run any commands yet. Read this plugin's GitHub repository, README, and relevant source code. Then answer the questions below clearly and directly so I can decide whether it fits my needs:

1. What is this plugin, and what problem does it solve?
2. Who is it for, and what are its typical use cases?
3. How is it used after installation? Include one minimal example.
4. What known limitations or privacy, security, compatibility, or maintenance risks does it have?
5. Give a clear recommendation: recommend, conditionally recommend, or do not recommend, with reasons.

Distinguish statements documented by the repository, inferences from source code, and unknowns. If evidence is insufficient, say so explicitly. Do not guess or simply repeat the README.

GitHub: https://github.com/gjj-star/dsh-conversation-navigator
Plugin: dsh-conversation-navigator
Author: gjj-star

Check the source files

Read the README and other files from this plugin directory before installing.

File explorer3 files
README.mdSource · read only

DSH 会话导航插件(dsh-conversation-navigator)

Codex 风格的 DeepSeek Harness(DSH)Web 端会话导航面板:在对话页右侧悬浮展示按轮折叠的对话大纲,点击任意节点平滑跳转,滚动对话时实时高亮当前阅读位置,步次徽标配色与内置"轨迹"视图统一。

纯浏览器插件(无宿主行为)、纯 JavaScript、零构建、零 npm 依赖(按钮/Tooltip 复用 DSH 内核 seed 的官方 primitives)。

功能

  • 按轮折叠大纲:默认只显示"第 N 轮 + 你的问题"列表,长对话一目了然
  • 关键词过滤:点击左上角搜索图标呼出输入框,只按「你的提问 + 助手实际回复文本」过滤(上下文、工具、命令、压缩、推理等不参与匹配),命中词高亮,列表文本自动定位到关键词处
  • 展开/折叠步次:点击轮次行右侧的箭头按钮(▸ N,展开时旋转为 )平滑展开/折叠该轮的步次明细(助手回复、工具调用、命令、压缩点等)
  • 悬停查看全文:鼠标在轮次行停留片刻,气泡显示该轮用户提问的完整原文,不再被单行截断
  • 显示 / 隐藏轮次:头部切换按钮一键切换两种风格——「显示轮次」为经典分组视图(压缩等系统事件与轮次同级加粗展示);「隐藏轮次」为极简视图,每一行统一为轨迹徽标 + 文本(用户 = 业务蓝、助手 = 紫罗兰、压缩 = 中性灰),搜索框展开时按钮自动让位
  • 丝滑动效:面板开合淡入淡出、步次展开/折叠高度过渡、过滤结果逐条级联淡入、折叠箭头旋转——全部纯 CSS 实现,零依赖
  • 点击定位:点击轮次主体或步次条目,平滑滚动跳转到对话中对应位置(不改变折叠状态)
  • 加载更早 / 加载全部:面板顶部两个按钮——「加载更早」向后翻一页、「加载全部」一键把所有历史轮次载入导航,之后可任意跳转(页面默认仍懒加载,只有点按钮才补载)
  • 位置跟踪:手动滚动对话时,面板自动高亮并跟随当前正在阅读的轮次
  • 右侧定位:面板锚定视口右侧,收起/展开左侧边栏时纹丝不动
  • 回到最新 / 全部折叠:面板底部两个快捷按钮
  • 轨迹配色:用户/插话 = 业务蓝、上下文 = 成功绿、助手 = 紫罗兰、工具 = 琥珀、压缩 = 中性灰(取自 dsh-client-ui-trajectory 的 kindTag 主题 token,自动适配明暗主题)
  • DSH 原生风格:操作按钮复用官方 Button/Tooltip 组件与官方图标(搜索、关闭);其余操作图标(导航、加载更早、加载全部、回到最新、全部折叠、切换轮次等)为按 DSH 描边风格手绘的内联 SVG,currentColor 自动适配明暗主题
  • 切换工作区/会话自动跟随并重建大纲

安装

本插件是官方规范的组合包(dsh.bundle manifest + dsh.client 声明),纯 JavaScript、无构建步骤,推荐用官方 CLI 安装:

# 方式一:npm(发布后,用户无需任何构建授权)
dsh plugin --profile web add dsh-conversation-navigator

# 方式二:GitHub(纯 JS 包无需 prepare/allowBuilds,直接可用)
dsh plugin --profile web add github:gjj-star/dsh-conversation-navigator

# 方式三:本地 tarball
pnpm pack
dsh plugin --profile web add ./dsh-conversation-navigator-<version>.tgz

dsh plugin 在 profile 目录内转发给 pnpm,因此需要 pnpm 在 PATH 上;安装会自动把本包追加进 profile 的 dsh.profile.bundles,其自带的 cordis.patch.yml 层负责插入插件行。重启 dsh web 后生效,面板默认展开。

> 手动方式(不依赖 pnpm):把仓库放进 <DSH_HOME>\profiles\<profile>\node_modules\dsh-conversation-navigator,并在 profile 的 cordis.patch.yml 顶层数组追加 [example.patch.yml](./example.patch.yml) 的内容。

更新

修改 lib/client.js 后重启 dsh web 即可;插件没有持久状态,展开/折叠、显示/隐藏轮次、搜索关键词等界面状态仅存于页面会话内。

工作原理

  • 注册槽位:conversation.session.header.utilities(标题栏「导航」开关)+ shell.overlay(浮动面板)
  • 数据来源:会话级标准 props 的 useSession(选择 ConversationSnapshot.chat 的稳定渲染顺序 order + ChatNodeStore),按 node.location 的 turn 分组
  • 历史补载:通过 sessions 服务的 binding(sessionId).session.loadOlder() 分页向后加载,「加载全部」循环至 hasMore=false
  • 跳转定位:复用 DSH 聊天视图自身的稳定 DOM 锚点 [data-chat-anchor-key](与产品内部 paging/scroll 定位同源),scrollIntoView 平滑滚动
  • 位置跟踪:捕获 [data-conversation-scroll] 滚动容器的 scroll 事件(节流 120ms),计算视口顶部首个可见节点
  • 关键词过滤:仅为 userassistant-step 节点提取检索文本(dialogueText),大小写不敏感匹配,命中片段以 <mark> 高亮并按首个命中位置截取显示窗口
  • 悬停全文:轮次头气泡读取 fullDialogueText(用户节点全部文本块拼接),用 Tooltip 展示并限宽 340px
  • 显示/隐藏轮次:头部按钮切换 turnsHidden,隐藏时仅把轮次头标题替换为轨迹徽标(titleNode 策略),分组结构不变;搜索框展开时按钮让位
  • 样式:Button/Tooltip/搜索与关闭图标复用 @deepseek-ai/dsh-client-ui-primitives,其余图标为内联 SVG;面板容器自建 <style> 注入,颜色使用 --dsw-* 主题 token;插件卸载时随 fiber 清理

兼容性说明

  • 目标平台:DSH Web 端(dsh.client.platform: web),依赖内核 seed 的 reactslotssessions 服务与 @deepseek-ai/dsh-client-ui-primitives,以及 dsh-client-runtimedsh-client-ui-conversation 提供的标准能力(dsh.client.inject 已声明 runtime 与 conversation)
  • 版本敏感点:[data-chat-anchor-key] / [data-conversation-scroll] 是当前 DSH 聊天视图的 DOM 锚点约定,DSH 升级后若锚点变化,只需调整 lib/client.jsfindAnchor / computeActiveKey 两个函数
  • 未声明 timer 硬依赖:客户端的 timer 服务存在则用于节流,不存在时自动退化为未节流模式

目录结构

lib/
  index.js   # 宿主侧空入口(纯浏览器插件)
  client.js  # 浏览器端完整实现(window.__ModuleLoader__ 模块格式)
cordis.patch.yml     # 组合包补丁层(插入插件行)
example.patch.yml    # 手动安装时的补丁示例

License

MIT