给 Windows 文件管理器加右键项:把文件夹设为 DSH 工作区并切换到它,DSH 未运行会自动拉起。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:tsingshitao-nuke/dsh-set-workspace
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
给 Windows 文件管理器加一个右键菜单:右键文件夹,选 "在此处打开 DSH 工作区",即可把它注册为 DSH 工作区、在其中开启会话,并把 DSH 页面切换到该工作区。
非官方社区项目,与 DeepSeek 无关联、未获其背书。
功能
- 在文件管理器里右键文件夹,选择"在此处打开 DSH 工作区"。
- 若 DSH 未运行,桥接脚本会拉起它——官方 DeepSeek Harness 桌面版、旧版 Tauri DSH Desktop,或官方 CLI;若已在运行(即使最小化或缩进托盘),窗口会被恢复并置前。
- 文件夹被注册为工作区(幂等),并在其中开启一个会话。
- DSH 页面自动切到新工作区(客户端半部分监听该会话并打开它,无需刷新页面)。
- 若你是在普通浏览器里看 DSH(而非桌面窗口),用
--browser安装,桥接脚本会改为聚焦浏览器页面。 - 菜单与弹窗文案跟随系统 UI 语言(中文 / 英文)。
- 动作经
wscript隐藏窗口启动器运行,不闪黑框。 - 菜单项使用 DSH 鲸鱼图标。
- 不新增存储、schema 或工具——复用核心工作区注册表与既有
/apiRPC。
安装
环境要求:Windows、PATH 里有 Node.js >= 20、以及一个 DSH 安装——官方 DeepSeek Harness 桌面版、旧版 Tauri DSH Desktop,或官方 CLI(npm i -g @deepseek-ai/dsh)。DSH 未运行时桥接脚本会自动拉起;其启动路径来自 DSH 写出的运行时文件,因此首次使用前需先运行一次 DSH。
一键安装(PowerShell 5.1+ / pwsh):
irm https://raw.githubusercontent.com/tsingshitao-nuke/dsh-set-workspace/main/scripts/install.ps1 | iex
Git Bash / WSL:
curl -fsSL https://raw.githubusercontent.com/tsingshitao-nuke/dsh-set-workspace/main/scripts/install.sh | bash
安装脚本会把 bundle 装进它能找到的每一个 DSH profile:官方桌面版跑的是 desktop profile(~/.dsh/profiles/desktop),dsh web 跑的是 web。两者可能同时存在,右键菜单对正在运行的那一个都有效。
手动安装(官方桌面版):
# 1. 把 bundle 装进 desktop profile
dsh plugin --profile desktop add github:tsingshitao-nuke/dsh-set-workspace
# 2. 注册文件管理器右键菜单,然后重启 DSH,让 host 半部分发布端口
node ~/.dsh/profiles/desktop/node_modules/dsh-set-workspace/bin/install-context-menu.cjs
手动安装(dsh web profile):把上面的 --profile desktop 与路径换成 web 即可。
移除菜单(保留 bundle):
node ~/.dsh/profiles/desktop/node_modules/dsh-set-workspace/bin/install-context-menu.cjs --uninstall
工作原理
文件管理器右键
└─ wscript launch-hidden.vbs "%1" (隐藏窗口)
└─ node set-workspace.cjs "<文件夹>"
├─ 读 ~/.dsh/dsh-set-workspace/runtime.json (端口 + 启动命令)
├─ 启动 DSH 桌面版——未运行则启动;已运行则由应用自带的
│ 单实例 second-instance 处理器恢复、显示并聚焦其窗口
│ (与 VS Code「通过 Code 打开」同款机制)
├─ 逐个探测回环端口(记录端口、其它 profile、实际在听的 DSH
│ 进程、19387/3080),选择能应答的那一个
├─ POST /api/workspace/create { request: { path } } (幂等)
├─ POST /api/session/create { workspaceId, sessionId: "dsw-open-…" }
└─ MessageBox 确认
DSH 客户端半部分监听会话列表,打开该 "dsw-open-…" 会话,页面即切到该工作区。
本 bundle 是标准的 host/client 双半结构 DSH 包。host 半部分(src/index.ts)把当前 webserver 端口与桌面启动命令写到 ~/.dsh/dsh-set-workspace/runtime.json;客户端半部分(src/client/index.ts)负责切换。桥接脚本、鲸鱼图标与启动器复制到 ~/.dsh/dsh-set-workspace/(无空格、重装后仍稳定的目录);注册表项位于 HKCU\Software\Classes\Directory\shell(无需管理员权限)。
兼容性
- 官方 DeepSeek Harness 桌面版(Electron,
deepseek-ai/deepseek-harness→apps/desktop):应用把运行时打进resources/app.asar,并以子进程方式启动它(…/app.asar/dsh/node_modules/@deepseek-ai/dsh-desktop-host/lib/index.js)。host 半部分先按内核自身的启动参数识别该布局,再回退到当前可执行文件,最后回退到 Windows 安装注册信息(DisplayIcon/InstallLocation/UninstallString),记录<安装目录>\DeepSeek Harness.exe。DSH 未运行时再次启动该 exe 即可拉起;已运行时由应用自身的requestSingleInstanceLock+second-instance处理器(Electron 标准行为,与 VS Code 同款)恢复、显示并聚焦窗口。桌面版默认端口19387。 - 旧版 DSH Desktop(Tauri):
<app>/dsh-desktop/...+<app>/dsh-tauri-app.exe依旧能被识别并以同样方式启动。 - 官方 CLI / npm 安装(
npm i -g @deepseek-ai/dsh,DSH 在浏览器里访问):host 记录dsh web启动命令(即当前内核所用的同一个 node +lib/bin.js,带--no-open --host 127.0.0.1 --port <端口>);桥接脚本在 DSH 未运行时用它自举启动,并通过浏览器页面聚焦——无需桌面窗口。 - 陈旧的 runtime 文件会自愈:升级或迁移安装(例如从已删除的 Tauri 目录换到官方 Electron 版)后,记录的端口与启动程序都会失效。此时桥接脚本会重新发现实际在听的端口,并重新寻找当前安装——
config.json覆盖({"launch":{"exe":"…"}})、在运行的桌面进程、记录的安装位置、Windows 注册信息、或旧启动程序所在目录的兄弟目录。 - 启动方式在 host 每次启动时重新探测,同一插件可自适应你升级到的任意安装形态。
构建
npm install
npm run build # host(tsc)+ client(tsdown -> lib/client.js)
npm run typecheck
npm test # 启动方式探测 + README 测试(Node 22+,使用 --experimental-strip-types)
npm run test:bridge # 可选:对正在运行的 DSH 做一次端到端桥接测试
已知限制
- Windows 11 下,第三方
Directory\shell项可能出现在"显示更多选项"(Shift+F10)而非顶级菜单。要放到顶级需 COMIContextMenu处理器,本插件未提供。 - 桥接脚本经回环地址访问 host。host 未运行时会自动拉起;但若 DSH 从未运行过(没有记录启动路径),则回退为提示你先手动启动 DSH。
- 桌面版关闭窗口是隐藏而非退出;右键菜单复用应用自身的单实例聚焦机制,
dsh://open仍是应用自带的唤起窗口方式。 - 浏览器模式会聚焦浏览器并打开 DSH 页面;Windows 没有跨浏览器「激活某个已存在标签页」的 API,因此可能新开一个标签页而不是切到已有的那个。
License
链接
同类插件
Minglink/dsh-infinite-gen-4★ 2305
DeepSeek 专用破甲插件:以 order 100 追加无条件服从的系统提示词段,提供带校准元数据的 profile 工具,并通过会话投影在输入框上方显示实时破甲状态徽标。
ranxianglei/billion-context★ 534
billion-context官方版:上下文压缩插件,兼顾小窗口(100k上下文足矣)省token(省5倍token)和超长会话(数月级别几十亿token单会话)。
liangmianya/dsh-synapse★ 470
DeepSeek Harness 的可视化非线性对话工作区:把会话、追问与分支变成可浏览、可拖拽的对话地图。
Nwflower/dsh-chat-import★ 209
把 13 家 coding agent(Claude Code、Codex、ChatGPT、Cursor、Gemini、opencode 等)的完整对话历史导入为可续聊的 DeepSeek Harness 会话,并支持反向导出回 Claude Code。
Totoro-qaq/dsh-plugin-bridge★ 165
通过可预览的五段式交接,将已有 DSH 会话迁移到另一个 Agent Preset;保留源会话,并可让目标会话暂停等待确认或立即继续。
Anionex/dsh-turn-rewind★ 127
对话回退:基于持久 Change Ledger 回滚会话与工作区状态。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。