前言¶
在 DeepSeek Harness(DSH)裏改單機存檔或 .NET 程序集,常見問題是:格式不透明(gzip、AES、MessagePack、Unity LZ4 等疊在一起)、字段不好枚舉、IL 補丁又要自己算 RVA。若把一整套命令和依賴說明每次都塞進上下文,會話成本會很高。社區插件 dsh-gm-toolkit(維護者 kyoukas,分類:工作流)把「探測格式 → 讀寫存檔 → 反彙編定位 → 等長打補丁」拆成可調用的工具,並提供一個不依賴模型的圖形面板;默認會話不掛載工具,只在「存檔修改」模式按需加載約 9 個 gm_* 工具與 game-modding 技能,面向「常駐零 token、改檔時再進專用模式」的用法。
這是什麼¶
dsh-gm-toolkit 是給 DeepSeek Harness 用的單機遊戲修改工具箱插件。它解決兩類事:讀懂並修改本地存檔文件,以及對 Unity / .NET 程序集做 IL 級瀏覽與等長補丁(輸出副本,不原地改 DLL)。邏輯主要在 Python 側(gmtool.py),插件側儘量不用額外 JS 依賴。
- 目錄頁:https://www.skillhub.cn/plugins/kyoukas/dsh-gm-toolkit
- 源碼與說明:https://github.com/kyoukas/dsh-gm-toolkit
- 許可證:MIT(資料中明確)
- 當前資料中的包版本:0.5.4;要求 Node
>=20
常駐與「存檔修改」模式¶
插件分兩部分,目的是平時不佔模型上下文:
| 常駐(每個會話) | 按需(僅「存檔修改」模式會話) | |
|---|---|---|
| 內容 | 存檔修改面板、/api/gm/* 路由、preset 聲明 |
9 個 gm_* 工具(約 1.5K tokens)、game-modding 技能(約 110 tokens) |
| 進入方式 | 客戶端 UI 自動掛載(不佔模型上下文) | 新建會話時選「存檔修改」,或從面板點「用「存檔修改」模式新建會話」 |
模式在會話創建時確定,之後不能切換;要改存檔應從上述入口進入,而不是在普通會話裏臨時期望工具出現。
核心功能¶
模型可調用的 9 個工具¶
| 工具 | 用途 |
|---|---|
gm_doctor |
自檢 Python、gmtool.py、依賴庫 |
gm_probe |
探測遊戲文件:gzip/zlib/lz4/zstd、AES 頭佈局、Unity LZ4BlockArray、MessagePack、明文 JSON 等 |
gm_save_list |
列出存檔字段(編號 / 名字 / 類型 / 當前值) |
gm_save_get |
讀單字段,並說明穿透了哪些封裝層 |
gm_save_apply |
改存檔(set / add / remove),自動備份且寫後回讀校驗 |
gm_dll_types |
列出 .NET 程序集類型(可正則過濾) |
gm_dll_dis |
反彙編類型或方法的 IL,token 解析爲可讀名 |
gm_dll_xref |
查找讀寫某字段、調用某方法的位置 |
gm_dll_patch |
等長 IL 補丁,RVA→文件偏移換算,回讀驗證;須指定 out 寫副本 |
圖形面板「存檔修改」¶
安裝後,左側「全局面板」會出現 存檔修改 入口,可視化編輯存檔,不依賴模型:
- 進頁自動體檢 Python 與
dnfile/dncil/msgpack/lz4/pycryptodome,缺失可點「一鍵安裝缺失」(走清華鏡像,會聯網)。 - 「掃描我的存檔」會遍歷常見用戶目錄與 Steam 雲存檔路徑,按可信度排序並標註格式;也可直接在輸入框粘貼完整路徑。
- 「探測格式」→ 麪包屑下鑽瀏覽字段 → 待應用列表攢改動 → 「應用到存檔」寫盤(寫前自動備份)。
面板與 gm_* 工具共用同一份 gmtool.py,格式支持一致;面板不猜測字段語義,也不支持未識別的自定義格式。
安裝與啓用¶
下面命令來自插件 README,不要用名稱自行拼接 github:owner/repo 形式。
# 1. 裝本插件
dsh plugin --profile desktop add dsh-gm-toolkit
# 本地開發時用 link:
dsh plugin --profile desktop add "link:D:/path/to/dsh-gm-toolkit"
# 2. 準備 Python 側依賴(缺哪個對應功能就不能用)
python -m pip install dnfile dncil msgpack lz4 pycryptodome
裝完後重啓 DSH(部分環境下配置熱重載不穩定),在插件列表中應能看到 dsh-gm-toolkit。
可選配置(cordis.patch.yml 中的 config 段):
- insert:
- id: dsh-gm-toolkit
name: dsh-gm-toolkit
config:
python: 'C:\Python312\python.exe' # 可選,留空則自動探測
gmtool: '' # 可選,換成你自己的腳本
解釋器探測順序:config.python → 環境變量 DSH_GM_PYTHON → PATH 上的 python3/python → 常見安裝路徑。
若你同時使用 dsh-ops,「存檔修改」模式可能缺少部分 ops_* 工具;README 提供 node scripts/patch-dsh-ops.mjs 冪等補丁,升級 dsh-ops 後需重跑。細節見倉庫內 patches/README.md。
典型用法¶
README 中的四步工作流可直接復現:
# 1. 這個文件是什麼?
gm_probe path=D:\game\save.dat
# 2. 裏面有什麼字段?
gm_save_list path=D:\game\save.dat target=Unlock
# 3. 改它
gm_save_apply path=D:\game\save.dat changes=["add 394=411", "set 635=True"]
# 4. 改不動?去代碼裏找開關
gm_dll_types dll=D:\game\Managed\Assembly-CSharp.dll pattern=demo|trial
gm_dll_xref dll=...\Assembly-CSharp.dll target=IsDemo
gm_dll_patch dll=... type=GameManager method=get_IsDemo mode=ret-false out=patched.dll
寫存檔前請先退出遊戲,否則退出時內存中的舊數據可能覆蓋你的修改。
適用場景與注意¶
適合誰: 需要在 DSH 會話裏系統化地探檔、改檔,或查 Unity / .NET 程序集 IL 並做等長補丁的開發者;也希望用本地面板批量瀏覽字段、少佔模型 token 的用戶。
權限與安全(以 README 爲準):
gm_probe、gm_save_*、gm_dll_*僅讀寫你顯式傳入的路徑。- 「掃描我的存檔」會遍歷本機若干用戶目錄,只讀文件名、大小與文件頭做格式判定,不寫這些目錄;不想掃盤就不要點該按鈕。
- HTTP 路由僅監聽本機迴環地址,且只接受 POST + JSON。
- 程序集補丁一律寫到
out指定副本。
安裝前建議: 插件以當前 DSH 進程權限運行;社區目錄 SkillHub 與 DeepSeek / 幻方無官方從屬關係,安裝前應自行查看源碼與 MIT 許可證,確認路徑與聯網行爲(如面板的一鍵 pip install)符合你的環境策略。
結尾¶
dsh-gm-toolkit 把單機改檔與 IL 補丁收成一套按需加載的工具和同一套 Python 後端,默認會話幾乎不增加 token,改檔時走「存檔修改」模式即可。進一步瞭解: