ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

GSD 桌面通知配置指南:让 Auto Mode 无人值守期间的事件可见

GSD 桌面通知配置指南:让 Auto Mode 无人值守期间的事件可见 人工智能AI Agent代码智能体Agent 编排CLIAI 应用【免费下载链接】gsd-2A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture项目地址https://gitcode.com/gh_mirrors/gs/gsd-2点击查看免费下载GSDGet Shit Done是一款面向长时自主运行的 meta-prompting 与 spec-driven 开发系统其 Auto Mode 可以在无人盯守的情况下持续推进 Milestone、Slice 与 Task。本文围绕 GSD 的桌面通知Notifications功能展开如何通过 YAML 配置启用/关闭五类通知事件如何在 macOS 上正确安装terminal-notifier以保障通知稳定送达以及在通知不出现时如何系统化排查。读完本文你将掌握 GSD 通知配置的完整参数语义、跨平台发送原理macOS / Linux / Windows并理解通知在预算告警、上下文窗口暂停、里程碑完成等关键节点上的实际触发路径。通知机制概述Auto Mode 的远程仪表盘GSD 的 Auto Mode 允许 Agent 长时间自主运行但用户不可能一直盯着终端。桌面通知正是为此设计当 Agent 完成单元、遇到错误、触及预算阈值、完成里程碑或需要人工介入时系统会弹出系统级通知让你无需盯着屏幕也能掌握进度。从源码结构看这一能力由 GSD 扩展的通知助手模块 统一提供。其入口函数sendDesktopNotification的设计目标是非阻塞、非致命non-blocking, non-fatal即使通知发送失败也绝不会影响 Auto Mode 主流程的执行。它支持五种通知事件类型源码中以NotificationKind联合类型定义notifications.tsexport type NotifyLevel info | success | warning | error; export type NotificationKind complete | error | budget | milestone | attention;这五个kind与配置项一一对应构成了通知系统的开关矩阵。配置参数与完整示例在 GSD 的项目配置文件中通知通过notifications块控制。原文档给出的完整配置如下notifications: enabled: true on_complete: true # notify on unit completion on_error: true # notify on errors on_budget: true # notify on budget thresholds on_milestone: true # notify when milestone finishes on_attention: true # notify when manual attention needed各参数语义与源码默认值types.ts 中NotificationPreferences接口定义汇总如下参数含义源码默认值enabled总开关设为false时所有类别全部静默trueon_complete每个单元Task/Slice完成时通知trueon_error运行出错时通知trueon_budget触发预算阈值时通知trueon_milestone里程碑Milestone完成时通知trueon_attention需要人工介入如被阻塞恢复、上下文窗口暂停时通知true值得注意的是各开关的生效逻辑并非简单非黑即白。在 notifications.ts 的shouldSendDesktopNotification中判断顺序是若enabled false直接返回false所有类别一律不发送否则按kind分别读取对应开关未显式配置的类别默认视为开启?? true。这意味着你可以只关闭个别不关心的类别例如在长跑预算类任务时仅保留错误通知notifications: enabled: true on_complete: false on_budget: false on_milestone: false配置的合并逻辑位于 preferences.tsnotifications采用浅合并shallow mergebase 与 override 逐字段覆盖因此全局偏好与项目级偏好可以分层组合未覆盖的字段自动继承。跨平台支持macOS / Linux / Windows虽然原文档聚焦 macOS但 GSD 的通知实现是跨平台的。从 notifications.ts 的buildDesktopNotificationCommand可以看到按process.platform分发的三条路径平台发送命令说明macOS (darwin)优先terminal-notifier缺失时回退osascript声音按级别区分error用Basso其余用GlassLinuxnotify-sendurgency 按级别映射error→criticalwarning→normal其余 →lowWindows (win32)无直接返回null桌面通知被跳过不报错、不影响流程此外通知文本在发送前会经过 规范化处理换行符被替换为空格保证系统通知单行显示AppleScript 路径还会对反斜杠与双引号做转义避免脚本注入或语法错误。测试用例也验证了这一点Linux 下line 1\nline 2会被规范化为line 1 line 2且$PATH等字面字符被原样保留notifications.test.ts。macOS 设置详解为什么推荐 terminal-notifierGSD 在 macOS 上优先使用terminal-notifier找不到时才回退到系统自带的osascript。推荐做法安装 terminal-notifierbrew install terminal-notifier为什么这是原文档与源码注释共同强调的关键点osascript的通知归属于调用它的终端应用Ghostty、iTerm2、Terminal.app 等。如果该终端应用本身没有在系统设置 → 通知中获取通知权限osascript的通知会被系统静默吞掉——而且进程仍以退出码 0 结束不会有任何报错排查起来非常隐蔽。源码注释明确记载了这一场景notifications.ts。而terminal-notifier会以独立的 App 身份注册到通知中心首次使用时系统会弹出权限请求授予后即可稳定送达不依赖终端应用的权限状态。安装后的自测命令原文档提供terminal-notifier -title GSD -message working! -sound Glass执行后若能在屏幕右上角看到通知并听到提示音说明链路正常。通知不出现三步排查法原文档给出了系统的排查顺序检查系统设置打开系统设置 → 通知确认你的终端应用或已安装的terminal-notifier在列表中且允许通知安装 terminal-notifier如上所述这是最可靠的一步可绕开终端应用的权限黑洞命令行自测运行terminal-notifier -title GSD -message working! -sound Glass确认工具本身可用。若终端应用未出现在通知列表中可能是它尚未发送过任何通知、未完成注册——让它先主动发送一次通知即可触发注册。更完整的疑难排查可参考 Troubleshooting其中亦指引回看本文的 Notifications 配置说明。源码纵深通知发送链路与触发节点sendDesktopNotification的完整链路notifications.ts远比弹一个系统通知复杂按优先级依次为标题项目化当调用方传入projectName且默认标题为GSD时标题会被改写为GSD — 项目名formatNotificationTitle在多项目并行工作区中一眼区分通知来自哪个项目远程通知sendRemoteNotification独立触发且不受桌面通知偏好的约束——它处理未配置场景时优雅返回也就是说远程推送与桌面通知是两条并行通道notifications.tscmux 通道若启用了 cmux 集成cmux.notifications优先经CmuxClient.notify投递投递失败则回退到 OSC 777 终端通知notifications.ts桌面通知仅当 cmux 未投递成功时才构造系统命令terminal-notifier / osascript / notify-send执行带 3 秒超时任何异常都静默吞掉notifications.ts。在 Auto Mode 的调用端各kind的典型触发节点清晰可查milestone里程碑完成在里程碑推进逻辑中Milestone id complete!以success级别、milestone类型发送auto/phases.tsbudget预算阈值预算阈值采用数据驱动定义auto/types.ts四档阈值依次为100%error / 强制处理、90%warning、80%warning、75%info。其中 100% 阈值根据enforcement策略halt / pause / warn分别触发停止 Auto Mode暂停待用户/gsd auto继续仅警告继续运行三种行为且都会伴随桌面通知auto/phases.tsattention人工介入包括被阻塞后的恢复提示blocked resumewarning级别以及上下文窗口达到context_pause_threshold而自动暂停的场景——Context percent% — pausedauto/phases.tscomplete单元完成例如执行/gsd undo撤销单元后发送Undone: unitType (unitId)undo.ts。测试保障偏好开关与命令构造均被覆盖通知模块有专门的单元测试 notifications.test.ts验证了以下关键行为细粒度开关enabled: true时on_complete: false关闭完成通知、on_error: true保留错误通知各 kind 互不干扰L11-L26总开关enabled: false时即使个别类别为true也全部静默L28-L33macOS 回退无terminal-notifier时回退osascript并对Bobs Milestone、C:\temp等特殊字符做正确转义L35-L61声音分级非 error 级别使用GlassL63-L71平台边界win32返回null不做无谓报错L88-L90项目标题formatNotificationTitle对空值、空白、真实项目名的处理以及 macOS / Linux 命令中均携带GSD — 项目名标题L94-L134。小结与最佳实践GSD 的桌面通知是 Auto Mode 无人值守体验的关键一环配置轻量、实现稳健。实践建议macOS 用户务必安装terminal-notifier这是规避终端应用通知权限问题的根本手段按工作负载裁剪通知类别预算敏感的里程碑跑批可只保留on_error与on_attention减少打扰首次接入时用terminal-notifier -title GSD -message working! -sound Glass自测再进入真实任务若通知仍不出现按系统设置 → 安装工具 → 命令行自测的顺序排查并留意通知中心对终端应用的注册状态。整体来看通知系统将Agent 自主推进与人类保持感知无缝衔接——你只管离开终端GSD 会在需要你的时候叫醒你。赞分享人工智能AI Agent代码智能体Agent 编排CLIAI 应用【免费下载链接】gsd-2A powerful meta-prompting, context engineering and spec-driven development system that enables agents to work for long periods of time autonomously without losing track of the big picture项目地址https://gitcode.com/gh_mirrors/gs/gsd-2点击查看免费下载相关推荐Deep-Live-Cam 实时换脸部署教程没有显卡一张照片也能快速跑通Deep Live Cam 实时换脸部署教程没有显卡一张照片也能快速跑通 Deep Live Cam 是开源实时换脸工具一张正脸照片就能把视频或摄像头画人工智能AI Agent代码智能体Agent 编排CLIAI 应用UnattendGeneratorWindows无人值守安装配置终极指南UnattendGeneratorWindows无人值守安装配置终极指南 在现代IT运维中自动化部署是提高效率、减少人工干预的重要手段。UnattendGeCodeBurn Windows 桌面开发 VM基于 cloud-init 的 Ubuntu 24.04 无人值守安装与一键配置指南CodeBurn Windows 桌面开发 VM基于 cloud init 的 Ubuntu 24.04 无人值守安装与一键配置指南 本指南讲解 CodeBu上一篇Qwen3-Coder-30B-A3B-Instruct终极代码生成AI模型完全指南下一篇探索Kubicorn打造和管理Kubernetes基础设施的新纪元创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进