前言¶
在 DeepSeek Harness (DSH) 的使用场景中,模型代理经常需要执行 Linux 命令。传统的做法通常是编写 .sh 脚本或 pwsh 包装器。dsh-wsl 插件解决了这个问题,它允许模型代理直接通过 wsl.exe 运行 Linux 命令,无需手写脚本。它在命令执行层面匹配原生 Linux DSH 的行为,包括真实的 Linux 内核和 bash 环境、退出码与信号处理、超时机制、输出截断以及后台作业管理。
插件介绍¶
该插件是面向模型的 WSL 工具插件,旨在简化 Windows 环境下的 Linux 命令执行流程。
- 插件名称:
dsh-wsl(仓库)/dsh-wsl-tool(NPM 包名) - 维护者:XINY11451
- 类别:联网工具
- 开源协议:MIT
安装¶
通过 DSH 的插件管理器安装:
dsh plugin add --profile <profile> dsh-wsl-tool
安装后,插件会在 Bundle 加载时自动注册 tool-wsl。不要在预设(preset)中手动列出 tool-wsl,因为 DSH 已经在全局范围内注册了该工具,重复注册会导致错误。
核心功能¶
插件注册了三个工具,分别用于命令执行、路径转换和环境探测。
1. wsl:运行 Linux 命令¶
通过调用 wsl.exe 执行命令。默认行为等同于在 WSL 中直接运行。
- 命令格式:
wsl.exe [-d <distro>] -e bash -lc "cd <workdir> && <command>" - 返回内容:包含
stdout、stderr以及退出码、超时或截断标记。 - 长脚本支持:如果命令长度超过 Windows 命令行限制(32767 字符),内容会通过
stdin传递给wsl.exe,避免截断。 - 后台作业:设置
runInBackground: true可以将命令作为后台任务运行,返回任务 ID,需配合@deepseek-ai/dsh-tool-jobs预设使用。
2. wsl-path:路径转换¶
利用 wslpath 工具在 Windows 和 WSL 路径之间转换。
- 自动检测:根据路径格式自动判断转换方向。
- 手动指定:通过
direction: 'win' | 'linux'强制指定方向。 - 示例:
C:\Users\me\a.txt->/mnt/c/Users/me/a.txt
3. wsl-env:环境摘要¶
探测并返回 WSL 环境的详细信息,帮助代理在执行前判断环境能力。
- 信息项:发行版列表、内核版本、架构、CPU 核心数、内存和磁盘使用量、systemd 状态、Docker 安装情况、GPU 直通状态、挂载驱动等。
- 容错性:未探测到的项会显示为空或特定状态(如
docker: not installed)。
典型用法¶
执行 Linux 命令¶
wsl command: "echo hello"
执行后返回类似 [exit code: 0] 的结果。
转换路径¶
wsl-path C:\Users\me\project
返回:/mnt/c/Users/me/project
获取环境信息¶
wsl-env
返回包含内核版本、CPU 核心数、内存状态、驱动挂载点等信息的摘要。
注意事项与限制¶
- 沙箱限制:
wsl调用运行在 DSH 沙箱之下,这意味着文件策略无法限制该插件的执行,必须依赖系统层面的权限控制。 - 文件系统语义:如果项目位于 Windows 驱动器(如 C: 或 D:)上,文件系统保持 Windows 语义。这包括不区分大小写、无 POSIX 权限以及无文件变更通知,且访问速度较慢。
- 后台作业依赖:使用后台作业功能时,必须在预设的 Composition 中包含
@deepseek-ai/dsh-tool-jobs,否则调用会失败。 - 注册冲突:如前所述,不要在预设中手动注册
tool-wsl,否则会报错tool "wsl" is already registered in this scope。
结语¶
dsh-wsl 为 DeepSeek Harness 提供了原生的 Linux 命令执行能力。通过直接调用 wsl.exe,它减少了开发者在脚本包装上的工作,并提供了标准化的环境探测能力。在使用时,需注意其运行在 DSH 沙箱之下以及 Windows 驱动器上的文件系统限制。
- 目录页:https://www.skillhub.cn/plugins/XINY11451/dsh-wsl
- GitHub 仓库:https://github.com/XINY11451/dsh-wsl