前言¶
在 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 命令干活。