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,改档时走「存档修改」模式即可。进一步了解:

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

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

小夜