前言¶
DeepSeek Harness (DSH) 采用“一切皆插件”的架构。默认情况下,如果未选择工作区,会话输入框会被内核判定为不可用(inert)。dsh-temp-session 插件通过引入“工作区可选化”和“免工作区临时会话”的概念,打破了这一限制。它允许用户在没有固定工作区上下文的情况下启动会话,每个临时会话独占一个独立的目录,重启后空白会话会自然消失。
核心功能¶
该插件主要包含以下能力:
- 工作区可选化:在 Hero 工作区入口显示“选择工作区(可选)”。点击按钮进入选择菜单,点击按钮其他区域仍可正常选择工作区。
- 免工作区临时会话:未选定工作区时,点击侧边栏“新建会话”将创建临时会话。
- 独立目录会话:临时会话独占目录
$DSH_HOME/tmp-sessions/session-<uuid>(默认即~/.dsh/tmp-sessions/…)。会话的 cwd、沙盒写边界、侧边栏归组(Ungrouped)均基于该目录。 - 内核客户端补丁:对内核客户端进行补丁处理,移除
workspaces.phase === "ready"的条件限制,使无工作区会话的输入框保持可用状态。 - 屏蔽桌面客户端功能:屏蔽桌面客户端(dsh-tauri >= 0.15.9)自带的“未分组”新建会话功能,防止冲突。
安装与启用¶
安装该插件需要将依赖写入配置文件,并重启 Harness 进程。
- 安装插件:
使用官方安装命令,插件会被写入~/.dsh/profiles/web/package.json的依赖与dsh.profile.bundles。
dsh plugin --profile web add dsh-temp-session
-
配置清单:
确保~/.dsh/profiles/web/package.json中的dsh.profile.bundles包含该插件名称。 -
生效:
修改配置后必须重启 Harness 进程才能生效。桌面版需退出并重新打开 App,Web 界面需重启内核。
用法说明¶
安装并重启后,体验与原生行为有所区别:
-
工作区入口交互:
- 未选定工作区:Hero 工作区入口显示“选择工作区(可选)”。
- 已选定工作区:鼠标悬停在按钮上时,箭头自动变为 ×,点击 × 取消选择;点击按钮其他区域仍打开工作区选择菜单。
-
新建会话:
- 在侧边栏点击通用“新建会话”按钮(未指定工作区时),默认创建临时会话。
- 工作区行内的
+仍创建该工作区的会话,保持原行为不变。
-
临时会话目录:
临时会话位于$DSH_HOME/tmp-sessions/session-<uuid>。重启 Harness 后,未发送消息的空白临时会话会自动消失。
兼容性与注意事项¶
- 版本兼容:仅兼容 dsh 版本
0.1.2-rc.x~0.1.7-rc.1。升级到 0.1.7-rc.1 后需要重启进程以应用依赖变更。 - 桌面客户端限制:桌面客户端(dsh-tauri >= 0.15.9)自带的“未分组”新建会话功能会被本插件屏蔽,侧边栏和分组行的
+会改走本插件逻辑。 - 沙盒边界:临时会话的
workspace-write写边界为该会话的独立目录。读取边界不设限(dsh 默认行为),隔离主要依靠目录隔离实现。
总结¶
dsh-temp-session 插件通过内核补丁和目录隔离机制,为 DSH 用户提供了更灵活的会话管理方式。它在不破坏现有工作区逻辑的前提下,支持在无工作区上下文下进行临时开发。相关源码与文档可参考其 GitHub 仓库或生态目录。