Skip to content

Pulse 22.0.0

Choose a tag to compare

@github-actions github-actions released this 29 Sep 10:35
75d13be

22.0.0 — Lamp(一盏灯)

这一版是减法。Pulse 回到它最初的样子:菜单栏里一盏灯,告诉你哪个 Agent 在跑、哪个在等你。
13.0 以来加上的编排能力(Mission、候选方案、检查、派发、工作树、终端操作)、跨机器的 Respond 和
Workbench 窗口全部删除,不保留开关。留下的部分重做成一行一个会话、键盘可达,并且每一个颜色、每一条
通知都能说清来历。

删掉的

  • 编排整体删除:PulseManaged 目标(Pulse 自己启动的会话)、Mission 与候选方案对比、
    EvidenceBook 检查与证明卡、派发与 worktree、终端输入、工作区冲突提示。Pulse 看着编排器,
    自己不再是编排器 —— 这些能力和「一盏灯」是两个产品,放在一起让两边都平庸。
  • 跨机器 Respond 与 fleet 广播删除。Respond 只在本机:批准仍然只出现在完整请求旁边
    (canOfferAllow),横幅仍然只有「拒绝」;不再有远端密钥、远端裁决目录和主机列。
  • Workbench 窗口删除。它的检查器、摘要和展开卡片合并成托盘里的一个详情页。
  • 设置里删掉了分组、提示音、静默时段、按 Agent 静音列表、停滞阈值、推迟时长和历史保留 ——
    静默和声音交给 macOS 的专注模式与通知设置;静音改在行菜单里做。
  • 迁移:第一次启动 22.0 时一次性删除 evidence/、managed/、missions/、fleet.d/
    以及 respond.d/ 下的远端请求、裁决和密钥(标记文件 .cleanup-22.0)。本机 Respond 的
    请求文件和 attention 记录不受影响。
  • pulse_hook.py 只在这台 Mac 空闲超过离开阈值时才为 Respond 暂停请求;有人在用就直接放行给
    Agent 自己的提示 —— 以前远端能答时它会等。

一行一个会话

  • 托盘每行只有一行:灯的形状、Agent、项目、任务、时间。等待行多一行问题;停滞 / 失败多一行
    橙色原因。其余动作都在右键菜单和详情页里。
  • 灯有形状,不只靠颜色:实心(在跑、等你)、半实心(停滞、出错)、虚线(只看到进程,
    没有会话数据)、空心(轮到你、最近、空闲)。色弱和灰度下也分得开。
  • 详情页(→ 或行菜单「详情」):任务、为什么是这个状态、最近一小时的时间条、完整的
    Respond 请求(批准就在旁边)、Agent 最后说的话、计划、事实、这条通知发生了什么、读取诊断。
    ← 或 Esc 返回。
  • 键盘优先:打开托盘直接打字就是过滤;↑↓ 选择,↩ 聚焦终端,→ 详情,⌫ 拒绝或忽略,Esc 先清
    过滤再关面板。底部一行写着这些键。
  • 头部一行彩色计数,「⋯」里是健康、设置、退出;同一时间最多一条提示(维护 / 扫描不完整 /
    已暂停)。
  • 设置是一页:通用、快捷键、通知、hooks、控制、数据访问、更新、关于;Attention 桥的开发者
    工具在「高级」折叠区里。从别处跳进设置会滚到对应的那一节。

看得见(可观测性)

  • 每个会话有时间线:Pulse 每次扫描记下状态变化(在跑 / 数据少 / 停滞 / 等你 / 轮到你 /
    最近)和依据(hook、会话文件里的待答、claude agents、会话文件、进程),保存在
    session-timeline.json(最多 128 个会话、每个 48 段、24 小时)。详情页把最近一小时画成一条
    时间条,并写出每种状态各几分钟。
  • 灯为什么是这个颜色:鼠标停在菜单栏图标上,提示里写出决定颜色的规则、最多三个驱动它的会话,
    以及没算进去的(已推迟、较早隐藏的)。
  • 每条通知有去向:发了、合并进汇总、被系统拒收、没发以及为什么(在最前面、已静音、已确认、
    等待中、通知关了、没授权、刚启动)、什么时候点了、确认了、推迟了、解决了。写在详情页里。
  • 活动记录(健康 → 活动):所有会话的状态变化和通知去向,按时间倒序、可按 Agent 过滤,
    不用再翻 debug.log。
  • debug.log 里每轮扫描的「apply」行只在内容变化时写,安静时不再刷屏。

修复

  • 「N 个较早的会话未显示」只算最近 24 小时里停下的会话,不再把一个月前的记录都算进去。
  • 等待通知的标题规则统一,第二轮扫描不再重写 ledger。
  • 后台更新检查失败不再把「已是最新 / 有新版本」改成「检查失败」,也不再闪「正在检查」;只有手动检查
    才显示进行中。
  • 下载更新失败按原因说:网络、HTTP 状态、校验失败、需要公证版本、没有可校验的安装包、系统不支持,
    不再一律说「校验失败」。
  • 卸载 hooks 后,「Claude 在跑但没装 hooks」的提示不再每次都回来;重新安装会重新打开它。
  • 只写了 ~/.codex/hooks.json 的 Codex 也算已安装 hooks。
  • 本机 Respond 读取请求时先读最新的,过期文件不再占用 32 个的读取额度 —— 以前一堆过期请求能把
    真正在等的那个挤出去。
  • 托盘面板动画缩放后阴影和圆角会重新贴合;点菜单栏图标能正常开关面板,不会被关闭又立刻打开;
    菜单栏图标按菜单栏自己的明暗绘制。
  • hooks 配置文件写出时不再把 / 转义成 \/。
  • 诊断里的相对时间和「会话」标签跟随应用语言;健康页的「上次读取」用真实的扫描时间。

诚实说明

  • 这台开发环境没有 Swift 编译器,也没有 Mac:代码只在 CI(macos-26)上编译和测试过,托盘的新
    外观(一行行、灯的形状、详情页、时间条)没有在真机上看过。
  • 时间线从 22.0 开始记录,升级前的历史没有。
  • Respond 的 P0-0 真机确认(决策格式被接受)仍未完成;格式不对时会被忽略并回落到 Agent 自己的提示,
    不会误批。

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

6e150ae843ad539ca2c160c2fa69e5472782a4ef5e24e2bb10e77f62caf009ed  zig-out/package/pulse-22.0.0-macos-PulseBar.dmg