dsh-plugin-pwsh7:在 Windows 上将 DSH 的 pwsh 工具路由到 PowerShell 7

前言

在 Windows 上使用 DeepSeek Harness(DSH)时,对话里的 shell 往往挂载为 pwsh-sandbox 执行器。部分环境下解析到的可执行文件仍是 Windows PowerShell 5.1,而不是 PowerShell 7(pwsh.exe,主版本号 ≥ 7)。模型按 bash 或 POSIX 习惯写命令时,5.1 与 7 的语法差异、以及沙箱策略下的拒绝与失败分类,都会让排查成本变高。

dsh-plugin-pwsh7 是维护者 drliuhuan 发布的客户端类 bundle:保留官方 dsh-pwsh-sandbox 的沙箱模式、sandbox_permissions 升级、后台任务与输出上限等行为,只替换可执行文件解析逻辑,并在 Web GUI 中提供安装、路由切换与自检能力。下面按定位、能力、安装与用法说明。

这是什么

dsh-plugin-pwsh7(npm 包名同插件仓库名)面向 Windows 10/11,要求使用支持 bundle 的 DSH profile(如 @deepseek-ai/dsh-base / Web profile)。README 记载在 DSH desktop 0.2.1-rc.2 上做过验证。

插件通过 Cordis patch 接管 pwsh-sandbox 槽位:在显式配置 config.pwshPath 时仍以配置为准;否则使用插件解析到的 PowerShell 7。若本机尚未安装 PowerShell 7,不会由模型自动触发安装;Web GUI 会弹出设置对话框,或由用户在 Settings → PowerShell 7 中操作,亦可自行安装系统版 PowerShell 7。

社区目录页:drliuhuan/dsh-plugin-pwsh7。源码与说明:GitHub 仓库。当前资料中的发布版本为 0.3.3,许可证 MIT。

核心功能

执行器与沙箱

执行器类 RouterPwshExecutor 继承官方 SandboxPwshExecutor(bundle 内 id 为 pwsh7-executor)。除 pwshPath 解析外,沙箱模式、权限升级、denial/runner-failure 事实、后台作业、输出上限与退出标记等与 stock 执行器一致。

shell_router 工具

当 PowerShell 7 缺失或需要诊断时,模型可调用面向用户的 shell_router 工具(由 bundle 行 dsh-plugin-pwsh7 注册):

Action 作用
status(默认) 已解析的 PowerShell 7 路径与版本、配置文件、当前沙箱策略、随包解析结果
diagnose 在当前沙箱策略下运行真实 PowerShell 7 命令(版本检测与工作区写入),汇报退出码、stdout/stderr 及拒绝/运行失败分类与提示
selfcheck 与设置页相同的只读自检,返回 ok / warn / fail 行
route 持久化 route: "plugin" 或 route: "system" 并报告新路由
uninstall 移除插件管理的 per-user 便携安装(文件、临时目录、托管 PATH 项),保留路由偏好
install、relocate 不由工具执行;返回指引,要求用户通过设置对话框、Settings → PowerShell 7 或手动安装完成

Web GUI:设置页与安装对话框

浏览器端注册 PowerShell 7 设置页(settings.section),可读状态包括:解析到的版本与可执行路径、安装目录、配置路径、安装范围与方法、插件版本、是否为插件托管且可卸载。

可操作项包括:在「插件托管 PowerShell 7」与「系统默认」之间切换路由;自检整条路由栈;卸载插件托管的 per-user 安装;将 per-user 安装迁移到系统范围。

缺少 PowerShell 7 时,页面加载及每次 pwsh 运行失败都会打开 setup 对话框,提供下载按钮与实时进度(字节、百分比、阶段)。关闭对话框不会取消进行中的安装;下次失败运行会再次打开。

方言提示与 Composer 芯片

面向模型的 Prompt guidance 为可选、默认关闭(升级不会自动消耗 prompt token)。在 setup 对话框与 Settings → PowerShell 7 → Prompt guidance 中可选两级,选项写入 config.json 的 dialect,下一步模型请求生效,无需重启 DSH:

  • Common guidance:说明 pwsh 为 PowerShell 7,列出易与 bash 混淆的写法及替换方式;约 1,337 字符。
  • Force PowerShell 7 mode:在 common 基础上,即使用户点名 POSIX 工具也替换为 PowerShell 等价写法;约再增加字符(README 合计约 1,442 字符量级)。

README 记载在 12 个易诱发 bash 的任务上(每任务 5 次采样),无引导时正确率约 38–42%,两级都开启时约 98%;普通表述下两组均为 100%。

Web 客户端在 conversation.input.right 注入 pwsh7 芯片,三级状态对应灰/蓝/绿边框;切换级别会提示可能清空 prompt cache,确认后 POST /pwsh7/dialect。芯片每 15 秒轮询 /pwsh7/state。

命令失败时,执行器会在 stderr 末尾追加一行可操作的 [pwsh7] 提示(解析错误或「命令无法识别」时映射常见 POSIX 名到 PowerShell 7 cmdlet),不改变退出码且每条 settled 结果只追加一次。

安装与启用

通过 DSH 插件管理器从 npm 安装 bundle(资料原文命令):

plugin_manager action=install_bundle target=dsh-plugin-pwsh7@0.3.3

本地开发目录安装(会链接到该目录):

plugin_manager action=install_bundle target=D:\path\to\dsh-plugin-pwsh7

安装后 bundle 经 HMR 立即生效;修改插件源码后需重启 DSH 以加载新的模块生成。运行仓库测试套件需要 Node.js >= 22(仅开发/测试用途)。

典型用法

  1. 安装 bundle 后,在 Windows 上让模型照常使用 pwsh 工具;若已解析到 PowerShell 7,命令在原有沙箱策略下由 7 执行。
  2. 排查路由或沙箱问题时,让模型调用 shell_router,例如默认 status,或 diagnose 查看在当前策略下的真实执行结果。
  3. 需要固定走系统安装或插件托管副本时,通过设置页或 shell_router 的 route 切换;卸载插件托管副本用 uninstall 或设置页对应操作。
  4. 若团队常遇到模型写 bash 语法,可在设置页或 Composer 芯片开启 Prompt guidance;注意 token 成本与缓存行为。

安装 PowerShell 7 本身始终在 GUI 中由用户确认,不要依赖 shell_router 的 install action(该 action 只返回指引)。

适用场景与注意

适合:在 Windows 上使用 DSH Web / desktop profile,希望 ctx.shell 稳定解析到 PowerShell 7,并需要在 GUI 中管理 per-user 便携安装、系统路由与自检的开发者。

注意:

  • 仅支持 Windows;非 Windows 环境无需此 bundle。
  • 插件与 DSH 以当前进程权限运行;从 npm 或目录安装前,应自行查看 仓库源码 与 MIT 许可证,确认符合你的安全与合规要求。
  • SkillHub 等社区目录为独立站点,与 DeepSeek / 幻方无官方从属关系;星标与分类以目录页展示为准(资料中 GitHub 3 stars,分类 客户端)。

结尾

dsh-plugin-pwsh7 在不大改 DSH 沙箱执行模型的前提下,把面向模型的 pwsh 工具锁定到 PowerShell 7,并把安装、路由与诊断放在用户可控的 Web 界面与 shell_router 之上。需要进一步了解参数与变更记录时,请阅读仓库 README 与 中文说明。

  • 目录页:https://www.skillhub.cn/plugins/drliuhuan/dsh-plugin-pwsh7
  • GitHub:https://github.com/drliuhuan/dsh-plugin-pwsh7
羽毛球分组比赛记分
小程序二维码

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

小夜