dsh-plugin-genshin-launch:零配置探测与自动启动原神

前言

DeepSeek Harness(DSH)是一个智能体开发平台,开发者常需要在 DSH 中通过游戏场景进行测试或演示。手动寻找游戏本体路径或启动器安装包会打断工作流。dsh-plugin-genshin-launch 插件通过零配置探测机制,解决“打开 DSH 时检测本地《原神》安装状态”的问题。

核心功能

插件主要提供两种自动化方案:

  1. 方案二:打开 DSH 就启动原神

    • 零配置探测:检测顺序为 config → registry → paths → scan。最快一档约 400ms,整条快档约 0.5 秒。
    • 触发时机:浏览器界面渲染出来时(基于 patchReload: live),而非宿主进程启动时。
    • 启动策略:探测结果分为 ready(有本体)、incomplete(正在装/更新)、没找到三种状态。ready 时直接启动本体;incomplete 时启动米哈游启动器;没找到时走方案一。
    • 进程控制:每个 DSH 进程只启动一次,刷新页面或热重载不会重复启动。
  2. 方案一:没装就把安装包下到桌面

    • 自动下载:没检测到游戏时,下载米哈游启动器安装包到桌面。
    • 体积安全闸:安装包约 224 MiB。下载时会校验体积,偏差超过 15 MiB(默认值)则拒绝下载,防止误下错误文件。
    • 断点续传:支持断点续传。

探测机制

探测过程全程本地只读,不联网。检测采用五档阶梯策略,命中即停:

  1. config:读取配置文件中的 gameExe 或 gamePath(最高优先级)。
  2. registry:读取 HoYoPlay 的 HYP 树(如 HYP\1_1\hk4e_cn),校准编码后查找路径。
  3. paths:遍历常用顶层目录(如盘符根目录)。
  4. scan:仅在前面全空时执行。全量扫描卸载记录(3 个根 × 4 个键名),并进行有界目录扫描(默认深度 ≤ 4)。

状态判定:
* ready:存在 YuanShen.exe 或 GenshinImpact.exe。
* incomplete:存在 YuanShen_Data、pkg_version、mhypbase.dll 等结构指纹。
* 没找到:上述均不满足。

安装与配置

安装插件需要 pnpm 环境,且网络需能访问 GitHub。

安装命令:

dsh plugin --profile web add github:Link258QAQ/dsh-plugin-genshin-launch

配置示例:
在 $DSH_HOME/profiles/web/cordis.patch.yml 中添加配置:

- id: genshin-launch
  name: dsh-plugin-genshin-launch
  config:
    launchGame: true
    launchTrigger: gui
    launchMethod: spawn
    retryShellOnElevation: true
    launchWatchMs: 3000
    fallbackToLauncher: true
    launchOncePerSession: true
    detectSources: ['config', 'registry', 'paths', 'scan']
    download: true
    downloadDir: 'C:\Users\你\Desktop'
    expectedInstallerBytes: 234881024
    sizeToleranceBytes: 52428800

注意事项:
* 仅限 Windows:探测依赖注册表、DPAPI 加密和 UAC 提权机制。
* 权限提示:插件不会静默提权。如果游戏或启动器清单要求管理员权限,spawn 模式会因 EACCES 失败,此时插件会自动回退到 shell 模式(双击语义),由系统弹出 UAC 请求。
* 隐私保护:游戏启动时会剔除包含 *KEY*、*PASSWORD* 等关键字的环境变量;路径在日志和配置中均经过掩码或 DPAPI 加密存储。

自检与调试

插件附带一个不依赖 DSH 的自检工具,用于验证探测和启动链路:

# 仅探测模式
node tools/selfcheck.mjs

# 验证启动链路(指定程序,自动清理)
node tools/selfcheck.mjs --exe "D:\path\to\YuanShen.exe" --launch --kill

生态链接

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

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

小夜