AI 编码 Agent 实时可观测性工具
在一个终端面板中监控 Claude Code 和 Codex 的 Token 消耗、费用、工具调用和文件变更。
- 多平台 — Claude Code + Codex 统一视图
- Token 追踪 — 输入、输出、缓存创建、缓存读取 — 按会话、按模型细分
- 费用估算 — 模型感知定价(Opus / Sonnet / Haiku / GPT-4)
- 工具调用追踪 — 名称、参数、结果、耗时、状态
- 会话时间线 — 按时间排列的事件流,含文件变更
- 对话消息 — 浏览每个会话中的用户提示词
- 时间范围统计 — 今日 / 本周 / 本月 / 全部 Token 与费用聚合
- 实时更新 — daemon 广播事件,TUI 实时刷新
- 零配置 —
agmon setup+agmon,单二进制文件,无依赖
| 平台 | 接入方式 | 说明 |
|---|---|---|
| Claude Code | Hooks + JSONL 日志监听 | agmon setup 自动注入 hooks 到 ~/.claude/settings.json |
| Codex | JSONL 日志监听 | 自动轮询 ~/.codex/sessions/ |
curl -sL https://raw.githubusercontent.com/tt-a1i/agmon/main/install.sh | shbrew install tt-a1i/tap/agmongo install github.com/tt-a1i/agmon/cmd/agmon@latestgit clone https://github.com/tt-a1i/agmon.git
cd agmon
make install# 1. 配置 Claude Code hooks
agmon setup
# 2. 启动 TUI(自动启动 daemon)
agmon就这样。正常使用 Claude Code 或 Codex,agmon 在后台自动采集所有数据。
| 命令 | 说明 |
|---|---|
agmon |
启动 TUI(自动启动 daemon) |
agmon daemon |
仅启动 daemon |
agmon status |
快速查看会话摘要 |
agmon report [session] |
详细文本报告 |
agmon cost [today|week] |
Token 用量统计 |
agmon clean [days] |
清理 N 天前的历史数据(默认 7 天) |
agmon setup |
配置 Claude Code hooks |
agmon uninstall |
卸载 hooks 并停止 daemon |
agmon version |
显示版本 |
按 Tab 切换视图:
| 视图 | 内容 |
|---|---|
| Dashboard | 会话列表(费用、上下文占用、状态);汇总栏支持 t 键切换时间范围 |
| Messages | 从 Claude JSONL 日志中提取的用户对话消息 |
| Tool Calls | 实时工具调用流,支持展开/折叠查看详情 |
| Timeline | 按时间排列的事件:Agent 生命周期、工具调用、文件变更 |
| 按键 | 操作 |
|---|---|
Tab / Shift+Tab |
切换视图 |
j / k |
上 / 下导航 |
G |
跳到底部 |
Enter |
选择会话 / 展开详情 |
[ / ] |
切换会话(任意视图) |
/ |
过滤当前列表 |
t |
切换时间范围(今日 → 本周 → 本月 → 全部) |
c |
复制会话恢复命令 |
Esc |
清除过滤 |
q |
退出 |
Claude Code hooks ──→ agmon emit ──→ Unix socket
│
Claude JSONL 日志 ──→ ClaudeLogWatcher ──→│
│
Codex JSONL 日志 ──→ CodexWatcher ──────→│
▼
agmon daemon
│
SQLite (~/.agmon/data/agmon.db)
│
agmon TUI (Bubbletea)
- Daemon — 通过 Unix socket 接收事件,存入 SQLite,广播给 TUI
- Claude hooks —
PreToolUse、PostToolUse、SessionStart、SessionEnd等 - 日志监听器 — 每 3 秒轮询 JSONL 文件获取 Token 用量
- TUI — 连接 daemon,4 个视图实时刷新
~/.agmon/
├── data/agmon.db # SQLite 数据库
├── agmon.sock # Unix domain socket
└── daemon.pid # PID 锁文件
agmon uninstall # 移除 hooks,停止 daemon
rm -rf ~/.agmon # 删除所有数据
