Repository navigation
Pulse 31.0.0
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/PulseThe second line checks the build provenance: this DMG was built by
this repository's Release workflow from 98387de.