What would you like to be added?
增强 /stats 命令,支持跨会话的持久化用量追踪和交互式全屏仪表盘,对标 Claude Code 的 stats 体验。
当前行为
/stats 仅展示当前会话的指标(token、工具调用、时长)
- CLI 退出后所有数据丢失(仅存在于内存中的
uiTelemetryService)
- 无法查看历史趋势或跨会话的聚合用量
期望行为
1. 用量持久化
会话退出时自动将用量摘要追加写入 ~/.qwen/usage-history.jsonl,包含:
- 按模型的 token 明细(input/output/cached/thoughts)
- 工具调用汇总
- 文件变更统计(增/删行数)
- 会话时长与项目路径
2. 交互式 /stats 仪表盘
交互模式下将 /stats 升级为全屏 Dialog,包含:
- Overview 标签页:GitHub 风格活动热力图(
·░▒▓█)、会话数、活跃天数、连续活跃天数、最长会话、常用模型
- Models 标签页:ASCII 每日 token 折线图、按模型占比展示 In/Out 明细及费用估算
- 日期范围切换:按
r 在 All time / Last 7 days / Last 30 days 之间循环
- 标签页导航:
Tab/Shift+Tab 切换 Overview 和 Models
3. Report 子命令
/stats report [today|week|month|all] 输出内联文本报告,/stats report export [json|csv] 导出文件。
4. 非交互模式兼容
headless 模式(-p)下 /stats 仍返回纯文本的当前会话统计,行为不变。
Why is this needed?
对于日常使用 CLI 编程助手的用户,了解 token 消耗模式至关重要:
- 成本感知 — 用户无法看到跨会话的累计开销。单次会话看起来便宜,但按天/周聚合后才能看到真实花费。
- 用量优化 — 了解哪些模型消耗最多 token、缓存命中率随时间的变化、哪些项目最活跃,有助于用户优化工作流。
- 使用趋势 — 连续活跃天数、活跃天数占比、会话趋势等指标让用户直观感受自己的使用模式,类似 GitHub 贡献图。
- 团队管理 — 共享 API Key 的团队需要按项目的用量明细来分摊成本。
Claude Code 已经提供了包含热力图、图表和日期过滤的交互式 stats 页面,Qwen Code 应该提供同等或更好的用量可视化能力。
Additional context
参考:Claude Code 的 stats 界面
Claude Code 的 /stats 渲染一个交互式全屏面板,包含:
- 贡献热力图日历
- 标签页切换(Overview / Models),支持键盘操作
- 每日 token 折线图
- 日期范围循环(All time / Last 7 days / Last 30 days)
- 趣味统计(最长会话、连续天数、趣味对比)
- 按模型占比的 token 明细
实现思路
- 持久化使用追加写入 JSONL(复用已有的
jsonl-utils.ts 中的 writeLineSync),保证崩溃安全
- Dialog 遵循已有的 Help/MCP/Hooks 对话框模式(通过
DialogManager 全屏接管)
- 热力图使用 Unicode 方块字符渲染;折线图使用 box-drawing 字符
- 已有子命令(
/stats model、/stats tools)保持不变,仍为内联面板
- 数据聚合复用
/insight 流水线中的 streak 计算逻辑

What would you like to be added?
增强
/stats命令,支持跨会话的持久化用量追踪和交互式全屏仪表盘,对标 Claude Code 的 stats 体验。当前行为
/stats仅展示当前会话的指标(token、工具调用、时长)uiTelemetryService)期望行为
1. 用量持久化
会话退出时自动将用量摘要追加写入
~/.qwen/usage-history.jsonl,包含:2. 交互式
/stats仪表盘交互模式下将
/stats升级为全屏 Dialog,包含:·░▒▓█)、会话数、活跃天数、连续活跃天数、最长会话、常用模型r在 All time / Last 7 days / Last 30 days 之间循环Tab/Shift+Tab切换 Overview 和 Models3. Report 子命令
/stats report [today|week|month|all]输出内联文本报告,/stats report export [json|csv]导出文件。4. 非交互模式兼容
headless 模式(
-p)下/stats仍返回纯文本的当前会话统计,行为不变。Why is this needed?
对于日常使用 CLI 编程助手的用户,了解 token 消耗模式至关重要:
Claude Code 已经提供了包含热力图、图表和日期过滤的交互式 stats 页面,Qwen Code 应该提供同等或更好的用量可视化能力。
Additional context
参考:Claude Code 的 stats 界面
Claude Code 的
/stats渲染一个交互式全屏面板,包含:实现思路
jsonl-utils.ts中的writeLineSync),保证崩溃安全DialogManager全屏接管)/stats model、/stats tools)保持不变,仍为内联面板/insight流水线中的 streak 计算逻辑