dsh-folder:在 DeepSeek Harness 工作区菜单中增加“打开文件夹”选项

前言

DeepSeek Harness (DSH) 的插件系统允许开发者扩展客户端功能。在工作区侧边栏中,默认的上下文菜单仅提供“重命名”和“删除工作区”两个选项。当需要直接在系统文件管理器中查看或编辑当前工作区目录时,操作流程相对繁琐。

dsh-folder 插件解决了这个问题,它通过注入菜单项,将“打开文件夹”的操作直接整合进工作区的上下文菜单中。

这是什么

dsh-folder 是一个 DeepSeek Harness (DSH) 插件,由开发者 KDronin 维护,遵循 MIT 许可证。

该插件通过向侧边栏工作区的“更多操作”菜单中插入一个新条目,使用户能够快速调用系统默认程序打开当前工作区所在的目录。它复用了原生菜单的样式与图标,保证视觉一致性。

核心功能

  1. 菜单注入:在侧边栏工作区的“三个点”菜单中,于“重命名”和“删除工作区”之间插入“打开文件夹”选项。
  2. 系统调用:点击菜单项后,插件调用 DSH Host 能力 session.openWorkspacePath,由宿主端将路径交给系统默认程序处理,从而在文件管理器中打开该目录。
  3. 双语支持:界面支持中文和 English。
  4. 错误反馈:若打开失败(如路径解析错误或环境不支持),菜单项会显示可见的提示文案(使用原生危险色),并将错误信息写入 console.error,避免静默无响应。

安装与启用

官方命令安装

通过 DSH 官方命令行工具安装:

dsh plugin --profile web add github:KDronin/dsh-folder

安装完成后,重启 dsh web 进程并刷新页面即可生效。

手动安装

将 dsh-folder 目录复制到 DSH profile 的 node_modules 下:

$target = Join-Path $env:USERPROFILE '.dsh\profiles\node_modules\dsh-folder'
Copy-Item -Recurse .\dsh-folder $target

在配置文件 $HOME/.dsh/profiles/web/cordis.patch.yml 中添加以下内容:

- insert:
    - id: dsh-folder
      name: 'dsh-folder'

重启 dsh web 并刷新页面。

典型用法

  1. 在 DSH 侧边栏找到目标工作区。
  2. 点击工作区行右侧的“三个点”菜单。
  3. 在弹出的菜单中,点击位于“重命名”和“删除工作区”之间的“打开文件夹”。
  4. 系统文件管理器将自动打开该工作区所在的目录。

技术实现与注意事项

该插件为纯 UI 插件,核心逻辑位于 lib/client.js。

  • 菜单注入机制:为了避免与 React 的提交时机竞争,插件使用 MutationObserver 监听菜单挂载事件。一旦菜单出现即注入菜单项,并在菜单存在期间持续守护该节点。这解决了旧版本中因固定延时导致部分工作区菜单项缺失的问题。
  • 能力调用:旧版本曾尝试调用不存在的 ctx.workspaces.openPath,导致报错。当前版本已修正为调用正确的 Host 能力 ctx.remote.session.openWorkspacePath。
  • 依赖项:插件依赖 @deepseek-ai/dsh-client-locale、@deepseek-ai/dsh-api-workspace-controller 和 @deepseek-ai/dsh-client-ui-workspace,与原声明中的 @deepseek-ai/dsh-client-runtime 不同。
  • 版本回退:若需对照旧版本进行调试或测试,可通过环境变量 DSH_FOLDER_CLIENT 指定旧的客户端 bundle 路径。

结尾

dsh-folder 是一个轻量级且功能明确的工具,它填补了 DSH 工作区管理中直接访问文件系统的空白。对于频繁需要通过文件管理器进行配置或查看日志的开发者来说,这是一个实用的补充。

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

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

小夜