现在五花八门的工具是真的多。如果经常使用Claude Code 和Codex CLI的话,还是可以安装一个使用一下。首先Rust编写安装完之后没有多大。其次,监控内容确实不少,可以更好地了解运行情况。之前上班的时候,同事就经常吐槽这些大模型的黑盒怎么怎么的。我倒是觉得无所谓,慢慢摸索,都会清晰的。 abtop监控的内容比较多,如果想用起来,首先还是要看懂。

什么是 abtop
abtop 是一个类似 htop 的工具,但专门为 AI 编程代理设计。它能在一个实时 TUI(终端用户界面)中监控和管理你的 Claude Code 和 Codex CLI 会话。
GitHub 地址:https://github.com/graykode/abtop
为什么需要 abtop
✅ abtop 真正有用的场景
运行多个 AI 代理的开发者
同时跑 3+ 个 Claude Code 会话时,一屏看全所有信息 不用在多个终端间切换监控 成本敏感/API 配额限制
实时看 token 消耗和 rate limit 进度 及时发现成本飙升或接近触发限额 调试代理问题
看上下文窗口占用百分比,防止 context overflow 发现孤立进程和忘记关闭的端口 帮助诊断为什么代理卡住了
❌ 不需要 abtop 的场景
普通编程(没用到 AI 代理) 只用 ChatGPT/Claude Web 聊天 偶尔用一次 Claude Code
简单判断标准:你是否经常同时运行多个 Claude Code 会话,需要中央监控?是的话,强烈推荐装 abtop。
安装方法
macOS / Linux(一行命令)
curl --proto '=https' --tlsv1.2 -LsSf https://github.com/graykode/abtop/releases/latest/download/abtop-installer.sh | sh通过 Cargo
cargo install abtop其他平台
从 GitHub Releases 页面下载预编译二进制: https://github.com/graykode/abtop/releases
Windows
abtop 需要 Unix 工具(ps、lsof)。Windows 用户需使用 WSL:
wsl --install# 在 WSL 内执行上面的安装命令
基础用法
启动方式
# 启动交互式 TUI 界面abtop# 打印一次快照然后退出(不进入交互式界面)abtop --once# 安装 rate limit 钩子(可选)abtop --setup
推荐工作流(使用 tmux)
# 创建工作 sessiontmux new-session -s work# 分割窗格(左右)tmux split-window -h# 左窗格运行 abtop# 右窗格运行 claude code# 在 abtop 中按 Enter 就能直接跳到活跃的 Claude Code 窗格
注意事项
没有 --help命令:abtop --help会直接启动 TUI,不会显示帮助信息推荐终端大小:120x40 或更大。最小 80x24(部分面板会隐藏)
界面布局详解(重点)
这是学习难度的关键。abtop 的界面看似复杂,但理解了结构就很简单。
整体布局概览
┌─────────────────────────────────────────────────────────────────┐│ abtop v0.4.4 agents $1.00M ctx%26% 08:33 1+ 3● │├─────────────────────────────────────────────────────────────────┤│ ┌─────────────┐ ┌──────────────┐ ┌──────────────────────────────┐│ │ 可视化条形图 │ │ Context │ │ Project/Context/Window 信息 ││ │ (竖线条) │ │ 面板 │ │ ││ └─────────────┘ └──────────────┘ └──────────────────────────────┘├─────────────────────────────────────────────────────────────────┤│ ┌────────┐ ┌─────────┐ ┌────────┐ ┌────────┐ ┌───────────┐ ││ │ Quota │ │ Tokens │ │Projects│ │ Ports │ │MCP Servers│ ││ │ 面板 │ │ 面板 │ │ 面板 │ │ 面板 │ │ 面板 │ ││ └────────┘ └─────────┘ └────────┘ └────────┘ └───────────┘ │├─────────────────────────────────────────────────────────────────┤│ 会话详情表(最重要的地方) ││ ───────────────────────────────────────────────────────────── ││ ✦CC │ Project │ Status │ Context │ Tokens │ Memory │ Turn ││ ───────────────────────────────────────────────────────────── ││ CC │ observer│ Wait │ 0% │ 0 │ 270M │ 1 ││ CC │ claude- │ Exec │ 26% │ 703.2k │ 474M │ 16 │├─────────────────────────────────────────────────────────────────┤│ CHAT 面板(当前选中会话的聊天记录) │├─────────────────────────────────────────────────────────────────┤
第一部分:顶部信息栏
abtop v0.4.4 agents $1.00M ctx%26% 08:33 1+ 3●每个部分的含义:
abtop v0.4.4 | |||
agents $1.00M | |||
| 平均 Context% | ctx%26% | 所有会话的平均 context 占用 | 🔴 高 |
08:33 | |||
1+ 3● |
💡 学习重点:ctx%26% 是全局概览,如果这个数字快速上升,说明某个会话快要爆炸。
第二部分:顶部可视化区(竖线条)
:| :||| :| |:| :||| :| |:| :||| :| |703.2k Total Project Context Windowobserver... 0% 200.0kclaude-co... 26% 200.0k
这些竖线在干什么?
每一组竖线代表一个会话 竖线的高度 = 该会话的 token/context 使用量 竖线的密集程度 = 消耗速度 消耗快的会话线条会快速变高或闪烁
💡 学习重点:看竖线高度,快速判断哪个会话在吃资源。
第三部分:Context 面板(最容易忽视但很重要)
┌──────────────┐│ Context ││ ││ Token Rate │ ← 当前消耗速度│ 76.3k/min ││ ││ Total │ ← 累计消耗│ 703.2k │└──────────────┘
关键指标:
| 每分钟消耗 76300 个 token | ||
| 本次总共消耗 70.32 万个 token |
💡 学习重点:
Token Rate 从 235k → 76k 代表消耗速度下降,说明 /init已进行到中期突然飙升到 500k+ 代表可能有问题,考虑停止
第四部分:中间 5 个小面板
这些面板并排放在一起,依次是:
Quota(配额统计)
┌─────────────┐│ quota ││ ││ CLAUDE │ ← Claude Code 的配额│ CODEX │ ← Codex CLI 的配额│ ││ total │ ← 总消耗│ 703.2k ││ 76.3k │└─────────────┘
看什么:两行数字,上面是 Claude Code,下面是 Codex 的消耗。如果只用 Claude Code,关注上面的数字。
Tokens(当前会话的 token 分解)
┌──────────────────────┐│ tokens (observer-...)│ ← 正在看这个会话│ ││ Total: 0 │ ← 该会话总 token│ Input: ████░░░░ 0 │ ← 输入的 token│ Output: ████░░░░ 0 │ ← 输出的 token│ CacheR: ░░░░░░░░ 0 │ ← 缓存读取│ CacheW: ░░░░░░░░ 0 │ ← 缓存写入│ tokens/turn │└──────────────────────┘
看什么:
如果 Input/Output 都是 0,说明这个会话还没有交互(刚启动) 如果数字很高,说明这个会话已经消耗很多 token 进度条显示占用比例
Projects(项目信息)
┌────────────────┐│ projects ││ ││ HEAD -clean │ ← Git 分支(-clean = 干净)│ observer-... │ ← 项目名│ main +6 │ ← 分支名和 +6 未提交文件数└────────────────┘
看什么:项目是否干净,是否有未提交的更改。
Ports(端口监控)
┌──────────────────┐│ ports ││ ││ PORT SESSION ││ -3777 claude... │ ← 某个会话启动的本地服务└──────────────────┘
看什么:Claude Code 是否启动了本地服务器。如果有端口但对应会话已停止,就是"孤立进程"。
MCP Servers(MCP 连接)
┌──────────────────┐│ mcp servers ││ ││ no mcp servers │ ← 当前没有 MCP 连接└──────────────────┘
看什么:大多数情况下是空的,除非配置了 MCP。
第五部分:会话详情表(最核心)
这是你要重点学会读的地方。
┌─────────────────────────────────────────────────────────────────┐│ ✦CC Project Sess Summary Status Model Context│├─────────────────────────────────────────────────────────────────┤│ *CC observer-... 5b7a.. Not logged in Wait <synth 0% ││ CC observer-... a0ef.. You are a Claude Wait <synth 0% ││ CC claude-co.. 7ace.. <command>init Exec gpt5.m 26% │└─────────────────────────────────────────────────────────────────┘
每一列的含义:
| ✦CC | *CC | 红星 = 选中,CC = Claude Code | |
observer-... | |||
5b7a.. | |||
Not logged in | |||
| Status | Wait | Wait/Exec/Idle 三种状态 | 🔴 高 |
<synth | |||
| Context | 0% | 🔴 上下文占用百分比 - 最关键 | 🔴🔴🔴 |
703.2k | |||
474M | |||
16 |
💡 学习重点 - 三个最关键的列:
✦CC 列
红星(✦)= 当前选中的会话 这个会话的信息会显示在下面的 CHAT 面板 你可以用 ↑/↓ 切换选中 Status 列
Wait = 等待(可能等用户输入或等 API 响应)Exec = 执行(正在生成代码、分析项目)Idle = 闲置(完成了,等你下一个命令)Context 列 (最关键!)
0% = 刚启动,很安全 ✅26% = 正在执行,有空间 ✅75%+ = 接近爆炸,考虑停止 ⚠️100% = 会话崩溃 💥
实际读法例子:
查看这一行:CC claude-code-s... 7ace.. <command>init Exec gpt5.m 26%解读:- CC = Claude Code 会话- claude-code-s... = 项目名(某个项目)- 7ace.. = 会话 ID- <command>init = 正在运行 /init 命令- Exec = 正在执行中(不是等待)- 26% = Context 占用 26%,还有 74% 空间,安全- 703.2k = 已消耗 70 万 token结论:这个会话运行正常,继续监控即可。
第六部分:CHAT 面板
┌────────────────────────────────────────────────────┐│ SESSION (=5b7a9ba4-51b8-4bcc-88d7-1f9c9b284e7) ││ CHAT (2) ││ ││ U: You are a Claude-Mem, a specialized observer..││ A: Not logged in • Please run /login ││ │└────────────────────────────────────────────────────┘
看什么:
U: = 用户消息(你发的提示词或命令) A: = Claude 的回复 显示当前选中会话的聊天历史 用 ↑/↓ 切换会话后,这里会自动更新显示那个会话的聊天
关键指标说明
⚠️ 最关键的三个指标
1. Context % 占用百分比
这是最需要监控的指标。必须理解。
概念图:Context Window = Claude Code 的"工作记忆"┌─────────────────────────────────┐│ ████████████ 26% │ 现在用了 26%│ ▓▓▓▓▓▓▓▓ ││ │ 还剩 74% 可用└─────────────────────────────────┘随着对话增加:┌─────────────────────────────────┐│ ██████████████████████ 85% │ 接近饱和!│ ▓▓▓▓▓▓▓ ││ │ 只剩 15%└─────────────────────────────────┘爆炸:┌─────────────────────────────────┐│ █████████████████████████ 100% │ 会话崩溃│ ▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓▓ │ 无法继续└─────────────────────────────────┘
行动指南:
x 停掉 | |||
为什么会满?
生成了很多代码 分析了很大的项目 修改了多个文件
当 Context 快满时,你可以:
按 x停掉当前会话启动一个新的 Claude Code 会话 让新会话继续工作(它会看到你对项目的修改)
2. Token Rate 消耗速率
时间轴示例:时刻 1: Token Rate 235.0k/min (运行 /init 初期)││││││││││ (消耗很快)时刻 2: Token Rate 76.3k/min (运行 /init 中期)││││ (消耗变慢,分析进行中)时刻 3: Token Rate 5.2k/min (/init 完成)││ (已闲置,等你的命令)异常: Token Rate 1200k/min (突然飙升!)││││││││││││││││││ 🚨 可能死循环或问题
怎么判断是否异常?
/init | ||
| 突然飙升到 500k+ | 500k+/min | 🔴 异常,按 x 停掉 |
3. Status 会话状态
三种状态的含义:Wait├─ 等待用户输入├─ 等待 API 响应└─ 行为:停止消耗 token,进度条不动Exec├─ 正在执行(生成代码、分析项目)├─ Token Rate 会持续增长└─ Context % 会持续上升Idle├─ 会话闲置(完成了,没有任务)├─ 不消耗 token└─ 等待你的下一个命令
实际案例拆解
以你的真实截图为例:
abtop v0.4.4 agents $1.00M ctx%26% 08:33 1+ 3●Token Rate: 76.3k/min703.2k Total会话表:✦CC observer-... 5b7a.. Not logged in Wait <synth 0% 0 270M 1CC observer-... a0ef.. You are a Claude-Mem Wait <synth 0% 0 311M 8CC claude-co... 7ace.. <command-message>init Exec gpt5.m 26% 703.2k 474M 16
完整解读:
顶部信息
版本 v0.4.4 ✅ 总成本 £1.00M(约 100 万 token 价值) 平均 Context 26%(全局还有空间) 3 个活跃会话 消耗速率
76.3k/min(中等速度,比 /init 初期的 235k 降低了) 累计消耗 703.2k token 说明:/init 已进行到中期 三个会话分析
会话 1 (5b7a...):
会话 2 (a0ef...):
会话 3 (7ace...) ← 当前在运行 /init:
Status: Exec(执行中) Context: 26%(正在消耗,还有 74% 空间) Token: 703.2k(已消耗) Turn: 16(已交互 16 轮) 说明:这是主要的会话,正在分析项目 Status: Wait(等待中) Context: 0%(未使用) 说明:闲置或刚启动 Status: Wait(等待中) Context: 0%(未使用) 说明:闲置或刚启动 总体结论
✅ Context 还有空间(26% < 85%) ✅ Token Rate 逐步下降(正在进行中) ✅ 只有一个会话真正在运行(其他两个闲置) 建议:继续让 /init 跑,定期看 Context % 有没有超过 85%
快捷键大全
导航
↑↓ | |
kj |
操作
Enter | |
x | |
X | |
r |
视图
v | |
c | |
? |
退出
q |
其他
auto |
实用场景
场景 1:监控 /init 分析进度
场景设置:
# 终端 1:启动 abtopabtop# 终端 2:运行 Claude Code 分析项目claude /init
在 abtop 中观察:
时刻 1(初期):Token Rate: 235.0k/min第三行会话的 Context: 0%← 刚启动,高速消耗,还没用上 context时刻 2(中期):Token Rate: 76.3k/min第三行会话的 Context: 26%← 消耗速度下降,开始占用 context时刻 3(完成):Token Rate: 5.2k/min第三行会话的 Context: 35%Status: Idle← 分析完成,等待你的下一条命令
你的行动:
只需观察,无需干预 如果 Context % 接近 85%,考虑停止
场景 2:防止 Context Overflow(最重要!)
关键场景:运行长时间的 Claude Code 任务
# 启动多个 Claude Code 会话处理不同任务claude /init project-a # 会话 1claude /init project-b # 会话 2claude /analyze code # 会话 3
在 abtop 中监控:
会话 1: Context 45% ✅ 还有空间会话 2: Context 62% ✅ 继续会话 3: Context 78% ⚠️ 接近危险线↓按 ↑/↓ 选中会话 3按 x 停掉它↓或启动新会话继续任务
为什么要这么做?
Context window 是 Claude 的"工作记忆",满了质量急剧下降 不主动停止会导致代码生成错误或无法继续 提前停止 + 新会话会让工作更高效
场景 3:检测和清理孤立进程
场景:Claude Code 启动了本地开发服务器,但没正常关闭
# 某个会话启动了 npm dev server# 但你不小心 Ctrl+C 强制停止了 Claude Code# 导致 server 进程还在跑(孤立进程)
在 abtop 中看到:
Ports 面板:PORT SESSION-3000 (orphan) ← 孤立了!-5173 claude-code ← 正常
清理方法:
按 X(大写 X)会清理所有孤立进程不用手动 lsof 和 kill
场景 4:tmux 快速切换(提高效率)
工作流设置:
# 创建 tmux sessiontmux new-session -s work# 分割窗格:左 abtop,右 claude codetmux split-window -h# 左窗格(左边):abtop# 右窗格(右边):claude code 项目
使用方法:
在 abtop 中:1. 按 ↑/↓ 选中想跳转的会话2. 按 Enter3. 直接跳到那个 claude code 窗格4. 再按 q 回到 abtop效果:秒速切换,不用手动输入命令
支持的代理
abtop 只能监控本地运行的 AI 编程代理:
| Claude Code | ||
| Codex CLI | ||
原理:abtop 通过扫描本地进程、读取本地配置文件来工作。只有在你电脑上本地运行的代理才能被发现。
常见问题
Q:为什么 abtop --help 打开了 abtop,而不是显示帮助?
A:abtop 没有实现 --help 命令。当你输入不认识的参数时,它直接启动 TUI。这是设计如此。
Q:Context % 达到 100% 会怎样?
A:会话会崩溃或无法继续工作。Claude Code 会停止响应或质量严重下降。避免的方法是在 85% 左右就停止或新建会话。
Q:Token Rate 很高是正常的吗?
A:取决于你在做什么。/init 分析大项目时 200k+/min 很正常。如果是普通编程任务突然飙升到 500k+,可能有问题。
Q:如何区分不同的会话?
A:通过 Project 和 Sess 列。Project 显示项目名,Sess 显示会话 ID 的前几位。
Q:能否同时运行 Claude Code 和 Codex?
A:可以。abtop 会同时显示两者。但 Token/Quota 是共享的,要注意总消耗。
Q:Context % 什么时候会快速上升?
A:
生成了很多代码(一次生成 500+ 行代码) 分析了很大的项目(分析 10000+ 行代码) 多轮对话(超过 20 轮)
Q:Status 是 Wait 时会消耗 Token 吗?
A:不会。Wait 状态表示在等待,此时 Token Rate 接近 0,Context % 不变。
总结和最佳实践
✅ 何时安装 abtop
你主要用 Claude Code 进行编程 经常同时运行多个会话 想实时监控 token 成本 想防止 context overflow
📋 日常监控要点
每分钟扫一眼:1. 看顶部的 ctx%XXX└─ 如果快速上升 → 有会话在消耗 context2. 看会话表的 Context % 列└─ 最高的那个接近 85%? → 准备停止或新建会话3. 看 Token Rate└─ 稳定在 50-100k/min? → 正常└─ 突然跳到 500k+? → 可能异常,检查4. 看 Status 列└─ 有 Exec? → 在运行,继续监控└─ 全是 Wait? → 等待输入,可以新建会话
🎯 最佳实践
启动方式:
在 tmux 左窗格持续跑 abtop 其他窗格运行 Claude Code 这样既能看,也能快速操作
监控策略:
定期按 r刷新,确保数据最新Context % 接近 85% 时主动停止或新建会话 Token Rate 异常飙升时,按 x停掉问题会话
应急操作:
会话卡住 → 按 x停掉,用新会话继续孤立进程太多 → 按 X一键清理需要看原始代码 → 按 v切换视图
💡 核心心法
记住这三个数字:
Context % >= 85% → 危险,停止或新建Token Rate >= 300k → 异常飙升,检查会话 Status = Exec → 正在消耗,监控
记住这个原则:
提前停止 + 新会话比等到爆炸后重新开始要高效 N 倍
相关资源
GitHub:https://github.com/graykode/abtop Releases:https://github.com/graykode/abtop/releases Issue Tracker:https://github.com/graykode/abtop/issues
夜雨聆风