get-focus-mode 是一个轻量级的 macOS 系统工具型 Skill,专门用于读取当前激活的 Focus(专注)模式状态。该工具通过解析 macOS 原生的 Do Not Disturb 数据库文件,以只读方式获取系统专注模式信息,为自动化工作流提供可靠的状态数据源。
核心用法
用户可通过命令行直接调用 ~/clawd/skills/get-focus-mode/get-focus-mode.sh 执行脚本。脚本内部使用 jq 工具解析位于 ~/Library/DoNotDisturb/DB/ 目录下的 Assertions.json 和 ModeConfigurations.json 两个系统文件,提取当前激活的专注模式标识符并映射为可读名称(如 "Office"、"Sleep"、"Do Not Disturb" 或 "No Focus")。输出结果直接打印至 stdout,便于与其他 shell 脚本或自动化工具链集成。
显著优点
安全性是该 Skill 的最大亮点。作为纯本地执行的 Shell 脚本,它完全离线运行,不涉及任何网络请求或数据传输,彻底杜绝了隐私泄露风险。代码结构简单透明,仅使用标准的 jq 命令行工具进行 JSON 解析,不包含 eval()、exec() 等危险函数,也无动态代码加载机制。此外,脚本采用防御性编程策略,利用 jq 的 ? 操作符和默认值语法(//)优雅处理缺失数据,确保在数据库结构异常时仍能稳定返回 "No Focus" 而非崩溃。
潜在缺点与局限性
平台依赖性是首要限制。该 Skill 深度依赖 macOS 特有的 Do Not Disturb 数据库结构,无法在 Linux 或 Windows 系统上运行。其次,它仅提供只读访问,无法修改或切换专注模式,如需控制功能需配合其他工具。此外,脚本依赖外部工具 jq,虽然这是标准 JSON 处理器,但仍需用户预先安装(可通过 Homebrew 获取)。最后,随着 macOS 系统更新,Apple 可能调整内部数据库结构,存在未来兼容性风险。
适合的目标群体
主要面向 macOS 重度用户、效率工具爱好者及自动化工作流开发者。特别适合需要基于当前专注模式自动调整通知策略、同步设备状态或记录工作时段的进阶用户。例如,可配合 Hammerspoon、Alfred 或 Keyboard Maestro 等自动化工具,实现"进入办公模式时自动开启特定应用"或"睡眠模式触发时执行清理脚本"等场景。
使用风险
常规风险主要包括权限管理和系统兼容性两方面。首次运行时,macOS 隐私保护机制可能拦截对 ~/Library/DoNotDisturb/DB/ 目录的访问,需要用户在系统设置中手动授权。虽然脚本本身只读,但错误的手动修改仍可能破坏系统文件完整性(尽管概率极低)。性能方面,由于仅涉及本地小文件读取,资源消耗可忽略不计。建议用户定期检查脚本来源更新,以应对潜在的 macOS 版本升级带来的 API 变更。