Skip to content

Releases

v1.3.0 数据源可插拔:auto / custom / demo

Choose a tag to compare

@aooom4 aooom4 released this 10 Nov 14:18

v1.3.0 · 数据源可插拔:不装 qq-bridge 也能打开完整面板

针对「怎么让别的桥接也能用这个面板」,把读写状态的一层抽成三档数据源。桥接一行没改、概率曲线没动、没有重启任何进程。

三档数据源(面板顶部「数据源」卡片切换)

  • auto(默认,零配置):自动探测本机 qq-bridge 控制台 —— 环境变量 → 旧版 local.config.json → 默认端口 3100 与常见位置的 console-token。先不带令牌敲一下端口(401 也算服务在),再逐个试令牌,第一个返回 {ok:true, conversations:[...]} 的组合缓存 60 秒。旧配置继续有效,升级不用重填。
  • custom:填任意 base URL + 令牌,按最小 JSON 契约接其它桥接;只认 GET {base}/status、GET/POST {base}/config 两个接口,ignoredKeys 通过 config.proactive.ignoredKeys 读写,所以「✕ 移除 / 恢复」自动可用。README 附约 25 行适配器示例。
  • demo:完全不联网、不读桥接、不往 QQ 发消息。插件内置同规则投骰引擎(0.6% 基础 / 74 起 +6% / 90 保底),命中即归零,面板 / 统计 / 参数页全部可用;默认 2 个演示会话、5 秒间隔,改参数下一轮生效,状态存 state/demo-state.json。

关键实现

  • lib/host.js:新增数据源层(配置存 state/datasource.json、令牌只留宿主机、面板只拿 hasToken);代理() 按源分派,上层路由与统计采样逻辑完全复用;新增 GET/POST /dsh-qq-dice/datasource(带探测状态,非 http(s) 地址直接拒绝);demo 用伪造 Response + 递归 setTimeout 引擎实现。
  • 统计隔离:demo 的命中统计单独落在 state/demo-hits.json,与真实 state/hits.json 双向隔离,切回 auto 后平均值与明细表不会被模拟记录污染。
  • lib/client.js:新增「数据源」卡片(下拉 / base URL / 令牌 / header / 清除已保存令牌 / 探测状态),切换后自动重拉配置与状态;无桥接时改给可读降级提示而非报红;保存参数与切换数据源的提示按模式区分。
  • README.md:三档说明、契约表、适配器示例、零配置探测顺序、demo 边界与隐私说明。
  • package.json:1.2.4 → 1.3.0。

边界(重要)

  • 主动消息始终由桥接(或你自己的服务)发,本插件只负责显示与改参数;demo 只出数据、不会真的往 QQ 发消息。
  • demo 不实现静音时段 / 新消息重置 / 门控跳过等桥接侧逻辑。
  • custom 只接受 http(s) 地址;令牌明文留在 state/datasource.json(已被 .gitignore 排除),面板不回显。

验证

隔离环境 e2e 全绿:默认 auto 无桥接时的可读降级、auto 零配置探测成功、custom 契约路径 / 自定义 header / 令牌不回显 / 非法地址 400、demo 状态字段齐全 / 参数保存 / 保底概率=1 / 移除恢复闭环、demo 与 auto 统计文件双向隔离、面板数据源卡片渲染、真实 state/hits.json 字节未变。node --check 两文件通过,桥接测试与配置未触碰。

升级与注意

  • 必须托盘 Quit 彻底退出 DSH 再重开才会加载新面板与新 host 逻辑(只关窗口不算)。这一步会重开「大肥鱼」的对话,正在进行中的轮次会断、上下文要重新载入 —— 本次发布没有替你操作,也没有重启桥接。
  • 升级后默认仍是 auto,现有 local.config.json 与真实统计不受影响;想试演示模式,在「数据源」里切一下即可,随时可切回。
  • 附件 dsh-qq-dice.zip 含 9 个文件、保留 lib/ 目录结构,不含 local.config.json、state/、令牌或本机绝对路径。

