目录插件:让 DSH「新建工作区」从你指定的文件夹开始

前言

在 DeepSeek Harness(DSH)桌面端里新建工作区时,会弹出系统自带的文件夹选择框。这个对话框的起点通常是系统默认位置(例如「下载」),而且调用方无法通过参数指定起始目录。如果你习惯把项目集中在某个盘符下的固定目录,每次都要从下载文件夹一路点进去,会浪费不少时间。

下面介绍社区插件 dsh-directory-plugin(中文名「目录插件」)。它在 Windows 上接管「新建工作区」的目录选择流程,把原生选择框的默认起点改成你在设置里配置的路径;子目录仍由你自行挑选。非 Windows 环境可以安装,但不会生效,行为与未装插件时一致。

这是什么

  • 仓库 / 包名:dsh-directory-plugin
  • 维护者:milu7
  • 分类:客户端(同时包含宿主路由与浏览器侧槽位接管)
  • 许可证:MIT(package.json 版本 1.0.0)
  • 平台:仅 Windows 10/11 上完整生效;起始目录依赖 Win32 COM 的 IFileDialog::SetFolder

插件不修改 DSH 安装目录里的任何文件;配置与日志写在用户目录下的 .dsh 中。

核心功能

  1. 接管目录选择:替换「新建工作区」弹出的文件夹对话框,从可配置目录开始。
  2. 设置页:DSH 设置中增加「新建工作区目录」,支持输入路径、「浏览…」、保存,以及「恢复系统默认」。
  3. 安全回退:插件不可用、目录被删除或对话框出错时,自动退回 DSH 内置选择框,不阻断新建工作区。
  4. 诊断日志:每次弹框记录起始目录是否生效,便于排错。

同一时刻只会有一个选择框:设置页「浏览…」与「新建工作区」互斥时,后发起的会提示「已经有一个文件夹选择框开着」。选择框为 DSH 窗口上的模态对话框,打开时 DSH 主窗口不可操作。

安装与启用

前置条件:Windows 10/11 + DSH 桌面端(Next 内核)。插件以当前 DSH 进程权限运行;安装前请自行查看仓库源码与 MIT 许可证。

官方 README 给出的登记方式是把插件目录以 link: 形式加入 desktop 配置档(不复制文件),需先取得仓库到本地,再通过 DSH 自带的 plugin-cli.js 登记:

# 按实际情况修改这两个变量
$DSH_EXE = 'C:\Program Files\DSH\DSH NEXT.exe'   # 你的 DSH 桌面端安装位置
$PLUGIN  = 'D:\Plugins\dsh-directory-plugin'     # 本仓库所在的本地目录

$CLI = Join-Path (Split-Path $DSH_EXE) 'resources\app.asar\lib\plugin-cli.js'

$env:ELECTRON_RUN_AS_NODE = '1'
$env:DSH_HOME = "$env:USERPROFILE\.dsh"
& $DSH_EXE --expose-internals $CLI desktop add "link:$PLUGIN"

经过上面的步骤之后:

  1. 重启 DSH 桌面端(插件组合在启动时读取)。
  2. 打开 设置 →「新建工作区目录」,选择目录并保存。
  3. 试一次「新建工作区」,确认选择框从设定路径打开。

卸载时在同一环境下执行 desktop remove dsh-directory-plugin 并重启;配置文件与日志仍留在 %USERPROFILE%\.dsh,可手动删除。

$env:ELECTRON_RUN_AS_NODE = '1'
$env:DSH_HOME = "$env:USERPROFILE\.dsh"
& $DSH_EXE --expose-internals $CLI desktop remove dsh-directory-plugin

典型用法

  1. 进入 设置 →「新建工作区目录」。
  2. 点 「浏览…」 选目录,或手动输入路径,再点 「保存」。「浏览…」会从输入框当前路径打开(未保存也可),但须保存后才对「新建工作区」生效。
  3. 之后每次「新建工作区」,选择框都从该目录开始。
  4. 「恢复系统默认」 清空配置,回到 DSH 原有行为。

配置文件路径为 %USERPROFILE%\.dsh\workspace-directory.json,示例:

{ "directory": "D:\\Projects" }

手动编辑 JSON 时,Windows 路径中的反斜杠需写成 \\。旧文件名 workspace-anchor.json / default-workspace-directory.json 会在首次读取时自动迁移,迁移后旧文件改名为 *.migrated 保留。

工作原理(简要)

插件在宿主侧注册 HTTP 路由 /dsh-directory-plugin/config 与 /dsh-directory-plugin/pick;浏览器侧接管 conversation.hero.workspace.directoryFlow 与 sidebar.workspaces.directoryFlow 槽位,并注册设置页。弹框时客户端调用 POST /pick,由 lib/dialog-worker.cjs 通过 koffi 调用 Win32 FileOpenDialog,用 IFileDialog::SetFolder 设定起点。失败时回退到桌面端内置的 __DSH_DIRECTORY_PICKER__。

仓库随包携带 koffi 3.1.1(vendor/,安装无需联网)。x64 使用内置二进制;ARM64 会尝试 DSH 安装目录自带的 koffi 3.x,该路径未在 ARM64 上实测。

排错与兼容性

诊断日志:%USERPROFILE%\.dsh\workspace-directory.log(超过 1MB 时轮转保留一份)。

判断是否生效可对照 README:

  1. 重启后日志出现 host-routes-registered → 宿主侧已加载。
  2. 新建工作区时新增 pick ... initial={"applied":true} → 使用本插件对话框。
  3. 若无 pick 行且仍是旧对话框 → 浏览器侧接管未生效,功能退化为 DSH 原生行为。

兼容性要点:Windows 10/11 x64 为主要支持环境;其他系统设置页仅显示说明,「新建工作区」仍用 DSH 自带选择框。依赖 DSH 桌面端槽位与客户端插件机制;若未来版本变更槽位,插件会静默回退。

结尾

目录插件解决的是一个小而具体的交互问题:把「新建工作区」文件夹选择框的默认起点固定到你常用的项目根目录,并保留失败时的静默回退。DSH 生态强调「一切皆插件」;社区目录站点与 DeepSeek / 幻方无官方从属关系,本文信息以仓库 README 为准。

  • 社区目录页:https://www.skillhub.cn/plugins/milu7/dsh-directory-plugin
  • GitHub:https://github.com/milu7/dsh-directory-plugin
羽毛球分组比赛记分
小程序二维码

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

Xiaoye