前言¶
在 DeepSeek Harness(DSH)里同时跟进多个会话时,常见做法是在侧边栏来回切换,或开多个浏览器标签。对话区本身仍是单会话视图,流式输出、输入框和审批只能在一个界面里操作。若需要在同一窗口里并排对比两个智能体的回复,或一边跑长任务一边在另一个窗格继续提问,就需要把对话区拆成多个可独立交互的区域。
dsh-split-workspace 由社区维护者 mhlywxl 发布,属于 DSH 的客户端类插件:在 Web 与 DSH Desktop(dsh-app://)里把对话区变成不限数量的原生窗格,支持左右分栏、上下堆叠、田字 2×2 与自动网格,并可通过拖拽重排。每个窗格挂载的是真实会话组件,而非 iframe 嵌套页面。
这是什么¶
插件包名 dsh-split-workspace,仓库 mhlywxl/dsh-split-workspace,可在社区目录 SkillHub 条目 查看简介。当前包版本为 0.4.3,许可证 MIT;包内已预构建 lib/client.js,无原生依赖、无安装脚本,macOS / Windows / Linux 行为一致,插件运行时不联网。
官方说明支持 DSH 0.2.0 / 0.2.1,当前构建针对 0.2.1-rc.2。窗格引擎衍生自 dsh-split-screen 1.7.0(MIT),本包面向 Desktop shell 做了适配,并增加自动布局、不限窗格数、重命名/复制/最大化与紧凑工具栏等能力。
核心功能¶
下面按 README 已列能力归纳,便于对照是否满足你的使用方式。
多窗格与布局¶
- 不限数量的原生窗格:没有四窗格上限,窗口能显示多少会话即可开多少。
- 自动布局:2 个窗格左右分栏;3 个呈 L 形;4 个田字 2×2;5 个以上按行优先的均衡网格(约
sqrt(n)列)。增删窗格会重新适配网格;手动拖拽堆叠或分栏的结果会被保留。 - 拖拽排布:拖动窗格标题栏到另一窗格的左/右/上/下,可手动分栏或堆叠;拖动分隔条调整大小;双击标题栏或
⤢可最大化/还原。 - 持久化:窗格树在刷新和重启后保留;工具栏支持最小化分屏(隐藏分屏、保留窗格树)与恢复。
与会话、桌面能力的关系¶
每个窗格复用原生会话组件,拥有各自的输入框、流式输出、停止、队列、待办、附件、/ 命令、ask_user_question、审批与视图页。共享的原生侧边栏跟随当前聚焦窗格;把侧边栏中的会话拖到对话区可新增或替换窗格。分屏工具栏统一控制右侧栏的打开/收起。
桌面端从 dsh-app:// 提供客户端时,Electron preload 只在顶层框架运行,同源 iframe 无法完成插件加载;因此本插件在顶层客户端按会话重新挂载原生对话组件,与上游同类插件的架构一致。
快捷键与调试¶
Alt+T:切换聚焦窗格内的紧凑 TUI 输入框。Alt+Shift+←/→/↑/↓:在窗格间移动焦点。
控制台可调用 window.__dshSplitWorkspace 上的方法,例如 health() 查看版本与窗格状态,split(sessionId) 将会话加入窗格,reset() 清除已保存布局等(完整列表见仓库 README「命令」一节)。
安装与启用¶
安装方式取决于你在 Web(dsh web)还是 DSH Desktop 中使用。桌面端的 desktop profile 由 Electron 应用管理,不要在终端执行 dsh plugin --profile desktop add ...,该命令会被拒绝。
Web:在线安装¶
在终端执行:
dsh plugin --profile web add dsh-split-workspace
dsh --profile web
dsh --profile web 会启动 Web 服务并打印带 token 的地址。若服务已在运行,安装后需重启服务,并在浏览器中硬刷新页面。
Web:离线安装¶
在联网机器打包或从 GitHub Release 下载 .tgz,再拷到目标机器:
# 联网机器
npm pack dsh-split-workspace
# 目标机器:.tgz 绝对路径
dsh plugin --profile web add /absolute/path/dsh-split-workspace-<version>.tgz
# 或者解压后安装目录(根目录需有 package.json)
dsh plugin --profile web add /absolute/path/dsh-split-workspace
dsh --profile web
目标机器无需访问 npm 或 GitHub。
Desktop:在线安装¶
- 打开 DSH Desktop,在侧边栏 插件市场 搜索
dsh-split-workspace并安装;或进入 插件 → 添加插件 → 安装第三方插件,填入包名。 - 打开 设置 → 插件,启用
dsh-split-workspace。 - 完全退出并重开 DSH Desktop,使新的客户端 bundle 生效。
Desktop:离线安装¶
- 在联网机器执行
npm pack dsh-split-workspace,或从 Release 下载.tgz并拷到目标机器。 - DSH Desktop → 插件 → 添加插件 → 安装第三方插件:优先填
.tgz的绝对路径;若安装器只接受目录,先解压再填解压目录路径。 - 在 设置 → 插件 启用插件,完全退出并重开桌面端。
启用与验证¶
在 设置 → 插件 确认 dsh-split-workspace 已启用。分屏入口:点击侧边栏底部(设置旁)的分屏图标,或将侧边栏中的会话拖到对话区。在浏览器或桌面端控制台执行:
window.__dshSplitWorkspace.health()
可查看版本、窗格数与几何状态。若看不到分屏入口,请确认至少有 2 个会话、插件未处于安全模式,并检查 DSH 版本是否与插件说明一致。
典型用法¶
经过上面的安装与启用步骤后,可按 README 中的交互流程开始分屏。
- 从当前会话快速分屏:点击侧边栏底部的分屏图标,会用当前会话与列表中的下一个会话开始分屏。
- 拖拽加入窗格:把侧边栏里的会话拖到对话区,放下的会话成为第二个窗格;分屏后可将另一会话拖到某个窗格以替换,或用窗格标题栏的分屏按钮为新窗格选择会话。
- 布局预览:拖动侧边栏会话经过窗格边缘时,会预览放下后的布局并用虚线标出占位;松开即应用。
- 与单会话视图切换:打开新建会话、插件/技能/设置面板时,分屏会自动最小化,避免遮挡;恢复分屏后回到此前聚焦窗格的会话。
若已安装 dsh-prompt-history 等输入增强类插件,README 说明分屏会按活跃窗格隔离预测与候选,避免隐藏页或非聚焦窗格抢走全局选择器;具体兼容行为以仓库「限制」一节为准。
适用场景与注意¶
适合谁:需要在同一 DSH 窗口内并行查看多个会话、对比输出或并行操作(停止、队列、审批、视图页)的 Web 与 Desktop 用户;日常完整桌面能力以 DSH Desktop 为推荐运行方式。
权限与安全:DSH 插件在当前 dsh 进程权限下运行。安装前应阅读仓库源码与 MIT 许可证(及 THIRD-PARTY-NOTICES.md),自行判断是否信任维护者与依赖链。社区目录 SkillHub 为独立站点,与 DeepSeek / 幻方无官方从属关系,不宜当作官方应用商店。
已知限制(摘自 README):持久化树会校验会话唯一性与深度,损坏的树会被丢弃;递归深度上限 32 层用于栈安全,不是窗格数量上限。隐藏的原生会话仍可能在遮罩下流式运行;窗格重命名拒绝空会话。
结尾¶
dsh-split-workspace 把 DSH 对话区扩展为可拖拽、可持久化的原生多窗格工作区,并覆盖桌面端 preload 约束下的实现方式。进一步了解可访问 SkillHub 插件页 与 GitHub 仓库。