前言¶
DeepSeek Harness (DSH) 的原生文件工具(read / write / edit)只認 UTF-8。在處理中文 GBK、日文 Shift-JIS、韓文 EUC-KR,或帶 BOM 的文件時,AI 往往直接報錯無法讀取,或者在修改後導致文件編碼損壞、BOM 被丟失。本插件接管這些工具,在保留原有沙箱圍欄、讀後寫保護等機制的前提下,按原編碼讀寫文件,解決 AI 讀寫多字節編碼文件時的靜默損壞問題。
這是什麼¶
這是 mrweicodes/dsh-fs-encoding,由 MrWeiCodes 維護的 DSH 插件,屬於模型推理工具類。
它的核心價值是:讓 AI 讀寫 GBK 等非 UTF-8 文件和帶 BOM 的文件時不會弄壞編碼。插件通過字節級保真、BOM 保真和換行符保真,確保文件在讀寫過程中保持原有的編碼特徵。
核心功能¶
- 字節級保真:按原編碼讀寫文件,不轉 UTF-8。
- BOM 保真:精確還原或絕不添加 BOM。
- 換行符保真:CRLF / LF / CR 識別與還原。
- 絕不靜默損壞:無法表示的字符拒絕寫入。
- 智能識別:讀不了時會列出候選編碼供選擇,而不是直接報錯。
- 廣泛支持:支持 GBK、Big5、Shift-JIS、EUC-KR、Windows-125x 等 19 種編碼。
- 零學習成本:直接替換原生
read/write/edit工具,參數和返回格式與原版一致。 - 指定編碼新建:
write支持encoding參數,用於新建指定編碼的文件。 - 額外工具:提供
insert、undo_last_edit和str_replace_editor三個工具。
安裝與啓用¶
使用官方提供的安裝命令即可完成啓用:
dsh plugin --profile web add dsh-fs-encoding
安裝完成後,插件會自動覆蓋原生工具,無需額外配置。
典型用法¶
插件接管了原生工具,調用方式與原版基本一致,主要區別在於顯式指定編碼。
讀取非 UTF-8 文件¶
對於 GBK 等非 UTF-8 文件,需要顯式傳入 encoding 參數:
read({ file_path: "legacy.txt", encoding: "gbk" })
寫入指定編碼的文件¶
新建文件時,使用 encoding 參數指定編碼(如 GBK):
write({ file_path: "run.bat", content: "echo 中文\r\n", encoding: "gbk" })
新增工具¶
插件額外提供了三個工具:
insert:按行號插入字符串(原生不支持)。
insert({ file_path: "config.ini", insert_line: 0, new_string: "[core]" })
undo_last_edit:撤銷上一次編輯,內容與編碼一併還原。
undo_last_edit({ file_path: "config.ini" })
str_replace_editor:兼容層工具,支持view、create、str_replace、insert、undo_edit等子命令。
注意事項¶
- 工具衝突:與在同一層註冊同名工具的插件互斥(如
read/write/edit/insert/str_replace_editor/undo_last_edit)。 - encoding 參數限制:
encoding只對新建文件有效。文件已存在時,直接傳入encoding會報錯,插件不會轉換已有文件的編碼。 - Windows 跨盤符問題:在 Windows 上,若插件目錄與 profile 不在同一盤符,安裝會失敗。
- 撤銷限制:
undo_last_edit只保留最近一次編輯,不寫磁盤,DSH 重啓後無法撤銷。 - 許可證:MIT License。
總結¶
dsh-fs-encoding 通過精確控制文件讀寫過程,解決了 DSH 在處理多字節編碼文件時的痛點。它適合需要維護遺留系統、處理國際化文件或保證代碼庫編碼一致性的場景。