AI Agent 把 Mac 内存吃满了?用 Baa 找回被遗忘的进程
编码 Agent、无头浏览器和临时开发服务器很容易在任务结束后继续留在后台。问题不只是“内存用得多”:你可能不知道哪个进程还活着、它是否空闲、结束它会释放多少资源。直接在活动监视器里乱关进程,既费时间,也可能误杀仍在工作的任务。
Baa 是一个 MIT 许可的 macOS 菜单栏小工具,项目 README 要求 macOS 14 或更新版本及 Xcode Command Line Tools。它显示可用内存,在压力升高时改变状态颜色;同时尝试找出被遗忘的应用、脚本、Agent 子进程和开发缓存。它的取舍很明确:发现并提示,不会自动杀进程,由用户确认后再释放。
它关注的不只是“谁占内存最多”
Baa 列出的候选包括:应用或终端已经关闭但仍残留的进程、由 AI Agent 启动且空闲 15 分钟以上的任务,以及体积较大且一段时间没有 CPU 活动的程序。README 还特别说明会观察 macOS 的 memory pressure,而不是只看内存使用比例——系统主动利用空闲内存做缓存,并不等于机器马上会卡死。
因此它更像一个待处理清单,而不是“内存优化器”。在使用 Claude Code、其他编码 Agent 或本地模型的机器上,它可以帮助发现结束会话后遗留的开发服务器、无头浏览器或闲置 Ollama 模型。README 还提到可清理旧构建产物和包缓存等开发磁盘垃圾。具体识别结果仍取决于应用的运行状态,工具也不会替你判断项目数据是否可以删除。
尤其在并行 Agent 工作流中,某个终端窗口关闭并不代表它启动的所有子进程都会同步退出。一个遗留的本地服务可能占着端口,另一个仍加载在内存里的模型则可能影响后续实验。Baa 的菜单栏提示把这些“不知道还在运行”的东西集中起来,让清理从猜测变成逐项检查。它并不会解释进程与原始 Agent 会话的完整因果链,因此团队仍应为长期任务保留自己的命名、日志和关闭流程。
安装与确认后释放
项目提供从源码构建的安装方式:
git clone https://github.com/selviarora/baa && cd baa ./install.sh
README 表示脚本会把应用构建到 ~/Applications、设置登录时启动,并安装 baa 命令。首次使用前,先在菜单栏确认状态,再从终端查看候选项:
baa baa disk
内存候选会显示 ID;确定某一项确实不再需要后,可按 ID 释放,或者一次处理所有候选:
baa free <id> baa free all
磁盘清理同样先查看清单,再选择单项或全部清理:
baa disk clean <id> baa disk clean all
all 是方便选项,不是默认建议。对开发机而言,闲置数据库、模拟器、模型服务可能看起来“没在忙”,但仍有尚未保存的状态或正在等待请求。稳妥的顺序是先检查候选名称和预计释放量,再逐项清理;不确定时保留进程,回到对应 Agent 或终端确认任务状态。
适合谁,不适合谁
如果你经常并行运行编码 Agent、浏览器自动化或本地推理服务,Baa 提供了比手动翻活动监视器更直接的“遗留任务盘点”。它也覆盖磁盘上的旧构建和缓存,适合把它当作开发环境的轻量清理入口。
但它不是容器隔离、进程配额或系统级资源调度器,也不能防止 Agent 启动过多任务;清理动作依旧需要人工判断。项目目前是 macOS 菜单栏应用,不能把安装说明直接套用到 Linux 或 Windows。若团队需要可审计的自动回收策略,应使用受控的沙箱和生命周期管理,而不是把“看见一个可清理项”当作安全许可。
这类工具的价值不是承诺释放多少内存,而是让后台遗留物变得可见,并把最后的决定交还给操作者。对 Agent 工作流来说,先弄清哪些进程由哪个任务启动,再决定是否释放,比单纯追逐一个更低的内存数字可靠得多。