Skip to content

Pulse 24.0.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 20:38
88ae4d0

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