前言¶
在 DeepSeek Harness(DSH)里,Session 页眉的「Open In…」分裂按钮默认会在本机文件管理器中打开当前会话的工作区目录,快捷键为 Ctrl+Alt+O(对应 workspace.openLocal)。在 Windows 上,点击后 Host 侧会报告成功,但资源管理器窗口往往不会出现,看起来像按钮没反应。
根因在上游 @deepseek-ai/dsh-host-open-in-app 对 explorer 的 shell-open 实现:通过 @deepseek-ai/dsh-native-command 启动 explorer.exe 时使用了 windowsHide: true。该选项本意是避免 CLI 子进程闪一下控制台,用在 Explorer 上却会让新窗口在 IsWindowVisible() 意义下不可见;而上游仅依据退出码判断,Explorer 的 exit 1 仍被当作委托 handoff 成功,于是界面显示 { ok: true } 却没有可见窗口。
社区插件 dsh-open-folder-visible(维护者 King20260919)在不替换页眉按钮、不改动快捷键的前提下,为「打开工作区目录」这一条路径单独修正启动参数。下文介绍其定位、实现要点、安装与限制。
这是什么¶
dsh-open-folder-visible 是面向 web profile 的 DSH 插件,仅解决 Session 页眉「在文件管理器中打开工作区」在 Windows 上窗口不可见的问题。它不改造分裂按钮本身,也不覆盖「在资源管理器中显示文件」(explorer.exe /select,<file>)等其它路径。
插件在 GitHub 开源(King20260919/dsh-open-folder-visible),许可证为 MIT;社区目录页见 SkillHub(独立社区站点,与 DeepSeek / 幻方无官方从属关系)。
问题与上游行为(简要)¶
页眉默认动作用 @deepseek-ai/dsh-host-open-in-app 里 catalog 的 explorer 条目,在 Windows 上等价于:
execFile('explorer.exe', ['<file:// URI>'], { encoding: 'utf8', signal, windowsHide: true })
README 中在同一 Host、同一调用形态下对比过:windowsHide: true 时新窗口 IsWindowVisible() 为 false;改为 windowsHide: false 则为 true。这是本插件修正的直接依据。
核心功能¶
插件分 Host 与浏览器两侧协作,且刻意缩小影响面。
Host:可见窗口启动路由¶
Host 侧新增路由 POST /open-folder-visible/open,用与上游相同的 argv 数组(不用 shell 字符串)启动 explorer.exe,但将 windowsHide 设为 false。其余语义与官方 opener 对齐:接受 Explorer 的 exit 1 作为委托 handoff,并用 watch 窗口判断「启动器仍在运行」视为已启动而非误杀。
浏览器:仅重定向文件管理器打开请求¶
客户端通过包装 globalThis.fetch,只把「打开文件管理器 / 工作区目录」那一次 launch 重定向到上述路由;页面上其它应用、其它请求原样透传。
刻意不做的部分¶
- 不替换 Session 页眉分裂按钮、应用菜单、图标、手势反馈和
Ctrl+Alt+O快捷键。 - 不修改「Reveal in File Explorer」、
revealNativePath等另一条代码路径(交付文件卡片、变更文件审查里的「显示文件位置」仍可能受上游windowsHide影响,本插件不覆盖)。
安装与启用¶
安装命令(来自 README 原文):
dsh plugin --profile web add github:King20260919/dsh-open-folder-visible
说明:
- 安装任意插件都会在与你相同的权限下执行第三方代码;若需固定版本,可在引用后追加 commit:
github:King20260919/dsh-open-folder-visible#<sha>。 - 安装后需重启 DSH:Host 侧在加载时注册
/open-folder-visible/open路由。
配置¶
| 字段 | 默认值 | 含义 |
|---|---|---|
launchWatchMs |
1500 |
对 explorer.exe handoff 的早期失败观察窗口(毫秒)。成功与否与进程是否立即退出解耦,因为 Explorer 在把窗口交给已有 shell 后会很快退出。 |
典型用法¶
无需额外 API 调用:安装并重启后,继续使用 Session 页眉「Open In…」的默认动作,或按 Ctrl+Alt+O,行为与官方一致,只是在 Windows 上应出现可见的资源管理器窗口。
非 Windows 平台:该路由返回 501,其余行为不变,可照常安装但无修复效果。
适用场景与注意¶
适合谁
- 在 Windows 上使用 DSH web profile,且经常通过页眉或
Ctrl+Alt+O打开本地工作区目录的开发者。
务必知晓
- 仅 Windows 有效;Linux / macOS 上路由为
501。 - 只修复「打开工作区目录」,不修复
/selectReveal 路径。 - 重定向依赖对官方 launch 路由与请求体的匹配;若未来 DSH 变更路由或 body 形状,重定向可能不再命中,会静默回退为官方行为,wrapper 不会破坏原请求。
- 插件以当前 dsh 进程权限运行;安装前请自行审阅 源码 与 MIT 许可证。
结尾¶
若你在 Windows 上遇到「打开工作区成功提示却无 Explorer 窗口」,dsh-open-folder-visible 用最小补丁(Host 一条路由 + 浏览器侧定向 fetch 重定向)对齐上游语义并修正 windowsHide,同时保留官方按钮与快捷键。更多信息见社区目录 dsh-open-folder-visible 与 GitHub 仓库 King20260919/dsh-open-folder-visible。