中文EN

dsh-game-daily

toolsnpmMIT

Windows 上的原神 / 崩坏3 / 崩坏:星穹铁道 / 绝区零日常自动化:每个游戏一个计划任务,分别驱动 BetterGI、game-daily 技能族、三月七助手或绝区零「一条龙」;带逐游戏开关、前台守护、只在出问题时介入的运行期值守,以及每游戏固定一个汇报会话、后续结果追加进去。需要 DSH 桌面端,并预先安装对应外部引擎。

下载量 / Downloads
353

安装

dsh plugin --profile web add dsh-game-daily

沙箱测试

这个插件还没测过。提交测试 →

README

dsh-game-daily · 游戏日常

简体中文 | [English](README.en.md)

DSH 桌面端插件:把「原神 / 崩坏3 / 崩坏:星穹铁道」的每日自动化收进设置页一个面板里 —— 顶部切游戏、每游戏一个默认关闭的代理开关、按游戏配排班,保存后自动建立 Windows 计划任务,到点无人值守地跑一轮日常,跑完弹通知并(可选)开一个会话向你汇报。

安装

从源码安装(推荐):先把仓库 clone 到本地任意目录,再让 Harness 的 plugin_manager 指向该目录(它自己完成 package 安装与 bundle 选择;不要手写 profile 的 package.json / cordis.patch.yml):

git clone https://github.com/gychen-NJU/dsh-game-daily.git
plugin_manager  action: install_bundle  target: <clone 下来的 dsh-game-daily 目录>

开发期(link 到某个 profile,改代码即时生效;改完仍需重启桌面端才会重新加载代码):

dsh plugin --profile web add link:<本仓库目录>

装好后:设置 → 游戏日常。插件包声明了 dsh.bundle.patch 与 dsh.client,profile 的 dsh.profile.bundles 会列出 dsh-game-daily。

交给 Agent 安装(一句话)

把下面这句直接发给你的 DSH Agent:

帮我把 https://github.com/gychen-NJU/dsh-game-daily 装进当前 DSH 桌面端:clone 到本地目录后用 plugin_manager install_bundle 指向该目录,装完确认「设置 → 游戏日常」出现并跑一次依赖体检,缺什么按提示修好。

Agent 会自己完成 clone、install_bundle、确认插件已激活,并按依赖体检结果补齐 BetterGI / computer-use / 技能等外部条件。

面板里能做什么

  • 顶部游戏页签:原神 / 崩坏3 / 崩坏:星穹铁道 / 绝区零(走 ZenlessZoneZero-OneDragon「一条龙」)。
  • 代理日常开关(默认关):打开后才出现排班与执行设置;改动先落在本地草稿,点「保存并应用」才写盘并重建计划任务。
  • 排班:每天时间、执行日(每天 / 指定星期)、超时、模式(真实执行 / 演练只诊断)、错过补跑、跑完开一个会话汇报、游戏路径(原神可指定 BetterGI.exe)。超时指「一轮最多跑多久」(5–180 分钟,默认原神 150、崩3/星铁 45);计划任务的系统执行时限会自动设为「超时 + 10 分钟」,而那 5 分钟的余量留给插件自己收尾。
  • 依赖体检:dsh CLI、DSH 版本、headless 运行器(含 credentials 补丁)、computer-use 插件、技能文件、坐标校准、提权助手、BetterGI、bettergi-control 技能、bettergi-mcp 脚本、bettergi MCP 注册;选到绝区零时另加「一条龙安装 / 一条龙后端」;选到崩铁时另加「三月七小助手(M7A)/ m7a-control 技能 / m7a MCP」。缺任何一项都给出「让 DSH 修这个」按钮:能自动做的(下载 bettergi-mcp、安装 bettergi-control、注册 MCP 配置、启动一条龙后端)点一下直接做,按钮会变成「处理中…」;需要多步操作或权限的才新开一个 DSH 会话,把修复步骤(含备份/回读要求)交给 Harness 执行,并把界面切过去。
  • 立即运行一次 / 停止 / 关闭全部代理:立即运行走「已保存」的配置;停止会杀掉该游戏的 headless 运行进程;关闭全部代理会移除所有计划任务。
  • 最近运行:读取 report.json(状态、模式、步骤、证据、结论)与 stdout 尾部。

执行链路

