tally
Health Warn
- License — License: GPL-3.0
- Description — Repository has a description
- Active repo — Last push 0 days ago
- Low visibility — Only 5 GitHub stars
Code Warn
- fs module — File system access in Resources/bloub/export.cjs
Permissions Pass
- Permissions — No dangerous permissions requested
No AI report is available for this listing yet.
Claude Code & Codex session status and AI usage quotas in your MacBook notch. 把 Claude Code / Codex 会话状态和各家 AI 配额(Claude、Codex、Cursor、Kimi、GLM…)放进刘海。SwiftUI + AppKit,零依赖。
Tally
把 Claude Code / Codex 的会话状态和 AI 配额放进 MacBook 刘海
谁在等你、谁跑完了、额度还剩多少,鼠标一停就知道。
A macOS notch app for Claude Code and Codex: session status, quota and usage monitor.
简体中文 | English
或者用 Homebrew 装(免放行):brew install --cask guokuaile/tally/tally
同时开着几个 Claude Code / Codex 会话,得不停切窗口看谁在等审批、谁跑完了;配额快见底了也不知道。Tally 是一个 macOS 刘海 app(Dynamic Island 式的交互):靠 hook 拿到每个会话的状态,配额和用量从各家接口与本地日志读;平时和刘海融为一体,有事才往下垂一条提示,鼠标停上去就展开成一整块面板。
为什么用 Tally
- 谁在等你,一眼看清:Claude Code 和 Codex 的会话按「等你 / 在跑 / 最近」分组;等审批、等输入、跑完了,刘海垂一条提示并响一声。
- 状态判得准:按 Esc 打断、API 报错、主回合结束后子 agent 还在后台跑,这些 hook 不报的情况也判得对,不会一直挂着「忙」。
- 一下回到那个终端:点一行(或 ⌘1–⌘9、⌘0)直接跳到会话所在的终端标签,tmux 的 pane 也行;关掉的会话点「接着聊」开个新窗口接着聊。
- 各家额度摆一排:Claude、Codex、Cursor、Antigravity,加上 DeepSeek、Kimi、智谱 GLM、New API 中转站;Claude 和 Codex 还有今日 / 本周花费和配速线,照这个速度会不会在重置前用完一眼能看出,过 80% 和用完都会提醒。
- 本地、原生、零依赖:SwiftUI + AppKit,只读各家登录留下的 token(不刷新、不往钥匙串写),没有统计上报。
顺手还带着:网速与代理、内存与电池、在跑的 app、文件架、保持唤醒(含合盖不休眠),和一只可选的菜单栏小恐龙。
和同类工具的区别
| 你可能已经在用 | 它们侧重 | Tally 补上的 |
|---|---|---|
| CodexBar、ccusage、Claude Code Usage Monitor | 菜单栏或终端里看 Claude / Codex 的用量与配额 | 用量之外还有会话状态:谁在等你审批、谁跑完了,点一行跳回那个终端标签或 tmux pane,关掉的会话一键接着聊 |
| Claude Pulse、Vibe Island、AgentNotch、vibe-notch、notchi | 刘海里看 Claude Code(部分也支持 Codex、Cursor)的会话 | 打断、API 报错、主回合结束后子 agent 还在跑,这些 hook 不报的状态也判得准;配额覆盖 Claude、Codex、Cursor、Antigravity、DeepSeek、Kimi、智谱 GLM、New API 八家,带花费与配速线 |
| Atoll、boring.notch | 刘海里放音乐、文件架、系统信息 | 以 agent 会话和 AI 配额为主,网络、系统、应用、文件架顺带;零依赖、只读各家 token、没有统计上报 |
五个页面
![]() AI:会话列表 + 各家用量条 |
![]() 网络:吞吐、Wi-Fi、IP、DNS |
![]() 系统:CPU、内存、电池、废纸篓 |
![]() 应用:在跑的 app 按内存排 |
- AI:会话行带提供方标志和模型名。会话跑完或在等你时,刘海垂一条提示并响一声;面板开着时不提示,会话所在的 Ghostty / Terminal.app / iTerm2 标签正在前台时也不打扰;合盖只剩外接屏时改发系统通知。
- 网络:网卡吞吐(最近 60 秒折线)、Wi-Fi 信号、本机 IP、网关、DNS;开着系统代理或代理软件时多一张卡片,认出是哪个代理 app、端口、有没有 TUN(接了 mihomo 内核的控制接口时还显示模式)。
- 系统:芯片、内存、CPU、磁盘、开机时长,电池健康,内存大户前三,废纸篓大小与一键清空。
- 应用:在跑的 app 按内存排,Dock 里看不见的菜单栏工具和后台 app 带标记,点行打开,右键退出。
- 音乐:系统「正在播放」的那首歌——封面、歌名、歌手,上一曲 / 播放暂停 / 下一曲。Apple Music、Spotify、酷狗、网易云、浏览器里的视频都认,不弹授权;页签可以常驻,也可以有东西在播才出现。
- 文件架:把文件拖到刘海上暂存一份副本(脚本里
open -a Tally <文件>、新截图也能自动放进来),之后拖出去、AirDrop 或打开;到了保留时间自动清掉(文件默认 1 天,截图默认 30 分钟,设置里可调)。

