Skip to content

feat(settings): add local model usage dashboard - #393

Merged
Qiyuanqiii merged 4 commits into
mainfrom
Qiyuanqiii/usage-dashboard
Oct 19, 2026
Merged

Qiyuanqiii merged 4 commits into
mainfrom
Qiyuanqiii/usage-dashboard

Conversation

@Qiyuanqiii

@Qiyuanqiii Qiyuanqiii commented Oct 18, 2026 •

Copy link
Copy Markdown
Member

Summary

在「设置 → 用量统计 / Usage」集中展示 Universal-Code 自身的 Token、输入/输出/缓存、已记录费用、模型占比、最近会话、趋势和活动热图。支持今日、近 30 天、全部历史与会话跳转;沿用 Mono 字体和现有主题,中英文即时切换,窄屏改为单列。页面打开时每分钟刷新。活动热图使用正方形格子;鼠标悬停、点击或键盘选中时显示白色边框、日期和 Token 浮层,窄屏下浮层保持在图表范围内。

新增只读 GET /api/v1/usage,从持久化终态回执汇总主代理、子代理、并行调用和上下文压缩。排除尚未发出的调用及未启动就取消的分片,保留失败消耗与旧版 fanout Token。Token 按调用完成时间、费用按实际结算时间划分;缓存是输入的子集。金额仅包含已定价的实际结算,缺失用量和费用分别显示覆盖情况。无数据库迁移,使用现有读取权限。

下面是实际浏览器截图,数值为用于展示完整图表的演示数据。

深色用量统计

390px 窄屏截图

窄屏用量统计

Validation

  • go test ./internal/store ./internal/httpapi -run '^TestUsageStatistics' -count=1
  • go test ./internal/httpapi -run '^TestOpenAPI' -count=1
  • go run ./cmd/protocolregistry -check、go run ./cmd/surfacecheck
  • Windows 原受限进程测试和 6 项脚本/argv 边界测试:GitHub 验证通过,包含目录 JSON 名称、长度和属性断言。
  • 新页面 8 项前端测试,以及 Settings、Sidebar、导航的相关 50 项测试
  • npm run build、npm run typecheck、npm run check:api、git diff --check
  • Windows Edge 实际 API/SQLite:离线模型完成两次调用,32 输入 + 32 输出 = 64 Token;未记录费用显示未知,缺少读取令牌返回 401;期间切换和会话跳转正常。
  • 实际页面检查:1440px、390px、320px,中英文、深色/浅色/雾透;热图键盘操作与无横向溢出检查。额外演示数据仅用于布局截图。

本地运行上述定向验证;全量测试和 go vet ./... 由 CI 执行。覆盖了四类回执的调用身份、历史 fanout、跨日结算及读取授权;生成的 OpenAPI/TypeScript 文件通过生成一致性检查,未作为手工源码逐行审阅。

修复 Windows 固定 PowerShell 命令首次查找模块时扫描过慢的问题:从 $PSHOME 下的确定路径显式加载所需的两个系统模块,保留原有受限令牌、Job 和超时。现有 native 测试增加目录输出的名称、长度和属性校验。

Surface governance

  • No Surface is added, promoted, downgraded, deprecated, or removed.
  • Registry item(s): N/A — no Surface change

Audit

  • 未包含凭证或真实用户运行数据;截图使用演示数据。
  • 统计只读,不触发账本结算、修复或外部供应商请求。
  • 更新 docs/usage.md 的入口、口径、未知值和截图说明。

@Qiyuanqiii
Qiyuanqiii merged commit 52fde97 into main Oct 19, 2026
22 checks passed
@Qiyuanqiii
Qiyuanqiii deleted the Qiyuanqiii/usage-dashboard branch October 19, 2026 03:45
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.

1 participant