前言¶
在 Windows 上跑 DeepSeek Harness(DSH)時,模型和 agent 經常要靠臨時 PowerShell 或正則處理本地問題:猜一段字節是什麼編碼、判斷路徑爲什麼創建失敗、從 netstat 輸出裏摳端口、統計目錄佔用、找重複文件。這類腳本往往猜錯也不說明不確定、輸出被截斷卻像完整結果、編碼轉換靜默丟字。DSH 社區把能力做成可安裝的插件;dsh-win-native 由維護者 ax2 發佈,在 SkillHub 上歸類爲「模型推理」,實質是把上述判斷做成六個有回執、有邊界、只讀優先的工具,供 harness 裏的 agent 調用。
這是什麼¶
dsh-win-native 是面向 Windows 的 DSH 插件(npm 包名 dsh-win-native,當前版本 0.1.5,MIT 許可證)。README 的定位是:Windows 正確性層——把 agent 平時用 PowerShell 文本解析湊合的那些判斷,做成有回執、有邊界、說實話的工具。插件包含 6 個工具,無安裝期腳本,運行時無網絡依賴(README 標註 network: none)。每個工具遵守 DSH 插件契約:返回 { result, meta };結構化輸入超預算時拒絕而非截斷;領域失敗作爲成功結果返回(例如路徑不存在是數據,不是崩潰)。
與「讓模型自己寫 pwsh」相比,README 強調這些邏輯由 57 個測試覆蓋的固定實現承擔,避免一行腳本漏掉保留設備名、編碼歧義、junction 跟隨等問題。
核心功能:六個工具¶
編碼:encoding_detect 與 encoding_convert¶
encoding_detect 只分析調用方提供的 base64 字節,不讀磁盤。流程爲 BOM → 嚴格 UTF-8 → 打分候選;支持 GBK、GB18030、Big5、Shift_JIS 等場景的評分,並給出 high / medium / low 置信度及得分接近的備選列表。短樣本在信息論上可能無法區分(例如 GB18030 與 Big5 在合法雙字節對上存在交集),工具會報 low 並在 meta.notes 中說明,而不是假裝確定。
encoding_convert 同樣只處理 base64 字節。目標編碼包括 utf-8、utf-16le、utf-16be、gbk、gb18030、big5、shift_jis、latin1、ascii;from: "auto" 時先檢測。有損轉換會列出 lossy_characters、lossy_list,並在 meta.notes 中明確標註,不會靜默把字符變成 ?。
路徑:path_inspect¶
純字符串分析,不訪問文件系統,因此路徑不存在也能檢查。覆蓋絕對/相對、\\?\ 擴展前綴、UNC 與盤符形態、保留 DOS 設備名(含帶擴展名的 CON.txt)、非法與控制字符、尾空格或點、8.3 安全、分段長度與 MAX_PATH(260)等;每條問題帶 code、severity、位置。README 示例:路徑 C:\temp\CON.txt 會返回 reserved_name 且 safe_for_max_path: false。
網絡:netstat_parse¶
只解析調用方粘貼的 netstat 文本,不碰文件系統、不寫磁盤。用於把端口占用類輸出從「正則湊合」改爲結構化解析(具體字段以插件實現與測試爲準)。
只讀磁盤:dir_usage 與 file_duplicates¶
這兩個工具會讀文件系統,但插件承諾永不刪除、移動、重命名或寫入任何文件。
| 工具 | 讀盤 | 寫盤 |
|---|---|---|
dir_usage |
lstat + opendir 遍歷指定絕對路徑 |
否 |
file_duplicates |
流式 SHA-256 讀內容 | 否 |
二者均拒絕相對路徑(含義依賴宿主進程工作目錄,插件選擇拒絕而非猜測)。遍歷使用 lstat,符號鏈接、junction 等 reparse point 跳過並上報(skipped_links),不跟隨。輸入有預算,超預算拒絕。file_duplicates 只報告重複組與可回收字節,回收由人或上層策略執行。
其餘四個工具(兩個編碼、路徑、netstat)不碰文件系統。
安裝與啓用¶
在 DSH 環境中,README 給出的安裝方式爲:
dsh plugin --profile web add dsh-win-native
裝完後需要重啓應用(bundle 列表在啓動時讀取)。若希望一次安裝 ax2 的四個相關插件(含 dsh-deterministic-tools、dsh-jvm-doctor、dsh-py-doctor),可使用合裝包 dsh-toolbox-bundle;README 明確:不要與單獨安裝混用。家族總覽入口見 zicode.com/software。
運行要求(來自 package.json):Node.js >=20.10;peer 依賴 @deepseek-ai/cordis >=4.0.0、@deepseek-ai/dsh-tools >=0.2.0-rc.1。
典型用法¶
1. 檢查路徑是否合法¶
向 agent 提問類似「C:\temp\CON.txt 這個路徑能用嗎」,模型可調用 path_inspect。README 實測輸出片段如下:
{
"issues": [
{
"code": "reserved_name",
"severity": "error",
"position": 8,
"detail": "segment \"CON.txt\" is a reserved DOS device name, even with an extension or a path prefix"
}
],
"safe_for_max_path": false,
"canonical_length": 15
}
2. 檢測 GBK 類字節流編碼¶
輸入爲 base64 編碼的字節(例如含「配置文件路徑:C:\Users\ax2,服務未啓動。」的 GBK 文本),調用 encoding_detect:
{ "base64": "..." }
返回最佳候選(如 gb18030)、置信度、BOM 信息,以及 alternatives 中各編碼的 score、sample、round_trip 等,便於在歧義時人工或上層策略抉擇。
3. 有損轉換必須可見¶
將 UTF-8 的「中文測試」轉到 latin1 時,調用 encoding_convert:
{
"base64": "5Lit5paH5rWL6K+V",
"from": "utf-8",
"to": "latin1",
"bom": "strip"
}
結果中會包含 lossy_characters: 4、lossy_list 逐字列出無法表示的碼點,以及 meta.notes 中的 LOSSY 說明。
適用場景與注意¶
適合誰: 在 Windows 上通過 DSH 做運維、排障、代碼倉庫分析的開發者;需要穩定處理中文/日文繁體等多字節編碼、Windows 路徑規則、netstat 輸出,或在有邊界的前提下做目錄用量與重複文件分析的場景。
生態說明: DSH 採用「一切皆插件」的擴展方式;SkillHub(插件目錄頁)是社區目錄站點,與 DeepSeek / 幻方無官方從屬關係,不宜當作官方應用商店理解。
安全與權限: 插件以當前 DSH 進程的用戶權限運行;dir_usage 與 file_duplicates 會讀取你指定的絕對路徑下的內容。安裝前應查看 GitHub 倉庫 源碼與 MIT 許可證,確認符合你的環境策略。插件設計爲 offline、local-first、無網絡,但讀盤範圍仍取決於 agent 傳入的路徑參數。
與相鄰插件: 同一維護者還提供 dsh-deterministic-tools、dsh-jvm-doctor、dsh-py-doctor 及合裝 dsh-toolbox-bundle,可按需組合,但勿與 bundle 重複混裝。
結尾¶
dsh-win-native 把 Windows 上高頻、易錯的本地判斷收成六個結構化工具:編碼檢測與可審計的轉換、路徑合法性、netstat 解析,以及有預算的只讀磁盤統計與重複文件報告。若你在 harness 裏受夠了「看起來像 GBK」和「路徑報錯再改斜槓」,可以從目錄頁瞭解簡介與分類,並按 README 安裝後在重啓 DSH 後讓 agent 調用上述工具。
- 目錄頁:https://www.skillhub.cn/plugins/ax2/dsh-win-native
- GitHub:https://github.com/ax2/dsh-win-native