# codex用量监测 **Repository Path**: assad2008/monitoring-codex-usage ## Basic Information - **Project Name**: codex用量监测 - **Description**: No description available - **Primary Language**: Unknown - **License**: MulanPSL-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-07-18 - **Last Updated**: 2026-07-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CodexUsageMonitor Windows 11 / C# / .NET 8 / Windows Forms 的 Codex 本地用量监控小工具。 ## 功能 - 主额度卡可在 5 小时额度和每周额度之间切换 - 显示剩余百分比、已使用百分比、重置倒计时 - 显示当前会话输入、缓存输入、输出 Token - 每 3 秒刷新,并实时监听 Codex 会话日志变化;监听器异常时自动重建,轮询始终作为兜底 - 支持置顶、托盘运行和手动刷新 - 支持跟随系统、深色、浅色三种主题;主题按钮可通过鼠标、Enter 或 Space 操作 - 仅读取 `%USERPROFILE%\.codex\sessions`;仅为显示脱敏邮箱解析本地 `auth.json` 的 `id_token.email`,不读取账号密码、不记录 Token 读取器在后台执行 JSONL 解析,不会因扫描日志阻塞主界面。首次读取、发现新日志或定期校验时会扫描最近会话文件;其他刷新仅增量读取已跟踪文件。无效时间戳和未完成的 JSONL 行会被安全跳过。 ## 托盘与桌面流量球 - 右键任务栏托盘图标,可通过带勾选状态的“开机自启”和“显示桌面流量球”管理两项功能。 - 菜单顶部只读显示脱敏后的 Codex 登录邮箱、当前订阅和最近一次额度重置时间;菜单会在 300px 到 420px 范围内自动适配宽度,并保留左右留白,便于完整查看邮箱。邮箱仅从本地 `auth.json` 的 `id_token` 负载提取,不会显示或保存 Token。 - “显示桌面流量球”开启时会显示流量球;关闭时会立即隐藏流量球,且之后主窗口最小化到托盘也不会再显示流量球。 - 流量球开关只控制流量球,不会强制显示或隐藏主窗口。 - 流量球:单击切换 5 小时/每周显示,双击恢复主窗口,上下拖动调整位置;悬停时可查看操作提示。 ## 界面与可访问性 - 订阅计划以紧凑标签显示,额度信息保持主视觉焦点。 - 底部状态栏显示监听状态和错误提示;Token 卡片悬停可查看未缩写的精确数值。 - 额度卡片、Token 指标、主题切换和主要操作按钮均提供辅助功能名称,便于键盘和屏幕阅读器使用。 ## 直接运行 ```powershell dotnet run ``` ## 推荐发布方式 执行: ```powershell .\build.ps1 ``` 输出: ```text publish\CodexUsageMonitor.exe ``` 这是“依赖框架”的发布方式,不会下载 `Microsoft.NETCore.App.Runtime.win-x64` 等运行时包。当前电脑需要安装 .NET 8 Desktop Runtime;安装了 .NET 8 SDK 的开发电脑已经具备运行条件。发布目录中的文件需要一起保留,不能只复制 EXE。 ## 自包含单文件发布 需要得到可复制到未安装 .NET 8 电脑上的单文件 EXE 时,执行: ```powershell .\build-self-contained.ps1 ``` 输出: ```text publish-self-contained\CodexUsageMonitor.exe ``` 该方式需要访问 `https://api.nuget.org/v3/index.json` 下载匹配的 Windows 运行时包。工程附带本地 `NuGet.Config`,用于避免系统级 NuGet 配置清空或屏蔽 nuget.org。 ## 常见问题 ### NU1100:无法解析 Microsoft.NETCore.App.Runtime.win-x64 这通常发生在自包含发布时,而当前 NuGet 源没有包含或无法访问 nuget.org。先使用默认的: ```powershell .\build.ps1 ``` 若必须生成自包含单文件,请确认 nuget.org 可访问后再执行: ```powershell .\build-self-contained.ps1 ``` ### 脚本显示成功但没有 EXE 新版脚本会检查 `$LASTEXITCODE` 和实际 EXE 文件。`dotnet publish` 失败时会立即报错,不会继续打印虚假的成功路径。