gfds2005/dsh-remote-dir-picker

DSH Web 插件:通过锁定应用内浏览交互,使远程浏览器(nginx/反向代理)也能使用工作区目录选择器。

Project Overview项目介绍

This repository hosts a native plugin built exclusively for DeepSeek Harness (DSH) Web. It addresses a common usability issue that occurs when accessing a locally hosted DSH Web instance through a reverse proxy, public domain, or LAN IP address. By default, DSH’s auto directory picker checks the bind address once at startup, and if the instance is bound to localhost, it will trigger a native system file picker on the host machine’s screen, leaving remote users with no visible response when they click “Add Workspace”. This plugin replaces the default logic to ensure consistent behavior for both local and remote access.

The plugin disables DSH’s default directory-picker-auto component entirely, and mounts a persistent browser-based directory picker instead. After installation, every time a user clicks the “Add Workspace” button in DSH Web, regardless of whether they are connecting from localhost or a remote address, a directory browser will render inside the user’s browser window. It supports core navigation features like breadcrumb trail browsing, jumping directly to an absolute path, editing the current path, toggling hidden files, and creating new folders directly from the dialog. This consistent experience eliminates the broken behavior that plagues remote reverse proxy setups, and is useful for anyone who hosts DSH Web for remote access.

To install the plugin, you first need to have the DSH CLI installed and available on your system path, and know the name of your target DSH profile (the default is web). You can install the latest stable version directly from npm by running the one-line command dsh plugin --profile web add dsh-remote-dirpicker, and uninstall it just as easily with the remove subcommand. After any installation or uninstallation change, you must restart your DSH Web service for the bundle configuration change to take effect. The plugin is released under the open MIT license, does not modify DSH core code, and works across all DSH-supported desktop platforms including macOS, Linux, and Windows.

这是一个专为 DeepSeek Harness Web 开发的原生插件,用于解决远程访问场景下「新增工作区」目录选择失效的问题。当用户通过 nginx 反向代理、公网域名或者局域网 IP 访问部署在本地主机的 DSH Web 时,默认的目录选择逻辑会在宿主屏幕弹出原生对话框,导致远程浏览器点击新增工作区后没有任何反应,本插件专门修复这个问题。

本插件停用了 DSH 默认根据绑定地址选择交互方式的 directory-picker-auto 插件,统一采用浏览器内目录选择交互。无论本地回环地址访问还是远程公网、局域网访问,都在浏览器内弹出目录选择对话框,支持面包屑导航逐级浏览、绝对路径输入跳转、路径编辑、显示隐藏文件和新建文件夹,操作体验完全一致,不需要依赖宿主显示器弹出原生对话框。

插件遵循 DSH 官方插件标准,支持一行命令安装和卸载,安装命令为 dsh plugin --profile web add dsh-remote-dirpicker,卸载对应使用 remove 命令,安装或卸载后都需要重启 DSH Web 服务生效。插件不修改 DSH 核心代码,采用纯 overlay patch 方式集成,遵循 MIT 开源许可协议,兼容全平台 DSH Web 宿主。

Pre-install check安装前体检Compatibility · Security兼容性 · 安全性 1 warning1 项注意
  • Only 2 stars - very few users, little community feedback星标只有 2,几乎没人在用,遇到问题缺少社区反馈
DSH walks through these 9 checksDSH 会逐条核对这 9 项

Compatibility兼容性

  • DSH, Node, OS and profile requirementsDSH 版本 / Node 版本 / 操作系统 / profile 是否满足要求
  • External dependencies and runtimes (Electron / Python / Docker, ...)外部依赖与运行时(Electron / Python / Docker 等)是否齐备
  • Conflicts with installed plugins: command names, skill / tool names, ports, duplicate MCP registration与已装插件是否冲突:命令名、skill / tool 重名、端口占用、重复 MCP 注册

Security安全性

  • Repo matches the facts registered here; archived or abandoned?仓库是否与页面登记一致,是否归档或长期停更
  • Safety of preinstall / install / postinstall and install.sh / setup.ps1preinstall / install / postinstall 与 install.sh、setup.ps1 是否安全
  • curl|bash, download-then-execute, obfuscation, unrelated domains → stop immediatelycurl|bash、下载即执行、混淆代码、无关域名 → 立刻停止
  • Typosquatting or unmaintained packages among the new dependencies新增依赖里有没有 typosquatting 或无人维护的包
  • Requested permissions vs. what the feature actually needs申请了哪些权限、是否超出功能所需(filesystem / network / shell / clipboard)
  • Any sudo / admin requirement, plus uninstall and rollback是否要求 sudo / 管理员权限,以及卸载与回滚方式

