用途:在 Claude Code 结束一轮任务时,于 macOS 桌面显示一个常驻置顶的大横幅,并展示一行实际完成内容的摘要。适合系统通知中心不弹出 osascript display notification 的场景(CLI 未注册通知中心时命令返回 0 却无显示)。
主要能力:横幅由 mac-overlay.js(改编自 peon-ping 的 JXA 脚本)绘制为无边框 Cocoa 覆盖窗口,因此不需要通知权限。安装后通过 Claude Code 的 Stop 钩子触发。
使用方式:需 macOS 与支持 hooks 的 Claude Code。把 mac-overlay.js 复制到 ~/.claude/scripts/mac-overlay.js;将 Stop 钩子合并进 ~/.claude/settings.json(先读取并保留已有钩子),钩子命令为: command: m=$(cat /tmp/claude-banner-msg 2>/dev/null); rm -f /tmp/claude-banner-msg; [ -f ~/.claude/banner.off ] || osascript -l JavaScript ~/.claude/scripts/mac-overlay.js "${m:-Task done}" blue "" 0 4 2>/dev/null || true,并设 async: true。若想显示具体摘要而非通用 "Task done",可在全局代理说明文件(~/.claude/CLAUDE.md 或 AGENTS.md)中加入要求在任务结束后把简短摘要写入 /tmp/claude-banner-msg 的说明。
开关:用哨兵文件切换,无需改配置:touch ~/.claude/banner.off 静音,rm -f ~/.claude/banner.off 取消静音。
细节与限制:mac-overlay.js 的参数为 <message> <color> <icon> <slot> <dismiss_seconds>,颜色可为 blue/yellow/red,dismiss 为 0 表示点击前常驻。钩子在静音时也会消费消息文件,避免解除静音后弹出旧摘要。近期 macOS 上 JXA 常量 NSTextAlignmentCenter 会取旧版 AppKit 值 2,被打包脚本硬编码为 1 以居中。消息文件在并行 Claude 会话间共享,若同时完成可能显示彼此摘要。其余功能、收费与平台支持资料暂未提供。