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

生態鏈接

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

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

小夜