dsh-gm-toolkit:DSH 單機遊戲存檔與程序集修改工具箱

前言

在 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 依賴。

常駐與「存檔修改」模式

插件分兩部分,目的是平時不佔模型上下文:

常駐(每個會話) 按需(僅「存檔修改」模式會話)
內容 存檔修改面板、/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 寫副本

圖形面板「存檔修改」

安裝後,左側「全局面板」會出現 存檔修改 入口,可視化編輯存檔,不依賴模型:

  1. 進頁自動體檢 Python 與 dnfile / dncil / msgpack / lz4 / pycryptodome,缺失可點「一鍵安裝缺失」(走清華鏡像,會聯網)。
  2. 「掃描我的存檔」會遍歷常見用戶目錄與 Steam 雲存檔路徑,按可信度排序並標註格式;也可直接在輸入框粘貼完整路徑。
  3. 「探測格式」→ 麪包屑下鑽瀏覽字段 → 待應用列表攢改動 → 「應用到存檔」寫盤(寫前自動備份)。

面板與 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,改檔時走「存檔修改」模式即可。進一步瞭解:

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

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

小夜