前言¶
在 DeepSeek Harness(DSH)里同时推进多个会话时,常见做法是反复在左栏点进不同会话,或依赖系统级多窗口。左栏列表能管理会话,但当前视图通常只承载一个会话;任务在后台跑、侧栏和工作台仍要随时可用时,频繁切换成本会明显上升。
下面介绍社区客户端插件 dsh-session-tabs(维护者 DEVbyQIN,npm 包名 dsh-session-tabs)。它在不引入 iframe、无额外运行时依赖的前提下,为单客户端增加顶部会话标签,复用 DSH 原生聊天视图与任务服务,并尽量保留左右侧栏及底部工作台。插件以 MIT 协议发布,当前 npm 版本 0.1.6,README 写明已在 DSH 0.2.0-rc.2 上验证;宿主客户端 API 仍在演化,升级 DSH 后建议重新验收。
这是什么¶
dsh-session-tabs 的定位是:单客户端会话标签,保留原生侧栏与后台工作(英文描述:Single-client session tabs preserving native sidebars and background work)。
实现上只有一棵原生聊天视图;标签负责切换会话身份与顶栏交互,不替换原生 sidebar/rightbar 插槽或右栏服务。关闭标签不等于删除、归档或停止会话——运行中或待确认的会话仍在后台保留,结束后释放额外引用;关闭整个客户端、卸载插件与关闭标签是不同操作。
核心功能¶
标签与会话¶
- 通过原生左栏打开的会话会自动出现在顶部标签栏;点击标签切换会话,
+使用原生方式新建会话。 ×仅关闭标签,不删除会话;后台任务与宿主原生导航行为仍由 DSH 负责。- 可拖动调整标签顺序;标签获得焦点后,左右方向键切换会话,
Alt + Shift + 左/右调整顺序。输入框不拦截上述快捷键,中文组字不受影响。 - 左栏底部的「标签窗口」线条图标可显示/隐藏标签栏;焦点在标签栏内时,
⌘/Ctrl + Shift + T可恢复本次窗口内刚关闭的标签。
界面与原生控件¶
- 当前标签与内容区使用同一亮色表面,通过两侧底部反向圆角与内容区衔接;非当前标签在较暗背景上,悬停时标题与关闭按钮共用灰色底色,并跟随 DSH 亮/暗主题。
+紧跟标签并与×居中对齐,旁侧不再显示⋯。底部工作区与右侧栏入口位于标签行右端,复用对应原生按钮的图标、状态与点击事件;缺少原生入口时不显示对应按钮,切回原生视图或卸载插件时会恢复原入口。- 右栏展开后,中央打开入口隐藏,仅保留窗口最右侧原生收起按钮;两个相关按钮均为 28px 点击区域。动画期间右栏开关位置固定,避免底部按钮挤入。
状态指示¶
标签上可选状态标记(空闲时不显示圆点):
| 符号 | 含义 |
|---|---|
● |
运行中 |
! |
等待确认 |
✓ |
完成未读 |
… |
正在连接 |
状态存储与性能边界¶
标签顺序、启用偏好及活动身份保存在浏览器 localStorage['dsh-session-tabs.v1'];刷新可恢复标签,失效或归档的会话 ID 会被剔除。多窗口会同步偏好与标签身份,但不会抢占另一窗口的当前会话。
重开客户端时,非活动标签只恢复身份,不立即加载全部历史;已访问过的标签保留轻量会话绑定以沿用原生草稿/附件状态,其数量仍会影响内存。插件不承诺无限标签或固定内存开销;草稿沿用原生机制,不保证跨重启的草稿持久化。挂载依赖稳定的 data-slot="main",宿主 DOM 结构变化是主要兼容性风险;挂载失败时会回滚新增节点并保留原生界面。
0.1.6 修复了 0.1.5 中打开插件管理等全局页面时整个窗口卡死的问题;仍在 0.1.5 上的用户建议更新。
安装与启用¶
插件以当前 DSH 进程权限运行,安装前请查看 GitHub 仓库 源码与 MIT 许可证。社区目录页:skillhub.cn 上的 dsh-session-tabs(独立社区站点,与 DeepSeek / 幻方无官方从属关系)。建议先在独立 profile 试用。
从 npm 安装(推荐)¶
npm 包:dsh-session-tabs。
Desktop: 在应用内插件管理器添加 dsh-session-tabs。
Web: 使用 DSH 命令:
dsh plugin --profile web add dsh-session-tabs@0.1.6
若用 npm 手动管理 profile,先进入目标 profile 目录,再执行:
npm install dsh-session-tabs@0.1.6 --ignore-scripts
手动安装后,还需在该 profile 的 dsh.profile.bundles 中启用 dsh-session-tabs,再刷新或重开 DSH;插件管理器与上述 dsh plugin 命令通常会处理启用逻辑。
仅下载离线包时,在目标目录执行:
npm pack dsh-session-tabs@0.1.6
会生成 dsh-session-tabs-0.1.6.tgz,可在 DSH 插件管理器中用该文件的完整路径添加。
从 GitHub 安装¶
dsh plugin --profile web add github:QIN-SMART/dsh-session-tabs
注意:CLI 的 --profile desktop 为保留名称,不能套用上述 Web 命令写法。已有本地安装的用户可在目标 profile 的包管理器中更新为 dsh-session-tabs@0.1.6,再完全退出并重开应用。
临时回退与移除¶
- 临时回退: 点击左栏底部的视图切换图标,可切回原生单会话布局。
- 完整移除: 在目标 profile 的插件管理器中移除
dsh-session-tabs并刷新客户端;注入节点、样式、订阅与会话引用会清理。浏览器里dsh-session-tabs.v1的本地标签清单可能仍保留,需要时可清除该站点的对应localStorage键。
典型用法¶
经过上面的安装与启用步骤后,日常使用可以按下面流程操作:
- 在左栏按原生方式打开或新建会话,会话自动进入顶部标签。
- 点击标签在多个会话间切换;用
+新建会话,用×仅关闭标签页(会话与后台任务仍由宿主管理)。 - 需要并排关注任务状态时,留意标签上的
●、!等标记;切换标签不会自动停止其他会话中的任务。 - 标签较多时拖动排序;需要恢复误关标签时,焦点在标签栏内按
⌘/Ctrl + Shift + T。 - 不想显示标签栏时,用左栏底部「标签窗口」图标切换;再次显示后顺序与偏好从
localStorage恢复。
不同会话同时修改同一文件的冲突仍由 DSH 与用户自行处理,本插件不改变宿主行为。
适用场景与注意¶
适合: 在同一 DSH 客户端内并行维护多个智能体会话(例如一条线在跑长任务、另一条线在等确认),又希望继续使用原生左栏、右栏与底部工作台,而不是开多个系统窗口或自建 iframe 壳。
注意:
- 插件声明客户端平台为 web(
package.json中dsh.client.platform: "web"),Desktop 通过应用内插件管理器添加包名即可;Web 侧安装命令需使用--profile web。 - DSH 客户端 API 仍在变化,大版本升级后应重新走一遍关键路径(标签切换、右栏动画、插件管理页等)。详细验收范围见仓库内 验收说明。
- 社区线索中的 GitHub 组织名可能与 npm 仓库字段不一致:npm 与 README 安装示例指向 QIN-SMART/dsh-session-tabs,以 README 与
package.json的repository为准。
结尾¶
dsh-session-tabs 用轻量顶栏标签把多会话收进单客户端,尽量不动原生侧栏与后台任务模型。若你正在 DSH 生态里按「一切皆插件」的方式扩展工作流,可以从独立 profile 安装 0.1.6 试跑,再决定是否纳入日常环境。