前言¶
DeepSeek Harness (DSH) 的插件系统允许开发者扩展客户端功能。在工作区侧边栏中,默认的上下文菜单仅提供“重命名”和“删除工作区”两个选项。当需要直接在系统文件管理器中查看或编辑当前工作区目录时,操作流程相对繁琐。
dsh-folder 插件解决了这个问题,它通过注入菜单项,将“打开文件夹”的操作直接整合进工作区的上下文菜单中。
这是什么¶
dsh-folder 是一个 DeepSeek Harness (DSH) 插件,由开发者 KDronin 维护,遵循 MIT 许可证。
该插件通过向侧边栏工作区的“更多操作”菜单中插入一个新条目,使用户能够快速调用系统默认程序打开当前工作区所在的目录。它复用了原生菜单的样式与图标,保证视觉一致性。
核心功能¶
- 菜单注入:在侧边栏工作区的“三个点”菜单中,于“重命名”和“删除工作区”之间插入“打开文件夹”选项。
- 系统调用:点击菜单项后,插件调用 DSH Host 能力
session.openWorkspacePath,由宿主端将路径交给系统默认程序处理,从而在文件管理器中打开该目录。 - 双语支持:界面支持中文和 English。
- 错误反馈:若打开失败(如路径解析错误或环境不支持),菜单项会显示可见的提示文案(使用原生危险色),并将错误信息写入
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 并刷新页面。
典型用法¶
- 在 DSH 侧边栏找到目标工作区。
- 点击工作区行右侧的“三个点”菜单。
- 在弹出的菜单中,点击位于“重命名”和“删除工作区”之间的“打开文件夹”。
- 系统文件管理器将自动打开该工作区所在的目录。
技术实现与注意事项¶
该插件为纯 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 工作区管理中直接访问文件系统的空白。对于频繁需要通过文件管理器进行配置或查看日志的开发者来说,这是一个实用的补充。