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