dsh-session-workspace:每个新对话自动获得独立工作区

前言

在 DeepSeek Harness(DSH)桌面版里,默认情况下所有对话共用同一个工作目录(default-workspace)。你在 A 对话里生成的文件、脚本输出和下载附件,换到 B 对话仍然可见、可改;对话一多,目录里的东西也容易互相干扰。如果你希望「一次对话一份文件空间」,又不想每次手动建文件夹、改路径,可以装社区插件 dsh-session-workspace:新建对话时由 DSH 自动分配独立文件夹和沙箱根,跨对话互不可见,并在输入框旁提供运行时开关。

下面介绍这个插件的定位、能力、安装步骤和日常使用方式。事实以维护者 stevenwang15 在 GitHub 仓库公开的 README 与 package.json 为准;当前版本 0.2.0,许可证 MIT,依赖 Node 22+(engines 写明 >=22.19.0)。插件在 SkillHub 目录中归类为 admin-security。

这是什么

dsh-session-workspace 是 DSH 的本地插件包,一句话:One conversation, one workspace——每个新对话自动创建并进入独立工作区(独立目录 + 独立沙箱根),实现跨对话文件隔离;输入框工具栏最左侧还提供「独立工作区 / 共用工作区」胶囊开关。

维护者:stevenwang15。源码与说明:https://github.com/stevenwang15/dsh-session-workspace;社区目录页:https://www.skillhub.cn/plugins/stevenwang15/dsh-session-workspace(与 DeepSeek / 幻方无官方从属关系,属社区插件生态)。

它解决什么问题

装插件前 装插件后
新对话文件放哪 全部挤在同一个文件夹 每个对话一个独立文件夹
A 对话的文件,B 对话能否看到 能 不能
是否需要你手动操作 —— 否,照常点「新建对话」

装好之后,点侧边栏 新建对话(New Session) 时,侧边栏会多出一行以创建时间命名的工作区(例如 2026-11-06 20:15);该对话读写的文件落在类似 文稿/deepseek-harness/session-workspaces/20261106-201533-a1b2/ 的路径下(macOS 上可在访达中打开父目录查看所有对话文件夹):

open ~/Documents/deepseek-harness/session-workspaces

再点一次新建对话,又会得到全新的工作区和文件夹;全程不用手动建目录、不用选路径、不用改设置。

核心功能

自动隔离的工作区与沙箱

DSH 里「工作区」对应一个目录:会话创建时记录的 cwd 同时是沙箱根(只能写该目录)和侧边栏分组依据。插件在 Host 侧包装 ctx.sessionController.create:新对话来临时先独占创建目录、注册成 Workspace,再带着该 Workspace 创建会话。显式指定 cwd、复用空白会话(sessionId)、或在手动添加的项目工作区里新建时,仍保持原生行为;创建失败会回退到原生行为,不阻塞新建对话。

输入框旁的运行时开关

打开任意对话后,输入框工具栏最左边有一个小胶囊:

  • 亮起 独立工作区:之后新建的对话会自动建独立文件夹(默认);
  • 点一下变为灰色 共用工作区:下一次新建对话暂不隔离,仍使用当前所选文件夹;
  • 再点一下恢复。重启 DSH 后开关会回到默认,不会持久改掉你的习惯设置。

注意:某个对话的文件夹在创建那一刻就固定了,开关只影响之后新建的对话,不会把当前对话「搬家」。

可选高级配置

在 ~/.dsh/profiles/desktop/cordis.patch.yml 末尾可追加(普通用户可跳过):

- id: session-workspace
  config:
    enabled: true          # false = 完全停用插件
    mode: managed          # managed = 手动加的项目不隔离;all = 所有新对话都隔离
    baseDir: /Users/你/Documents/deepseek-harness/session-workspaces
设置 默认 说明
enabled true 总开关
mode managed managed 只隔离默认工作区与插件自建工作区;all 则新建对话一律隔离
baseDir 默认工作区旁的 session-workspaces 各对话子目录的父路径

安装与启用

插件以当前 DSH 进程权限运行,安装前建议浏览仓库源码与 LICENSE(MIT),确认符合你的安全策略。

第 1 步:在终端安装插件

dsh plugin --profile desktop add github:stevenwang15/dsh-session-workspace

需要 Node 22+。若上述命令报错,可从 Release 下载 dsh-session-workspace-0.2.0.tgz,再执行:

dsh plugin --profile desktop add file:下载文件的绝对路径

第 2 步:写入 desktop profile 的 bundles

打开 ~/.dsh/profiles/desktop/package.json,在 dsh → profile → bundles 数组中加入 "dsh-session-workspace",例如:

"bundles": [
  "@deepseek-ai/dsh-base",
  "@deepseek-ai/dsh-web-app",
  "dsh-session-workspace"
]

(保留数组里原本就有的其它条目。)

第 3 步:彻底重启 DSH

菜单栏 DeepSeek Harness → 退出(或窗口激活时 Cmd+Q),确认活动监视器里没有 DeepSeek Harness 进程后,再重新打开。仅关窗口再从 Dock 打开不算重启,插件可能不会生效。

怎么确认装好了

  1. 打开任意对话,输入框工具栏左侧应能看到 独立工作区 胶囊;
  2. 点「新建对话」,侧边栏应多出一个新工作区;
  3. 查看 ~/Documents/deepseek-harness/session-workspaces/,应出现带时间戳的新文件夹。

若看不到胶囊:先确认彻底退出再打开;再 Cmd+R / F5 刷新页面;并核对 bundles 是否包含 "dsh-session-workspace"。

若点了新建对话却没有新文件夹,可能是复用了空白对话、开关切到了 共用工作区,或你在手动添加的项目工作区里新建(默认尊重你的选择、不强制隔离)。

升级、卸载与磁盘

升级时,重复安装同一路径不会覆盖旧版本。维护者建议先删再装并彻底重启:

dsh plugin --profile desktop remove dsh-session-workspace
dsh plugin --profile desktop add github:stevenwang15/dsh-session-workspace

卸载示例:

./scripts/uninstall-local.sh desktop

也可从 bundles 移除条目后再 remove。已创建的工作区文件夹会保留;删除侧边栏工作区行不会删除磁盘上的文件夹与聊天记录。插件不会自动清理旧文件夹,不用的目录可自行删除。

兼容性与适用场景

README 写明在 DSH 0.2.2-rc.1(当前桌面版)上完整测试通过。隔离依赖 DSH 公开服务;若未来版本移除输入框插槽,胶囊可能不显示,但隔离逻辑仍可按 Host 侧行为工作。

适合:在同一台机器上开很多对话、希望文件与沙箱按会话分开的 DSH 桌面用户。不适合指望「装完就自动清磁盘」的场景——目录增长与普通文件夹一样,需自行管理。

结尾

dsh-session-workspace 把 DSH 默认的「共用一张桌子」改成「每个新对话一张自己的桌子」,安装后照常点新建对话即可,必要时用输入框旁开关临时回到共用工作区。目录与源码:

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

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

小夜