在同一窗口切换 Windows 与 Linux 对话
30.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/2 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:未发布到 npm registry,仅可从源码安装。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Han-1413141/dsh-wsl-native该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:待复验
是什么
dsh 原生插件 · ui
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 30 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意未发布到 npm registry,仅可从源码安装
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-wsl-native(未发布到 npm,仅可源码安装)
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/12 17:40:03
🔴 安全扫描发现高危能力自动 · 静态分析源码
v2.7.0🔴 扫描:高危尚无人工评估
静态扫描发现安装期即执行代码,或命令参数由运行时变量拼接(参数来源无法静态判定,从严处理)。
命令参数由运行时变量拼接读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 32 处,展示前 32 条)
- 发起网络请求lib/client.js:802
\u8BF7\u5728\u5F53\u524D\u76EE\u6807\u73AF\u5883\u7EE7\u7EED\u5DE5\u4F5C\u3002\u5148\u6838\u5BF9\u6587\u4EF6\u4F4D\u7F6E\u548C\u5DF2\u6709\u4FEE\u6539 - 发起网络请求src/policy.mjs:10
const outcome = await approval.request({ agent: exec.agent, toolName: exec.name, callId: exec.callId, reason, signal: exec.signal }); - 读取密钥环境变量src/routes.mjs:182
verifyHandoff(p, process.env.DSH_WSL_HANDOFF_SECRET), - 发起网络请求src/routes.mjs:367
async fetch(request) { - 执行外部命令来自配置/变量src/connector.mjs:24
execFile( - 执行外部命令来自配置/变量src/connector.mjs:141
const child = spawn(file, args, { - 读取密钥环境变量lib/inheritance.mjs:6476
if (node_process.env.LOG_TOKENS) - 执行外部命令运行时拼接lib/inheritance.mjs:7436
const killer = spawn(`${process.env.SystemRoot || "C:\\Windows"}\\System32\\taskkill.exe`, ["/PID", String(child.pid), "/T", "/F"], { windowsHide: tru - 执行外部命令来自配置/变量lib/inheritance.mjs:7465
const child = spawn(file, args, { cwd: options.cwd, env: options.env ?? environment, shell: false, windowsHide: true, detached: process.platform !== " - 写入本地文件lib/inheritance.mjs:7556
await fs.writeFile(path.join(directory, "package.json"), JSON.stringify(packageJson || { name: "dsh-wsl-managed-runtime", version: "1.0.0", private: t - 读取本地文件lib/inheritance.mjs:7560
const lockText = await fs.readFile(path.join(directory, "package-lock.json"), "utf8"); - 读取本地文件lib/inheritance.mjs:7575
return { packageJson: await fs.readFile(path.join(directory, "package.json"), "utf8"), lockText, packages: urls.length }; - 删除本地文件lib/inheritance.mjs:7577
for (const file of ["package.json", "package-lock.json"]) await fs.unlink(path.join(directory, file)).catch(() => { - 删除本地文件lib/inheritance.mjs:7579
await fs.rmdir(directory).catch(() => { - 发起网络请求src/localhost.mjs:15
const response = await fetch(url, { - 执行外部命令运行时拼接src/process.mjs:10
const killer = spawn(`${process.env.SystemRoot || 'C:\\Windows'}\\System32\\taskkill.exe`, ['/PID', String(child.pid), '/T', '/F'], { windowsHide: tru - 执行外部命令来自配置/变量src/process.mjs:31
const child = spawn(file, args, { cwd: options.cwd, env: options.env ?? environment, shell: false, windowsHide: true, detached: process.platform !== ' - 执行外部命令运行时拼接lib/worker.mjs:45
const killer = spawn(`${process.env.SystemRoot || "C:\\Windows"}\\System32\\taskkill.exe`, ["/PID", String(child.pid), "/T", "/F"], { windowsHide: tru - 执行外部命令来自配置/变量lib/worker.mjs:74
const child = spawn(file, args, { cwd: options.cwd, env: options.env ?? environment, shell: false, windowsHide: true, detached: process.platform !== " - 读取本地文件lib/worker.mjs:315
for await (const chunk of createReadStream(file)) { - 发起网络请求src/conversation-model.mjs:226
if (entry.desktop) void entry.desktop.request(action, payload).then( - 读取本地文件src/inheritance.mjs:74
async function optional(file) { try { return await fs.readFile(file, 'utf8'); } catch (error) { if (error.code === 'ENOENT') return null; throw error; - 写入本地文件src/inheritance.mjs:76
await fs.mkdir(path.dirname(file), { recursive: true }); - 写入本地文件src/inheritance.mjs:78
try { await fs.writeFile(temp, JSON.stringify(value, null, 2) + '\n', { mode: 0o600 }); await fs.rename(temp, file); } - 删除本地文件src/inheritance.mjs:79
finally { await fs.unlink(temp).catch(() => {}); } - 读取本地文件src/inheritance.mjs:101
const manifest = JSON.parse(await fs.readFile(path.join(this.source.dir, 'package.json'), 'utf8')); - 读取本地文件src/inheritance.mjs:106
const directory = await fs.realpath(path.join(this.source.dir, 'node_modules', name)); - 读取本地文件src/inheritance.mjs:107
const json = await fs.readFile(path.join(directory, 'package.json'), 'utf8'), pkg = JSON.parse(json); - 写入本地文件src/inheritance.mjs:146
const cacheDir = path.join(this.source.home, 'dsh-wsl-native', 'plugin-cache'); await fs.mkdir(cacheDir, { recursive: true }); - 写入本地文件src/inheritance.mjs:150
const directory = path.join(cacheDir, item.fingerprint); await fs.mkdir(directory, { recursive: true }); - 读取本地文件src/inheritance.mjs:152
if (!packed || !(await fs.stat(path.join(directory, packed.filename)).catch(() => null))) { - 读取本地文件src/worker.mjs:70
for await (const chunk of createReadStream(file)) {
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 同窗口切换双系统对话
- WSL标志
- 双向系统互操作
README
由 DeepSeek 最新模型翻译生成适用于 WSL 的 DSH
在同一个 Windows DSH 窗口里使用 Windows 和原生 Linux 对话。WSL 对话带有标志,点击对话即可切换环境,保留各自的草稿和任务。包名为 dsh-wsl-native,当前版本为 0.7.0,适配 DeepSeek Harness 0.2.0-rc.2,支持 Windows Desktop 和 Windows Web。
下载安装包 · 桌面端安装与使用 · 完整手册 · 问题反馈
插件提供两种用法:
| 用法 | DSH 在哪里运行 | 适合的工作 |
| Windows DSH + WSL 工具 | Windows | 保留 Windows 会话和工具,通过插件执行 Linux 命令、处理 Linux 文件 |
| 从 Windows 启动 Linux DSH | WSL 的 Linux 文件系统 | 让整个 DSH、原生 Bash 和工作区在 Linux 中运行,同时访问 Windows 文件、程序和剪贴板 |
两种用法可以同时运行。Windows DSH 保留自己的 PowerShell、文件工具和会话;Linux DSH 使用 Linux 的 Bash、文件工具、工作区和依赖。进入另一环境不会停止原来的任务。命令和文件操作通过常驻进程通信,执行桥不监听网络端口;Linux 文件由 Linux 进程直接处理。
展开完整文档(README 剩余 1 节)
适用于 WSL 的 DSH 在同一个 Windows DSH 窗口里使用 Windows 和原生 Linux 对话。WSL 对话带有标志,点击对话即可切换环境,保留各自的草稿和任务。包名为 dsh-wsl-native,当前版本为 0.7.0,适配 DeepSeek Harness 0.2.0-rc.2,支持 Windows Desktop 和 Windows Web。 下载安装包 · 桌面端安装与使用 · 完整手册 · 问题反馈 插件提供两种用法: | 用法 | DSH 在哪里运行 | 适合的工作 | | Windows DSH + WSL 工具 | Windows | 保留 Windows 会话和工具,通过插件执行 Linux 命令、处理 Linux 文件 | | 从 Windows 启动 Linux DSH | WSL 的 Linux 文件系统 | 让整个 DSH、原生 Bash 和工作区在 Linux 中运行,同时访问 Windows 文件、程序和剪贴板 | 两种用法可以同时运行。Windows DSH 保留自己的 PowerShell、文件工具和会话;Linux DSH 使用 Linux 的 Bash、文件工具、工作区和依赖。进入另一环境不会停止原来的任务。命令和文件操作通过常驻进程通信,执行桥不监听网络端口;Linux 文件由 Linux 进程直接处理。 快速开始 需要 Windows、已安装的 WSL 2 发行版,以及两端可用的 Node.js。支持 Node.js 22.19+ 的 22.x 系列或 24+;Linux 端必须是 Linux Node,不能指向挂载盘上的 node.exe。Linux DSH 安装还需要 Linux npm;Windows 辅助下载需要 Windows npm。 安装到 Windows 桌面端 从 GitHub Releases 下载 dsh-wsl-native-0.7.0.tgz,保留在固定目录。在 PowerShell 中使用 桌面端附带的 CLI 安装;将下面的路径换成本机安装目录和包路径: $dshDesktop = 'F:\deepseek harness\resources\runtime\cli\bin\dsh.cmd' & $dshDesktop plugin --profile desktop add 'C:\Downloads\dsh-wsl-native-0.7.0.tgz' desktop 是桌面端配置,web 是另一个配置。已在 PATH 中配置桌面端 CLI 时,也可直接使用 dsh plugin --profile desktop add ...。安装后在桌面端查找 WSL 与 Windows;若当前窗口尚未显示入口,等当前任务结束后从托盘退出 DSH,再重新打开。 源码仓库还提供 scripts/install-desktop.ps1,会先备份桌面端配置,再安装并检查插件版本和已有插件。具体命令、更新及卸载见桌面端说明。 同时使用 Windows 与 Linux DSH 打开侧边栏 WSL 与 Windows,选择发行版和项目目录: 1. 点击 开始 WSL 对话。插件准备依赖、启动 Linux DSH,在当前窗口的主区域打开原生 Linux 对话。 2. 左侧同一个列表显示两边的对话;Linux 对话右侧有 WSL 标志。点击 Windows 或 WSL 对话即可切换,不跳转整个页面。 3. 默认保留原生工作区,并在其中显示带 WSL 标记的项目与对话。点击“工作区”标题右侧的小切换按钮,进入紧凑对话列表;点击同一位置的按钮切回。 4. 侧栏顶部直接提供 Windows、WSL 两个新建按钮。工作区标题右侧带 WSL 标识的文件夹加号可新建 WSL 工作区,支持浏览和创建 Linux 文件夹。 5. WSL 工作区直接使用 DSH 原生列表,支持拖动排序、折叠、重命名、移除和指定项目新建对话。对话支持置顶、重命名、分支和归档。 6. 在对话菜单选择 交接工作…,把工作说明交给另一环境的已有或新建对话。支持预览、可编辑的最近对话摘录、交接草稿和排队发送。详见工作区与交接。 7. WSL 对话顶部的 Linux 配置 直接打开 Linux 插件管理。环境面板中的 Linux 插件与配置 可以控制继承选项。原有 新窗口打开 方式继续保留。 每个发行版和用户分别记忆最近目录。再次进入同一项目时优先打开上次查看的会话。目录输入接受 Linux、Windows 和 WSL UNC 路径,验证成功后才更新设置。从 Windows 插件进入时,Linux 默认继承当前主环境的插件、设置和模型账号;在 Linux 单独修改的项目会保留。详见继承与独立调整。 按需启动与自动重连: 默认不会随 DSH 启动 WSL。点击 WSL 对话、顶部 WSL 按钮或创建 WSL 工作区时才启动所需环境;缓存的工作区列表仍然显示。在 WSL 与 Windows → 随 DSH 启动 WSL 环境 打开开关后,下次打开 DSH 会在后台启动上次使用的环境,当前 Windows 页面保持原位。页面通信中断时最多自动重连 3 次,已提交的新建、消息和交接操作不会自动重放。详见启动与重连。 两边共用窗口和对话列表,各条对话继续使用所属环境的运行进程、权限和文件系统。切换不会迁移一条对话到另一个系统。账号继承仅在本机准备 Linux 环境时进行,可在环境面板关闭;会话数据保持独立。Desktop 使用 DSH 官方隔离网页容器;Web 使用同窗口嵌入页。两种入口共用会话列表和环境管理。 推荐把 Linux 项目放在 /home/<用户>/...。DSH 本体、插件和依赖也安装在 Linux 文件系统,保留大小写敏感文件名、符号链接、可执行权限和文件监听。Windows 挂载目录可以使用,面板会说明频繁读写时的取舍。 通过命令行启动 Linux DSH 在本项目目录打开 PowerShell。交付包已经包含构建产物,可直接执行: node .\bin\dsh-wsl.mjs list node .\bin\dsh-wsl.mjs doctor --distro Ubuntu node .\bin\dsh-wsl.mjs setup --distro Ubuntu node .\bin\dsh-wsl.mjs start --distro Ubuntu --cwd /home/codex 把 Ubuntu 和 /home/codex 换成你自己的发行版和 Linux 目录。start 会打开本机 DSH 页面,保持当前终端运行;按 Ctrl+C 停止该实例。第一次打开时,在 DSH 中配置你自己的模型账号或 API Key,并添加 Linux 工作区。 安装位置是所选 Linux 用户的 ~/.local/share/dsh-wsl-native/。DSH 数据放在其中的 dsh-home/,与已有的 Windows DSH 数据分开。直接运行命令行时没有主 DSH 配置上下文,因此不会自动继承;从 Windows DSH 插件入口启动则默认继承主环境插件、设置和模型账号。两种入口都不复制历史会话。 Windows 上的 setup 默认由 Windows npm 下载依赖,再由 Linux npm 离线安装。安装脚本仍在 Linux 执行;个别第三方安装脚本如果自行联网,仍需要对应网络条件。可以用 --install-network linux 改为 Linux 直接下载。再次执行 setup 会更新插件快照,已成功安装的同版本 DSH 会被复用;修复损坏安装用 --reinstall。 安装到 Windows Web 配置 安装到需要使用的 DSH 配置: dsh plugin --profile web add "C:\path\to\dsh-wsl-native-0.7.0.tgz" dsh web 也可把安装源换成本项目的绝对目录。web 是这里演示的配置名称,其他配置需要分别安装。只需要在 Windows 会话中调用 Linux 工具时,在面板选择发行版与目录,点击「连接 WSL」或「应用工作目录」即可。Linux 用户可在「高级设置」中指定。 管理页面使用 DSH 原生控件,跟随浅色、深色主题,并适应窄窗口。点击「浏览」可选择 Linux 文件夹,支持返回上级、隐藏项、排序和分页加载。「运行与连接管理」提供预先准备与按环境停止操作。 Windows 原有工具继续工作。插件增加的工具以 wsl_native_ 开头;面板中的 Linux 目录只作为这些工具的默认目录。它不会把现有 Windows 工作区自动转换成 Linux 工作区。 在已有 Linux DSH 中同样可以安装该包。此时 wsl 目标使用当前发行版和当前 Linux 用户,windows 目标经 WSL 互操作访问 Windows。自定义 Windows Node 路径见配置说明。 Windows Web 同窗口 Windows 与 WSL 对话,0.3.0 实测截图 上图是 0.3.0 的历史截图。0.7.0 已收起常驻搜索与筛选区,新增原生工作区切换按钮,并隐藏 Linux 的重复侧栏。 从公开安装包直接安装 也可以直接把 GitHub Release 的公开下载地址交给 DSH 命令行: dsh plugin --profile desktop add https://github.com/Han-1413141/dsh-wsl-native/releases/download/v0.7.0/dsh-wsl-native-0.7.0.tgz 可以做什么 - 复用 Windows、Linux 常驻工作进程;并发命令各自使用明确的目录和环境变量。 - 双向执行 Bash、PowerShell 或程序参数数组;超时、取消时回收子进程树。 - 原生列目录、分页读取 UTF-8/GB18030 文本、原子写入,保留符号链接;支持旧文件 SHA-256 冲突检查。 - 在两端分块复制二进制文件,校验 SHA-256 后提交,中断时清理临时文件。 - 转换盘符、Linux 路径和 WSL UNC 路径,使用发行版实际的 wslpath。 - 启动、查看和取消后台任务;连接结束时回收所属任务。 - 在 Windows 打开文件、目录和网页,以及读写文本剪贴板。 - 安装、启动和停止独立 Linux DSH;同一数据目录的多个启动器互斥。 - 按环境保存用户、目录和最近项目,先连接验证再提交,失败时保留原设置。 - Windows 与 Linux 同时使用,已有实例直接复用,进入项目时恢复其会话。 - 在途命令、路径转换、文件复制和后台任务固定到原环境,切换时不重新分派。 在对话中可以这样描述任务: 使用 wsl_native_exec,在 Ubuntu 的 /home/codex/project 运行项目检查,返回退出码和错误信息。 使用 wsl_native_copy,把 Ubuntu 的 /home/codex/project/report.pdf 复制到 C:\Users\me\Desktop\report.pdf,已有文件先不要覆盖。 当前 DSH 在 WSL 中运行。使用 wsl_native_exec 的 windows 目标,查询 Windows 中的 Node.js 版本。 性能与验证 Windows Node v24.19.0、Ubuntu Node v22.22.1,已启动的 WSL 2 中交错执行 30 轮 /bin/true:常驻连接的中位耗时 4.601 ms,每次启动 wsl.exe 为 289.644 ms。这衡量短命令的调用开销,不代表模型推理、编译或整体任务的加速比例。 0.6.1 的 69 项自动化检查通过。新增检查覆盖已移除预设的空白会话复用、并发新建合并、错误传播与导航取消。实际宿主和界面联调的版本、结果及范围见验证报告。 切换会保留各宿主已经保存的会话和文件,账号配置也分别保留;正在生成的模型对话不会迁移到另一个操作系统。同窗口切换时,两边页面保持加载,未发送草稿继续保留。也可以使用「新窗口打开」并排查看。从 Windows 插件启动的 Linux DSH 由该 Windows 宿主管理,退出 Windows DSH 或停止环境会结束对应实例;单纯切换页面不会停止它。 文档与开发 - 桌面端说明:安装、开始对话、更新和卸载。 - 使用手册:命令、7 个工具、参数、权限和配置。 - 继承与独立调整:主环境插件、Linux 单独设置、备份与同步时机。 - GitHub 同类项目调研:已有能力、取舍与本插件的实现重点。 - 架构说明:连接、文件传输、生命周期和权限。 - 故障处理:安装、连接、路径和启动问题。 - 验证报告:已通过的检查、性能数据与验证边界。 npm ci npm run build npm run check npm test npm run test:wsl 最后一项需要本机 WSL 2 和两端 Node.js。设置 DSH_TEST_DESKTOP_ROOT 为桌面端安装目录后,npm run test:host 使用 Desktop 内置运行时和隔离测试配置;不设置时需要可解析的 @deepseek-ai/dsh@0.2.0-rc.2。npm run test:native 需要先执行 setup。测试不调用模型 API。 MIT 许可证。本项目是独立社区插件,不是 DeepSeek 或 Microsoft 的官方产品。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Han-1413141/dsh-wsl-native
在同一窗口切换 Windows 与 Linux 对话
相关插件 · UI / 主题
破甲增强版JeffKeeping/dsh-purge-plus
dsh-purge 的非官方分支fork:适配 DeepSeek Harness 0.2.1-rc.2、破甲内核…
★ 387已汉化DeepSeek 客户端
71.9
无代码业务系统平台nocobase/nocobase
NocoBase 是什么
★ 24,798已汉化DSH
71.8
1Panel 服务器面板1Panel-dev/1Panel
全球 250 万+ 自托管用户共同喜爱。
★ 37,327已汉化DSH
71.5
终端编码代理esengine/DeepSeek-Reasonix
· 指南 · ACP · 扩展开发 · 规格 · 官方网站 · Discord · QQ
★ 36,021已汉化DSH
71.2
工作状态行动态ccch1mneyyy/working-activity
作者:chimney@ccch1mneyyy。社区项目,非 DeepSeek 官方项目。
★ 664已汉化DSH
71.2
多模型配置管家farion1231/cc-switch
跨平台桌面一体化助手,支持 Claude Code、Codex、OpenCode、DeepSeek Harness 等工具,唯一官网 ccswitch.io
★ 150,724已汉化DSH
71.1