故障排查
遇到问题时,按本页顺序排查。反馈问题时请尽量附上对应的日志 / 崩溃报告文件。
先找日志
| 内容 | 位置 |
|---|---|
| 运行日志 | data/logs/app/dice-<启动时间戳>_<日期>.log(每次启动新建一份,跨天自动分割) |
| 崩溃报告 | data/logs/crash_<时间戳>.txt |
| 跑团记录 | data/logs/(.log 导出的 txt / html) |
| 审计日志 | data/audit/(通知系统的事件流水,jsonl) |
控制台窗口默认隐藏,可以从系统托盘图标右键菜单里随时显示 / 隐藏。
程序闪退 /「已停止工作」
Dice!Next 内置崩溃诊断兜底:无论哪种崩溃(访问违例、未捕获 C++ 异常、CRT 无效参数、abort),退出前都会把死因写到 data/logs/crash_*.txt,内容包括:
- 时间、崩溃类型、版本 / build 号
- 启动阶段标记(
main:chdir/config/database/running等)——即使没有堆栈也能知道死在哪一步 - 异常码、出错地址所属模块名 + 偏移、未捕获异常的
what()文本
排查步骤:
- 打开
data/logs/下最新的crash_*.txt,看phase与kind。 - 再对照
data/logs/app/里同时间的运行日志最后几行。 - 反馈问题时把这两个文件一起发给开发者,基本可以直接定位。
TIP
若 data/logs/ 目录不可写,报告会退而写到程序目录下的 crash.txt。
双击 exe 后「什么都没发生」
这是正常现象:默认启动即最小化到系统托盘(右下角会弹一个气泡提示),不显示控制台窗口。
- 在任务栏右下角找托盘图标,右键可「打开网页面板 / 显示控制台 / 打开应用目录 / 退出」。
- 想恢复「启动就显示控制台」的旧行为:把配置
dice.console_start_hidden改为false。
第二个进程一启动就退出
同一套数据(同一个 data/ 目录)只允许运行一个进程——启动时会在数据目录写 .instance.lock 单实例锁,检测到已有实例时第二个进程直接退出,并在控制台/日志里给出提示,避免两份进程同时写数据库造成损坏。
- 想跑多个骰子:复制一份完整程序目录,各用各的
data/。 - 确认没有其他实例却仍提示被占用:删除数据目录下的
.instance.lock后重试。
WebUI 打不开
- 确认进程在运行:托盘图标是否存在;
data/logs/app/有无新日志。 - 端口可能变了:默认端口
18088被占用时会自动顺延到下一个可用端口并写回配置文件,启动日志会有一条 WARN。最简单的办法是托盘右键 →「打开网页面板」,它总是用当前实际端口;也可查看config/default_config.json的server.port。 - 远程访问:确认
server.host为0.0.0.0,并放行防火墙对应端口;不建议直接暴露公网,见部署与运维。 - 提示需要登录:设置过 WebUI 登录密码后,所有后台页面都需要先登录(Cookie 会话,7 天有效)。
忘记 WebUI 登录密码
停止程序,编辑 config/default_config.json,删除 webui.password 字段(或改为空字符串 ""),再启动即可(空 = 关闭登录鉴权,记得重新设置)。
适配器连不上
先分清正向 / 反向:
| 模式 | 谁连谁 | 端点怎么填 |
|---|---|---|
正向 WS(forward_ws) | Dice!Next 主动连接 OneBot 客户端 | OneBot 客户端的正向 WS 地址,如 ws://127.0.0.1:3001/ |
反向 WS(reverse_ws) | OneBot 客户端反连 Dice!Next | 只填一个端口号(如 6700),然后在 OneBot 客户端把反向 WS 地址指向 ws://<Dice!Next 所在 IP>:<该端口>/ |
逐项排查:
- OneBot 客户端(NapCat / Lagrange / LLOneBot 等)是否开启了对应的服务(正向 WS 服务端 / 反向 WS 上报),端口是否一致。
access_token两端是否一致(留空则两端都留空)。正向连接时 Dice!Next 会以Authorization: Bearer <token>头发送。- 防火墙:反向模式要放行 Dice!Next 监听的端口;正向模式要能访问到 OneBot 客户端的端口。
- 状态显示「连接超时」:正向 WS 断线后会自动重连(前 10 次每 5 秒、第 11~20 次每 60 秒),连续 20 次失败后暂停自动重连并置为「连接超时」——修好 OneBot 端后在适配器管理页点手动重连即可。
- 仪表盘实时日志与
data/logs/app/里有具体错误原因。
指令不回
- 群里是否发过
.bot off(群停用)?在 群组管理 或群里.bot on恢复。 - 是否开了全局静默 / 全局停用指令(系统设置)?
- 用户 / 群是否在黑名单里?
- 白名单模式(
dice.whitelist_only)下,不在白名单的群不会响应。 - 适配器状态是否为「已连接」?
- 不想连 QQ 调试:用管理面板的测试台直接发指令看回复。
还是没头绪?
带上以下信息反馈:
- 版本 / build 号(管理面板「关于」页或启动日志第一行)
data/logs/app/最新日志的相关片段- 若是崩溃:
data/logs/crash_*.txt全文 - 复现步骤