dsh-chat-split:DSH 客户端多屏并行对话

前言

在 DeepSeek Harness(DSH)里跑多工作区、多会话时,常见做法是在页签或侧栏里来回切换,同一时间只能专注一条对话。需要对照两条轨迹、并行跟不同子智能体,或者一边改代码一边看另一条回复,切换成本会堆高。

dsh-chat-split 是社区维护的客户端插件:左侧栏增加「对话分屏」入口,在正文区摆出最多四块并行对话,拖拽即可入屏,宿主顶栏、页签行与侧栏仍由 DSH 照常渲染。下面介绍它做什么、如何安装,以及典型用法与注意事项。

这是什么

  • 插件名称:dsh-chat-split(npm 包名同)
  • 维护者:GitHub 用户 k623615746,作者署名 YG
  • 分类:客户端(dsh.client,平台 web)
  • 版本:资料中当前为 0.1.0,许可证 MIT
  • 目录页:SkillHub 插件页

一句话定位:左侧栏入口 + 最多 4 屏并行对话;拖入侧栏会话即分屏;单屏可铺满;分屏组合写入 localStorage 键 dcs.split.v1,重开面板可恢复。

核心功能

屏数与布局

  1. 顶栏右侧 + / − 增减屏数,上限 4、下限 1。
  2. 自动排布:1 屏铺满;2 屏左右并排;3 屏两列两行(第三屏跨两列);4 屏两列两行。
  3. 某屏点「铺满」图标或双击该屏标题条可单屏铺满,Esc 还原。

拖放与会话选择

  • 从左侧栏把另一条对话拖进对话区:有空屏先填空屏,该会话已在某屏则跳转;拖错有提示,不会误清空。
  • 未先点「对话分屏」也可拖:当前在看一条对话时,把侧栏另一条拖到其上,面板会自动打开并把两条并排放好,落点有虚线回执。
  • 拖着一屏标题条到另一屏,两个会话对调位置。
  • 空屏点「选择对话」:按工作区分组列出会话,支持搜索;已在其它屏的会话标「已在用」。

与宿主 UI 的关系

分屏不替换整个会话面板,也不盖浮层。网格挂在 [data-conversation-content] 内的真子节点上,只把原先单会话正文换成网格;标题、模式、子智能体、重启、后台任务、硬件监控、页签行(对话/轨迹/画廊等)仍由宿主渲染,左侧栏不动。网格与正文区同宽同高,随窗口与会话切换缩放。

分屏数 4/4、+、−、✕ 通过 portal 进入宿主顶栏页签行([data-conversation-tabs] 父节点)最右端,前有「分屏操控」标签;空白会话无页签行时,控制条退回网格上方。

每屏信息头与子智能体

每屏顶部 .dcs-panehead 显示序号、工作区、对话标题(及运行状态点);右侧有工作模式(标准 / PTC / 极简 / 创造模式,来自会话投影 agentPreset)、子智能体(来自 subagentCatalog,无则不显示)、铺满/清空/关闭。当前操作屏信息头底色不同。

N 个子智能体 ▾ 可展开本屏清单;点一行可把该子智能体摆到另一屏(已开则跳转,有空屏则落入,四屏满则替换当前清单所在屏)。Esc 或点外部收起。

记忆

分屏组合(会话 id、当前屏、铺满状态)存在 localStorage 的 dcs.split.v1,重开面板原样恢复。

安装与启用

需要能运行 pnpm 的 DSH 环境;package.json 要求 Node >=22.13.0。任选一种安装方式(命令来自仓库 README):

# 1) npm(发布后可用)
dsh plugin install dsh-chat-split

# 2) 从 GitHub 安装
dsh plugin install github:k623615746/dsh-chat-split

# 3) Release 打包文件
dsh plugin install https://github.com/k623615746/dsh-chat-split/releases/download/v0.1.0/dsh-chat-split-0.1.0.tgz

在 GUI:插件市场 → 安装,将上面第 2 或第 3 行的 spec 粘贴到输入框;装完后勾选启用并刷新页面,左侧栏出现「对话分屏」(四宫格图标)。

本地开发可链目录(改代码后需 npm run build 再刷新):

dsh plugin install link:/absolute/path/to/dsh-chat-split

典型用法

  1. 左侧栏点「对话分屏」进入。
  2. 首次打开时,第一屏自动放上当前正在看的对话;其余屏用「选择对话」或从侧栏拖入。
  3. 总顶栏点 ✕,或再点一次左侧「对话分屏」,回到普通单会话界面(分屏状态不丢)。

排查时可在浏览器控制台使用插件暴露的诊断接口:

window.__dcsDiag.state()   // { panes: [...], active, focus, overlay, seeded }
window.__dcsDiag.flush()   // 立即落盘

某屏若显示「宿主没有下发会话作用域能力」,多为宿主升级后槽语义变化,子槽未拿到 SessionProvider / renderSlot。

适用场景与注意

适合:需要在同一窗口对照多条对话或多工作区;习惯拖拽而非反复点页签;希望保留 DSH 原顶栏与子智能体控件的分屏用法。

实现提示(自用文档摘要):网格注册在 shell.overlay,每屏通过 sessions.retain 与宿主 conversation.content(variant: 'embedded')渲染真对话,与 @deepseek-ai/dsh-client-ui-subagent 同源思路。插件不额外声明宿主已有槽名,避免与其它 entry 冲突。

安全与信任:插件以当前 DSH 进程权限在客户端注入运行,会读写本机 localStorage。安装前请查看 GitHub 仓库 源码与 MIT 许可证,确认与你的工作区策略一致。SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-chat-split 把「一次只看一条对话」扩展为最多四屏并行,拖放入屏、自动排布与状态记忆都围绕日常多会话开发设计,且尽量不改动宿主顶栏与侧栏。进一步了解可访问 SkillHub 目录页 与 GitHub 仓库。

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

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

小夜