Skip to content

Releases: Rannist/balance-dsh

balance-dsh v2.2.2

Choose a tag to compare

@Rannist Rannist released this 04 Nov 17:06
b84553f

修复了今日消耗为0导致今日消耗不显示的bug。

balance-dsh v2.2.1

Choose a tag to compare

@Rannist Rannist released this 03 Nov 06:18
4c22430

优化了一些动画细节。

balance-dsh v2.2.0

Choose a tag to compare

@Rannist Rannist released this 03 Nov 02:39
0ec0d8e

优化了一些细节。

balance-dsh v2.1.9

Choose a tag to compare

@Rannist Rannist released this 02 Nov 07:16
abbb129

优化了一些细节。

balance-dsh v2.1.8

Choose a tag to compare

@Rannist Rannist released this 02 Nov 06:58
7db5b26

修复了一些已知问题

balance-dsh v2.1.7

Choose a tag to compare

@Rannist Rannist released this 02 Nov 05:40
7e140ac

修复了会话消耗小窗在切换对话是显示异常的问题

balance-dsh v2.1.6

Choose a tag to compare

@Rannist Rannist released this 02 Nov 05:33
788e267

由原来的聊天框底部显示会话消耗,修改为聊天框右侧小浮窗显示

balance-dsh v2.1.5

Choose a tag to compare

@Rannist Rannist released this 02 Nov 03:45
5e2f511

修复了一些已知问题。

balance-dsh v2.1.4

Choose a tag to compare

@Rannist Rannist released this 31 Oct 12:00
7bf5f37

修复了v2.1.2以下插件内更新并重启后回退的bug

balance-dsh v2.1.0

Choose a tag to compare

@Rannist Rannist released this 31 Oct 06:01
d0aea20

已修复/优化的问题

一、崩溃与稳定性

问题 症状
组件里存在条件调用的 hook 特定渲染顺序下抛 Rendered more hooks than during the previous render,整条余额行崩掉
事件分发没有逐个隔离 任何一个订阅者抛错,其余所有订阅(余额 / 今日 / 设置 / 模型 / 价格 / 白光)一起失效
顶层 require 未包住 依赖缺失时整个 factory 崩掉,5 个 slot 全不注册,界面静默消失且无日志
日历同步失败后把占位留在「已成功」集合里 那一年永远不再重试,网络恢复后也看不到调休数据
/balance 命令在会话未就绪时 formatUsage 首行就炸,连余额文本都拿不到
/balance-api 主干尾部没有 try/catch 任一异常 → reject → 零字节响应,客户端挂到超时,还可能升级成 unhandledRejection
节点断开时请求体读取永不 settle await 它的 handler 一直挂着,连接和内存都不释放
版本依赖的折叠 API 没有 try/catch 会话半装载时 requestHeader() 抛错 → 整条 ?session= 500

二、计费与数字准确

