DSH HUB
HomePlugin StorePlugin PacksCommunityRankingsResourcesPublish Guide
Plugin source
Back to catalog

Bob-Cheung /

Bob-Cheung/dsh-plugin-session-panes

Verified

桌面版多会话分屏

★ 1 Stars0 Forks0 IssuesN/A Community rating0 Confirmed installs
View on GitHub
READMESource: main@620cb04d

多会话分屏 · DSH session panes

一个 DeepSeek Harness Web UI 插件:在右侧边栏并排打开多个会话。点击会话行上的按钮,或把会话拖到窗口右侧,该会话就会作为独立窗格出现在右侧,主栏当前会话不受影响。

Session panes 演示:主栏会话与右侧窗格并排显示

示意:主栏继续当前会话,另一个会话在右侧窗格中同步显示;截图里会话行悬停按钮的提示是「在右侧打开(可拖到右侧)」。

  • 仓库:https://github.com/Bob-Cheung/dsh-plugin-session-panes
  • 许可证:MIT

本仓库根目录就是插件包本身(package.json 在根上),不是 monorepo,也没有子包。安装时 target 直接指向仓库根目录。

功能特性

  • 两种打开方式:会话行悬停按钮一点即开;也可以按住按钮拖到窗口右侧(右侧 45% 为投放区)后松手。
  • 原生拖拽兼容:会话行本身用于排序的原生拖拽仍然可用,插件只拦截"开始于自身按钮"的按压,且只处理从左栏发往右侧的拖拽,右侧窗格内的拖拽不受影响。
  • 多窗格并存:每个会话对应一个独立的右侧标签页(preferNewPane),可以同时查看多个会话的实时输出。
  • 拖拽反馈:拖动时显示跟随指针的标题浮层,右侧投放区高亮并提示"拖到此处"。
  • 中文 / English 双语:界面与插件元数据均提供简体中文与英文文案,跟随 Harness 语言设置。
  • 明暗主题自适应:样式全部使用 --dsw-alias-* 主题变量,不写死颜色。
  • 无构建步骤:纯 ESM + 运行时 React.createElement,安装即生效;没有依赖、没有安装脚本。

环境要求

  • 已安装 DeepSeek Harness,并使用 Web UI(桌面端或 dsh web 均可)。
  • Harness 版本需提供右侧边栏相关服务与插槽(见「兼容性」)。已在 0.1.5-rc.1 上验证。
  • 安装插件不需要 Node.js 或任何构建工具,这些由 Harness 自身完成。

安装

一句话安装(推荐)

在 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
    
  2. 让 agent 安装这个目录,或者直接调用插件管理器(target 是含 package.json 的绝对路径,即仓库根):

    plugin_manager(action: "install_bundle", target: "D:\\tools\\dsh-plugin-session-panes")
    

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

安装成功后,在「插件管理 / Plugins」里能看到 Session panes / 多会话分屏,带图标与中英文描述。

使用

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

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

更新

安装是链接到 checkout,不是拷贝,所以只需:

git pull

然后重启 Harness(替换已安装的 JavaScript 模块需要重启才能加载新版本,只刷新页面不一定够)。

卸载

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

卸载后刷新页面。

工作原理

组成 说明
资源协议 注册 sessionchat 协议,地址形如 dsh-resource://sessionchat/session/<sessionId>?title=<标题>,打开时 ctx.sessions.retain() 持有会话,标签页关闭即 release()。
侧栏标签类型 通过 sidebarRightTabs.register() 注册 sessionchat 类型,priority: 'extension',标题优先取地址中的 title。
标签页内容 在 sidebar.right.pane.tab 插槽中注册 SessionChatTab,用 SessionProvider 包裹共享的 Conversation 插槽,复用主界面聊天视图(view: 'chat')。
行操作按钮 在 sidebar.workspaces.session.row.action 插槽注册 SessionRowAction,负责点击打开与指针拖拽。
拖拽浮层 在 shell.overlay 注册 DropOverlay,绘制固定定位的投放区与跟随指针的幽灵标签。
样式 运行时注入 <style data-plugin="@bob-cheung/dsh-session-panes">,卸载时移除。

