Agent Monitor · macOS 菜单栏应用

好几个 Agent 同时在跑,
谁在等你,一眼就知道。

Claude Code、Codex、DeepSeek Harness、Antigravity 的会话汇总在菜单栏一个图标里。等你授权时变橙,跑完了变绿,不用再挨个窗口去翻。

一个面板

四个 Agent 的会话,
汇到同一个地方。

Agent Monitor 只读地监听各家 agent 在本机写下的会话文件,文件一有变化,面板里对应的那一行就跟着变。

四种状态

颜色就是优先级。

橙色等你,绿色已完成,蓝色运行中,灰色空闲。菜单栏图标总是显示最需要你处理的那一种。

等你回复

Agent 要执行命令、需要你授权,或者在问你问题。命令原文直接显示在行里,不用切过去就知道它要做什么。菜单栏图标上会出现橙色数字。

git push --force origin main

已完成

一轮任务跑完,等你来看结果。只有亲眼看到它从「运行中」变成「空闲」才算完成,刚启动时不会误报。

运行中

正在跑工具或者在思考,右侧是已经跑了多久的秒表,下面一行是它此刻在做的事。

空闲

看过的、长时间没动静的会话折叠在最下面,需要时再展开,不占地方。

及时提醒

它在等你的时候,
你会知道。

会话转入「等你回复」或「已完成」时,发一条系统通知:哪个 agent、哪个任务、要执行的命令都写在通知里。点通知直接跳回对应的 app。

  • 授权请求、提问、完成,三类事件分别提醒
  • 一键暂停通知 1 小时,菜单栏铃铛会划线提示
  • 刚启动时扫描到的旧会话不会刷屏
通知已暂停 · 1 小时内不打扰

看完即清

点开就算已读,
列表只留没处理的。

点一行会切到对应的 agent 窗口,同时把它标为已读、归入空闲。结果一多,底部的「全部标为已读」一次清空。

  1. 运行中
  2. 已完成
  3. 已读 · 空闲

安全与性能

只看,不碰。

Agent 的会话里有你的代码和命令。Agent Monitor 只读这些文件,不改动它们,也不把任何东西传出本机。

绝对只读

SQLite 以只读模式打开,锁探测用只读描述符做非阻塞 flock,探测完立刻释放。从不写入、修改或删除 agent 的任何文件。

零网络请求

没有遥测、没有更新检查、没有云端。会话数据只在本机内存和文件系统里流转。

不碰凭据

代码里不读取、不打印任何凭据文件,auth.json、.credentials.yaml、OAuth 令牌一律跳过。

几乎不占资源

靠 FSEvents 监听文件变化,约 300ms 去抖后刷新,另有 15 秒一次的兜底轮询。空闲时 CPU 占用低于 0.1%。

工作原理

从一行日志,
到菜单栏的一个点。

会话文件

  • ~/.claude/projects/…/8f2c.jsonl
  • ~/.codex/sessions/…/rollout-01a1.jsonl
  • ~/.dsh/sessions/…/session.v4.jsonl.zstd
  • ~/.gemini/antigravity/conversation_summaries.db

FSEvents

变化去抖

300 ms · 15 s 兜底轮询

状态判定

进程存活 + status rollout 事件 session.lock 只读 SQLite

菜单栏

运行中

安装

构建一次,常驻菜单栏。

纯 Swift Package 构建,不需要完整的 Xcode。

agent-monitor — zsh

    
  • 系统macOS 26 或更新(Apple 芯片 / Intel)
  • 工具Swift 6.4+,Xcode Command Line Tools 即可
  • 依赖Homebrew zstd,用于读取 dsh 的压缩日志
  • 形态只在菜单栏,不占 Dock;可在设置里开机启动