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

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

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

小夜