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目录,不会误伤wsl、wslg等非盘符目录 - 幂等:重复启动不会产生重复链接;已存在且指向正确的链接自动跳过
- 宽容:单个盘符创建失败不影响其他盘符;链接名被真实文件占用时跳过且绝不删除用户数据;非 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 → 扫描盘符 → 在主目录创建链接。
配置
| 字段 | 类型 | 默认值 | 说明 |
|---|---|---|---|
enabled | boolean | true | 总开关,false 时插件不做任何事 |
target | string | $HOME | 链接创建的目标目录 |
prefix | string | "win-" | 链接名前缀,"win-" 生成 win-c、win-d |
drives | string[] | null | 要处理的盘符列表(如 ["c", "d"]);缺省时自动检测全部 drvfs 挂载盘 |
update | boolean | true | 链接已存在但指向别处时是否修正(删除重建);false 时保留原样 |
示例:
- insert:
- id: wsl-drive-links
name: 'dsh-wsl-drive-links'
config:
prefix: 'win-'
drives: ['c', 'd']
使用
安装后主目录出现 win-c、win-d 等符号链接,在 DSH 的目录浏览对话框中直接点击即可进入对应 Windows 盘,随后选择任意文件夹作为工作区。符号链接只是入口,随时可以删除:
rm ~/win-c
工作原理
isWsl():通过WSL_DISTRO_NAME环境变量或/proc/version判断是否运行在 WSLdetectDrives():解析/proc/mounts中文件系统类型为drvfs、挂载点形如/mnt/<单字母>的条目;读取失败时回退为扫描/mnt下的单字母目录createDriveLink():对每个盘符创建target/prefix+drive → /mnt/drive符号链接,按lstat结果分派:不存在则创建、已正确则跳过、指向错误则按update决定修正或保留、被真实文件占用则跳过
测试
node --test "tests/*.test.js"
测试覆盖 WSL 识别、盘符检测、链接创建 / 幂等跳过 / 失效修正 / 占用保护等场景(建议在 WSL 内运行)。