Claude Code、Codex跑完任务不错过:Muxy如何实时追踪10大AI编码代理
【免费下载链接】muxyLightweight and Memory efficient terminal for Mac built with SwiftUI and libghostty项目地址: https://gitcode.com/gh_mirrors/muxy1/muxy
Muxy 是一款基于 SwiftUI 与 libghostty 构建的轻量 Mac 终端,它内置了 AI 编码代理实时追踪能力:在 Muxy 终端里运行 Claude Code、Codex 等 10 余款 AI 代理时,Muxy 会自动安装生命周期 Hook、监听前台进程,把每个代理"工作中 / 等待输入 / 已完成"的状态实时呈现在分屏状态点、工作树徽标和桌面通知里,任务一跑完立刻提醒你。
Muxy 是什么:为 AI 代理而生的轻量终端
Muxy 主打"轻":内存占用低、启动快,同时提供分屏、垂直标签页、Git worktree、快速终端等现代终端能力。更关键的是,它把自己变成了一个AI 代理的"控制台"——
- 🪟 每个终端分屏(pane)独立追踪一个 AI 代理的生命周期;
- 🔔 代理完成回合(turn)时推送应用内 Toast 与 macOS 原生桌面通知;
- 📊 状态聚合到 worktree 和项目层级,Agents Focused 侧边栏一眼看到哪个项目有代理在忙;
- 🧩 状态还会以
agent.status事件开放给 Muxy 扩展生态。
官方文档见:docs/features/ai-notifications.md
覆盖清单:哪些 AI 编码代理被追踪?
Muxy 目前内置 11 款代理的完整集成,全部在 Muxy/Services/Providers/ 目录下以"Provider"实现:
| 代理 | Provider 源码 | Hook 入口脚本 |
|---|---|---|
| Claude Code | ClaudeCodeProvider.swift | muxy-claude-hook.sh |
| Codex | CodexProvider.swift | muxy-codex-hook.sh |
| Cursor CLI | CursorProvider.swift | muxy-cursor-hook.sh |
| GitHub Copilot | CopilotProvider.swift | muxy-copilot-hook.sh |
| Antigravity CLI | AntigravityProvider.swift | muxy-antigravity-hook.sh |
| Grok | GrokProvider.swift | muxy-grok-hook.sh |
| Droid | DroidProvider.swift | muxy-droid-hook.sh |
| Kiro CLI | KiroProvider.swift | muxy-kiro-hook.sh |
| OpenCode | OpenCodeProvider.swift | opencode-muxy-plugin.js |
| Pi | PiProvider.swift | muxy-pi-extension.ts |
| Xal | XalProvider.swift | muxy-xal-plugin.ts |
其中 Claude Code、Codex、Cursor、Copilot 走各家官方 Hook 机制(如 Claude Code 的~/.claude/settings.json中的 Stop / Notification / PermissionRequest 等事件);OpenCode、Pi、Xal 这类自带插件系统的工具则通过轻量插件转发事件,最终统一交给同一个桥接程序。
双重追踪机制:Hook 为主,进程探测兜底
Muxy 的追踪不是"猜",而是两套独立信号源互为备份,Hook 信号永远是权威。
第一层:Hook 事件驱动(精确信号)
每个 Provider 安装时,Muxy 会在对应工具的配置里写入自己的 Hook,例如 Claude Code 集成会把 muxy-claude-hook.sh 挂到 7 个生命周期事件上。这些脚本极薄——只做一件事:exec同目录下编译好的muxy-hook桥接二进制,事件就通过本地 Unix Socket(~/Library/Application Support/Muxy/muxy.sock)以 v3 协议的 JSON 行送达 Muxy:
{"v":3,"kind":"agent_event","provider":"claude_hook","phase":"finished","title":"Claude Code","body":"Done"}phase只有三种:working(干活中)、waiting(等你的确认/输入)、finished(回合结束)。协议细节、去重与重试策略都在 docs/features/ai-notifications.md 的 "Protocol (v3)" 一节。
第二层:前台进程检测(兜底信号)
万一 Hook 缺失或配置坏了怎么办?Muxy 的 AIAgentDetector.swift 会持续检查每个分屏的前台进程名,把它和 11 款代理的可执行文件名(claude、codex、cursor…)做规范化比对,认出"这里跑着一个代理"。
细节上非常克制,避免误判:
- 检测发现"工作中的代理"离开前台后,Muxy 给4 秒宽限期等 Hook 的
finished事件,窗口内 Hook 永远胜出,不会提前置闲; waiting状态的代理进程还活着,不能用同一标准——宽限拉长到30 秒,且每轮结束先确认进程是否真的消亡,防止把"真正在等你输入"的代理误判为结束(实现见 AgentStatusStore.swift 中的detectionLossGrace与waitingDetectionLossGrace)。
三态模型:working / waiting / finished 如何呈现
状态收敛在 AgentStatusStore.swift 中,按working > waiting > idle的优先级向 worktree 和项目聚合:
- 🟢working:代理正在执行,侧边栏与工作树显示忙碌状态点;
- 🟡waiting:代理停下等你——例如 Claude Code 弹出权限请求,此时你会收到"需要关注"通知;
- ⚪finished → idle:回合完成,触发完成徽标 + Toast + 桌面通知,Agents Focused 侧边栏随即移除该项。
会话结束(代理进程退出)与回合结束是两回事:进程退出会立即结束该 pane 的代理会话,但已完成回合的徽标和通知仍保留,方便回头查看。
在哪里开启与测试:Settings → Notifications 一键排障
无需手写任何配置。打开Settings → Notifications(界面代码见 NotificationSettingsView.swift),每个 Provider 一行,自带三件套:
- 开关:按工具启停追踪;
- 状态点:健康引擎实时汇报——已安装 / 需要修复 / 冲突(
conflict表示发现了非 Muxy 的同名 Hook,Muxy 绝不会覆盖你的第三方配置); - Test 按钮:通过真实 Socket 发一条测试事件,验证"桥接二进制 → Socket → 服务端 → 应答"整条链路;Refresh按钮则重新铺设 Hook 文件并再次校验。
健康引擎是声明式"验证 + 修复":启动时、工具可用时、配置文件被外部修改时(FSEvents 监听~/.claude、~/.codex等)都会自动重新校验并在漂移时原位修复,且带写回哈希与限速,不会自我触发死循环。相关实现可看 HookInstaller.swift 与 HookHealthStore.swift。
常见问题:收不到通知怎么办?
按顺序排查(详见 docs/user-guide/troubleshooting.md):
- 🔍 到 Settings → Notifications 看对应 Provider 的状态点,点Refresh重新铺设,再点Test确认链路;
- 🔁 OpenCode / Xal 的插件在启动时加载——Muxy 修复文件后需重启正在运行的会话;Copilot CLI 修复后同样重启 CLI 才能加载新配置;
- 📄 Hook 投递失败会记录到
~/Library/Application Support/Muxy/hooks.log;Socket 是否存活可检查muxy.sock是否存在; - 🌐 SSH 远程跑的代理不在本机进程表里,检测层看不到它,此时完全依赖 Hook 或 pane 关闭来结束会话。
小结
Muxy 用一个很聪明的架构解决了"AI 代理跑完没人知道"的痛点:Hook 提供精确事件、进程检测提供兜底、四态状态机负责聚合、健康引擎负责自愈,把 Claude Code、Codex 等 10 余款 AI 编码代理的生命周期统一收敛成你看得懂的状态点和通知。装好 Muxy,把代理跑在它的终端里,剩下的就不用管了——任务一完成,提醒自然会到。
【免费下载链接】muxyLightweight and Memory efficient terminal for Mac built with SwiftUI and libghostty项目地址: https://gitcode.com/gh_mirrors/muxy1/muxy
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考