dsh-wsl-folder:在 DSH 裏把 WSL 目錄加爲工作區

前言

在 Windows 上使用 DeepSeek Harness(DSH)時,工作區默認只能選 C:\、D:\ 等 Windows 路徑。項目若在 WSL 的 Linux 文件系統上,「添加工作區」沒有瀏覽 WSL 的入口;即便手動把 \\wsl.localhost\<發行版>\... 填成工作區,側欄終端仍會是 PowerShell,agent 在 9P 共享上寫入還會報 ENOTSUP 或 GetFileSecurityW EIO。下面介紹社區插件 dsh-wsl-folder(維護者 LyuYuxin),它在不改變 DSH「一切皆插件」的前提下,把添加工作區、側欄終端和文件讀寫接到 WSL 上。

這是什麼

dsh-wsl-folder 是 DSH 的客戶端類插件,當前 npm 版本 1.1.1,要求 DSH >= 0.2.1-rc.3,適用於 Windows 上的 Desktop 與 dsh web。它不會把 agent 的 shell 搬到 Linux 側,而是在現有架構上補 WSL:從側欄「添加工作區」選 WSL 目錄、在該工作區裏把側欄終端開在對應發行版、並讓 agent 的寫入/編輯工具在 \\wsl.localhost 上可用。

核心功能

添加工作區:Windows 與 WSL 兩種來源

點工作區標題欄的「+」(或新會話頁的「添加工作區」),彈窗先問文件夾在哪裏:選 Windows 文件夾 走 DSH 原生的系統選擇器;選 WSL 文件夾 打開發行版目錄瀏覽器。下方有最近用過的 WSL 位置,可一鍵重新添加。

WSL 目錄瀏覽器

在對話框裏用右上角下拉切換髮行版(默認 WSL 默認發行版),從該發行版默認用戶主目錄起瀏覽;可點麪包屑回上級、用鉛筆圖標直接輸入 Linux 路徑並回車、切換「顯示隱藏文件」。點「打開」後,Linux 目錄註冊爲 \\wsl.localhost\<發行版>\...。若目錄在 /mnt/<盤符>/...(WSL 掛載的 Windows 盤,\\wsl.localhost 共享讀不了),則註冊爲真實 Windows 路徑(例如 /mnt/d/proj → D:\proj),並記住來源發行版。

側欄終端開在發行版內

在該 WSL 工作區打開側欄終端時,運行 wsl.exe -d <發行版> --cd <Linux 路徑>,起始目錄即工作區,標籤爲 WSL · <發行版>。Windows 工作區與 agent 自行啓動的終端不受影響。發行版停止時,第一次打開可能稍等;插件在彈出第一個對話框時會在後臺喚醒發行版。

Agent 讀寫與路徑修復

DSH 自帶工具在 \\wsl.localhost 上新建/修改文件會失敗;插件對共享路徑改用共享支持的發佈方式,版本校驗、不覆蓋他人新建文件、原子替換等語義保持不變。少數組件會把 UNC 路徑開頭的分隔符弄丟,導致讀 AGENTS.md 等報 C:\wsl.localhost\... 不存在;插件可通過配置開啓路徑修復(見下文)。要跑 Linux 命令時,可讓 agent 調用 wsl.exe -e <命令>,或直接在側欄終端操作。

性能與界面

發行版列表讀註冊表,主目錄從 /etc/wsl.conf 與 /etc/passwd 解析,目錄列表走 \\wsl.localhost 共享,熱路徑上不反覆調用 wsl.exe。對話框沿用 DSH Modal 與 --dsw-* 主題變量,深淺色與皮膚跟隨 DSH。

環境與要求

  1. Windows 10/11,已安裝 WSL(推薦 WSL2)。
  2. DeepSeek Harness >= 0.2.1-rc.3(Desktop 或 dsh web)。
  3. WSL 發行版內無需額外安裝插件依賴。

安裝與啓用

在 DSH「插件」頁面按包名 dsh-wsl-folder 安裝,或在終端執行:

dsh plugin --profile desktop add dsh-wsl-folder

也可從 GitHub 安裝(跟倉庫源碼,不經過 npm):

dsh plugin --profile desktop add github:LyuYuxin/dsh-wsl-folder

裝好後完全退出並重啓 DSH;側欄終端重定向需要在 Host 啓動時掛上。

配置

在 profile 的 cordis.patch.yml 裏可覆蓋插件行 config:

字段 默認 說明
terminal true WSL 工作區側欄終端是否開在發行版;false 時保持 Windows shell
write true 是否修復 agent 在 \\wsl.localhost 上的寫入/編輯;false 時保持 DSH 原樣
paths true 是否修復丟失開頭分隔符的 WSL 路徑;false 時關閉相關修復與進程級 fs 補丁
remote false 是否允許非本機客戶端調用插件 Host 路由;默認僅迴環地址

示例:關閉 WSL 側欄終端:

- id: dsh-wsl-folder
  name: 'dsh-wsl-folder'
  config:
    terminal: false

典型用法

  1. 重啓 DSH 後,點側欄「+」→ 選 WSL 文件夾。
  2. 選擇發行版,瀏覽或輸入目標 Linux 目錄 → 打開。
  3. 在該工作區打開側欄終端,確認 shell 在發行版內、cwd 爲 Linux 路徑。
  4. 讓 agent 編輯工作區內的文件;若需跑 Linux 工具鏈,在側欄終端執行,或通過 wsl.exe -e 調用。

在插件之外用 DSH 自帶選擇器添加的 Windows 目錄不會被插件記錄,其終端仍是 Windows shell。

適用場景與注意

適合:在 Windows 上主要用 DSH Desktop 或 dsh web,項目代碼在 WSL Linux 文件系統或 /mnt 掛載盤上,希望工作區、側欄終端與 agent 寫文件行爲一致落在 WSL/共享語義上。

已知限制(來自上游 README):

  • Agent 的 shell 與文件工具仍在 Windows 側,Linux 目錄經 \\wsl.localhost 訪問,速度低於原生 Linux。
  • WSL 共享上新建文件不是嚴格原子;部分無讀權限目錄用發行版內 find 列出,每次約 1–3 秒。
  • WSL 工作區側欄終端默認總在 WSL 裏;需要 Windows shell 時將 terminal 設爲 false。
  • 功能依賴 DSH 內部 TerminalController、LocalFileSystem 等接口;DSH 大版本變更時,終端重定向或寫入修復可能退回原樣,添加 WSL 工作區仍可用。

插件以當前 DSH 進程權限運行。安裝前建議在 GitHub 查看源碼與 MIT 許可證;社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-wsl-folder 把「添加工作區」接到 WSL 瀏覽、側欄終端與共享寫入三處缺口,適合在 Windows 上用 DSH 開發 WSL 內項目的場景。更多信息見 SkillHub 目錄頁 與 GitHub 倉庫。

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

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

小夜