前言¶
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 里归纳了三点事实,写作时可直接对照:
- Harness 按 UTF-8 解码命令输出。
- 新建
pwsh进程仍可能从代码页 936 启动;仅设OutputEncoding不能移动控制台代码页,原生工具继续写 GBK 字节时,UTF-8 解码会丢字。 - 将控制台钉在 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 下):
- 让智能体执行一条会输出中文路径或文件名的
pwsh命令(例如Get-ChildItem某含非 ASCII 的目录)。 - 对比未装插件时 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 目录页。