前言¶
在 Windows 上給 DeepSeek Harness(DSH)配 WSL 工作區時,常見做法是直接通過 \\wsl.localhost 讀寫文件。資料裏說明,這條路徑是 9p 共享,不是 Windows 原生文件系統:從 UNC 路徑寫入會失敗(只讀沙箱下尤爲確定);工作區在被打標籤前 ACL 會被改寫,而 9p 共享沒有安全描述符,Get-Acl 會拋錯,Windows 側 shell 甚至無法在 \\wsl.localhost\ 工作區裏啓動。另外,單個 Windows 進程一次只能代表一個發行版,指向另一個發行版裏的文件時,路徑可能解析到第一個發行版。
下面介紹社區插件 dsh-wsl-sidebar(維護者 Wang1462604987,npm 包名 dsh-wsl-sidebar,當前 package 版本 1.7.2,MIT 許可證)。它不依賴在 Windows 側經 UNC 寫文件,而是通過 wsl.exe 在指定 Linux 發行版內執行命令,讓智能體的讀、寫、編輯、搜索都在 Linux 側完成。
這是什麼¶
dsh-wsl-sidebar 是 DSH 的 客戶端 類插件:在 Harness 裏提供 WSL 設置頁、新建會話時的 WSL 目錄入口,以及六個以 wslx- 爲前綴的工具,供智能體在 WSL 發行版內跑原生 Linux 命令、後臺任務和交互式 shell。
插件由主機端(index.js、lib/*.js)與客戶端(client.js)組成,經 Harness Web 服務在 /__wsl_plugin__/ 下注冊路由;非當前 Web 會話的請求會被拒絕。社區目錄頁:https://www.skillhub.cn/plugins/Wang1462604987/dsh-wsl-sidebar;源碼與說明:https://github.com/Wang1462604987/dsh-wsl-sidebar。
設計原則與發行版解析¶
資料中的設計規則是:智能體從不經 \\wsl.localhost 寫文件。每次讀、寫、編輯、搜索都變成一次 wsl.exe -d <distro> -e bash -lc <script>,工作在 Linux 側以普通 Linux 命令完成。
發行版按以下順序解析:
- 工具參數裏顯式傳入的
distro(會與wsl -l -q校驗,名稱錯誤會列出已安裝項); - 當前會話工作區所在發行版(從
\\wsl.localhost\<distro>\...路徑讀取); - 環境變量
DSH_WSL_DISTRO(適合工作區仍是 Windows 路徑時); - 否則使用
wsl.exe默認發行版;各工具會打印實際運行的發行版,避免靜默誤用。
工作目錄會映射到 Linux 路徑:/home/... 保持不變,C:\Users\... 變爲 /mnt/c/Users/...,UNC 路徑映射爲對應 Linux 形式。
核心功能¶
Settings → WSL 三頁籤¶
| 頁籤 | 作用 |
|---|---|
| Distros | 各發行版狀態與 WSL 版本,支持啓動、停止、設默認、在 WSL 1/2 間切換 |
| Config | 全局 .wslconfig 與各發行版 /etc/wsl.conf:內存、處理器數、swap、網絡模式、localhost 轉發、systemd、默認用戶等表單編輯,並附帶原文視圖 |
| Runtime | 選定發行版的內存與磁盤、負載、 uptime、監聽端口與進程數(來自 free -b、df -B1、ss、/proc 等) |
保存行爲在資料中有明確說明:輸入時不寫盤,僅在保存時寫入;.wslconfig 用臨時文件加原子重命名,/etc/wsl.conf 經 wsl.exe -u root 寫入;保存不會自動重啓 WSL,頁面提供重啓按鈕,wsl --shutdown 會先確認(會停止所有發行版)。每次寫入會保留備份(.wslconfig.bak-<date>、/etc/wsl.conf.bak-<date>)。停止發行版、切換版本、導出磁盤、wsl --shutdown 等在默認權限不是 danger-full-access 時需要確認(acknowledge)。已停止的發行版不會爲讀配置而隱式啓動,目錄瀏覽同樣返回 distro-stopped。
新建會話入口¶
在新建會話頁與其他入口並列有 WSL 目錄 按鈕:選擇發行版與目錄後,會創建 \\wsl.localhost\<distro>\<path> 工作區並切換草稿會話,行爲與內置 Windows 目錄選擇器一致。
六個 wslx-* 工具¶
| 工具 | 作用 |
|---|---|
wslx-run |
在發行版內執行 bash 命令(如 rg、git、make、python3);可選 workdir、timeoutMs;危險命令會被攔截 |
wslx-read |
帶行號讀文件,每次最多 2000 行 |
wslx-write |
經 Linux 側 stdin 管道寫整文件 |
wslx-edit |
精確替換一處字符串,不改變文件 mode 與 owner |
wslx-search |
用 rg 正則搜索,失敗時回退 grep -E;最多 250 條匹配 |
wslx-bg |
跨調用保持進程:start(命令或 mode=shell 交互 bash -i)、output(按 cursor 增量)、input(一行 stdin)、kill、list |
各工具均支持 asRoot: true,通過 wsl.exe -u root 在該發行版內以 root 執行單次調用,Windows 進程本身無需提權。工具名帶 wslx- 前綴,避免與其他插件 bundle 重名。
wslx-bg 每個任務對應一個 wsl.exe 子進程;輸出上限 1 MiB,默認 TTL 30 分鐘,隨 Harness 進程退出而結束,不留下守護進程。無僞終端,因此 vim、top、htop 等全屏程序無法使用;按行讀寫 stdin/stdout 的交互(如 python3 -i、psql、ssh)可用。
安裝與啓用¶
包爲原生 ESM,無需構建步驟。官方 README 給出兩種方式:
從 GitHub 安裝:
dsh plugin add github:Wang1462604987/dsh-wsl-sidebar
從 npm 安裝:
dsh plugin add dsh-wsl-sidebar
安裝後需要重啓 Harness:客戶端在啓動時打包加載,僅熱重載不夠(README 原文如此說明,截斷處亦強調需 restart)。
典型用法思路¶
- 安裝並重啓 DSH 後,在 Settings → WSL 查看發行版、按需改
.wslconfig/wsl.conf,在 Runtime 頁查看資源與端口。 - 新建會話時用 WSL 目錄 把工作區設爲
\\wsl.localhost\<distro>\<path>,讓會話與發行版一致。 - 智能體在 WSL 工作區或 Windows 工作區(配合
DSH_WSL_DISTRO)下調用wslx-run跑構建與腳本,wslx-read/wslx-write/wslx-edit/wslx-search處理 Linux 側文件,wslx-bg跑長時間或交互命令。
具體參數以插件註冊的工具 schema 與 README 爲準;上文表格僅概括能力邊界。
適用場景與注意¶
適合:在 Windows 上跑 DSH、代碼與工具鏈在 WSL 內、希望智能體用 Linux 命令而非經 UNC 寫 WSL 文件樹的開發者。
注意:
- 插件以當前 DSH 進程權限運行,並通過已認證的 Web 會話調用主機路由;安裝前請自行查看 GitHub 源碼與 MIT 許可證,確認符合你的安全策略。
- 社區目錄 skillhub.cn 爲獨立站點,與 DeepSeek / 幻方無官方從屬關係;DSH 生態理念是「一切皆插件」,本文介紹的是社區維護的客戶端插件之一。
- 依賴本機已安裝 WSL 與
wsl.exe;錯誤發行版名、已停止發行版、沙箱與確認門控等行爲均以 README 描述爲準,勿假設與通用 Shell 工具完全相同。
結尾¶
dsh-wsl-sidebar 把 WSL 管理、Linux 工作區選擇與 wslx-* 工具收進 DSH,繞開 \\wsl.localhost 寫入與單進程多發行版解析問題,讓智能體在指定發行版裏用普通 Linux 命令幹活。