dsh-win-pwsh7:让 Windows 上的 DSH `pwsh` 工具跑真正的 PowerShell 7

前言

在 Windows 上用 DeepSeek Harness(DSH)时,Desktop 适配器会按固定顺序解析 PowerShell 可执行文件:先查 C:\Program Files\PowerShell\7\pwsh.exe,再扫 PATH(Microsoft Store 版常通过执行别名出现在这里),最后落到 C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe(Windows PowerShell 5.1)。若机器上没有装好 PowerShell 7,Harness 会悄悄退回 5.1;而 5.1 里 && 和 || 是解析错误,模型写下的链式命令往往在运行前就失败。手动装 MSI、WinGet 非商店源又容易和「自更新」、计量网络、执行器路径解析纠缠在一起。

下面介绍社区插件 dsh-win-pwsh7(维护者 xinspark):在 Windows 上为 Harness 的 pwsh 工具做检测、路径校验,并在你明确要求时通过 Microsoft Store 安装自更新的 PowerShell 7,安装前会读连接是否按流量计费。它不自带 PowerShell,也不自动改你的执行器配置;安装永远是显式动作。

这是什么

dsh-win-pwsh7 是 DSH 生态里的客户端类插件(纯 JavaScript、零运行时依赖、仅 Windows 有意义)。一句话定位:把真正的 PowerShell 7 交给 Windows 上的 Harness pwsh 工具,而不是默认回落到 5.1。

插件做三件事:

  1. 检测本机 PowerShell 7(含配置里的 overridePath);
  2. 校验你传入的路径(pwsh7_status 的 path 参数);
  3. 安装:仅从 Microsoft Store 装(pwsh7_install,或配置 installIfMissing)——只有这一条安装路径,且动手前会检查连接成本。

它不卸载任何东西;卸载插件不会动你已装的 PowerShell。

为什么需要单独插件

Harness Desktop 适配器的解析顺序决定了:没有可用的 PowerShell 7 时,最后一步一定是 5.1。对智能体来说,当前到底是 7 还是 5.1 会直接决定 && / || 能否写进一条命令。商店 MSIX 运行时通常不会出现在 C:\Program Files\PowerShell\7\,执行器也不会「自己找到」别名——往往需要把报告里给出的 profile 补丁整段写入 ~\.dsh\profiles\<profile>\cordis.patch.yml 再重启。本插件负责读运行时、给出可粘贴的 pin 补丁,并通过提示段告诉模型当前运算符是否可用(提示段走 DSH 现有机制,而不是重复注册一个 pwsh 工具 schema)。

核心功能

两个工具

pwsh7_status [path]   报告当前跑的是什么;校验路径;给出可粘贴的 pin 补丁
pwsh7_install         从 Microsoft Store 安装,以后台作业运行并立刻返回作业号
  • pwsh7_status:无副作用,适合装完插件后或在插件页查看运行时。
  • pwsh7_install:有副作用;已有普通 PowerShell 7 或可用商店别名时会报「already in place」。用平台自带的 job_output 看进度、job_kill 停止。安装登记在 ctx.jobs(kind pwsh7),避免阻塞式等待 winget/商店队列。

安装实现上,插件后台执行:

winget install --id 9MZ1SNWT0N5D --source msstore

(对应 Microsoft Store 条目。)README 明确没有第二个安装器路由;WinGet 非商店 MSI/MSIX 等方案在开发期被否掉,不作为选项。

计量连接与安装前检查

Windows 在「按流量计费的连接」上会推迟商店下载。插件在安装前用 Windows PowerShell 5.1 走 WinRT 读连接成本;若命中计量,会点名网络,补救是关闭该 WLAN 的「按流量计费的连接」后重试,而不是换安装器。读不到成本则完全不出声、不猜测。

winget 退出码不一定代表成败:插件在 winget 退出后会做有界重探(8 次 × 15 秒),判决以运行时是否在位为准。

可 pin 的路径形态

