Skip to content

Pulse 31.0.0

Choose a tag to compare

@github-actions github-actions released this 17 Oct 16:17
98387de

31.0.0 — Deep(深)

一次往深处做的版本:每个 Agent 报得出的都读出来,读出来的在托盘、详情页、设置里说同一句话。
事件日志升到 v8,升级后旧的 v7 日志会被清空重来(只丢以前的时间线,不影响 hook)。

协议 v8

  • 新增三列:sub(哪个子代理说的)、err(这一步失败了)、took(这一步用了多久)。
  • 新增两种事件:stopped(你在 Agent 自己的提示符前按 Esc 停下:什么也不欠,不算「轮到你」,不把半截的话当最后
    的话)、title(Agent 自己给会话起的名字,优先于第一句提示)。
  • 子代理不是你:子代理的事件不回答主 Agent 的提问,不让已结束的回合重新「运行中」,它的任务不当标题;
    它自己的开始与结束只进时间线。

各个 Agent

  • Pi:步骤带参数、失败与用时;tool_execution_start 是「当前在跑的工具」,长构建不再变橙;会话名当标题;
    Esc 停下是 stopped;回合出错带上错误;子进程模式(--mode json / print)不发事件;事件按发生顺序逐个写入。
  • Claude:没人看得见的请求不变红(dontAsk、没有权限宿主的 claude -p);可能属于另一个会话的
    agent_needs_input 不变红;打断工具(is_interrupt)是停下;SubagentStart / SubagentStop 进时间线;
    Agent / Skill / MCP 步骤写清做了什么;自动压缩与 auto 模式拒绝算工作在继续;disableAllHooks 与管理策略
    关掉 hook 时设置里说出来。
  • Codex:Interrupt 是停下,SubagentStop 只属于子代理;装好后 Codex 还没信任改动过的 hook 时,设置里提示
    去 /hooks 信任。
  • OpenCode:一个插件同时支持 1.x 与 2.x:步骤、标题、你的提示、出错与停下;同时开着的两个提问要都答完才熄。
  • Copilot CLI:直接运行启动器(exec + args,不经过 shell);子代理、-p 运行的 initialPrompt 当标题、
    自动压缩。
  • Cursor:以 conversation_id 认会话;命令、改动的文件、MCP 工具是步骤;最后一次回复是最后的话;
    回合出错与停下分开说。

看得清(可观测性)

  • 一个等待一个说法,到处一样:横幅、行的第二行、「为什么」、时间线都说「请求权限」「在问你」「等待输入」。
    不再有「变红」「需要授权」这类 Pulse 自己的说法。
  • 「为什么」不再夹厂商事件名:「请求权限 · 4分钟前」「回合出错 · 2分钟前」「你中止了 · 刚刚」。事件名留在
    详情页时间线的等宽列、设置 → Hooks 和报告里。VoiceOver 也不再念事件名。
  • 失败看得见:回合出错的「轮到你」写「回合出错:错误的第一行」;失败的一步写「Bash · swift test · 失败 ·
    1分钟前」;子代理的一步标「子代理 · 」。
  • 正在跑的工具:Agent 报了开始、还没报结束的工具,行上写「当前:Bash · npm test · 3分钟」——只来自 Agent
    自己的「开始了」,已经结束的一步从不这样写(门禁守着)。
  • 时间线合并连续的步骤:「Edit ×4 · Bash ×2 · 1 步失败」,12 条能盖住整个回合;单独一步写用时「2.3秒」。
  • 详情页:「本轮:14分钟 · 23 步(2 步失败)」;Codex、Cursor 的详情页安静地说「这个 Agent 不报告等待」;
    只看到进程时说清是「在 Pulse 之前启动」还是「Pulse 还没有连接它」。
  • 菜单栏提示点名等得最久的:「红:Claude 在等你——app · 8分钟。2 个运行中。」VoiceOver 对灰灯读「轮到你」
    「仅进程」「空闲」,不再一律「空闲」。
  • 设置 → Hooks 每个 Agent 多一行能力,由适配器的契约得出:「报告等待、步骤、最后一句话和标题」,Cursor 是
    「报告回合、步骤和最后一句话——不报告等待」。英文把「Ignore」(你搁置一个等待)和「Not used」(接收器没用
    一个事件)分开。
  • 复制报告多了每个 Agent 的 capabilities 和每个会话这一轮的步数;仍不含路径、提示、会话 id 和项目名。
  • 文案:仅进程的行写「终端会话 · 尚未收到事件」,不再说「正在运行」;没有标题的会话写「会话 · 暂无标题」;
    中文时长前后不加空格(「已经23分钟没有新动静」)。

已知限制

  • 没有在真机上验证过,以上全部只在 CI 里编译和测试。
  • Cursor 的文档打不开:部分字段(conversation_id、stop 的 status、afterAgentResponse)来自论坛和公开的
    类型定义,可能与实际版本不符。
  • OpenCode 2.x 没有实际跑过,按源码适配。
  • Copilot 的 exec 写法需要较新的 Copilot CLI;旧版本可能不加载这个 hook。
  • Codex 的「还没信任」提示是推测:hook 文件改动后有 Codex 进程启动、却一个事件也没听到时才这样说。
  • 仍是 ad-hoc 签名、未公证的 preview 包。
  • 升级会清空 v7 事件日志,以前的时间线不保留。

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: drag Pulse to Applications and
open it once; when macOS blocks it, go to System Settings → Privacy &
Security
, scroll to Security and click Open Anyway. Or, in Terminal:
xattr -dr com.apple.quarantine /Applications/Pulse.app.
(macOS 15 removed the Control-click → Open shortcut.)

Download verification

6d112663c5260b3a5c5a4073edacee15ae3066e37fae76ddf8f60a4a808fb142  pulse-31.0.0-macos-PulseBar.dmg

In the download folder:

shasum -a 256 -c pulse-31.0.0-macos-PulseBar.dmg.sha256
gh attestation verify pulse-31.0.0-macos-PulseBar.dmg -R hxddh/Pulse

The second line checks the build provenance: this DMG was built by
this repository's Release workflow from 98387de.