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 目錄頁。

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

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

小夜