dsh-pwsh-cp:在 Windows 上把 DSH 的 pwsh 工具调用钉在 UTF-8 控制台与 Python UTF-8 模式

前言

DeepSeek Harness(DSH)执行 shell 工具时,会把子进程输出按 UTF-8 解码。在 Windows 上,新建的 PowerShell 7(pwsh)控制台往往仍停留在系统遗留 OEM 代码页——简体中文环境常见为 936。即便 DSH 侧已设置 [Console]::OutputEncoding = UTF8,控制台代码页未变时,原生工具仍可能按 GBK 写字节,解码后非 ASCII 文本会乱码或丢失。管道里的 Python 也可能仍按区域代码页输出。下面介绍社区插件 dsh-pwsh-cp,它在每次 pwsh 工具调用前注入固定前导命令,把控制台页设为 65001,并打开 Python 的 UTF-8 相关环境变量,属于 DSH 生态里「工作流」类的小而专的补丁型插件。

这是什么

dsh-pwsh-cp 由维护者 wannaknowhys 发布,当前 npm 包版本 0.1.1,许可证 MIT。插件通过 Cordis patch 装饰 DSH 的 shell 执行器,使每一次 pwsh 工具调用在业务命令之前先执行:

chcp 65001 *> $null; $env:PYTHONUTF8='1'; $env:PYTHONIOENCODING='utf-8';

一句话定位:在带 shell 服务与 pwsh 工具的 DSH 构建上,为 Windows 主机统一 UTF-8 控制台代码页与 Python UTF-8 写入行为,减少与 Harness UTF-8 解码策略不一致导致的乱码。

为什么会出现这个问题

README 里归纳了三点事实,写作时可直接对照:

  1. Harness 按 UTF-8 解码命令输出。
  2. 新建 pwsh 进程仍可能从代码页 936 启动;仅设 OutputEncoding 不能移动控制台代码页,原生工具继续写 GBK 字节时,UTF-8 解码会丢字。
  3. 将控制台钉在 65001 后,dir、CMD 内建命令以及感知代码页的 CLI 会发 UTF-8;副作用是 CMD 内建往往改为英文输出,而非系统本地化语言。管道中的 Python 原先仍可能按区域代码页(如 GBK)写;设置 PYTHONUTF8=1 与 PYTHONIOENCODING=utf-8 促使按 UTF-8 写。

核心功能

经资料核实,插件只做「执行前注入」这一件事,不改动沙箱策略:

  • 装饰 shell 执行器,每一条经 DSH 发起的 pwsh 工具调用都带上上述前导。
  • 不替换或关闭 pwsh-sandbox,隔离边界与未装插件时一致。
  • 不影响嵌入式终端或其它 profile。
  • 不保证仍忽略控制台代码页的遗留工具保留本地化措辞;若必须保留特定语言的原始输出,需另做能强制源代码页的包装。

环境与依赖

  • 操作系统:Windows。
  • Shell:PowerShell 7(pwsh)。
  • DSH:提供 shell 服务与 pwsh 工具的构建。
  • 包元数据要求 Node.js >= 20(插件本身为 npm 模块,由 DSH 插件管理器加载)。

安装与移除

安装、移除命令以 GitHub README 原文为准。下面先装插件,需要时再按同一条 profile 移除。

# from npm
dsh plugin --profile desktop add dsh-pwsh-cp

# from a checkout
dsh plugin --profile desktop add github:wannaknowhys/dsh-pwsh-cp

# remove
dsh plugin --profile desktop remove dsh-pwsh-cp

插件管理器也接受等价规格,例如 install_bundle target = dsh-pwsh-cp,或指向本地 checkout 目录。

DSH 插件以当前 dsh 进程权限运行;安装前应自行查看仓库源码与 MIT 许可证。社区目录 SkillHub 上的 dsh-pwsh-cp 页 与 GitHub 仓库相互独立,并非 DeepSeek / 幻方官方应用商店,仅作发现与引用入口。

典型用法

本插件没有额外 CLI 或配置字段:安装并启用后,智能体或工作流里照常调用 DSH 的 pwsh 工具即可,每次调用会自动带上 UTF-8 前导。

可复现的验证思路(在已安装插件的 desktop profile 下):

  1. 让智能体执行一条会输出中文路径或文件名的 pwsh 命令(例如 Get-ChildItem 某含非 ASCII 的目录)。
  2. 对比未装插件时 Harness 侧是否出现乱码;装好插件后,原生输出更应经 65001 与 Python UTF-8 环境与 UTF-8 解码对齐。

无需改 agent 提示词或手写 chcp,装饰逻辑在插件 bundle 的 cordis.patch.yml 中完成。

适用场景与注意

适合:

  • 主要在 Windows + pwsh 上跑 DSH,且控制台默认代码页为 936 或其它非 UTF-8 OEM 页。
  • 工作流里频繁调用 dir、CMD 内建、或代码页感知的 CLI,以及管道中的 Python,需要和 Harness UTF-8 解码一致。

注意:

  • 仅作用于经 DSH 装饰的 pwsh 工具调用,不包其它终端入口。
  • CMD 内建等在 65001 下可能变成英文提示,这是 README 明确写明的 trade-off。
  • 星标与用户量等目录统计会变,本文不写未在已抓取资料中出现的运营数据。

结尾

dsh-pwsh-cp 用最小补丁把 Windows 上 DSH 的 pwsh 调用钉在 UTF-8 控制台与 Python UTF-8 模式,解决「Harness 按 UTF-8 读、子进程却按 GBK 写」这一类工作流断层。进一步了解可阅 GitHub 仓库(含 README.zh-CN.md)与 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye