AX 爱鲜报

abtop

一款面向 AI 编程代理的终端监控工具,类似 btop/htop,但监控对象是 Claude Code、Codex CLI 与 OpenCode 会话。实时展示 token 用量、上下文窗口占比、速率限制、子进程与监听端口,Rust 编写,跨平台只读运行。

爱鲜报评分

0.0

0 人评分

3.8k

星数

是

中文

Rust

主语言

是

活跃

30

贡献者

人工分析

EDITORIAL

推荐理由

同时开多个 AI 编程代理时,很难知道谁在烧 token、谁快撞上速率限制、谁留下了没关的端口。abtop 把这些信息集中到一个 TUI 面板里,只读、无需 API Key,还支持 JSON 快照供脚本复用。对重度使用 Claude Code / Codex CLI 的开发者来说,是相当实用的运维视角补充。

适用场景

  • 同时运行多个 Claude Code / Codex CLI 会话时的统一监控
  • 观察 token 消耗与上下文窗口占用,提前规避速率限制
  • 排查 AI 代理遗留的孤儿进程与监听端口
  • 在 tmux 多窗格工作流中快速跳转到对应代理终端
  • 通过 --json 快照接入自建脚本或监控面板

优点

  • 只读采集本地进程与文件状态,不需要 API Key 或登录鉴权
  • 跨 macOS、Linux、Windows 原生支持,Windows 无需 WSL
  • 支持 Claude Code、Codex CLI、OpenCode 三种主流代理
  • 12 套内置主题,含 4 套色盲友好配色,界面可定制
  • 同时提供 TUI 与库/JSON 接口,便于二次开发集成

缺点

  • OpenCode 会话监控依赖系统安装 sqlite3 CLI
  • 上下文窗口占比、速率限制等能力在 OpenCode 上不完整
  • Windows 无 load average,LOAD 指标恒为 0
  • 推荐终端尺寸 120x40,小窗口下部分面板会被隐藏
上手难度 入门

abtop:给 AI 编程代理用的 btop

同时开着好几个 Claude Code、Codex CLI 会话时,你大概也遇到过这些情况:不知道哪个会话在猛烧 token、配额快用完了却没察觉、代理起了个服务忘了关。abtop 就是把这些信息收进一个终端面板的工具——思路和 btop / htop 一样,只不过监控对象换成了 AI 编程代理。

核心能力

  • 会话总览:自动发现本机正在运行的 Claude Code、Codex CLI、OpenCode 会话,支持多个 profile 并存。
  • Token 与上下文:按会话展示 token 用量与上下文窗口占用百分比,接近上限时给出提示。
  • 速率限制:实时查看配额消耗情况,避免撞墙。
  • 进程与端口:展示代理派生的子进程和监听端口,并支持识别孤儿端口。
  • 终端跳转:在 tmux、cmux、iTerm2 中按 Enter 直接跳到对应会话所在的终端。

所有数据都来自本地进程与文件状态,只读、不需要 API Key、不需要登录。

安装与使用

macOS / Linux 可用官方安装脚本,也可以走 Cargo:

cargo install abtop

Windows 原生支持,无需 WSL;OpenCode 会话发现需要额外安装 sqlite3 CLI。

常用启动方式:

abtop              # 启动 TUI
abtop --once       # 打印一次快照后退出
abtop --json       # 输出 JSON 快照,便于脚本消费
abtop --theme dracula
abtop --mouse      # 开启鼠标点击与滚轮

界面与主题

内置 12 套主题,包括 btop、dracula、catppuccin、tokyo-night、gruvbox、nord 等,另有 4 套色盲友好配色(high-contrast、protanopia、deuteranopia、tritanopia)以及两套浅色主题。运行时按 t 循环切换,选择会写入 ~/.config/abtop/config.toml。

配置与中文界面

配置文件支持隐藏指定代理、追加 Claude Code profile 目录、指定界面语言等:

theme = "btop"
hidden_agents = ["codex"]
claude_config_dirs = ["~/.claude-personal"]
language = "zh"

language 留空时会根据 LANG 自动判断,以 zh 开头即切换为简体中文。

作为库使用

abtop 同时是一个 Rust 库 crate,本地工具可以在进程内复用它的数据采集层,拿到与 TUI 相同的状态快照:

use abtop::app::App;

let mut app = App::new_with_config_and_claude_dirs(/* ... */);
app.tick_no_summaries(); // 不会调用 claude --print,不消耗配额
let json = serde_json::to_string(&app.to_snapshot(2_000)).unwrap();

注意 App 不是 Send,需要保持在单线程中使用。

适用人群

适合日常同时跑多个 AI 编程代理、关心 token 成本与配额、习惯在终端里工作的开发者。如果你只用单个代理且不关注资源消耗,收益会相对有限。

评论

登录后才可评论与评分

0 条评论

  • 暂无评论,来写第一条吧。