前言¶
做 DSH(DeepSeek Harness)智能体开发时,一个很实际的痛点是:每次要把屏幕内容喂给模型,得先切出对话窗口,用系统截图工具存盘,再想办法把图片贴进输入框。Windows 侧有现成的截图插件,macOS 上有的要么依赖预编译二进制和辅助功能权限,要么干脆没适配。
下面介绍的 dsh-clipshot-mac(ClipShot for macOS)走的是另一条极轻的路:只调 macOS 系统自带的 screencapture 和 osascript,零 npm 依赖、零构建步骤,截图结果直接以附件形式落进 Harness 的输入框。插件由 sgxdvx123321-svg 维护,分类为客户端插件,版本号 0.1.0,许可证 MIT。
这是什么¶
一句话定位:在 DeepSeek Harness 输入框左侧加一个相机按钮,点了之后按需要截整屏、框选区域或选中某个窗口,图片同时进入输入框和系统剪贴板。
它解决的问题很窄但高频:把「截图 → 粘贴进对话」这个动作压缩到一次点击或一次框选,主要用于把屏幕画面交给多模态模型的场景。它不做全局热键、不做标注、不做多屏选择,README 明确说明了这些取舍。
核心功能¶
四种截图方式,覆盖绝大多数「截一下给模型看」的需求:
1、点相机图标:立即截整屏,图片同时进输入框和系统剪贴板。
2、菜单 → 区域截图:冻结全屏后拖拽框选,八个手柄调整大小,选区内可整体平移;Enter 或双击完成,Esc 取消。
3、菜单 → 应用窗口:调起系统的交互式窗口选择,点哪个窗口截哪个,截图带窗口阴影。
4、菜单 → 截图时隐藏主窗口:先把 Harness 窗口藏起来再截,成品里不会出现插件自己,选择会记在 localStorage。
几个实现细节值得一提:
- 框选松手后仍可继续调整,不是「一松手就定死」。
- 图片以附件形式进输入框,和手动粘贴的图一样能发给模型。
- 截图失败、被取消、找不到输入框,都会在界面上给出一句话提示,不静默失败。
- 临时文件建在系统临时目录(
os.tmpdir()),最多同时保留 6 张,5 分钟自动清理,退出时清干净。 - 图片通过带一次性 token 的 URL 传给页面,过期即失效,不落长期文件。
安装与启用¶
README 给出两种安装方式,都没有走 dsh plugin add github:... 的形式,而是从本地目录安装:
方式一,直接从本地目录装:
dsh plugin --profile desktop add /绝对路径/dsh-clipshot-mac
方式二,手动 link 进 profile:
cd ~/.dsh/profiles/desktop
pnpm add link:/绝对路径/dsh-clipshot-mac
然后把 "dsh-clipshot-mac" 加进该 profile 的 package.json 的 dsh.profile.bundles。
装完重启 DeepSeek Harness,输入框左侧会多出相机按钮。
卸载时反向操作:从 dsh.profile.bundles 删掉 dsh-clipshot-mac,再从 dependencies 删掉对应条目。
权限要求¶
权限面很小,这是它相对其他截图插件的主要卖点之一:
- 屏幕录制:必须。首次截图时系统弹窗,允许一次即可(系统设置 → 隐私与安全性 → 屏幕录制)。
- 辅助功能:不需要。「隐藏主窗口」走的是
NSRunningApplication.hide,不走辅助功能权限。
与其他截图插件的差异¶
Harness 生态里已有的截图插件多数面向 Windows(如 dsh-plugin-screenshot、dsh-plugin-live-shot、@alain-prot0s5/dsh-screenshot,依赖 PowerShell / Win32 / ms-screenclip:)。macOS 上可用的插件常自带 native 二进制并要求辅助功能权限。ClipShot 的取舍是只做 macOS、只调系统命令,体积约 76 KB,而自带 native agent 的插件通常是数十 MB。代价是暂无全局热键和标注功能。
工作原理¶
插件由宿主半身和客户端半身两部分组成:
index.js:宿主侧,调screencapture,用 JXA 隐藏与恢复窗口,起/clipshot路由把 PNG 用一次性 token 供页面取用,/clipshot/clipboard把图写进系统剪贴板。client.js:客户端侧,输入行里的相机按钮和全屏框选覆盖层,框完合成 attachment 塞进 composer。cordis.patch.yml:把插件自身插进 profile,profile id 为clipshot。package.json声明dsh.bundle.patch和dsh.client。locale/*.json提供设置页标题与说明。
宿主半身只注入 typert / subprocess / webServer 能力,客户端半身只注入 slots / locale / remote,职责分得很干净。
适用场景与注意事项¶
适合这两类人:一是主要在 macOS 上跑 DSH、只想「点一下就截图、别的都不要」的开发者;二是对插件体积和要求权限敏感、不希望装十几个 MB 二进制的场景。README 也如实说明了它不含全局热键和标注,需要这两样的应选更成熟的插件。
需要注意几点:
1、插件以当前 dsh 进程的权限运行,文件中的 cordis.patch.yml 决定它往 profile 里注入什么,安装前建议先过一遍源码和 MIT 许可证。
2、该插件来自社区目录 SkillHub 及维护者的 GitHub 仓库,DSH 的理念是「一切皆插件」,但 SkillHub 是独立站点,与 DeepSeek / 幻方无官方从属关系,不要把它当作官方应用商店。
3、多显示器按系统默认行为处理,未做逐屏选择,多屏环境截图前最好先确认焦点所在屏幕。
结尾¶
dsh-clipshot-mac 的价值不在于功能多,而在于把 macOS 上「截图给模型」这一步做到了最轻:零依赖、零构建、只要求屏幕录制权限,图片直接落进输入框。如果你只需要这个,它比带 native agent 的方案省事。
目录页:https://www.skillhub.cn/plugins/sgxdvx123321-svg/dsh-clipshot-mac
GitHub:https://github.com/sgxdvx123321-svg/dsh-clipshot-mac