承接此前版本

v1.2.4:统计口径改用桥接 rollCount + 1(不会超过保底)、旧记录自动降级隐藏、明细带日期、去掉「全局投骰效率」。
v1.2.3:面板「✕ 移除 / 恢复」不用的定时会话、ignoredKeys、单会话统计清除。
v1.2.2:原子写 / 重启续算 / 补发去重、门控期文案、静音时段可在 DSH 设置里改。
概率曲线(0.6% 基础 / 74 起加码 / 90 保底)按要求保持不变。

v1.2.4 统计口径对齐桥接,面板不再虚高到 100+ 投

Choose a tag to compare

@aooom4 aooom4 released this 10 Nov 13:50

v1.2.4 · 修掉「90 次保底却显示 100 多投」与面板口径混排

两个反馈的问题一起修了。桥接一行没改、概率曲线没动、没有重启任何进程。

问题 1:设置 90 次 100% 命中,面板却出现 108 / 125 投

90 次保底没坏,桥接日志里一次都没超过 90 投(实际命中落在第 76、81、41、78 投;第 74 投起每投加 6%,绝大多数命中在 74~87 之间,保底几乎用不上)。虚高的是插件自己另算的一笔累计账:用了几投 = 累计投骰 − 上次命中时的累计,只要中间有被对方消息作废的轮次、DSH / 桥接重启造成的观测断档或补发,这些投骰就会被并进同一轮。

问题 2:明细表新旧口径混排、时间只显示时分

顶部「共 4 轮命中」只算 4 条新口径记录,明细表却列了 9 行(含 5 条升级前旧记录);两条 19:08 分别是 11-09 与 11-10,不带日期看起来像重复 / 顺序错乱;「全局投骰效率」又是第三个不同源的数,三个数字互相打架。

本版修复

  • 统计口径换源:命中时 用了几投 = 命中前最后一次观测到的 rollCount + 1,与桥接 state/dice-hits.log 的 roll 同源,永远不会超过保底次数;rolls 保留为历史累计仅供参考;移除 efficiency 字段。
  • 纯补发不再凭空补记命中:只在计数归零时记一次,补发落地只清 armed 标记。
  • 自动迁移:首次轮询把 v:2 且 r > 保底次数 的旧记录降级为 v:1(现有那两条 108、125 会被自动隐藏,原始数据仍保留在 state/hits.json,不用手动清)。
  • 面板:明细表只显示 v:2 新口径记录、时间改为 11-10 19:08(带日期)、下方提示「已隐藏 N 条升级前旧口径记录」;汇总提示去掉「全局投骰效率」,改为注明「与桥接第几投命中同源,不超过保底次数」。

代码改动(本仓库 4 个文件)

  • lib/host.js:命中时改用 上次_.count + 1;补发分支收紧;新增首次轮询的旧记录降级迁移;/hits 汇总移除 efficiency。
  • lib/client.js:明细过滤 v:2、时间格式化加日期、隐藏旧记录提示、汇总文案。
  • README.md:同步统计口径、旧记录处理与字段说明。
  • package.json:1.2.3 → 1.2.4。

验证

隔离环境 e2e 全绿:r = 41 / 90 / 11(含保底边界 90)、超过 90 的记录 0 条、被重置只记重置、补发不重复记、历史 125 自动降级、平均值与明细行数一致、时间带日期;真实 state/hits.json 内容与维护时间均未被测试改动。桥接测试与配置未触碰。

升级与注意

  • 必须托盘 Quit 彻底退出 DSH 再重开才会加载新面板与新 host 逻辑(只关窗口不算,DSH 会缓存前端模块)。这一步会重开「大肥鱼」的对话,正在进行中的轮次会断、上下文要重新载入,请挑对话空闲时自行重开 —— 本次发布没有替你操作,也没有重启桥接。
  • 重开之前若又命中一次,运行中的旧代码仍会按旧口径记一条;越早重开越干净。
  • 桥接侧无需任何改动,QQ 连接不受影响。
  • 附件 dsh-qq-dice.zip 含 9 个文件、保留 lib/ 目录结构,不含 local.config.json、state/、令牌或本机绝对路径。

