2026年7月11日 2 分钟阅读

CTOP 实战:用终端面板实时监控你的所有 AI 编码 Agent 会话

tinyash 0 条评论

在你同时跑三四个 Claude Code 会话做不同任务时,有没有想过:哪个花了最多 token?哪个又快跳到上下文压缩了?今天的 API 费用已经烧了多少?

htop 看进程资源,它不关心 AI Agent 的上下文窗口;切到每个终端窗口手动看,又太累。

CTOP 就是为解决这个痛点而生的——一个终端 TUI 监控面板,实时展示你所有 AI 编码 Agent 的运行状态、资源消耗和费用统计。90⭐ MIT 开源,npm 一行安装。

安装

CTOP 提供多种安装方式,任选一种:

npm install -g ctop-claude

npx ctop-claude

brew tap aakashadesara/ctop && brew install ctop-claude

安装后直接运行 ctop 启动面板。如果当前没有运行中的 Agent 会话,你会看到一个空白面板——启动一个 Claude Code、Codex CLI 或 OpenCode 会话后,它就会自动出现。

TUI 面板速览

CTOP 的界面借鉴了 htop 的设计风格,分为几个核心区域:

列表视图:默认启动时看到的是表格模式,每一行代表一个 Agent 进程,列字段包括 PID、CPU%、内存、Agent 类型(Claude Code / Codex / OpenCode)、上下文使用率(带进度条)、已用 token 数、会话时长和预估费用。

面板视图:按 P 切换到卡片网格模式,每个 Agent 会话以卡片形式展示,适合同时监控 3-5 个会话的全貌。

快捷键记忆

按键功能
j/k/上下导航
P切换列表 / 面板视图
s / S切换排序列 / 反转
/过滤会话
d开关仪表盘
L开关日志面板
l查看会话详情
x / XSIGTERM / SIGKILL 终止会话
p置顶(Pin)重要会话

核心功能逐项看

上下文窗口追踪

上下文窗口条(context bar)是 CTOP 最有用的功能之一。它用视觉化进度条展示每条会话的上下文占用情况,分为输入(input)、缓存(cache hit)、输出(output)和空闲(free)四段。当条形接近满时,说明上下文即将压缩——你可以提前 /compact 或在合适时机重启会话。

在列表视图中,ctop ls --json 输出的 contextPct 字段可以直接被脚本读取:

ctop ls --json | jq '.[] | select(.contextPct != null and .contextPct < 20)'

费用估算

CTOP 按 Claude 和 OpenAI 的公开 API 定价,实时计算每个会话当前已经产生的 API 费用,并在仪表盘(按 d)中展示汇总数据。这对控制开发预算尤其有用——你可以在每月初设定一个心理上限,然后时刻看到目前跑了多少。

Token 波形图

在面板视图中,CTOP 会为每个 Agent 显示一个实时 token 脉冲波形图(sparkline)。如果你看到突然的脉冲高峰,说明 Agent 正在生成一个大块输出或处理大量上下文——是注意力转移的信号。

日志尾随

L 在拆分面板中实时流式查看当前选中 Agent 的对话日志,效果相当于 tail -f 但按会话组织,无需切换到对应的终端窗口。

会话控制

在 CTOP 中可以直接终止无响应或卡住的 Agent 进程:

  • x — 发送 SIGTERM(优雅关闭)
  • X — 发送 SIGKILL(强制终止)
  • K — 终止所有 Agent
  • A — 批量清理已退出的僵尸会话

CLI 模式

除了交互式 TUI,CTOP 还提供命令行模式供脚本和 AI Agent 自身调用:

ctop ls

ctop ls --json

ctop ls --agent claude

ctop ls --cwd ~/code/my-project

ctop get  --json

ctop log  --tail 20

ctop stats --json

更有趣的是 ctop whoami 命令——它能探测当前你在哪个 Agent 会话中(通过 $CTOP_PID → 父进程链 → $PWD 三重匹配),并返回匹配置信度标签(exactppidcwd-guessnone)。这让 Agent 可以实现"自我认知":知道自己是谁,在哪个项目目录下运行。

ctop whoami --json

Agent Skill 集成

CTOP 自带了 Claude Code Skill 文件,可以安装到你的 Claude Code 技能目录:

mkdir -p .claude/skills && cp -r skills/ctop .claude/skills/

mkdir -p ~/.claude/skills && cp -r skills/ctop ~/.claude/skills/

安装后,你可以直接问 Claude Code 类似这样的问题:

  • "我现在哪个 Agent 在跑?"
  • "所有会话今天花了多少钱?"
  • "有没有哪个会话的上下文快满了?"

Claude Code 会自动调用 ctop 的 CLI 命令来回答你。

桌面通知与告警

CTOP 支持桌面通知(按 n 开关),当 Agent 完成一个长任务时弹出提醒。CLI 模式下还可以用 ctop alerts 获取三类智能告警:

  • 低上下文(Low Context):会话的上下文窗口即将消耗殆尽
  • 空闲超时(Idle):Agent 长时间没有活动
  • 僵尸进程(Ghost):Agent 已退出但面板仍残留进程记录
ctop alerts --severity critical

自定义配置

CTOP 使用 ~/.ctoprc 配置文件:

{
  "refreshInterval": 5000,
  "contextLimit": 200000,
  "defaultView": "list",
  "theme": "dracula",
  "contextBarStyle": "block",
  "notifications": {
    "enabled": true,
    "minDuration": 30
  }
}

你也可以在启动时通过命令行参数覆盖:ctop --refresh 3 --pane

插件系统

如果默认的列字段不够用,可以在 ~/.ctop/plugins/ 目录下放 JS 插件来扩展自定义列:

module.exports = {
  name: 'git-branch',
  column: {
    header: 'BRANCH',
    width: 15,
    getValue: (proc) => proc.cwd ? getGitBranch(proc.cwd) : '-',
  },
};

重启 CTOP 后新列自动生效。

小结

CTOP 解决了 AI 编码 Agent 使用中的一个实际痛点——当你从跑一个 Agent 变成跑三四个、甚至在不同终端窗口里同时运行多个会话时,一个统一的监控面板就是刚需。

它和 htop 的设计哲学一致:先用工具看清全局,再做决策。你可以先看一眼仪表盘,发现某条会话的上下文快满了就 /compact,某条会话的 API 费用已经走了大半预算就考虑是否要提前终止——而不是等到 Cloudflare 账单出来才后悔。

发表评论

你的邮箱地址不会被公开,带 * 的为必填项。