前言¶
在 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。
插件做三件事:
- 检测本机 PowerShell 7(含配置里的
overridePath); - 校验你传入的路径(
pwsh7_status的path参数); - 安装:仅从 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(kindpwsh7),避免阻塞式等待 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 本身的取舍。
典型用法¶
- 安装插件并重启 DSH。
- 在插件页或让模型调用
pwsh7_status,确认当前是 PowerShell 7 还是回落到 5.1,以及是否需要补丁。 - 若无 PowerShell 7 且你确认要装:调用
pwsh7_install(或开启installIfMissing),用job_output跟踪作业;若提示计量连接,先改网络设置再重试。 - 将报告中的 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