设置页 ──POST /api/game-daily/apply──▶ 写 state.json + automation/tasks.json
                                              │
                                              └─▶ automation/game-daily-register.ps1(提权一次)
                                                     └─▶ Windows 计划任务 game-daily-<game>
                                                            每天 HH:MM 触发
                                                            │
                                                             ▼
                                             node automation/run-headless.mjs --game <id>
                                                            │  spawn
                                                            ▼
                              dsh --profile headless --patch automation/headless-overlay.yml "<prompt>"
                                                            │
                                                            ▼
                                 按引擎执行(原神走 BetterGI;崩3 走 game-daily-hi;崩铁走三月七小助手 M7A)
                                                            │
                                                            ▼
                                  <stateDir>/runs/<game>/<runId>/{meta.json,report.json,stdout.log,screens/}
                                                            │  插件每 60s reconcile
                                                            ▼
                                        记录历史 → Windows 通知 → (可选)在每个游戏**固定一个**汇报会话里追加结果(首次创建,之后复用;会话被删会自动重建)
  • 汇报投递的每一步(saved= / alive= / 已追加到 … 或 复用失败:<原因>;改为新建)都会写进 <stateDir>/automation/report.log:Host 的 logger 不落盘,排查「为什么又新建会话」只看这一个文件即可。
  • headless 侧通过 --patch 叠加 overlay 注入对应 MCP(原神 bettergi / 绝区零 zzz-od / 崩铁 m7a),并带 DSH_PERMISSION_MODE=danger-full-access 实现无人值守;崩3/星铁没有 wincu 时按技能说明用提权助手(scripts/run-step.mjs --ps)。
  • 报告是唯一判定依据:report.json 的 status 为 success / partial / failed / timeout;插件只认这个文件,不猜进程退出码。
  • 看门狗:run-headless.mjs 在「超时 − 5 分钟」到点时会主动停掉 headless、写一份兜底 report.json(status=timeout)再退出,避免被系统执行时限强杀后什么都不留下。
  • 兜底对账:如果某轮连兜底报告都没写(比如被手动结束或崩溃),reconcile 会在进程确已退出、且已过 3 分钟宽限后,补一条 failed 历史并发通知,不再静默。
  • 前台守护:每轮运行开始时,插件从 automation/keep-foreground.ps1 起一个 1 秒轮询的守护进程,游戏窗口被别的窗口抢走时立即拉回(四级回退:SetForegroundWindow → AttachThreadInput → 模拟 Alt → SwitchToThisWindow),结束/停止时写 .stop 自动退出;日志在 <stateDir>/automation/guard-<game>.log。面板排班卡里有「前台守护」开关(ui.foregroundGuard,默认开)。
  • 进程收尾(真实模式):一轮跑完会关掉该游戏的进程(原神连同 BetterGI.exe),减少后台占用;开始新一轮前会先关掉其它游戏(Get-Process + Stop-Process -Force),若上一轮还在跑,计划任务会等它收尾(默认最多 20 分钟,DSH_GAME_DAILY_WAIT_MS 可调)而不是两边互相抢窗口。演练模式不动任何进程。

HTTP 接口(Host 侧,前缀 /api/game-daily)

方法 · 路径 · 说明

GET · /state · 全部游戏状态 + 任务摘要(计划任务信息走缓存,不阻塞)

GET · /probe?games=genshin,hi · 依赖体检结果

POST · /ui · 保存界面偏好(如 lastGame、reportSessions)

POST · /apply · 保存排班并重建计划任务;{dryRun:true} 只打印将注册的动作、不落盘

POST · /disable · 移除某游戏(或全部)计划任务并关闭开关

POST · /run · 立即运行一次:{game, mode:'real' · 'dry'}

POST · /stop · 停止该游戏的运行进程

POST · /run-task · 立刻触发已注册的计划任务(由任务管理器跑,而不是插件直启)

POST · /install · 修复动作:{action:'install-bettergi-skill'} 装技能、{action:'install-bettergi-mcp'} 下载+注册、{action:'fix-bettergi-mcp'} 只注册;其它 action 生成修复会话

GET · /runs?game=genshin · 历史运行摘要

GET · /run?id=<runId> · 单次运行的 report/meta/stdout 全文

GET · /update · 检查更新:返回 {current, latest, hasUpdate, repo, releases, checkedAt}(30 分钟缓存,?force=1 强制刷新)

POST · /update · 立即更新:有 .git 走 git pull --ff-only,否则下载 zip 覆盖;返回 {from, to, method, restartRequired}

POST · /reconcile · 手动触发一次对账(平时每 60s 自动跑)

数据位置

  • 状态与运行产物:$DSH_HOME/game-daily/(默认 %USERPROFILE%\.dsh\game-daily)
  • state.json(原子写)、runs/<game>/<runId>/、automation/{tasks.json,game-daily-register.ps1,register-result.json,headless-overlay.yml,run-headless.log}、notifications.log

环境变量

变量 · 默认 · 用途

DSH_HOME · %USERPROFILE%\.dsh · DSH 主目录

DSH_PROFILE · desktop · 用来检查 headless / 插件的 profile 名

DSH_SKILLS_ROOT · %USERPROFILE%\.agents\skills · 技能

…(truncated)

以上内容来自 npm 上的 README,我们只做格式化,不改内容。

版本

npm 上共发布:4,最后更新 2026-11-06

链接

GitHub · Homepage · npm

同类插件