25 秒完整走一遍:提示条 → 悬停展开 → AI、网络、系统、应用、文件架五页。
https://github.com/user-attachments/assets/118fcdd1-92fb-4f42-9dde-9b452a773ada
悬停展开、快捷键、文件架、提示音、配额提醒、各家用量都能在设置里单独关掉;「全屏 app 时隐藏面板」「新截图自动放进文件架」默认关,要用在设置里打开。
菜单栏小恐龙
睡觉 · 跑步 · 冲刺(蛋过 70% 变橙) · 生气(蛋过 85% 变红裂开)
设置「面板」里打开(默认关)。恐龙跟着 CPU 睡觉、跑步、冲刺,内存吃紧就冲刺、生气;身边一颗窝里的蛋按内存已用填满,70% 变橙、85% 变红裂开。点它展开面板到「系统」页。
安装
Homebrew(推荐,装完不用再放行):
brew install --cask guokuaile/tally/tally
或者下载 DMG:
下载 Tally.dmg,把 Tally 拖进「应用程序」。
在终端放行一次,再从「应用程序」里打开:
xattr -dr com.apple.quarantine /Applications/Tally.app
[!IMPORTANT]
Tally 是个人项目,没有 Apple 开发者签名和公证,macOS 默认会拦下来,所以要有第 2 步。不想敲命令的话,先双击打开一次,被拦下后去「系统设置 → 隐私与安全性」最下面点「仍要打开」。提示「已损坏,无法打开」是同一回事,执行上面那条命令即可。
一定从「应用程序」里打开。直接在 DMG 或下载文件夹里运行时,系统会把 app 挪到临时位置,这时设置里不让注册 hook(那个路径重启就失效)。
系统要求:macOS 15 及以上、Apple Silicon、带刘海的 MacBook(2021 年起的 14 / 16 英寸 MacBook Pro、M2 及以后的 MacBook Air);界面为简体中文。别的 Mac 能启动,但面板不会出现(提醒改发系统通知)。
接上 Claude Code 和 Codex
打开设置(面板右上角齿轮,或展开时按 ⌘,)→「hook」→ 两边各点一次「安装」。
- Claude 侧改
~/.claude/settings.json,Codex 侧改~/.codex/hooks.json和~/.codex/config.toml(写入信任哈希);改之前都备份成.tally-backup,你原有的 hook 不动。设置过CLAUDE_CONFIG_DIR/CODEX_HOME的会装到那里,用量和配额也跟着读那里;CODEX_HOME只写在 alias 或启动脚本里、Tally 读不到的,会从~/.codex*里按会话记录认出终端 codex 用的那个目录,不会装进 ChatGPT 桌面版的目录。 - 装之前就开着的会话要重开一次才会挂上,Codex 只在启动时读 hook。
- 装好后每一侧下面显示「最近收到事件」;一直显示「还没收到过」时点「自检」,能看出是 hook 本身跑不起来,还是 agent 没在调它。
支持哪些
| Agent | 会话状态 | 跳回终端 | 接着聊 |
|---|---|---|---|
| Claude Code | ✓ | ✓ | claude --resume |
| Codex | ✓ | ✓ | codex resume |
| 用量 | 配额 | 花费 / 余额 |
|---|---|---|
| Claude | 5 小时、7 天、按模型的周窗口(带配速线) | 今日 / 本周花费 |
| Codex | 5 小时、7 天(带配速线) | 今日 / 本周花费 |
| Cursor | 「Cursor 模型」「其他模型」两个池 | — |
| Antigravity | Gemini、Claude 两个池 | — |
| DeepSeek | — | 余额 |
| Kimi | Kimi Code 会员 5 小时、7 天(带配速线) | 开放平台余额 |
| 智谱 GLM Coding Plan | 5 小时、7 天(带配速线) | — |
| New API 中转站 | — | 余额 |
后四家默认关,在设置「用量」里打开。key 先从 Claude Code 设置、Kimi Code、zcode、opencode 里自动找,找不到再手填;智谱的配额接口没有公开文档,改版可能失效。
点会话行能跳到哪些终端| 终端 | 点会话行 |
|---|---|
| Ghostty、Terminal.app、iTerm2 | 切到那个会话所在的标签 |
| tmux | 切到那个 pane;外层是 Terminal.app / iTerm2 时连标签一起切,别的终端带到前台 |
| VS Code、Cursor | 打开会话所在的工程窗口 |
| Warp、kitty、WezTerm | 只把 app 叫到前台(没有稳定的脚本接口) |
表外的终端点了会提示找不到窗口。「接着聊」回到会话原来的终端开新窗口(Ghostty、Terminal.app、iTerm2;tmux 里开一个新的 tmux 窗口),其余情况装了 Ghostty 用 Ghostty,没装用 Terminal.app。
快捷操作
| 操作 | 效果 |
|---|---|
| 鼠标停在刘海上 / 移开 | 展开 / 收起 |
| ⌥⇧T | 展开并钉住 / 收起 |
| 两指横滑、三指轻扫、数字键 1–9 | 翻页 |
| ⌘1–⌘9、⌘0 | 跳到第 N 个会话(⌘0 是第 10 个),按住 ⌘ 显示编号 |
| 齿轮、展开时按 ⌘, | 设置 |
| 右键收起的刘海 | 菜单:设置、刷新用量、退出 |
权限与隐私
用到时才会问的权限
- 自动化(控制终端):跳回终端、接着聊、判断会话标签是否在前台。第一次控制某个终端时系统问一次。
- 管理员密码:只跟「合盖也不休眠」有关。第一次打开时装一条
/etc/sudoers.d/tally免密规则,只放行开 / 关休眠的两条pmset和删掉这条规则自己;另外,启动时发现合盖不休眠开着、又不是 Tally 开的,会给一个「恢复」按钮,点它要输一次密码。 - 钥匙串:各家登录凭据只读,取值走系统自带的
security工具,平时不弹框。Codex、Cursor、Antigravity 平时读本地文件或本地服务,钥匙串只作兜底。 - 通知:只在没有刘海屏(合盖接外接屏)、第一次要发提醒时问。
- 文件夹访问:打开「新截图自动放进文件架」时,在选择面板里点一下截图文件夹;桌面受隐私保护,点这一下就是授权,不另弹框。
不会申请:屏幕录制、摄像头、麦克风(占用提示只读设备状态)、辅助功能、定位、完全磁盘访问。
数据:会话、日志统计、设置都留在本机,没有统计上报,也没有自动更新。主动联网的行为只有下面这些,每一行都能关。各家配额每 5 分钟查一次(展开面板、手动刷新也查,60 秒内不重复;接口回 429 就按接口退避),token 和 key 只随请求发给它自己那一家,不经过别的服务器。
| 联网 | 发给谁 | 带什么 | 在哪关 |
|---|---|---|---|
| Claude 配额 | api.anthropic.com | Claude Code 登录留下的 access token,只读不刷新 | 设置「用量」关掉 Claude |
| Codex 配额 | chatgpt.com | Codex auth.json 里的 access token,只读不刷新 |
设置「用量」关掉 Codex |
| Cursor 配额 | cursor.com、api2.cursor.sh | Cursor 登录留下的 access token | 设置「用量」关掉 Cursor |
| Antigravity 配额 | 先问本机 Antigravity 的语言服务器(127.0.0.1,不出本机);它没开才问 cloudcode-pa.googleapis.com | 云端那一步带钥匙串里 Antigravity 的登录 token | 设置「用量」关掉 Antigravity |
| DeepSeek 余额(默认关) | api.deepseek.com | 你填的 key,或 Claude Code 设置里指向它的那个 | 设置「用量」 |
| Kimi 配额与余额(默认关) | api.kimi.com;api.moonshot.cn 或 api.moonshot.ai | 你填的 key、Claude Code 设置里指向它的,或 Kimi Code 登录留下的 token | 设置「用量」 |
| GLM 配额(默认关) | open.bigmodel.cn 或 api.z.ai,跟 key 的区走,不会发给另一个区 | 你填的 key,或 Claude Code / zcode / opencode 里配好的 | 设置「用量」 |
| New API 余额(默认关) | 你填的站点 | 访问令牌和用户 ID | 设置「用量」 |
| 新版本检查 | api.github.com,启动时和之后每 24 小时一次 | 不带任何账号信息,GitHub 只看到 IP 和「Tally」这个 User-Agent | 设置「通用」关掉「检查新版本」 |
手填的 key 只存在本机 ~/Library/Application Support/Tally/providers.json(权限 600)。网络页读网卡计数和系统代理设置、代理卡片读本机的 mihomo 控制接口,都不出本机;定价表随 app 打包,不远程拉。
占用:面板收起时 CPU 0.8%(一个核的,60 秒中位数)、内存 145 MB(活动监视器「内存」列)。本机 14 寸 MacBook Pro(M3 Max)实测,配额开关按默认、刘海小人开着、一周 Claude 日志 480 MB。
常见问题
- 面板不出现:只在带刘海的内建屏上显示;合盖或只用外接显示器时会隐藏(提醒改发系统通知)。开了「全屏 app 时隐藏面板」的话,全屏 app 里也不出现。
- 全屏看视频时不想看到刘海面板:设置「面板」打开「全屏 app 时隐藏面板」。只认系统全屏(绿色按钮、⌃⌘F)。
- 提示「已损坏」或「无法验证开发者」:见「安装」第 2 步。
- 会话列表是空的:先到设置「hook」看是不是已安装、有没有「最近收到事件」;装之前开着的会话要重开;还不行就点「自检」。
- 点会话行提示「要允许 Tally 控制 ××」:去「系统设置 → 隐私与安全性 → 自动化」,打开 Tally 下面对应的开关。找不到开关时执行
tccutil reset AppleEvents com.aiden.tally,再点一次让系统重新问。 - 只把终端叫到前台、没切到那个标签:Warp、kitty、WezTerm 没有稳定的脚本接口,只能做到这一步。
- 配额显示「登录已过期」:去 Claude Code 或 Codex 里跑一轮,让它自己刷新登录。Tally 不刷新 token。
- 百分比后面带「~」:这一轮没取到新读数,显示的是之前的值。
卸载
- 设置「hook」里两边各点「移除」,只删 Tally 自己的那几条。
- 开过「开机自启」的,先在设置「通用」里关掉;开过「合盖也不休眠」的,在设置「面板」里取消「合盖不休眠的免密规则」。
- 退出 Tally,把
Tally.app拖进废纸篓。 - 想清干净,再删
~/Library/Application Support/Tally/。
用 Homebrew 装的:第 1 步照做,第 3、4 步换成 brew uninstall --zap --cask tally(连数据目录和开机自启一起清)。
Claude Code / Codex ──hook──▶ tally-hook ──▶ ~/Library/Application Support/Tally/sessions/<id>.json ──▶ 刘海面板
▲
transcript、Claude Code 自己的会话状态(补判打断与报错)
hook 只往本地写两样东西:会话状态文件,和一份「最近收到的事件」(给自检用),写完立即退出,从不拦 agent。面板盯着会话目录更新;hook 报不出来的情况(打断、报错),再读 transcript 和 Claude Code 自己的状态补判。配额来自本地日志和各家接口。设计细节见 docs/,参与开发见 CONTRIBUTING.md。
致谢
- Atoll:用量数据层移植自它(GPL-3.0),文件清单见 NOTICE。
- NotchDrop:文件架的交互参考了它,代码是重写的。
- Lobe Icons:提供方标志(MIT),取自 Pulse 整理的版本。
- 借鉴过的做法:vibe-notch 与 CodeIsland(终端标签在前台时不提示)、codenotch(读 Claude Code 自己的会话状态、429 退避)、codex-island(睡醒后缓一分钟再查配额)。
许可
GPL-3.0。Claude、OpenAI、Codex、Cursor、Antigravity 的名称与标志归各自所有者,Tally 只用它们标明是哪家的会话与用量;Tally 是个人项目,与 Anthropic、OpenAI、Anysphere、Google 均无关联。
觉得 Tally 好用的话,点个 ⭐ Star,让更多同样开着一堆 agent 的人看到它。
Reviews (0)
Sign in to leave a review.
Leave a reviewNo results found