Anything uncertain must be marked unknown with a note on how to confirm it. This site's signal screen is a static snapshot, not a security audit.拿不准的必须标「未知」并说明要我怎么确认。本站的信号筛查是静态快照,不能替代安全审计。

Or use CLI install (for developers)或使用命令行安装(适合开发者)

CLI Install命令行安装

dsh plugin --profile web add dsh-remote-dirpicker

把 gfds2005/dsh-remote-dir-picker 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-remote-dirpicker

Make the "Add Workspace" directory picker work from remote browsers (nginx / reverse proxy / any non-loopback access) in DeepSeek Harness Web.

npm version License: MIT

让 DSH Web 的"新增工作区"目录选择,在远程浏览器(nginx 反代 / 公网域名 / 局域网 IP)访问时也能正常使用——不再出现"远程点击新增工作区没反应,而宿主机屏幕上却弹出访达对话框"的问题。

目录


功能

本插件固定使用浏览器内目录浏览器(browse)这一种交互——本地与远程完全一致,不再依赖宿主显示器的原生对话框(详见工作原理)。

  • ✅ 远程(公网 / 反代 / 局域网)访问时,点"新增工作区"弹出浏览器内目录浏览器,可直接:
    • 浏览宿主文件系统(面包屑导航、逐级进入)
    • 输入绝对路径跳转
    • 编辑路径
    • 显示 / 隐藏隐藏文件
    • 新建文件夹后立即进入
  • ✅ 本机(127.0.0.1 / localhost)访问时同样使用浏览器内目录浏览器,功能一致、体验统一(不会再弹出访达等原生对话框)
  • ✅ 一行安装、一行卸载,与 dsh 官方插件同样的安装/卸载方式
  • ✅ 不修改 dsh 核心代码,纯组合层 patch + 官方目录选择能力

解决的问题

DeepSeek Harness Web 默认挂载 directory-picker-auto 来决定目录选择交互,它在启动时按宿主绑定地址只采样一次:

下表描述的是 DSH 默认(未安装本插件时) 的选择逻辑——它正是问题所在,不是本插件的功能。本插件只有一种交互(browse,见工作原理),本地与远程表现一致。

绑定地址 auto 解析结果 交互方式
127.0.0.1 / localhost native 在宿主显示器上弹出操作系统选择器(macOS 为访达 Finder)
非回环地址 browse 浏览器内目录浏览器

当通过 nginx 把 127.0.0.1:3080 反代到公网域名(如 dsh.example.com)时:

  • dsh 的绑定地址依然是 127.0.0.1 → auto 解析为 native
  • 访达对话框在宿主机(macmini)屏幕上弹出
  • 远程浏览器什么都看不到,点"新增工作区"看起来毫无反应

这正是 DSH 官方 README 建议的 "Mount -browse directly in an overlay to pin the interaction" 场景。

工作原理

本插件是一个标准的 DSH 插件包(bundle patch + 宿主半边),通过 cordis.patch.yml 调整组合:

  1. 停用 directory-picker-auto(disabled: true)——它的一次性采样无法同时服务本地和远程;
  2. 挂载 browse 宿主能力 @deepseek-ai/dsh-host-directory-picker-browse——注册 directoryPicker 服务的 browse 能力,通过 host.listDirectory / host.createDirectory RPC 提供目录列表与新建文件夹;
  3. 挂载 browse 浏览器界面 @deepseek-ai/dsh-client-ui-directory-picker-browse——在浏览器内渲染目录浏览器对话框。

browse 交互完全运行在浏览器内,数据只通过 HTTP RPC 访问宿主文件系统,不需要宿主显示器,因此本地、局域网、公网反代访问表现完全一致。

插件宿主半边(lib/index.js)仅做启动健康检查:确认 directoryPicker 能力为 browse,并在启动日志打印一行确认信息。

Showing the opening section of the README — the full document lives in the repository以上为 README 开头摘要,完整文档在仓库内 · View the full README on GitHub →在 GitHub 查看完整 README →

← 上一个 Prev dsh-survival 下一个 Next dsh-plugin-context-manager →