Repository navigation
Pulse 24.0.0
24.0.0 — Exact(准确)
这一版做了取舍:只支持 7 个主流 Agent,而且只听它们自己说的话。Pulse 不再翻各家的会话文件去猜状态,
每一盏灯都来自 Agent 官方 hook 推送的事件。源码从 25.5k 行降到 17.5k 行,测试从 12.7k 行降到 7.1k 行。
不兼容旧版本。
7 个 Agent
- 能变红(需要你)的 5 个:Claude Code、Gemini CLI、Copilot CLI、OpenCode、Pi —— 它们的官方 hook
会在请求权限或向你提问时通知 Pulse。 - 只显示「运行中 / 轮到你」的 2 个:Codex(它的权限事件在自己的自动审核之前触发,会假红)和
Cursor(没有这个事件)。界面上直接写「不会告诉我们它在等你」,不再假装。 - 其余 26 个 Agent 移除:它们要么没有官方事件,要么只能靠解析文件猜。
事件驱动
- hook 是唯一的状态来源。 每个 Agent 装的都是厂商文档里的事件,只装不会影响 Agent 决定的那些
(不装 PreToolUse 一类会返回决定的 hook;Claude 的 hook 全部async)。OpenCode 和 Pi 各装一个
几十行的插件 / 扩展。安装可完全撤销:Pulse 记下原文件,卸载时逐字节还原;只改配置里的hooks
一段,其余内容和格式一字不动。一个 Agent 的配置坏了,不影响其他 Agent 安装。 - 整个文件扫描层删除(约 9k 行):目录遍历、20 多种格式解析、SQLite 读取、新鲜度窗口、
ps/lsof轮询、「读取受保护的应用数据」开关都没了。 - 一个会话状态机。 事件按顺序归约成每个会话的状态:空闲、运行中、需要你、轮到你、已结束。
回答了请求(对应工具的下一个事件、新的提问、忽略)红灯就灭;别的并行工具的活动不会把它误灭。 - 进程只用来判断「还在不在」。 用 libproc 找没有事件的 Agent 进程(Pulse 启动前就在跑的会话,
先显示「仅进程」),用 kqueue 监听进程退出来结束会话。没事时不轮询,扫描间隔从 30 秒退到 5 分钟。 - 标题和最后的消息只在需要时读:这一轮结束、等待或打开详情时,读 hook 告诉我们的那一个会话文件。
一键到提示符
- hook 触发时记下终端位置(tmux pane、iTerm 会话、tty、终端程序),↩ 直接落到那个 pane 或标签页。
- 能精确落点时按钮写「前往终端」,只能打开应用时写「打开应用」,并在行上说明。VS Code / Cursor 里
会打开会话所在的文件夹,但不能选中具体终端 —— 界面会照实说。
修复(发布前审计出的 19 项,择要)
- Gemini、Copilot 回答权限请求后红灯不灭 —— 现在装了它们的工具完成事件。
- 没有工具级事件的 Agent(如 Cursor)长时间工作不再被误判为停滞。
- 同一会话里并行的其他工具不会让真实的等待消失。
- Claude 的
idle_prompt不会让已看过的「轮到你」重新出现;第二个权限事件不会覆盖更具体的请求内容。 - 进程匹配只看可执行文件本身(
pinentry-mac不再被当成 Pi)。 - OpenCode 的子 Agent 并入父会话,不再单独成行。
- 安装和卸载不会并发;安装记录文件从一开始就是私有的;错误信息翻译成当前语言。
诚实说明
- 开发环境没有 Mac 和编译器:代码只在 CI(macos-26)上编译和测试过。各 Agent 的 hook 是否按文档
触发、落点是否精确,都还没在真机上验证过。 - Cursor 的 hook 格式来自第三方类型定义(官方文档站被代理拦截),是 7 个里最不确定的。
- Pulse 启动前已经在跑的会话,要等它的下一个事件才显示任务名和状态。
- 一个请求如果在 20 秒内紧接着这一轮结束,红灯会在宽限期结束后熄灭。
Gatekeeper
This build is ad-hoc / unnotarized (no Apple Developer ID in CI).
About stays preview — it is not Gatekeeper-ready and must not be
described as notarized stable. First open: Control-click → Open, or
xattr -dr com.apple.quarantine /Applications/Pulse.app.
Download verification
acc02ea6cef722aa848518e1a60a225e2f7fc53dd29f69165542484d28ca332b zig-out/package/pulse-24.0.0-macos-PulseBar.dmg