报告会区分「家族别名」「根别名」与带版本号的 WindowsApps 目录。前两种适合跨商店更新 pin;版本号目录每次更新会移动,pin 会静默失效。残余风险:包激活机制未完全文档化,别名是「今天能用」的 pin,不是契约——报告里会写明,pwsh7_install 是失效时的出路。

可选配置

键 默认 说明
overridePath 未设 优先级最高的显式 pwsh.exe,须能启动并报告 PowerShell 7+;校验失败则回落自动探测
installIfMissing false 启动时若无可用 PowerShell 7,后台安装(等价 pwsh7_install),结果写入状态报告

两项为 volatile():插件页改完保存即生效,无需重启。也可写入 profile 补丁:

- id: win-pwsh7
  config:
    overridePath: 'D:\tools\pwsh\pwsh.exe'
    installIfMissing: true

安装与启用

从 GitHub 安装(README 推荐锁定 tag):

dsh plugin --profile desktop add github:XinSpark/dsh-win-pwsh7#v0.12.1

将 desktop 换成你实际使用的 profile(dsh plugin list 可查看)。

其他方式:

  • npm:dsh plugin --profile desktop add dsh-win-pwsh7(亦可 npm i dsh-win-pwsh7)
  • 本地开发:npm pack,再 dsh plugin --profile desktop add file:<生成的 .tgz 绝对路径>

装完重启 DSH。需要接线时,把 pwsh7_status 或插件页报告中的 profile 补丁整段粘进 ~\.dsh\profiles\<profile>\cordis.patch.yml 再重启。插件不会替你改执行器的 pwshPath,这是刻意设计。

若本机不需要 PowerShell 7,可在插件页关闭本插件(建议与两个工具都停止);注意关闭后 pwsh 工具仍可能因执行器固定路径而失败,这是对 pwsh 本身的取舍。

典型用法

  1. 安装插件并重启 DSH。
  2. 在插件页或让模型调用 pwsh7_status,确认当前是 PowerShell 7 还是回落到 5.1,以及是否需要补丁。
  3. 若无 PowerShell 7 且你确认要装:调用 pwsh7_install(或开启 installIfMissing),用 job_output 跟踪作业;若提示计量连接,先改网络设置再重试。
  4. 将报告中的 cordis 补丁写入对应 profile 的 cordis.patch.yml,重启后再用 pwsh 验证 && / || 行为是否符合预期。

提示段示例(机器已 pin PowerShell 7 时,大意如下):

The `pwsh` tool on this machine runs PowerShell 7.6.6, so `&&` and `||` work in one command.

pin 为 5.1 或不存在 7 时,同一机制会说明应使用 ; 串联,或 pin 路径不存在时的两条路(商店安装 / 禁用插件)。

适用场景与注意

适合谁:在 Windows 上用 DSH Desktop、依赖 pwsh 跑脚本,且希望 PowerShell 7 来自商店自更新包、路径可被检测与 pin 的开发者。

权限与安全:插件以当前 DSH 进程权限运行;pwsh7_install 会触发 winget/商店安装行为。安装前应阅读 GitHub 仓库 源码与 MIT 许可证,自行判断是否信任维护者 xinspark。

生态说明:DSH 主张「一切皆插件」;SkillHub 目录页 是社区收录站点,与 DeepSeek / 幻方无官方从属关系。

版本:仓库 package.json 当前版本为 0.12.3;安装示例中的 tag v0.12.1 以 README 安装段为准,可按需锁定其他 tag。GitHub 星标数以目录页为准(资料记载为 1)。

结尾

dsh-win-pwsh7 把 Windows 上 Harness pwsh 与 PowerShell 7 之间的缝隙收成可观测、可校验、可显式安装的一条商店路线,并把计量网络、winget 退出码、别名 pin 等实测坑写进行为里。不需要 PowerShell 7 时关掉插件即可;需要时先 pwsh7_status,再决定是否 pwsh7_install 与贴补丁。

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

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

小夜