前言¶
在 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。