🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

资源管理器右键开工作区 tsingshitao-nuke/dsh-set-workspace

DeepSeek Harness
tsingshitao-nuke35 天前有提交已提供中文文档扫描:含敏感能力

给 Windows 文件管理器加一个右键菜单:右键文件夹,选 "在此处打开 DSH 工作区",即可把它注册为 DSH…

31.5/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/9/30 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add tsingshitao-nuke/dsh-set-workspace
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · ui
装得上吗
本站已在 dsh 0.2.1-rc.5 下真实安装成功
非静态推断
L5 · 运行时冒烟等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 35 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意

未发布到 npm registry,仅可从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包dsh-set-workspace(未发布到 npm,仅可源码安装)
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/14 07:35:05

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 50 处,展示前 42 条)
  • 读取本地文件
    lib/index.js:145
    names = readdirSync(root);
  • 读取本地文件
    lib/index.js:246
    return existsSync(join(dir, 'resources', 'app.asar'));
  • 读取本地文件
    lib/index.js:250
    if (!pathLike || !existsSync(pathLike))
  • 读取本地文件
    lib/index.js:261
    for (const name of readdirSync(dir)) {
  • 执行外部命令固定命令
    lib/index.js:295
    const r = spawnSync('reg.exe', ['query', root, '/s', '/f', 'DeepSeek Harness', '/d'], {
  • 读取本地文件
    lib/index.js:332
    if (!root || !existsSync(root))
  • 读取本地文件
    lib/index.js:336
    names = readdirSync(root);
  • 写入本地文件
    lib/index.js:463
    mkdirSync(RUNTIME_DIR, { recursive: true });
  • 写入本地文件
    lib/index.js:464
    writeFileSync(RUNTIME_FILE, JSON.stringify({
  • 写入本地文件
    lib/index.js:485
    copyFileSync(join(pkg, 'bin', 'set-workspace.cjs'), join(RUNTIME_DIR, 'set-workspace.cjs'));
  • 执行外部命令固定命令
    bin/install-context-menu.cjs:49
    const r = spawnSync('reg.exe', args, { stdio: 'ignore', windowsHide: true })
  • 写入本地文件
    bin/install-context-menu.cjs:65
    mkdirSync(DEST, { recursive: true })
  • 写入本地文件
    bin/install-context-menu.cjs:66
    copyFileSync(join(SRC, 'set-workspace.cjs'), join(DEST, 'set-workspace.cjs'))
  • 删除本地文件
    bin/install-context-menu.cjs:68
    rmSync(join(DEST, 'focus-dsh.ps1'), { force: true })
  • 写入本地文件
    bin/install-context-menu.cjs:71
    writeFileSync(join(DEST, 'config.json'), JSON.stringify({ ui: 'browser' }, null, 2) + '\n', 'utf8')
  • 写入本地文件
    bin/install-context-menu.cjs:75
    if (existsSync(icoSrc)) copyFileSync(icoSrc, join(DEST, 'dsh-whale.ico'))
  • 读取本地文件
    bin/install-context-menu.cjs:75
    if (existsSync(icoSrc)) copyFileSync(icoSrc, join(DEST, 'dsh-whale.ico'))
  • 写入本地文件
    bin/install-context-menu.cjs:80
    writeFileSync(
  • 读取本地文件
    bin/install-context-menu.cjs:102
    if (existsSync(ico)) reg(['add', key, '/v', 'Icon', '/t', 'REG_SZ', '/d', ico, '/f'])
  • 读取本地文件
    bin/set-workspace.cjs:79
    const text = readFileSync(CREDENTIALS_FILE, 'utf8')
  • 读取本地文件
    bin/set-workspace.cjs:148
    return { ...fallback, ...JSON.parse(readFileSync(file, 'utf8')) }
  • 执行外部命令固定命令
    bin/set-workspace.cjs:185
    const child = spawn(
  • 执行外部命令来自配置/变量
    bin/set-workspace.cjs:200
    const child = spawn(command, args, { detached: true, stdio: 'ignore', cwd })
  • 执行外部命令固定命令
    bin/set-workspace.cjs:212
    const child = spawn(
  • 读取本地文件
    bin/set-workspace.cjs:235
    return Boolean(file) && existsSync(file)
  • 读取本地文件
    bin/set-workspace.cjs:250
    if (existsSync(join(dir, 'resources', 'app.asar'))) return dir
  • 读取本地文件
    bin/set-workspace.cjs:262
    names = readdirSync(root)
  • 执行外部命令固定命令
    bin/set-workspace.cjs:291
    const r = spawnSync('reg.exe', ['query', root, '/s', '/f', 'DeepSeek Harness', '/d'], {
  • 读取本地文件
    bin/set-workspace.cjs:333
    if (!root || !existsSync(root)) continue
  • 执行外部命令固定命令
    bin/set-workspace.cjs:376
    const r = spawnSync('tasklist.exe', ['/FO', 'CSV', '/NH'], { encoding: 'utf8', windowsHide: true, maxBuffer: 8 * 1024 * 1024 })
  • 执行外部命令固定命令
    bin/set-workspace.cjs:386
    const q = spawnSync(
  • 发起网络请求
    bin/set-workspace.cjs:530
    const res = await fetch(url, { method: 'POST', headers, body: JSON.stringify(body) })
  • 读取本地文件
    src/index.ts:148
    names = readdirSync(root)
  • 读取本地文件
    src/index.ts:245
    return existsSync(join(dir, 'resources', 'app.asar'))
  • 读取本地文件
    src/index.ts:250
    if (!pathLike || !existsSync(pathLike)) return null
  • 读取本地文件
    src/index.ts:259
    for (const name of readdirSync(dir)) {
  • 执行外部命令固定命令
    src/index.ts:290
    const r = spawnSync('reg.exe', ['query', root, '/s', '/f', 'DeepSeek Harness', '/d'], {
  • 读取本地文件
    src/index.ts:325
    if (!root || !existsSync(root)) return ''
  • 读取本地文件
    src/index.ts:328
    names = readdirSync(root)
  • 写入本地文件
    src/index.ts:480
    mkdirSync(RUNTIME_DIR, { recursive: true })
  • 写入本地文件
    src/index.ts:481
    writeFileSync(
  • 写入本地文件
    src/index.ts:510
    copyFileSync(join(pkg, 'bin', 'set-workspace.cjs'), join(RUNTIME_DIR, 'set-workspace.cjs'))
扫描于 2026/11/4(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-client-runtime
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 右键文件夹注册工作区
  • 启动并切换页面

在 Windows 资源管理器里右键文件夹,就能把它作为 DeepSeek Harness(DSH)工作区打开:注册、启动 DSH,再把页面切过去。资源管理器右键「在此处打开 DSH 工作区」。

README

由 DeepSeek 最新模型翻译生成
dsh-set-workspace 给 Windows 文件管理器加一个右键菜单:右键文件夹,选 "在此处打开 DSH 工作区",即可把它注册为 DSH 工作区、在其中开启会话,并把 DSH 页面切换到该工作区。 非官方社区项目,与 DeepSeek 无关联、未获其背书。 功能 - 在文件管理器里右键文件夹,选择"在此处打开 DSH 工作区"。 - 若 DSH 未运行,桥接脚本会拉起它——官方 DeepSeek Harness 桌面版、旧版 Tauri DSH Desktop,或官方 CLI;若已在运行(即使最小化或缩进托盘),窗口会被恢复并置前。 - 文件夹被注册为工作区(幂等),并在其中开启一个会话。 - DSH 页面自动切到新工作区(客户端半部分监听该会话并打开它,无需刷新页面)。 - 若你是在普通浏览器里看 DSH(而非桌面窗口),用 --browser 安装,桥接脚本会改为聚焦浏览器页面。 - 菜单与弹窗文案跟随系统 UI 语言(中文 / 英文)。 - 动作经 wscript 隐藏窗口启动器运行,不闪黑框。 - 菜单项使用 DSH 鲸鱼图标。 - 不新增存储、schema 或工具——复用核心工作区注册表与既有 /api RPC。
展开完整文档(README 剩余 1 节)
dsh-set-workspace

给 Windows 文件管理器加一个右键菜单:右键文件夹,选 "在此处打开 DSH 工作区",即可把它注册为 DSH 工作区、在其中开启会话,并把 DSH 页面切换到该工作区。

非官方社区项目,与 DeepSeek 无关联、未获其背书。

功能

- 在文件管理器里右键文件夹,选择"在此处打开 DSH 工作区"。
- 若 DSH 未运行,桥接脚本会拉起它——官方 DeepSeek Harness 桌面版、旧版 Tauri DSH Desktop,或官方 CLI;若已在运行(即使最小化或缩进托盘),窗口会被恢复并置前。
- 文件夹被注册为工作区(幂等),并在其中开启一个会话。
- DSH 页面自动切到新工作区(客户端半部分监听该会话并打开它,无需刷新页面)。
- 若你是在普通浏览器里看 DSH(而非桌面窗口),用 --browser 安装,桥接脚本会改为聚焦浏览器页面。
- 菜单与弹窗文案跟随系统 UI 语言(中文 / 英文)。
- 动作经 wscript 隐藏窗口启动器运行,不闪黑框。
- 菜单项使用 DSH 鲸鱼图标。
- 不新增存储、schema 或工具——复用核心工作区注册表与既有 /api RPC。

安装

环境要求: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):/dsh-desktop/... + /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)而非顶级菜单。要放到顶级需 COM IContextMenu 处理器,本插件未提供。
- 桥接脚本经回环地址访问 host。host 未运行时会自动拉起;但若 DSH 从未运行过(没有记录启动路径),则回退为提示你先手动启动 DSH。
- 桌面版关闭窗口是隐藏而非退出;右键菜单复用应用自身的单实例聚焦机制,dsh://open 仍是应用自带的唤起窗口方式。
- 浏览器模式会聚焦浏览器并打开 DSH 页面;Windows 没有跨浏览器「激活某个已存在标签页」的 API,因此可能新开一个标签页而不是切到已有的那个。

License

MIT
预览分享卡片长什么样 ↓tsingshitao-nuke/dsh-set-workspace
分享 · DeepSeek Harness Hub
tsingshitao-nuke/dsh-set-workspace

给 Windows 文件管理器加一个右键菜单:右键文件夹,选 "在此处打开 DSH 工作区",即可把它注册为 DSH…

这是你的仓库?认领条目

回到顶部