问题 症状
设置文件没读完就允许保存 拿出厂默认值当底做合并再整份落盘 —— 用户改一个开关,轮询间隔 / 低余额阈值 / 扫描上限 / API Key 全被盖回出厂
读快照时丢掉 bySession 冷启动第一次 ?session= 拿空表当基线,今日总额塌成只剩当前会话一个桶(实测 ¥16 → ¥3.2),且带「已定型」身份发出,看着像「打开时数字先小后大」
候选筛选把「没有时间戳的会话」整批滤掉 只要列表里有一部分带时间戳,at >= dayStart 就会丢掉 at === 0 那批 —— 今日金额系统性偏低
可疑空结果(有会话但今天一个都没筛出来)被缓存满 45 秒 一个可疑的 ¥0 硬撑 45 秒,重算也救不回来
增量缓存只按 TTL 判,不绑基线 快照回填 / 全量重算换了基线,1.5 秒内仍返回按旧基线算的整份总额,今日数字往回跳
增量结果(provisional)被当定型值命中缓存 客户端据此判定「已定型」,20 秒内不补拉,数字锁在不精确值上
?session= 复用的会话 id 没归一化 list() 给的是 session-<uuid>、客户端传裸 UUID,同一会话被算两份并写进快照
统计空日对象缺 7 个 web* 字段 0 + undefined = NaN → JSON 变 null → 客户端吃成 0,「网页工具」90 天汇总恒为 0
改设置后只清了统计缓存 今日金额还按旧价算出来的值撑最多 45 秒,同一个界面两个口径
余额接口每个请求都真查官方余额 单次 419ms,多个 slot / 多窗口并发时重复查同一份余额
API Key 路径取 infos[0] 多钱包时取数组第一个,刷新几次数字反复跳动;官方账号路径改了、这条没跟上
「余额不足」用 total <= 0 推断 total_balance 只是充值余额,赠送单列 —— 「充值花光但赠送还有」被判成没钱
余额请求失败时清空数字 界面一闪成空,应该保留上一次的值
结算写失败仍然删掉旧快照 那一份数据直接蒸发,统计面板永远补不回来
跨天结算前的快照路径可能为空串 中间任何读路径都判成「没有快照」,冷启动一直算不出今日
统计窗口按「当前时刻 - 89 天」 第一行只算半天(见开头)
子代理分桶丢 era 见开头

三、子代理消费

  • 原来只走一条枚举路径(官方 subagents 服务),它要求多个服务同时可用,任一缺失就 catch 成「没有子代理」——
    于是面板上那两行永远不出现,也没有任何日志。现在加了「按 parentSessionId 走会话列表建父子图」的第二条独立路径,
    两条取并集,服务不可用时一样能算出来。
  • 子代理消耗已计入上方合计,并在明细里单独列出「子代理 N 个 / 子代理 tokens / 子代理金额」。
  • 枚举加了每轮上限(60 个会话)并逐个让出主线程,不会因为开了很多子代理把界面卡死。

四、性能

问题 处理
持久化读取缓存只按条数淘汰(240 条 × 单份最大 134 MB 解压后) 增加 512 MB 字节预算,命中挪到队尾做真 LRU,淘汰时一并清掉节流时间戳
统计面板并发请求各自全量扫 80 个会话 加单飞,并发共用同一次扫描
窗口不可见时仍在轮询位置和折叠状态 document.visibilityState !== "visible" 时跳过 —— 两者都会强制 layout,原来每秒 7 次整页重排
时段色带每渲染跑两次、每次 24 次小时采样 按时间戳做模块级 memo
useMemo 的兜底值是 [] 字面量 每次渲染都是新引用 → 依赖永远为真 → memo 完全失效,改成冻结常量
isPeakAt 每次都重建窗口/星期数组 按 config 用 WeakMap 缓存(2 万帧的会话约 4000 次调用)

五、设置

  • 设置卡片卸载时最后 350ms 的改动会被静默丢弃(原来只 clearTimeout,不发最后那一次)。改完立刻切页 = 白改,而界面刚刚还提示过「修改中…」。现在卸载时补发。
  • 设置页的 NEW 徽标会提前消失:version 取错了来源,恒为空串 → 「这是本版新功能」判定永远不成立 → 24 小时窗口没走完就不亮了。
  • 设置还没加载完成时,服务端也会拒绝写入(返回 503「设置还没加载完成,请稍后再试」),不再有抢跑覆盖的窗口。
  • 写入口加了来源校验(要求 Content-Type: application/json 且同源),本地接口不再对任意网页的简单请求开放。

六、代码清理

  • 删除从未生效的 CompactBalanceLine 整条链路(组件 + 模块级广播 + 17 行 CSS)。那个 slot 从未渲染成功,零消费者。
  • 删除死参数、修正三处与实现不符的注释(含一处「锚点和输入卡片同宽」的失效假设)。
  • 6 处用数组下标当 React key 的装饰元素改成常量 + 显式 key。