Perch
在 Mac 刘海处即时看到 Claude Code、Codex、OpenCode 或 pi 完成或需要你,并直接作答。
- Star 数
- ★ 21
- 最近更新
- 今天
- License
- MIT
- 主语言
- Swift
- FA 评分
- 64/100 · 存在缺口
30 秒速览
- 运行形态
- 可在哪里用
- 兼容但需适配Codex · Claude Code
- 费用
- 免费,无需付费服务
- 上手难度
- 中 · 需要几步配置
- 开始前需要
- 典型场景
- 同时开多个 Claude Code 与 Codex 窗口的开发者,离开一会儿后想知道哪个会话卡住等人回复。
- 不适合
- 使用 Windows 或 Linux,或 Intel Mac 的开发者
- 不需要从菜单栏或刘海监控和回复编码代理的团队
- 不愿授予 macOS 辅助功能、自动化与文件权限的用户
- 源码审查
- 64/100 · 存在缺口
这个 Agent 能做什么,适合哪些场景?
Perch 是一款面向 macOS 15+(Apple 芯片)的原生菜单栏/刘海应用,用来追踪 Claude Code、Codex、OpenCode 和 pi 等编码代理的运行状态。它读取这些代理已有的会话文件(~/.claude、~/.codex、OpenCode 数据库、~/.pi/agent/sessions),并用可选的钩子(~/.config/perch/hook 及 OpenCode、pi 插件)通过本地 socket 获得实时状态。原生 AppKit 外壳负责刘海面板、快捷键和 socket,PerchCore 负责扫描、解析与状态判定,界面是一个只绘制快照的 Web 视图。用户可以在刘海上允许或拒绝命令、回答代理的提问、回复最后一条消息,并按一个键跳回精确的会话、终端标签、cmux 分屏或 tmux/herdr 窗格。所有数据留在本机,无账号、无遥测;联网只用于每小时检查更新和发送反馈。
Perch 扫描 ~/.claude/projects、~/.codex/sessions、OpenCode 的数据库与 ~/.pi/agent/sessions,解析会话记录,得出每个会话的标题、代理自述的动作与下一步,并通过 PerchCore 的状态机决定哪些会话需要你、排在前面。开启实时状态后,它向 ~/.claude/settings.json 与 ~/.codex/hooks.json 添加钩子条目,并为 OpenCode(~/.config/opencode/plugins/perch.js)和 pi(~/.pi/agent/extensions/perch.ts)生成插件文件,经仅本机用户可用的 socket 与 PerchCore 通信。状态变化时刘海卡片弹出,展示发生了什么和一行按钮:允许/拒绝命令(A/D)、用 1–4 选择答案、R 回复、Return 打开精确会话(Claude 应用、Codex 应用、终端标签,或 cmux 分屏、herdr/tmux 窗格),⌃⌥L 列出全部会话并可按输入过滤。可用 ./scripts/run.sh --show 启动;.build/debug/Perch --dump 可打印它发现的会话与正在运行的代理。
- 同时开多个 Claude Code 与 Codex 窗口的开发者,离开一会儿后想知道哪个会话卡住等人回复。
- 在 tmux、herdr 或 cmux 中并行跑 pi 与 OpenCode 的工程师,希望一键跳回精确窗格而不是翻找标签。
- 使用 Codex 需要信任新钩子的用户,想在不切窗口的情况下批准命令或回答问题。
- 在非刘海屏幕上工作的 Mac 用户,需要一个顶部中央的小标签提示代理完成情况。
- 注重隐私、不愿把会话与代码上传到云端的独立开发者。
- 想为 Perch 贡献 UI 状态的开发者,可在 ui/design.html 的样例数据中先设计界面。
如何安装或部署这个 Agent?
从最新发布下载 Perch.dmg(已由 Apple 签名与公证),打开后拖入「应用程序」。
# 或从源码构建
git clone https://github.com/asafofer/perch.git && cd perch
./scripts/make-dev-cert.sh # 一次:稳定的本地签名身份,让 macOS 记住权限
./scripts/install.sh # 构建 release、安装到 /Applications 并打开构建需要 Xcode 26+ 与 Node 20+,UI 依赖需先安装:
cd ui && npm install && cd ..首次启动会引导设置角色、辅助功能权限、要读取的应用和实时状态;之后可在设置中重新运行。
如何使用这个 Agent?
悬停刘海或按 ⌘⌥ 打开卡片;⌃⌥P 查看「我刚才在做什么」,⌃⌥L 列出全部会话(或从卡片按 ←)。用 ↑/↓ 选择,Return 打开会话,A/D 允许或拒绝,1–4 回答提问,R 回复,N 稍后再提醒(30 分钟、2 小时、明天),Esc 关闭。
./scripts/run.sh --show # 构建、启动并打开卡片
./scripts/run.sh --idle 15 # 用 15 分钟空闲阈值测试自动弹卡
swift test # 运行逻辑测试
.build/debug/Perch --dump # 打印发现的会话与运行中的代理要调试界面,可运行:
cd ui && python3 -m http.server 8765然后打开 http://localhost:8765/design.html 查看带样例数据的全部状态。
这个 Agent 有哪些优点和局限?
- 刘海交互独特:允许/拒绝、选项回答与回复都能不切换窗口完成,并按 A/D、1–4 等键操作。
- 跳转精度高:支持 Claude 应用、Codex 应用、Terminal/iTerm2/Ghostty/Warp 的精确标签,以及 cmux 分屏、herdr 与 tmux 窗格。
- 本地优先:读取本机会话文件,无账号、无遥测,联网仅用于每小时更新检查与用户主动发送反馈。
- 实时状态可选且可回退:开启后自动备份 *.before-perch,关闭时移除钩子条目与插件文件。
- 开源 MIT 且签名为 Apple 公证的 DMG,源码可读、可用脚本从源码构建。
- 仅支持 macOS 15+ 与 Apple 芯片,Intel Mac、Windows 和 Linux 用户无法使用。
- 需要授予辅助功能、自动化与文件读取权限;源码构建若未运行 make-dev-cert.sh,每次构建后都要重新授权。
- 0.4.0 起 Apple 签名改变了签名身份,更新后辅助功能权限需重新确认一次。
- 不开实时状态时,Perch 只能靠解析记录文本猜测代理是否在等待,状态可能滞后或不准。
- 无头运行(claude -p、codex exec)不会被列出,pi -p 与 opencode run 的会话则会显示。
这个 Agent 与同类方案有什么区别?
与相关度最高的同类 agent 并排比较关键指标。
| Agent | 源码审查 | 形态 / 费用 | Star | 最近更新 | 主语言 | 完整支持的平台 |
|---|---|---|---|---|---|---|
| Perch 当前 | 64 · 存在缺口 | 桌面应用免费 | ★ 21 | 今天 | Swift | Codex · Claude Code |
| Agent Sessions | 75 · 表现良好 | 桌面应用免费 | ★ 907 | 今天 | Swift | Codex · Claude Code |
| MonoCode | 56 · 缺口较多 | 桌面应用免费 | ★ 3.2k | 今天 | TypeScript | Codex · Claude Code |
| Calyx | 59 · 缺口较多 | 桌面应用免费 | ★ 349 | 1 天前 | Swift | Codex · Claude Code |
FollowAgents 如何评估这个 Agent?
查看各维度的扣分理由
README 与 SECURITY.md 明确列出 Accessibility、Automation、文件读取与本地 socket 的用途及缺失后果,数据流透明(data_flow_transparency=3);网络仅用于 Sparkle 更新与用户主动发送反馈,外部效应有限(external_effects=2)。但权限本身较宽(Accessibility 可键入、Automation 可切换终端),仅靠说明而非最小化设计,least_privilege 记 2;允许/拒绝与回复需用户按键触发,user_confirmation 记 2;敏感数据处理仅靠“本地不上传”声明,未见加密或脱敏细节,记 2;依赖安全仅见 npm ci 与 Sparkle EdDSA 签名,无依赖审计或锁定说明,记 1;回滚有 *.before-perch 备份与关闭 live status 移除条目,但无版本回退说明,记 2;来源归属列出 Raycast、Thinking Orbs、Inter 等,记 2。
README 对架构(PerchCore 纯逻辑、web view 只渲染快照)描述自洽,self_consistency 记 2;依赖可用性仅提及 Xcode 26、Node 20+、npm,无版本锁定或离线构建说明,记 1;故障排查给出 --dump、权限重置等具体信息,failure_messages 记 2。
受众与场景(多 agent、多终端、notch)描述充分,记 3;能力边界说明哪些 agent/终端支持、headless 不列出,但边界细节分散,记 2;触发精度依赖可选 live status,未开启时“只能猜测”,记 2;环境适配仅 macOS 15+ Apple silicon,限制强,记 1。
信息架构清晰(功能、安装、快捷键、隐私、开发、排障),记 2;安装说明含下载与源码构建,记 3;命名稳定性无版本化 API 或命名约定说明,记 1;示例与 FAQ 有 GIF、design.html 与排障,但无正式 FAQ,记 2;已知限制散见排障,记 2;MIT 许可证完整,记 3;无 CHANGELOG 或版本策略,记 1;维护责任指向单一维护者与反馈渠道,记 2。
输出可用性(notch 卡片、快捷键、跳转会话)描述具体,记 2;边际价值在于聚合多 agent 状态,但依赖用户已装多个 agent,记 2;成本收益为免费本地、需 Accessibility 权限,记 2。
声明多来自 README 自述,缺少可追溯的测试或发布证据链接,claim_traceability 记 1;跨源佐证仅 SECURITY.md 与 README 部分一致,记 1;事实与推断分离较好(明确“只能猜测”状态),记 2。
- 需要 Accessibility 与 Automation 权限,可键入内容并切换终端,权限面较宽,应审慎授予。
- 依赖安全仅见 npm ci 与 Sparkle 签名,未见依赖审计或锁定说明。
- 仅支持 macOS 15+ Apple silicon,环境适配受限。
- 无 CHANGELOG 或版本策略,更新与回退路径不明确。
- 发布者身份未经 FollowAgents 验证,视为未知。