dsh-session-nav: Add Codex-style session navigation to DeepSeek Harness Web

前言

用 DeepSeek Harness(下称 DSH)跑长会话时,经常需要回到前面某一轮:回合一多,在 Chat 里上下滚动容易迷路,切到 Trajectory 标签页又要重新找位置;而且旧回合未必已经加载进 Chat,滚也滚不到。DSH 的理念是「一切皆插件」,这类界面层的补足正适合交给社区插件来做。

下面介绍 karmiy/dsh-session-nav,一个在会话左侧提供 Codex 风格导航的 DSH Web 插件。

这是什么

dsh-session-nav 由 karmiy 维护,采用 MIT 许可证,定位是「DeepSeek Harness Web 的 Codex 风格会话导航插件」。它在会话左侧加一条导航栏:每个用户 / steering / 斜杠命令回合对应一条短横线,点击即可跳回对应回合。

它是一个纯 overlay 插件:不替换 Chat、侧边栏或 Trajectory 标签页,只在会话列左缘叠加显示。

核心功能

空闲状态

空闲时,会话列左缘显示一摞紧凑的短横线堆叠,每个用户 / steering / 斜杠命令回合对应一条。

悬停预览

悬停时,邻近短横线以延迟波的形式变长,同时显示提示气泡、可选的 Worked for 时长,以及可选的 Edited N files +X −Y 文件卡片。

跳转

点击某条短横线,或在导航栏上用 ↑ / ↓,把对应回合滚动到视野内。

完整日志

旧回合即使 Chat 还没有加载,也会从 session.history 列出。点击一条旧回合时,插件会逐页调用 loadOlder,直到该行存在,再滚动定位过去。

开关

会话头部有一个对勾按钮用于开关导航栏,偏好以 dsh-session-nav:enabled 存储在 localStorage

布局

导航栏垂直居中,最高占会话列高度的 66%;堆叠过长时在导航栏内部滚动。

数据来源

  • Worked for 基于 turn/startturn/end,回合进行中实时显示;
  • 文件卡片来自回合内的 Diff / 编辑工具卡片,按 locations 加上 oldText / newText 的行数统计。

安装与启用

1、确认 DSH 空闲。添加插件会重建 web profile,会中断正在运行的任务,不要对正在运行任务的 profile 执行 dsh plugin add

2、执行安装命令:

dsh plugin --profile web add github:karmiy/dsh-session-nav

3、如果首次 add 失败并出现 allowBuilds 提示——Git 托管的插件在安装时构建,pnpm ≥10 会阻止这个 prepare 脚本——把提示中的 key 写进 ~/.dsh/profiles/web/pnpm-workspace.yaml

allowBuilds:
  dsh-session-nav: true

4、重复同一条 add 命令,再重启 web profile。

经过上面的步骤,导航栏就会出现在会话列左缘。

固定版本与本地安装

如果不希望后续 push 改变实际运行的内容,可以固定版本安装:

dsh plugin --profile web add github:karmiy/dsh-session-nav#v0.1.0

使用本地检出时,先在检出目录执行 pnpm install,再用 link: 加绝对路径安装:

dsh plugin --profile web add link:/absolute/path/to/dsh-session-nav

开发

开发环境要求 Node ^22.19 || >=24(engines 为 ^22.19.0 || >=24.0.0),packageManager 固定为 pnpm@10.15.0。常用命令:

pnpm install
pnpm test
pnpm typecheck
pnpm build

其中 typecheckbuild 需要把 DeepSeek Harness 检出为同级目录 ../deepseek-harnessprepare 脚本只运行 tsdown,不做 typecheck,因此 dsh plugin add github:… 在没有 harness 源码的机器上也能完成构建。

适用场景与注意

适合在 DSH Web 里跑多回合长会话、需要频繁回看或跳到某一轮的人;只跑几轮短会话的话,收益有限。

安装前有两点要注意:

1、插件以当前 dsh 进程的权限运行,安装前应自行检查插件源码与许可证(本插件为 MIT)。
2、再次确认 DSH 已空闲,避免重建 web profile 时打断正在运行的任务。

结语

dsh-session-nav 的做法很克制:不动现有界面,只在会话左缘加一条可跳转的回合导航,并用 session.history 补齐未加载的旧回合,解决长会话里「回不去某一轮」的问题。

  • 社区目录页:https://www.skillhub.cn/plugins/karmiy/dsh-session-nav
  • GitHub 仓库:https://github.com/karmiy/dsh-session-nav

目录为独立的社区站点,与 DeepSeek / 幻方无官方从属关系。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

Xiaoye