dsh-session-tabs:单客户端多会话标签,保留原生侧栏与后台任务

前言

在 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 插槽或右栏服务。关闭标签不等于删除、归档或停止会话——运行中或待确认的会话仍在后台保留,结束后释放额外引用;关闭整个客户端、卸载插件与关闭标签是不同操作。

核心功能

标签与会话

  1. 通过原生左栏打开的会话会自动出现在顶部标签栏;点击标签切换会话,+ 使用原生方式新建会话。
  2. × 仅关闭标签,不删除会话;后台任务与宿主原生导航行为仍由 DSH 负责。
  3. 可拖动调整标签顺序;标签获得焦点后,左右方向键切换会话,Alt + Shift + 左/右 调整顺序。输入框不拦截上述快捷键,中文组字不受影响。
  4. 左栏底部的「标签窗口」线条图标可显示/隐藏标签栏;焦点在标签栏内时,⌘/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 键。

典型用法

经过上面的安装与启用步骤后,日常使用可以按下面流程操作:

  1. 在左栏按原生方式打开或新建会话,会话自动进入顶部标签。
  2. 点击标签在多个会话间切换;用 + 新建会话,用 × 仅关闭标签页(会话与后台任务仍由宿主管理)。
  3. 需要并排关注任务状态时,留意标签上的 ●、! 等标记;切换标签不会自动停止其他会话中的任务。
  4. 标签较多时拖动排序;需要恢复误关标签时,焦点在标签栏内按 ⌘/Ctrl + Shift + T。
  5. 不想显示标签栏时,用左栏底部「标签窗口」图标切换;再次显示后顺序与偏好从 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 试跑,再决定是否纳入日常环境。

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

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

小夜