dsh-wsl-folder: Adding WSL Directory as Workspace in DSH

前言

在 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 仓库。

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

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

Xiaoye