承接此前版本

v1.2.3:面板「✕ 移除 / 恢复」不用的定时会话、ignoredKeys 名单、单会话统计清除。
v1.2.2:统计 v:2 均值、原子写 / 损坏恢复 / 重启续算 / 补发去重、门控期文案、「安静 / 保底」列、静音时段可在 DSH 设置里改并即时生效;桥接侧另有门控期跳过空转、命中一次写一条日志、每天 19:00 清空日志。
概率曲线(0.6% 基础 / 74 起加码 / 90 保底)按要求保持不变。

v1.2.3 面板可移除 / 恢复不用的定时会话

Choose a tag to compare

@aooom4 aooom4 released this 09 Nov 14:18

v1.2.3 · 命中统计表格可以直接删掉不用的会话了

针对截图里「当前模式不允许」「安静 29903870 分」这类不再需要定时对话的会话,新增移除与恢复按钮。

新增功能

  • ✕ 移除:命中统计表格最后一列新增按钮。点击后弹确认框,确认即把该会话写进桥接的 socialV2.proactive.ignoredKeys:立即停止它的定时投骰、从表格中消失,并清除它在本插件 state/hits.json 里的历史命中统计(统计清除不可恢复)。
  • 恢复:表格下方新增「已忽略 N 个会话」列表,每项一个「恢复」按钮,点击即重新参与投骰。
  • 只影响主动投骰:不动 QQ 消息收发、DSH 会话映射与令牌;没有使用 /api/socialV2/reset(该接口是全量重置:停掉所有 DSH 会话、归档、轮换令牌),因此删除/恢复都是单会话粒度、即时生效、无需重启桥接。
  • 顺带把保存参数后一直没渲染出来的「消息」反馈条显示出来;规范() 保留 ignoredKeys,避免在参数页保存时把名单冲掉。

代码改动(本仓库 4 个文件)

  • lib/host.js:新增 POST /dsh-qq-dice/ignored 路由。校验会话 key 格式((private|group): + 数字),先 GET 桥接当前配置,再只提交 { proactive: { ignoredKeys } },不会覆盖其它参数;purgeHits 时清掉该会话在 hits / rolls / sampledHits / intervals / resets / snap / hitRoll / armed 中的全部记录。
  • lib/client.js:表格新增「操作」列、确认框、已忽略列表与恢复按钮;改名单() 统一走上面的路由。
  • README.md:同步删除/恢复说明与统计字段说明。
  • package.json:1.2.2 → 1.2.3。

桥接配套(不在本仓库,需单独替换)

qq-bridge/src/bridge.js 同步增加:默认 ignoredKeys: []、纯函数 normalizeIgnoredKeys / isProactiveIgnoredKey、POST /api/socialV2/config 归一化、/api/socialV2/proactive-status 过滤并回带名单、scheduleProactiveCheckV2 入口拦截(取消定时器并 return)。配置热更新会遍历所有会话重新排定时器,所以删除与恢复都即时生效。

验证

  • 桥接投骰测试 13/13、test:proactive 9/9、issues / hardening 全绿。
  • 插件 /ignored 路由隔离测试:删除、清统计、恢复、非法 key 拦截全绿;真实 state/hits.json 未被测试改动。
  • 桥接已重启验证:/proactive-status 回带 ignoredKeys、3100 端口在听、SnowLuma / DSH 重连正常。

升级与注意

  • 覆盖插件文件后,托盘 Quit 彻底退出 DSH 再重开才会加载新面板与新路由(只关窗口不算,DSH 会缓存前端模块)。
  • 桥接侧需同步替换 src/bridge.js 并重启进程,否则 ignoredKeys 不生效。
  • 点「✕ 移除」会清掉该会话的历史统计,点之前会弹确认;只想临时停用、保留统计的话,请先备份 state/hits.json。
  • 附件 dsh-qq-dice.zip 含 9 个文件并保留 lib/ 目录结构,不含 local.config.json、state/、任何令牌或本机绝对路径。