依赖的客户端服务(inject):sessions、uiWorkspace、slots、locale、sidebarRight;插槽注入后额外使用 resources、sidebarRightTabs。

Host 半(index.js)只导出一个空的 apply(),不注册任何行为。

目录结构

dsh-plugin-session-panes/
├── package.json        # 包清单:exports 与 dsh.bundle / dsh.client 声明
├── cordis.patch.yml    # Loader patch:插入 session-panes 行
├── index.js            # Host 半:空实现
├── client.js           # Client 半:协议、标签页、行按钮、拖拽浮层、样式
├── icon.svg            # 插件图标
├── demo.png            # 演示截图(README 配图,不参与运行时)
├── LICENSE             # MIT
├── README.md           # 本文件
├── .gitignore
└── locale/
    ├── zh.json         # 插件标题与描述(中文)
    └── en.json         # 插件标题与描述(英文)

配置与可调参数

插件没有面向用户的配置项,安装后即按默认行为工作。需要微调时改 client.js 顶部的常量:

常量 默认值 作用
DROP_RATIO 0.55 投放区从视口宽度的 55% 处开始,即右侧 45%
拖拽阈值 6(px) 指针移动超过该距离才判定为拖拽,避免误触
KIND / RESOURCE_PROTOCOL sessionchat 资源协议与标签类型标识,改动需同步 cordis.patch.yml 之外的所有引用

兼容性

  • 需要 Harness Web UI 提供右侧边栏(sidebarRight)与 sidebar.right.pane.tab、sidebar.workspaces.session.row.action、shell.overlay 插槽。
  • 仅作用于 Web 客户端;Host 侧无行为,不影响终端或 API 调用。
  • 已在 DeepSeek Harness 0.1.5-rc.1(desktop profile)上验证安装与使用。
  • 会话 ID 按 session-<uuid> 形式识别;若会话行未暴露 data-session-id 等属性,会退化到从拖拽数据中解析 UUID。

开发与校验

  • 无构建:纯 ESM,改完文件重装或重启 Harness 即可看到效果。

  • 语法检查:

    node --check client.js
    node --check index.js
    
  • 清单校验:package.json、locale/*.json 是 JSON,cordis.patch.yml 是 YAML;改完立即检查。

常见问题

会话行没有出现「在右侧打开」按钮? 确认插件已安装且已启用(application: applied),然后刷新页面;仍不行则重启 Harness。若近期移动过插件目录或重装过插件,Host 可能仍持有旧的绝对路径,必须重启。

拖到右侧没有反应? 投放区只在视口右侧 45% 内生效,且需要从会话行按钮上开始拖拽;松手位置要落在高亮区域内。

右侧打开了空白窗格? 说明该会话的资源创建失败,通常伴随控制台错误;关闭标签页后重试,并确认 Harness 版本提供 sidebarRight 服务。

License

MIT © 2026 Bob Cheung

English

@bob-cheung/dsh-session-panes — open multiple sessions side by side in the DeepSeek Harness Web UI right sidebar. Hover a session row and click Open in the right sidebar, or drag the row's button onto the right 45% of the viewport; the session opens as its own pane while the main column keeps its current session.

  • This repository root is the plugin package (no monorepo, no subpackages); install target points at the clone root.
  • Registers a sessionchat resource protocol (dsh-resource://sessionchat/session/<sessionId>) that retains the session for the tab's lifetime, a sidebarRightTabs tab type, and the shared chat Conversation slot.
  • Local installs are links: git pull and restart Harness to update.
  • Localized in Simplified Chinese and English; styles use --dsw-alias-* theme tokens; no dependencies and no build step.

Install from a checkout:

plugin_manager(action: "install_bundle", target: "<absolute path to this repository>")

Uninstall with plugin_manager(action: "remove_bundle", target: "@bob-cheung/dsh-session-panes"). Licensed MIT.

—/ 5

No ratings yet

Verified DSH bundle

Commit 620cb04db968

Community comments

No comments yet. Be the first to write one.

DSH HUB

A community index for DSH plugins. Not an official GitHub or DeepSeek AI product.

CommunityResourcesAPIAbout