DSH 多会话分屏:在右侧边栏并排打开多个会话

前言

在 DeepSeek Harness(DSH)里同时跟进多个 agent 会话时,常见做法是来回切换左侧会话列表:主栏只能显示一个当前会话,另一侧的输出只能等切过去再看。若你已经在用 Harness 的 Web UI(桌面端或 dsh web),又希望主栏继续当前对话、同时在右侧实时查看另一个会话的流式输出,社区插件 Session panes / 多会话分屏(@bob-cheung/dsh-session-panes)就是针对这一场景的客户端扩展。下面介绍它做什么、如何安装,以及使用时需要注意的点。

这是什么

维护者 Bob-Cheung 在 GitHub 开源的 dsh-plugin-session-panes 是一个 DeepSeek Harness Web UI 插件:在右侧边栏以独立窗格(标签页)并排打开多个会话。点击会话行上的按钮,或把会话拖到窗口右侧,该会话会出现在右侧;主栏当前会话不受影响。

仓库根目录即插件包本身(package.json 在根上),不是 monorepo。安装时 target 指向含 package.json 的仓库根目录。

核心功能

资料中已说明的能力如下,安装后无面向用户的配置项,按默认行为工作。

  1. 两种打开方式:悬停会话行,点「在右侧打开」;或按住该按钮拖到视口右侧(从宽度 55% 起为投放区,即右侧约 45%)后松手。
  2. 多窗格并存:每个会话对应右侧一个独立标签(preferNewPane),可同时查看多个会话的实时输出;关闭标签即释放对该会话的 retain。
  3. 与原生拖拽共存:会话行用于排序的原生拖拽仍可用;插件只拦截「起始于行上按钮」的按压,且只处理从左栏发往右侧的拖拽。
  4. 拖拽反馈:拖动时有跟随指针的标题浮层,右侧投放区高亮并提示「拖到此处」。
  5. 中英文与主题:界面与插件元数据提供简体中文与英文,跟随 Harness 语言;样式使用 --dsw-alias-* 变量,适配明暗主题。
  6. 无构建步骤:纯 ESM + 运行时 React.createElement,无依赖、无安装脚本。

若右侧边栏尚未挂载,插件会先在主栏打开该会话以激活侧栏,再自动在右侧打开对应窗格。

环境要求

  1. 已安装 DeepSeek Harness,并使用 Web UI。
  2. Harness 需提供右侧边栏相关服务与插槽(sidebarRight、sidebar.right.pane.tab、sidebar.workspaces.session.row.action、shell.overlay 等)。README 写明已在 0.1.5-rc.1(desktop profile)上验证安装与使用。
  3. 安装插件本身不需要 Node.js 或构建工具;本地用 git clone 或 ZIP 获取源码时,本机需能访问仓库或解压文件。

安装与启用

插件以 链接 方式安装到 checkout,不是拷贝进 Harness 目录。安装前应自行查看仓库源码与 MIT 许可证;插件在 当前 dsh 进程权限 下运行,与任何社区插件一样,只安装你信任的包。

一句话安装(推荐)

在 DSH 任意会话里对 agent 说:

下载并安装成插件,下载地址为:git clone https://github.com/Bob-Cheung/dsh-plugin-session-panes.git

agent 会克隆仓库并把克隆目录安装为插件。返回 application: applied 后 刷新一次页面(需要本机有 Git)。

手动安装

  1. 克隆仓库(无 Git 可在仓库页 Code → Download ZIP 解压):
git clone https://github.com/Bob-Cheung/dsh-plugin-session-panes.git
  1. 让 agent 安装该目录,或直接调用插件管理器(target 为含 package.json 的绝对路径):
plugin_manager(action: "install_bundle", target: "D:\\tools\\dsh-plugin-session-panes")

首次安装可能弹出权限确认。ZIP 解压后若多一层同名目录,target 须指向真正含 package.json 的那一层。

安装成功后,在「插件管理 / Plugins」中应能看到 Session panes / 多会话分屏,带图标与中英文描述。若移动过插件目录或重装过,有时需 重启 Harness,而不只是刷新页面。

更新与卸载

更新(链接安装时):

git pull

然后 重启 Harness(替换已加载的 JavaScript 模块通常需要重启,仅刷新页面不一定够)。

卸载:

plugin_manager(action: "remove_bundle", target: "@bob-cheung/dsh-session-panes")

卸载后刷新页面。

典型用法

  1. 在左侧会话列表找到目标会话。
  2. 悬停该行,点击「在右侧打开」;或按住该按钮拖到窗口右侧高亮区域后松手。
  3. 会话以新标签出现在右侧边栏,可继续输入并查看流式输出。
  4. 关闭标签即关闭该窗格。

工作原理(便于排查问题)

插件通过 Cordis patch 注入客户端逻辑,主要组成如下。

组成 说明
资源协议 注册 sessionchat,地址形如 dsh-resource://sessionchat/session/<sessionId>?title=<标题>;打开时 ctx.sessions.retain(),标签关闭时 release()。
侧栏标签 sidebarRightTabs.register() 注册 sessionchat 类型,priority: 'extension'。
标签内容 在 sidebar.right.pane.tab 注册 SessionChatTab,复用主界面聊天视图(view: 'chat')。
行按钮 在 sidebar.workspaces.session.row.action 注册 SessionRowAction,负责点击与拖拽。
拖拽浮层 在 shell.overlay 注册 DropOverlay。

需要微调行为时,可改 client.js 顶部常量(非用户配置项):例如 DROP_RATIO 默认 0.55、拖拽阈值默认 6 px;改动 KIND / RESOURCE_PROTOCOL 时需同步多处引用。

适用场景与注意

适合谁:经常在 Harness Web UI 里并行盯多个会话(例如一个会话跑长任务、另一个会话改配置或查文档),又不想放弃主栏当前上下文的使用者。

兼容性:仅作用于 Web 客户端;依赖 Harness 提供的右侧边栏与上述插槽。会话 ID 按 session-<uuid> 识别;若行上未暴露 data-session-id 等属性,可能退化为从拖拽数据解析 UUID。

常见问题(来自 README):

  • 没有出现「在右侧打开」:确认插件已启用并刷新;仍不行则重启 Harness。
  • 拖到右侧无反应:须从会话行按钮开始拖,松手落在右侧约 45% 高亮区内。
  • 右侧空白窗格:多为资源创建失败,查看控制台错误,并确认 Harness 版本提供 sidebarRight。

DSH 生态强调「一切皆插件」;SkillHub 等社区目录由社区维护,与 DeepSeek / 幻方无官方从属关系。本文事实均来自插件仓库 README 与 package.json。

结尾

多会话分屏把「右侧边栏 + 会话 retain」接到 Harness 会话列表上,用点击或拖到右侧约 45% 区域即可并排查看多个会话,主栏会话保持不变。需要安装包或源码时,可看社区目录页 https://www.skillhub.cn/plugins/Bob-Cheung/dsh-plugin-session-panes 与 GitHub 仓库 https://github.com/Bob-Cheung/dsh-plugin-session-panes。

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

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

Xiaoye