承接此前版本

v1.2.2 已包含:统计口径统一(v:2 每轮命中间隔均值 + 效率)、原子写 / 损坏恢复 / 重启续算 / 补发去重、门控期文案、「安静 / 保底」列、静音时段在 DSH 设置里改并即时生效;桥接侧另有门控期跳过空转、命中一次写一条日志、每天 19:00 清空日志。概率曲线(0.6% 基础 / 74 起加码 / 90 保底)按要求保持不变。

v1.2.2 统计口径统一 · 静音时段设置

Choose a tag to compare

@aooom4 aooom4 released this 09 Nov 13:02

v1.2.2 改动

只动 DSH 插件,桥接的投骰概率曲线与投骰节奏不变。

统计口径

  • 汇总 / 表格 / 明细统一为「每轮命中实际用了几投」的均值;另列「全局投骰效率」(含其它会话空转),不再出现 110 / 55 / 54 三个互相打架的数字。
  • 1.2.0 之前的历史明细保留在表里但不参与均值(带 v:2 标记的才是新口径)。

统计不再丢

  • 每会话上次观测快照一起落盘,DSH 重启后接着算,不再漏记一段采样。
  • hits.json 改为临时文件 + rename 原子写,写前留 hits.json.bak;文件损坏时留档并从备份恢复,不会静默清零。
  • 命中撞繁忙、2 分钟后补发落地不再被重复记成一次命中。

面板与设置

  • 门控期(安静不够 / 静音 / 延后)不再显示误导的「下一投 X 秒 / 命中率」,改显示「还需安静 X 分 / 静音中 / 等新消息」。
  • 前段「距保底」只是倒数,改为显示「本轮已安静 X 分」;进入加码段才显示「距保底 N 投」。
  • 保存参数前校验「加码起点 < 保底次数」,避免加码段永远到不了却毫无提示。
  • 新增「静音时段」设置:填 23-8(也认 23:00-08:00),多段用逗号分隔,留空=不静音;保存即写回桥接并立即生效,不用重启。
  • 文案明确「命中」=触发一次主动唤醒,不等于真的发出消息。

升级提示

托盘 Quit 彻底退出 DSH 再打开才会加载新面板(关窗口不算)。

配套:桥接侧另有门控空转跳过、命中日志(一次命中一条、每天 19:00 清空)等改动,不在本插件包内。

v1.1.1 修正统计口径

Choose a tag to compare

@aooom4 aooom4 released this 09 Nov 11:24

修复:对方发消息导致的投骰重置不再被误记为命中。

  • 用 lastIncomingAt 变化 + idleMs 低于安静阈值,准确区分「命中归零」与 resetOnIncoming 的「重置归零」
  • 重置单独计入 resets,不算命中、不算投骰;面板新增「被重置」列
  • 归零时补齐被抹掉的那一投及归零后新投次数,修复短投骰间隔下漏算总投骰数
  • 轮询间隔跟随 diceIntervalMs 自适应(默认 5s,间隔 <10s 时自动加密至最快 500ms)
  • 兼容 1.0 / 1.1.0 的旧 hits.json

概率曲线与投骰节奏未改动。安装前请先读 README。

v1.1.0 投多少次命中一次

Choose a tag to compare

@aooom4 aooom4 released this 09 Nov 10:44

DSH NEXT 设置面板插件:投骰进度、命中统计与参数修改。

本版本新增

  • 「投多少次命中一次」:平均命中间隔、最快/最慢、最近每次命中用了几投
  • 每个会话独立的平均间隔列
  • 修复命中去重(计数归零 + 待补发同时出现时不重复计数)
  • 兼容 1.0 版 hits.json 旧统计文件

安装前请先读 README:需要 DSH NEXT + 本机运行 qq-bridge 控制台(3100),并配置 local.config.json。