dsh-session-popout
Manifest valid★ 4A plugin that lets you drag sessions from the sidebar into standalone windows, saving you from constantly switching back and forth between sessions!
独立会话窗口(Session Popout)
本项目由 AI 全程辅助制作。 需求、设计方向与验收由作者把握,代码、文档与排查过程由 AI 结对完成。发布前经过人工审阅,文中所有功能说明以实际行为为准。
顺便一提,下面的介绍也是ai写的,所以ai味很重也别找我麻烦嘞。
让你可以从侧边栏拖拽会话,使其成为一个独立窗口,省得来回切换会话的插件!
DeepSeek Harness 的会话默认都挤在同一个窗口里:想同时盯着两个会话跑、想把某个会话扔到第二块屏、想一边看长回复一边在别处干活,都得反复点侧栏。这个插件把「一个会话」变成一个真正的操作系统窗口 —— 关掉它不影响主窗口,主窗口也照常工作。
什么时候用得上
- 一个会话在跑长任务,另一个还要继续聊。 长任务那个扔进独立窗口让它自己跑,主窗口留在你正在聊的会话上,两边都不用退出、不用切。
- 想把某个会话丢到第二块屏幕。 独立窗口是真正的系统窗口,能拖到任意显示器、能单独全屏、能被系统窗口管理器记住位置。
- 一边等长回复,一边在别处干活。 等着看结果的那个会话单独开一窗放在旁边,主窗口腾出来干别的事,不必为了瞄一眼进度切来切去。
看起来是什么样
拖出去的窗口是 DSH 自己的会话界面:
- 顶部还是「对话 / 轨迹」标签、模型名、右上角那排控制件
- 中间还是原来那套对话流,Markdown、代码块、工具调用卡片全部照旧渲染
- 底部还是输入框、识图 / 上传、状态栏
- 侧边栏自动收起,于是窗口里只剩下这个会话本身
换句话说,是把 DSH 的那一块 切 了下来,而不是重画一个。插件本身不参与对话渲染 —— 对话由宿主画,插件只做三件事:开窗、把侧栏收掉、在会话头部加两个小按钮。
能做什么
| 能力 | 说明 |
|---|---|
| 拖拽开出独立窗口 | 在侧边栏按住会话条目往外拖,松手的地方就是新窗口出现的地方 |
| 窗口之间拖拽合并 | 把一个窗口拖到另一个上面,两个会话并成一个集合窗口 |
| 集合窗口 | 一个窗口里横排多个会话成员,左侧成员栏可切换、可拆出 |
| 收回 | 点窗口里的「⇲ 收回」,会话回到主窗口继续显示 |
| 跟随宿主主题 | 窗口的原生标题栏跟着 DSH 的明暗主题走 |
| 热更新 | 改了插件代码不用重启 DSH,HMR 会重新装载 |
安装
从 GitHub 安装(现在就能用):
dsh plugin add github:lumine-423/dsh-session-popout
或者下预构建包(不用本地编译,装得更快):
dsh plugin add "https://github.com/lumine-423/dsh-session-popout/releases/latest/download/dsh-session-popout.tgz"
以后会发布到 npm,那时就只需要 dsh plugin add dsh-session-popout。
装好后从侧边栏拖任意一个会话即可,不需要额外配置。
收录状态
- ✅ GitHub 仓库已上线:lumine-423/dsh-session-popout,带 release 与预构建
dsh-session-popout.tgz(资产名不带版本号,安装命令因此不会随发版失效) - ⏳ 插件市场目录:PR 已提交 —— awesome-dsh-plugin#8306。目录有一条自动检查要求仓库创建满 1 天;首次跑会红,该检查每 6 小时自动重跑,满 1 天后会自行转绿,不需要重开 PR
- ⏳ npm 包
dsh-session-popout:尚未发布,发布后市场能显示下载量
依赖什么
- DSH 桌面版(
dsh-desktop-runtime)。插件需要借桌面版自带的 Electron 来开原生窗口;纯 Web 版 /dsh web没有这个能力,插件会安静地不生效。 - Electron 的查找顺序:环境变量
DSH_POPOUT_ELECTRON→ 当前进程自身 →<home>/.dsh/electron/。想用系统里另一份 Electron,设这个环境变量即可。
已知限制
这个插件用了一部分 DSH 的内部接口,而不是公开稳定的插件 API。具体包括:
- 布局服务的
beginNavigation()、toggleSidebar()、closeRightbar() - 会话快照里的
retainedBy.mainView判断主视图归属 - 布局层给的
data-shell-overlay等 DOM 稳定标记 - 会话头部槽位
conversation.session.header.utilities
这意味着 DSH 升级后有可能失效。失效时的表现通常是窗口里只剩背景、或者按钮不出现,而不是崩溃。遇到请在 issue 里附上 DSH 版本号。
其余限制:
- 只在 Windows 上实测过;macOS / Linux 的代码路径写了但没有真机验证
- 一个会话同时只能在一个窗口里出现
- 集合窗口的成员栏不支持拖拽排序(用下拉切换)
出问题时
插件在窗口里自带一份自检:如果打开 3.5 秒后 DSH 的会话界面还没画出来,窗口底部会浮出一块说明,列出它检查到的每一层(外框、侧栏状态、浮层、会话目录、打开状态、启动期错误)。把那块截图发到 issue 里,比描述「白了」有用得多。
开发
# 直接改源码即可,profile 里是 link 形式,改完刷新页面生效
# client.js 会被 index.js 的 watcher 检测到并触发热重载
结构:
| 文件 | 职责 |
|---|---|
index.js | 宿主侧:HTTP 路由、拉起并管理窗口管家进程 |
client.js | 前端:拖拽开窗、收侧栏、打开会话、会话头部按钮 |
window/main.cjs | 窗口管家主进程:创建 BrowserWindow、合并/拆分/关闭 |
window/preload.cjs | 注入页面:标记窗口身份、收敛外壳布局、上报自检 |
License
PolyForm Noncommercial 1.0.0 加一条源码可得性补充条款。SPDX 标识:LicenseRef-PolyForm-Noncommercial-1.0.0-With-Source-Availability。
你可以:
- 免费用,随便用,私人、学习、研究、业余项目、慈善、教育、公共研究、政府机构使用都算允许用途
- 读源码、改源码、自己改着玩
- 原样转发给别人
但不能:
- 拿去商用 —— 卖钱、放进收费产品、当作商业服务的一部分,都不行。要商用请单独联系作者谈授权
- 改完闭源发给别人 —— 你把改过的版本发出去,就必须把改过之后的完整源码用同样条款、免费、放在拿到你版本的人找得到的地方公开。只发打包产物、压缩产物、编译产物不算
完整条款见 LICENSE。
Comments
Loading…
Similar plugins
by xthreehao
DSH(DeepSeek Harness)隐藏会话插件:把会话从侧边栏隐藏、可随时恢复。免构建零依赖,契约取自运行中的 0.2.0-rc.2。
★ 0
MIT
JavaScript
Oct 2, 2026
dsh plugin --profile web add dsh-hidden-sessionby fountunt
为 DeepSeek Harness 提供会话删除能力,支持侧边栏 ⋮ 菜单入口
★ 7
↓ 178/wk
MIT
JavaScript
Aug 15, 2026
dsh plugin --profile web add dsh-session-cleanerby imshz6669
DSH 插件:把任意会话作为完整对话开进右侧栏,主区 + 右栏可同时对话(最多 3 个)。DSH plugin: open any session as a full chat tab in the right sidebar.
★ 0
MIT
JavaScript
Oct 20, 2026
dsh plugin --profile web add dsh-split-chatby liuyun847
DSH Web 客户端插件:侧边栏收起时在左侧空白区竖排显示活跃会话横条 (DeepSeek Harness)
★ 0
JavaScript
Oct 5, 2026
dsh plugin --profile web add dsh-client-ui-session-railby drscrewdriver
给 DeepSeek Harness 侧边栏加一个会话内容检索——标题/内容一键切换,还能按用户/回复/工具筛选
★ 4
↓ 24/wk
MIT
TypeScript
Oct 18, 2026
dsh plugin --profile web add dsh-session-search-toggleby drscrewdriver
给 DeepSeek Harness 侧边栏加一个会话内容检索——标题/内容一键切换,还能按用户/回复/工具筛选
★ 3
↓ 255/wk
MIT
TypeScript
Sep 13, 2026
dsh plugin --profile web add dsh-session-search-toggle