前言¶
DSH 的智能体已经能跑 bash,但让它“在 Mac 上发个通知”“截个屏”“切回深色模式”“读一下 Safari 当前这个标签页”,过去要么手写 AppleScript,要么照旧用一堆 shell 拼出来的命令。智能体能写代码,却没摸到 Mac。
下面介绍的 wu04186767/dsh-plugin-macos 就是用来补这一层的:它把 21 个日常 Mac 操作打包成带类型、面向模型的工具,全部在本地通过 child_process 和 osascript 执行,零运行时依赖。
这是什么¶
一句话:DSH 插件,把 macOS 原生操作暴露成 21 个模型可调用的工具,分类属于「工作流」。
- 维护者:wu04186767
- 许可证:MIT
- 版本:package.json 中为
0.1.0,README 标注兼容性为 DeepSeek Harness 0.2.x - 平台要求:macOS 13 或更新,README 说明在 macOS 27.2(Apple silicon)上开发与测试
- 依赖:无,纯 ESM,
dependencies为 0,无构建步骤
它解决的问题很具体:智能体原有的 bash 能力够不到原生 macOS 操作(通知、截屏、Spotlight、Safari 自动化这类),而每次临时手写 AppleScript 既慢又容易出错。这个插件把这些事提前做成了带 JSON schema 的工具。
核心功能¶
README 对设计意图说得比较明确:覆盖面要“广但无聊”,覆盖日常 Mac 琐事而不是单一技巧;所有命令都用 argv 数组而非 shell 字符串,避免页面文本、文件名这类输入注入 shell 语法;不做破坏性操作。
21 个工具按 README 的分法是三组。
系统读取¶
| 工具 | 做什么 |
|---|---|
macos_info |
系统版本、芯片、主机名、运行时长、电池来源、磁盘、内存,只读 |
macos_network |
主机名、主网卡、IPv4、当前 Wi-Fi SSID,只读 |
macos_processes |
按 CPU 或内存排序的进程列表,只读 |
macos_spotlight |
用 Spotlight(mdfind)搜文件,只读 |
macos_finder_path |
前置 Finder 窗口的 POSIX 路径,只读 |
macos_frontmost_app |
最前台应用的名称,只读 |
macos_screenshot |
截屏或截取区域为 PNG 并返回路径,需要 Screen Recording 权限 |
日常操作¶
| 工具 | 做什么 |
|---|---|
macos_notify |
原生通知横幅,可带提示音 |
macos_say |
用系统语音读出文本 |
macos_clipboard_read |
读取剪贴板文本,只读 |
macos_clipboard_write |
覆盖剪贴板文本 |
macos_volume |
读取或设置输出音量 0–100 |
macos_dark_mode |
读取或切换深色模式 |
macos_keep_awake |
用 caffeinate 保持唤醒,或停止、查看状态 |
macos_shortcuts |
列出快捷指令,或按名称执行 |
macos_open |
打开 URL、文件、目录或应用 |
macos_applescript |
执行 AppleScript 或 JXA 片段并返回 stdout,能力最强 |
Safari¶
| 工具 | 做什么 |
|---|---|
safari_tabs |
列出所有 Safari 窗口和标签页及当前活动标签 |
safari_open |
在新标签或当前标签打开 URL |
safari_page_text |
读取前置页面的可见文本 |
safari_javascript |
在前置标签执行 JavaScript 并返回结果,需一项 Safari 设置 |
README 特别强调这套 Safari 工具驱动的是本机真实登录的 Safari,没有扩展、没有云端浏览器、没有 API key。
安装与启用¶
前置要求:macOS 13+、DeepSeek Harness 0.2.x、dsh 自带的 Node 运行时。
从 GitHub 安装(README 推荐方式):
dsh plugin --profile web add github:wu04186767/dsh-plugin-macos
如果你跑的是 DeepSeek Harness 桌面端,改用:
dsh plugin --profile desktop add github:wu04186767/dsh-plugin-macos
安装后重启应用(命令行场景则是重新运行 dsh --profile web),插件才会被加载。
开发者想从源码加载,README 给的命令是:
git clone https://github.com/wu04186767/dsh-plugin-macos.git
dsh plugin --profile web add ./dsh-plugin-macos
验证是否生效:
dsh --profile web --dump-config | grep dsh-plugin-macos
配置里应能看到该插件行,Web UI 的 Settings → Plugins 下也会出现它。
权限与验证¶
部分工具首次调用会触发 macOS 的一次性授权弹窗,需要给承载 dsh 的应用(DeepSeek Harness,或从终端启动时的终端)授权:
| 权限 | 涉及工具 | 授权位置 |
|---|---|---|
| Automation → Safari | safari_* |
系统设置 → 隐私与安全性 → 自动化 |
| Automation → System Events | macos_dark_mode、macos_frontmost_app |
同上 |
| Automation → Finder | macos_finder_path |
同上 |
| Screen Recording | macos_screenshot |
系统设置 → 隐私与安全性 → 屏幕录制 |
| Safari 开发者设置 | safari_javascript |
Safari → 设置 → 开发者 → Allow JavaScript from Apple Events |
想一次性确认当前哪些权限可用,可以在 checkout 目录里跑:
node scripts/doctor.mjs
它会逐个触发依赖权限的工具并显示 macOS 当前放行了哪些。插件声明自身不做网络请求、不存遥测。
典型用法¶
README 给出的示例提示词可以直接复现:
- “构建结束时通知我,并大声说完成。”——对应
macos_notify+macos_say - “读取我现在看的 Safari 标签并总结。”——
safari_page_text或safari_tabs - “启动 keep-awake,跑完 40 分钟测试,再停掉。”——
macos_keep_awake - “截屏并告诉我看到了什么。”(需要带视觉能力的模型)——
macos_screenshot - “在 Mac 上搜 Q3-report.pdf 并给我路径。”——
macos_spotlight - “切到深色模式,音量设为 20。”——
macos_dark_mode+macos_volume - “运行我的快捷指令 Start Focus。”——
macos_shortcuts
适用场景与注意¶
适合在 macOS 上常驻 DSH、希望智能体能直接操作本机(通知、剪贴板、Safari、快捷指令)的人,尤其是不想反复手写 AppleScript 的场景。
需要注意几点:
- 这些工具以当前 dsh 进程的权限在 Mac 上操作,跟内置
bash工具同级。批准工具调用前,先看一眼智能体实际要调用什么。 macos_clipboard_read可能读取到此前复制过的密码或 token。macos_applescript属于任意本地自动化,能驱动的几乎是任何 Mac 应用,按能力上限来管理。- 插件没有提供删除、关机、提权类的工具。
- Stars:目录页与仓库当前信息显示星标为 0,社区规模还小;插件包属于开发者预览,API 可能在版本间变化。安装前建议通读源码与 MIT 许可证,确认没有超出你预期的 macOS 权限。
- 这个插件来自社区目录 SkillHub,目录站是独立站点,与 DeepSeek 无官方从属关系。
结语¶
dsh-plugin-macos 的价值不在单一技巧,而在把 21 个 Mac 日常操作做成类型化的本地工具,零依赖、无构建、无云端依赖,Safari 部分直接复用本机登录会话。如果你的智能体任务经常落在 Mac 本机操作上,值得装一个试。
- 目录页:https://www.skillhub.cn/plugins/wu04186767/dsh-plugin-macos
- GitHub:https://github.com/wu04186767/dsh-plugin-macos