DeepSeek Harness 插件:修复 pwsh 中文乱码

前言

DeepSeek Harness(DSH)通过插件扩展能力。在 Windows 环境下,DSH 自带的 pwsh 工具在执行命令时,中文及其他非 ASCII 字符容易出现乱码。这是因为原生程序的输出编码不统一:有的按系统 ANSI(如 GBK)输出,有的按 UTF-8 输出,而 DSH 内部统一按 UTF-8 解码,导致单一解码方式无法覆盖所有场景。

插件简介

本插件是 hongweifei/dsh-pwsh-encoding-fix,用于修复上述乱码问题。它是一个 Cordis 插件(bundle 型),通过在 PowerShell 进程内进行编码转换,确保 GBK 和 UTF-8 混排的输出都能正确显示。

核心功能

该插件具备以下能力:
* 自动识别编码:同一命令中混合了 GBK 与 UTF-8 输出也能逐段正确处理。
* 无损捕获:使用 Latin-1(代码页 28591)逐字节接收原生输出,不会把非法字节序列替换成占位符。
* 不改变命令语义:$? 与 $LASTEXITCODE 照常捕获,命令失败时退出码不变。
* 前台与后台命令都生效:包装发生在 shell.resolve 入口,覆盖前台 run 与后台 start。
* 只作用于 PowerShell:bash 执行器不受影响。

安装与启用

使用官方命令安装该插件:

dsh plugin --profile web add "github:hongweifei/dsh-pwsh-encoding-fix"

安装完成后,需重启 DSH Web 并进行硬刷新(Ctrl+F5)。

配置

默认情况下,插件会按系统 ANSI 代码页(Default)尝试解码非 UTF-8 字节。若需显式指定代码页(例如强制使用 GBK),可在 profile 的 cordis.patch.yml 中追加配置:

- insert:
    - id: pwsh-encoding-fix
      name: '@dsh-external/dsh-pwsh-encoding-fix'
      config:
        codePage: '936'

典型用法

在 pwsh 工具中执行以下命令进行验证:

# 测试 UTF-8 输出的程序
node -e "process.stdout.write('错误: 找不到符号\n')"

# 测试 GBK 输出的程序
ipconfig

注意事项

使用时需注意以下边界情况:
* Write-Host 输出:由于捕获期间编码被临时切换,Write-Host 的中文会被编码成 ?。建议改用 Write-Output。
* exit 命令:命令以 exit N 结尾时,该次输出会丢失(退出码仍正确)。
* PowerShell 5.1 参数:向原生程序传参含 . 时有拆参数问题,可改用环境变量(如 $env:JAVA_TOOL_OPTIONS)。
* 超大输出:超大输出会在 pwsh 内存中先聚合,管道的字节截断机制不受影响。

总结

该插件解决了 DSH 在 Windows 环境下处理 pwsh 命令编码不统一的问题,让中文输出和混合编码场景下的调试更加直观。

目录页:hongweifei/dsh-pwsh-encoding-fix
GitHub 仓库:hongweifei/dsh-pwsh-encoding-fix

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

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

小夜