game-crash-doctor:用事件日志与 WER 解释 Windows 游戏崩溃

前言

在 Windows 上跑游戏或做联机调试时,崩溃往往只留下事件查看器里几行 Event ID、WER 目录下的 Report.wer,或 %LOCALAPPDATA%\CrashDumps 里的转储。人工对照异常码、故障模块和系统侧 TDR、Kernel-Power 信号,既费时间,也不容易在 Agent 对话里一次性说清「为什么崩、先查什么」。DeepSeek Harness(DSH)把能力拆成插件;若你希望崩溃后在本机自动汇总线索并在会话里给出原因摘要与排查顺序,可以安装社区插件 game-crash-doctor(维护者 FLL123-Arch)。下文按安装、用法与配置说明其能力边界;事实以 GitHub 仓库 README 与 package.json 为准。

这是什么

game-crash-doctor 是 DSH 插件:在游戏崩溃后,读取 Windows 事件日志、Windows Error Reporting(WER)报告和本机崩溃转储,归纳可能原因与建议排查顺序。README 标明:仅 Windows、需 DSH 0.1.2+,所有分析在本机完成,不联网、不上传数据。package.json 中版本为 0.1.0,许可证 MIT,运行平台 win32,Node >=20。社区目录 SkillHub 将其列为「联网工具」类插件;就插件自述而言,诊断过程不发起网络请求。

核心功能

自动监控与按需诊断

插件默认每 45 秒检查事件日志;发现新的游戏相关崩溃时,可在当前 DSH 会话推送通知(原因摘要与 3 条建议)。也可随时通过工具 diagnose_game_crash 做按需诊断,并可指定回溯小时数与游戏名关键词。

数据来源

  • 应用程序日志:Application Error 1000、Windows Error Reporting 1001、Application Hang 1002、.NET Runtime 1026
  • 系统日志:显示驱动 TDR 4101、Kernel-Power 41、BugCheck 1001、意外关机 6008
  • WER:Report.wer(异常代码、故障模块、Bucket 等)
  • 转储路径:%LOCALAPPDATA%\CrashDumps、C:\Windows\Minidump、C:\Windows\LiveKernelReports

分析与归类

插件会对 ACCESS_VIOLATION、C++/.NET 异常、堆破坏、栈溢出、显卡 TDR、DXGI 设备丢失、反作弊、蓝屏 BugCheck 等做原因归类,并给出置信度与排查顺序。同一程序/异常/模块在时间窗内反复出现时,会单独提示重复崩溃。

README 中给出了部分信号与典型结论的对照表,例如 0xC0000005 落在游戏模块、0xE06D7363 与 KERNELBASE.dll、0x887A0006 或 4101 TDR、Kernel-Power 41、BugCheck 0x124、Application Hang 1002 等,便于对照日志快速缩小范围。

安装与启用

从 npm 安装

在 PowerShell 中执行(命令来自官方 README):

dsh plugin --profile desktop add game-crash-doctor

从本地源码安装

将仓库目录放到 profile 的 plugins 下,例如 %USERPROFILE%\.dsh\profiles\desktop\plugins\game-crash-doctor,再注册:

dsh plugin --profile desktop add file:./plugins/game-crash-doctor

安装后需重启 DSH(或在插件市场里点重启),工具和后台监控才会生效。

典型用法

无需记忆工具参数,可直接对 Agent 用自然语言,例如:

  • 「刚才游戏为什么崩了?」
  • 「帮我看看最近 3 天的崩溃记录」
  • 「只查 Wuthering Waves 的崩溃」

Agent 会调用 diagnose_game_crash。官方文档中的参数如下:

参数 说明
hours 回溯小时数,1–168,默认 24
game 只保留可执行文件名或路径包含该关键词的记录

配置

在 profile 的 cordis.patch.yml 中为插件增加 config(字段以 README 为准):

- id: game-crash-doctor
  name: game-crash-doctor
  config:
    notify: true              # 是否自动推送崩溃通知
    pollSeconds: 45           # 轮询间隔(15–600 秒)
    gameOnly: true            # 只对“像游戏”的崩溃推送
    notifyAllSessions: false  # true = 通知所有打开的会话
    maxNotificationsPerHour: 3

隐私、权限与限制

隐私与安全(README 原文要点):只读取本机事件日志、WER 与转储,不发起网络请求;不收集、不上传崩溃内容或路径。采集依赖系统自带的 powershell.exe(只读)。事件日志查询一般不需要管理员;C:\Windows\LiveKernelReports 和部分 WER 目录可能需要管理员权限,读不到会自动跳过。

运行环境:仅支持 Windows 10/11。插件随当前 DSH 进程权限运行;安装前建议在 GitHub 查看源码与 MIT 许可证,确认符合你的安全策略。

能力边界:

  • 不解析转储内调用栈(无符号表);转储用于定位与关联。更深栈分析需用 WinDbg 打开报告中的 .dmp。
  • 若崩溃表现为直接断电/死机且系统来不及写应用日志,可能只能看到 Kernel-Power 41 等系统侧记录,插件会说明「没有应用崩溃记录」。
  • 自动通知要求 DSH 正在运行;关闭期间发生的崩溃会在下次启动后第一次轮询时补报。

结尾

game-crash-doctor 把 Windows 游戏崩溃常见的日志、WER 与转储路径收成一套本机诊断流程,适合在 DSH 里用对话追问「最近为什么老崩」、并按异常码与模块缩小模组、驱动、内存或硬件排查范围。社区目录页:https://www.skillhub.cn/plugins/FLL123-Arch/game-crash-doctor;源码与完整说明:https://github.com/FLL123-Arch/game-crash-doctor。

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

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

小夜