Skip to content

修复每日 Token 跨日统计、主题与布局兼容问题 - #77

Open
kts-kris wants to merge 4 commits into
BigPizzaV3:mainfrom
kts-kris:fix/daily-token-usage-issues-35-37-62
Open

修复每日 Token 跨日统计、主题与布局兼容问题#77
kts-kris wants to merge 4 commits into
BigPizzaV3:mainfrom
kts-kris:fix/daily-token-usage-issues-35-37-62

Conversation

@kts-kris

Copy link
Copy Markdown
Contributor

背景

该 PR 替代存在冲突的 #61。分支已重新基于最新 main 整理,保留 #53 已合入的缓存、索引和刷新性能优化,再补回历史回填、价格面板滚动和默认价格更新。

本次逐项复现并处理了 #35#37,同时对已关闭的 #62 做了性能回归,重点解决“首次打开或重启后今日用量明显偏小”“长时间复用的旧任务漏算今日 Token”“历史回填与实时采集重复相加”等实际问题。

处理内容与用户价值

1. 今日统计不再只依赖当前页面

  • 适配新版 Codex renderer 的正式 RPC 服务:通过 localThreadCatalog 获取最近更新任务,通过 workspaceFiles.read 读取本机 session JSONL。
  • 保留旧版 app-server dispatcher 作为兼容回退。
  • 即使没有安装 Codex Token Usage,也能独立补齐本机最近 5 日统计;已安装时仍可复用实时数据,不要求用户额外安装依赖。

用户价值: 重启 Codex、首次打开插件或切换到历史任务后,不再只看到脚本加载之后的局部用量。

2. 正确处理长任务跨日与累计值

  • 不再按 JSONL 文件创建日期归档。长期复用的任务即使文件创建于数周前,也会依据每条 token_count 的真实时间计入当天。
  • 通过相邻 total_token_usage 的差分计算每日增量;累计值重置时回退到 last_token_usage
  • 按日期和 Model 聚合,并保留输入、输出、缓存输入、推理 Token 与请求次数。
  • 只有当本轮所有候选 session 都成功读取后才推进历史覆盖边界;覆盖边界之前的旧实时记录会被清理,之后的新记录仍可继续累计。

用户价值: 避免累计值直接相加造成虚高,也避免旧任务路径日期导致漏算。

3. 处理 #35:暗色、输入与趋势交互

  • 增加 Codex 实际使用的 html.electron-dark 主题适配,明确价格输入框文字、背景、光标和 placeholder 对比度。
  • 使用 Codex 当前主题变量作为主样式来源。
  • 日期输入框获得焦点时不再被刷新过程重写。
  • 价格编辑沿用 perf: 优化 Codex Daily Token Usage 可用性与大会话刷新性能 #53 的编辑态保护;趋势 tooltip 保持独立高对比样式。
  • 价格面板展开后,详情面板使用受视口约束的纵向滚动。

用户价值: 深色主题下可读、输入不丢焦点,较多 Model 价格项也能滚动到页面底部。

4. 处理 #37:不再破坏宿主布局

  • 统计入口继续挂载在 body,使用 position: fixed,不进入 Codex 标题栏 flex 文档流。
  • 保留动态障碍检测:原生按钮后出现时,入口会优先左移避让;空间不足才切换 compact icon。
  • MutationObserver 的工具扫描增加 debounce,减少无关 DOM 变化触发的重复工作。

用户价值: Windows/macOS 标题栏、侧边栏和设置区域不会被插件撑开或裁切,后出现的原生按钮也不会与入口重叠。

5. 回归 #62:大会话性能

保留 #53 的 day cache、版本签名、时间索引匹配,并新增 MutationObserver 工具扫描节流。

在 226 个 turn、314 条工具事件的复现场景中,本机结果:

  • 首次聚合:约 8.4ms
  • 1000 次缓存读取:约 0.2ms
  • 100 次 refresh():约 2.2ms
  • 缓存命中:true

相较 issue 中单次聚合 348.1ms、完整刷新 370.6ms,未发现性能回退。

6. 版本与价格

  • 版本升级到 1.4.17
  • 更新默认 OpenAI Model 价格参考项,用户自定义字段仍优先覆盖。
  • 同步更新 index.json 版本、说明和 SHA-256。

真实环境验证

当前 Codex Desktop 热加载验证:

  • 历史回填:threads=9filesRead=9sessions=9complete=true
  • 回填错误:空
  • 今日数据来自 3 个真实 session,而不是当前页面的局部捕获
  • 根节点父级:BODY
  • 根节点定位:fixed
  • 动态插入顶部原生按钮后,入口自动左移且无重叠
  • 插件启用/销毁/重新启用前后,宿主 header 与 body 尺寸完全一致
  • 价格展开后:scrollHeight=1115clientHeight=1051、可滚动 scrollTop=64
  • electron-dark 下:面板 rgb(32, 33, 36),输入文字 rgb(242, 242, 242)

自动化验证

node --check scripts/codex-daily-token-usage.js
node tests/codex-daily-token-usage.test.js
CODEX_DAILY_TOKEN_USAGE_SCRIPT=... node ../test-codex-daily-token-usage.js
git diff --check origin/main...HEAD

新增仓库内回归测试,覆盖:

  • 长任务跨日期差分
  • Model 分组
  • 历史覆盖与实时数据去重
  • 5 日存储相关基础逻辑
  • 226 turn / 314 工具事件缓存
  • 标题栏动态避让
  • 暗色模式和滚动样式存在性

Closes #35
Closes #37

#62 已关闭,本 PR 仅做回归验证并确保不重新引入该性能问题。

@Rat0323

Rat0323 commented Aug 23, 2026

Copy link
Copy Markdown

我针对新版 Codex++ 顶栏迁移仍存在的两处兼容点提交了配套 PR #82https://github.com/BigPizzaV3/CodexPlusPlusScriptMarket/pull/82。当前 #77 head 仍使用旧的 .app-header-tint / 通用 header 回退,并保留 280px 默认右侧预留;#82 只修改这部分定位逻辑、清单哈希和回归测试,完整仓库测试 15/15 通过。若 #77 先合并,请将 #82 的定位修复同步到后续版本。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Bug: codex-daily-token-usage script causes UI layout corruption Codex Daily Token Usage 暗黑模式、输入框和趋势悬浮显示异常

2 participants