Back to home

HAPPYFAPTAIN

dsh-wsl-drive-links

Expose Windows drive mounts in WSL home as symlinks (~/win-c → /mnt/c) for DeepSeek Harness directory picker and file tools.

Stars
0
Language
JavaScript
Created
Aug 14, 2026
Updated
Aug 14, 2026

Introduction

dsh-wsl-drive-links

在 WSL(Windows Subsystem for Linux)环境中,把 Windows 驱动器挂载点以符号链接的形式暴露到主目录,让 DeepSeek Harness(DSH)的目录选择器、文件工具和 shell 都能轻松进入 Windows 文件夹。

~/win-c → /mnt/c   (C:\ 盘)
~/win-d → /mnt/d   (D:\ 盘)
~/win-e → /mnt/e   (E:\ 盘)

背景

WSL 的 Windows 盘符默认挂载在 /mnt/c/mnt/d 等位置,文件系统本身完全可读可写。但在 DSH Web 界面的「添加工作区 / Add workspace」目录浏览对话框中,面包屑导航在 home 目录内部会被截断(只显示 Home → …,没有根目录 / 的入口),导致鼠标无法从 home 导航到 /mnt,工作区也就无法设置到 Windows 文件夹。

本插件在 home 下创建 win-<盘符> 符号链接作为入口:目录浏览对话框中直接点击 win-c 即可进入 C 盘,把任何 Windows 文件夹设为工作区。

特性

  • 零运行时依赖:只使用 Node.js 内置模块,作为 GitHub 依赖安装不会引入额外依赖解析风险
  • 自动检测:通过 /proc/mounts 中的 drvfs 挂载点识别盘符(WSL2 / WSL1 均适用),而非简单枚举 /mnt 目录,不会误伤 wslwslg 等非盘符目录
  • 幂等:重复启动不会产生重复链接;已存在且指向正确的链接自动跳过
  • 宽容:单个盘符创建失败不影响其他盘符;链接名被真实文件占用时跳过且绝不删除用户数据;非 WSL 环境自动空操作
  • 可配置:目标目录、链接前缀、盘符列表、是否修正失效链接均可通过 cordis 配置覆盖

安装

在 DSH 的 profile 中把插件加入依赖,例如:

pnpm add dsh-wsl-drive-links@github:HAPPYFAPTAIN/dsh-wsl-drive-links

然后在 cordis.patch.yml(或你的 profile 的补丁层)中挂载一行:

- insert:
    - id: wsl-drive-links
      name: 'dsh-wsl-drive-links'

重启(或热更新)后插件自动执行:检测 WSL → 扫描盘符 → 在主目录创建链接。

配置

字段类型默认值说明
enabledbooleantrue总开关,false 时插件不做任何事
targetstring$HOME链接创建的目标目录
prefixstring"win-"链接名前缀,"win-" 生成 win-cwin-d
drivesstring[]null要处理的盘符列表(如 ["c", "d"]);缺省时自动检测全部 drvfs 挂载盘
updatebooleantrue链接已存在但指向别处时是否修正(删除重建);false 时保留原样

示例:

- insert:
    - id: wsl-drive-links
      name: 'dsh-wsl-drive-links'
      config:
        prefix: 'win-'
        drives: ['c', 'd']

使用

安装后主目录出现 win-cwin-d 等符号链接,在 DSH 的目录浏览对话框中直接点击即可进入对应 Windows 盘,随后选择任意文件夹作为工作区。符号链接只是入口,随时可以删除:

rm ~/win-c

工作原理

  1. isWsl():通过 WSL_DISTRO_NAME 环境变量或 /proc/version 判断是否运行在 WSL
  2. detectDrives():解析 /proc/mounts 中文件系统类型为 drvfs、挂载点形如 /mnt/<单字母> 的条目;读取失败时回退为扫描 /mnt 下的单字母目录
  3. createDriveLink():对每个盘符创建 target/prefix+drive → /mnt/drive 符号链接,按 lstat 结果分派:不存在则创建、已正确则跳过、指向错误则按 update 决定修正或保留、被真实文件占用则跳过

测试

node --test "tests/*.test.js"

测试覆盖 WSL 识别、盘符检测、链接创建 / 幂等跳过 / 失效修正 / 占用保护等场景(建议在 WSL 内运行)。

License

MIT