AI Token Monitor:在Linux桌面实时监控Claude、Gemini、Grok、Kimi配额

开源Linux桌面小工具,在Conky中以血条进度条实时显示AI Token使用量。支持Claude、Gemini、Grok、Kimi真实API轮询,显示剩余配额和重置倒计时。

  • Python
  • Conky
  • Linux
  • MIT
  • 更新于 2026-06-06

📦 资源信息

🔧 最后维护2026/6/6
🎯 版本1.0.0

痛点:同时管理六个 AI 服务,永远不知道哪个已经耗尽 #

现代开发者同时使用四到八个 AI 服务——Claude 处理复杂推理,Gemini 做长上下文分析,Grok 获取实时网络数据,Kimi 处理大型文档。每个服务都有独立的配额控制台、重置时间和账单页面。

结果是:在任务中途撞上限流,花五分钟切换浏览器标签,发现 Gemini 的免费配额在 UTC 午夜重置(不是你本地时间的午夜),再浪费十分钟 debug Kimi 为什么返回 429。

AI Token Monitor 通过一个始终可见的桌面小工具解决这个问题——无需离开编辑器,一眼看清所有服务状态。

● Claude  ░░░░░░░░░  无余额
● Gemini  ░░░░░░░░░  配额用完
● Grok    ░░░░░░░░░  耗尽
● Kimi    █████████  22.4M剩
● Codex   ─────────  18:42:01
● Kilo    ─────────  18:42:01

工作原理 #

监控工具由两个组件构成:

api_fetcher.py — 后台脚本(每 5 分钟 cron 执行),轮询各服务 API 并将结果写入 ~/token-monitor/api_cache.json

conky_ai.py — 每 30 秒读取缓存,输出带内联 ${color} 标签的 Conky 格式文本,Conky 将其渲染为桌面小工具。

api_fetcher.py  →  api_cache.json  →  conky_ai.py  →  Conky 显示
  (cron/5分钟)    (JSON 缓存)      (30秒轮询)     (常驻桌面)

这种架构确保 API 故障不会导致桌面卡死——缓存始终保存着最后一次已知状态。

血条式进度可视化 #

核心特色是血条风格的配额显示——一排 Unicode 方块字符直观展示剩余配额:

颜色状态
█████████ 绿色配额超过 50%
████░░░░░ 橙色剩余 20-50%
█░░░░░░░░ 红色低于 20%
░░░░░░░░░ 红色已耗尽 / 无余额
───────── 灰色未配置 API key

进度条宽度为 9 个字符,每个 约代表 11% 的配额。

安装步骤 #

# 1. 克隆仓库
git clone https://github.com/luckybbjason1/ai-token-monitor
cd ai-token-monitor

# 2. 安装
bash install.sh

# 3. 填写 API keys
nano ~/.config/.ai_monitor_keys

# 4. 重启 Conky
pkill conky && conky --daemonize --pause=1

安装脚本自动完成:

  • 将脚本复制到 ~/token-monitor/
  • 在 Conky 配置中添加 ${execpi 30 python3 ~/token-monitor/conky_ai.py}
  • 设置 api_fetcher.py 的 cron 定时任务

各服务支持情况 #

服务API 端点检测内容
Kimi(Moonshot)GET /v1/users/me精确剩余 Token 配额
Claude(Anthropic)POST /v1/messages响应头中的速率限制窗口
Gemini(Google)POST .../generateContent429 = 配额已用完
Grok(xAI)GET /v1/models403 = 余额耗尽
Codex / Kilo倒计时至 UTC+8 午夜

安全设计 #

API key 存储在 ~/.config/.ai_monitor_keys,文件权限为 chmod 600,并通过 .gitignore 排除在 git 之外。key 不会被打印到终端或写入日志——fetcher 在启动时读取一次,仅在 HTTP 请求期间保留在内存中。

扩展自定义服务 #

api_fetcher.py 末尾添加代码块:

# ── 自定义服务 ────────────────────────────────────
key = keys.get('yourservice')
if key:
    try:
        r = requests.get('https://api.yourservice.com/v1/usage',
                         headers={'Authorization': f'Bearer {key}'}, timeout=8)
        if r.status_code == 200:
            data = r.json()
            remain = data['quota_remaining']
            total  = data['quota_total']
            cache['YourService'] = {
                'ok': True,
                'label': f'{remain//1000}K剩',
                'pct': remain / total
            }
        else:
            cache['YourService'] = {'ok': False, 'label': 'API 错误'}
    except Exception:
        pass

然后在 conky_ai.pySERVICES 列表中添加 {'name': 'YourService', 'reset_h': 24}

dibi8 相关工具 #

如果你在管理多个 AI API 的使用成本,还可以参考:

获取代码 #

工具完全开源,MIT 许可证。

GitHub: github.com/luckybbjason1/ai-token-monitor

如果这个工具帮你避免了任务中途被限流的困扰,欢迎 Star 支持。也欢迎提 Issue 和 PR——特别期待 macOS 支持和新服务集成的贡献。

📦 出现在以下合集中

💬 留言讨论