dsh-wsl-sidebar:在 DSH 裏用 WSL 跑 Linux 側智能體

前言

在 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 命令完成。

發行版按以下順序解析:

  1. 工具參數裏顯式傳入的 distro(會與 wsl -l -q 校驗,名稱錯誤會列出已安裝項);
  2. 當前會話工作區所在發行版(從 \\wsl.localhost\<distro>\... 路徑讀取);
  3. 環境變量 DSH_WSL_DISTRO(適合工作區仍是 Windows 路徑時);
  4. 否則使用 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)。

典型用法思路

  1. 安裝並重啓 DSH 後,在 Settings → WSL 查看發行版、按需改 .wslconfig / wsl.conf,在 Runtime 頁查看資源與端口。
  2. 新建會話時用 WSL 目錄 把工作區設爲 \\wsl.localhost\<distro>\<path>,讓會話與發行版一致。
  3. 智能體在 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 命令幹活。

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

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

小夜