前言¶
DeepSeek Harness (DSH) 的设计理念倾向于模块化,开发者有时需要在不建立完整 Workspace 的情况下进行临时对话。在 DSH 0.2.0-rc.2 版本中,没有已注册 Workspace 的空白会话会禁用原生的编辑器 UI,导致 Agent 预设、附件上传等功能无法使用。
dsh-projectless-session 插件解决了这一问题。它通过创建一个临时的 Workspace 注册,让原生 UI 能够正常工作,并在首次对话后清理注册,从而实现无工作区会话的功能。
插件简介¶
这是一个由 jarvisluk 维护的客户端插件,旨在 DeepSeek Harness 中提供“无工作区会话”能力。每个会话都会获得一个按日期整理的独立工作目录。
核心功能¶
- 创建无工作区会话:在 Workspace 选择器中增加该选项,无需预先配置文件或环境。
- 按日期组织独立工作目录:会话文件默认存储在
~/Documents/DSH/YYYY-MM-DD/session-HH-mm-ss-random/,避免冲突。 - 复用 DSH 原生新会话 UI:在会话打开时,完整保留 Agent 预设、命令、附件、访问模式及发送按钮。
- 支持中英文双语:界面文案跟随 DSH 的 Language 设置自动切换。
- 保留会话可恢复性:首条消息后仅删除 Workspace 注册,Session、日志和目录保留在“未分组”区域。
- 自动清理未使用的空白会话:未发送消息的空白会话会被归档和清理。
安装与启用¶
使用官方 CLI 安装插件:
dsh plugin --profile web add github:jarvisluk/dsh-projectless-session
安装完成后,必须重启 dsh web 进程才能生效。若需卸载,可执行:
dsh plugin --profile web remove dsh-projectless-session
典型用法¶
会话目录结构¶
插件会自动为每个会话创建独立的根目录,默认路径如下:
~/Documents/DSH/YYYY-MM-DD/session-HH-mm-ss-random/
自定义根目录¶
如需修改存储位置,可在 Web profile 的 cordis.patch.yml 中配置:
- id: dsh-projectless-session
config:
root: /absolute/path/to/DSH
工作原理¶
插件利用 DSH 的 Cordis Host/Client 扩展接口,在会话生命周期内模拟一个临时 Workspace:
- 创建目录:Host 通过共享
/api通道上已认证的 DSH Connection 接口创建目录。 - 注册临时 Workspace:客户端将该目录注册为临时 Workspace。
- 启动原生 UI:DSH 在临时 Workspace 中创建并打开 Session,此时原生的空白会话编辑器完全可用。
- 首次消息后清理:DSH 接受首条消息并报告
blank === false后,插件仅删除 Workspace 注册,不删除实际目录和历史。 - 会话归档:Session 进入内置的“未分组”区域,重启 DSH 后仍可恢复。
- 清理废弃会话:如果会话从未被使用(用户切换走、DSH 退出或启动时发现残留),插件会注销 Workspace 并删除空目录。
适用场景与注意¶
- 依赖环境:依赖 DeepSeek Harness
0.2.0-rc.2和 Node.js22.19或更高版本。 - 运行权限:插件以当前
dsh web进程的权限运行,建议安装前检查源码与许可证。 - 仅限本地:当前功能主要面向本地 Web/Desktop profile。
总结¶
dsh-projectless-session 通过巧妙的生命周期管理,在保留 DSH 原生 UI 优势的同时,实现了轻量级的无工作区会话功能。对于需要频繁创建临时对话的开发者,这提供了一个兼顾便捷性与数据管理的解决方案。