DSH 电脑控制:Playwright/CDP 后台操作 Chromium,Accessibility 优先控制 macOS;动作锁定到正确进程与窗口,不抢前台、不移动鼠标,提供已签名公证的 Universal 2 DMG 安装包。
安装
# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)
dsh plugin --profile web add github:ZRui-C/dsh-computer-use
装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本——pnpm 默认拦截,所以安装可能停在 ERR_PNPM_GIT_DEP_PREPARE_NOT_ALLOWED 或 ERR_PNPM_IGNORED_BUILDS;dsh 会打印出需要添加的确切键名,把它加进该 profile 的 pnpm-workspace.yaml 的 allowBuilds 下,重跑一次即可装上。放行构建本身就是一次信任判断:请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。
README
安装
Homebrew
brew tap zrui-c/tap
brew trust zrui-c/tap
brew install --cask dsh-computer-use
open -a "DSH Computer Use"
DMG
- 从 Releases 下载最新版
DSH-Computer-Use-*-universal.dmg。 - 将 DSH Computer Use 拖入“应用程序”并打开。
两种方式都需要按设置中心引导授权“辅助功能”和“屏幕录制”,在“DSH 插件”一行点击“安装”,然后重启正在运行的 DSH Host。
Homebrew Cask 与官方 DMG 安装的是同一份 Universal 2 App,均经过 Developer ID 签名和 Apple 公证。普通用户不需要安装 Xcode、Swift,也不需要下载源码;系统中需要已有 DSH 和 Google Chrome。
能做什么
| 控制面 | 感知 | 输入 |
|---|---|---|
| Chromium | Playwright、CDP Accessibility/DOM、frame、标签页、可选 OCR | 基于 ref 的导航、鼠标、键盘、表单、滚动、拖拽、上传 |
| macOS | Accessibility 树优先,Vision OCR 补语义,独立窗口捕获 | AX 语义动作、定向 SkyLight/CoreGraphics,无目标时才用全局 HID |
每次动作都会返回新的、有预算上限的文本观察。模型读取 role、name、value、状态、几何和稳定 snapshot ref,不会假装自己能看懂截图。页面文字与 OCR 内容统一视为不可信 UI 数据。
macOS 后台控制
- 每个动作贯通 PID、WindowServer window ID、AX 窗口 frame 和元素身份。
- 坐标输入前优先尝试 AX 语义动作。
- 支持时把鼠标和键盘事件直接投递到目标进程/窗口。
- 使用可穿透的软件光标;定向动作不移动物理鼠标。
- 即使其他 App 保持前台,动作后观察仍锁定上一个目标窗口。
- 私有能力不可用时回退公开 CoreGraphics,或明确失败关闭。
平台边界
ScreenCaptureKit 是公开 API。可选的后台输入路径会动态加载 SkyLight 私有符号,适合 Developer ID 分发,不适合 Mac App Store。私有 API 不受 Apple 支持,macOS 升级后可能变化。
在 macOS 26 上,Stage Manager 可能只向 WindowServer 暴露架上窗口的缩略图;为这种表示创建捕获 filter 甚至可能在 SkyLight 内直接 abort。DSH Computer Use 会先比较 AX 与 WindowServer 几何,避开崩溃路径,保留 AX 观察并返回明确 warning,绝不会把缩略图拉伸成伪造的全窗口截图。
DSH 集成
App 内嵌包已在 package.json 声明 DSH bundle。设置中心执行的官方命令等价于:
dsh plugin --profile web add --save-exact file:/path/to/DSH\ Computer\ Use.app/Contents/Resources/Plugin
cordis.patch.yml 会安装 Host runtime,并将 computer_observe / computer_action 注册到 DSH 的 global tool layer,由所有 agent preset 继承。不要求用户手改 profile YAML 或复制 preset。设置中心会识别旧版“只有 dependency、没有启用 bundle”的状态并提供修复。安装、修复或升级后需要重启正在运行的 DSH Host。
从源码构建
要求:macOS 14+、Xcode/Swift 5.9+、Node.js 22+、pnpm 11+、DSH 和 Google Chrome。
pnpm install
pnpm run typecheck
pnpm run test
pnpm run test:native
pnpm run build
pnpm run build 生成:
native/macos-helper/dist/DSH Computer Use.app
默认构建 Universal 2。本地快速迭代可只编译当前架构:
COMPUTER_USE_ARCHS=arm64 pnpm run build
生成本地拖拽安装 DMG:
pnpm run package:dmg
公开发布需要 Developer ID Application 证书和 Apple 公证。完整的本地与 GitHub Actions 流程见 documentation/distribution.zh.md。
工具协议
computer_observe 返回 browser 或 desktop 的 interactive、full、changes 文本快照,支持 query 过滤和 auto | always | never OCR。
computer_action 每次只执行一个浏览器或桌面动作,并返回动作后的语义状态。ref/坐标动作必须携带最新 snapshot_id;过期目标会失败关闭并要求重新观察。上传文件严格限制在当前 DSH Session workspace 内。
项目资料
社区
- GitHub Discussions — 提问、分享用法、反馈想法
- DeepSeek Harness Discord — 更大的 DSH 生态
- 觉得好用就点个 Star ⭐,让更多人发现它
项目采用 Apache-2.0 许可证。本项目不受 Apple 背书;“DeepSeek”等名称归各自权利人所有,本文仅用于说明与 DeepSeek Harness/DSH 的兼容关系。
链接
同类插件
Tencent/WeKnora#dsh-weknora★ 31002
把 WeKnora 知识库接入 dsh 的四个只读工具:列出知识库、混合检索原文片段、按顺序还原单篇文档,以及直接取用 WeKnora 自己带引用的 RAG 或 ReAct agent 回答(含可续聊的 session id)。
superdesigndev/treg★ 3752
给 Agent 的工具目录:按「要做的事」检索约 2,600 个外部接口(SEO 与 SERP、外链、社交、人物与公司信息补全、广告库、抓取),查看参数与单次调用价格后直接调用,凭据由服务端注入。附带技能,MCP 行在未设置 TREG_TOKEN 前保持禁用。
TencentCloudBase/CloudBase-AI-Toolkit#dsh-plugin★ 1127
把腾讯云 CloudBase 后端接入 DeepSeek Harness——在对话里搭好并部署全栈应用,查询结果渲染为表格卡片(分页、排序、导出 CSV),部署后可预览真实域名,并提供 CloudBase MCP 工具集(`mcp__cloudbase__*`),登录走 device-code 流程。
gitroomhq/postiz-agent#dsh-postiz★ 498
通过 MCP 将 DeepSeek Harness 连接到 Postiz:列出已连接的社交媒体渠道、获取各平台发帖规则,并向 X、LinkedIn、Instagram、Facebook、Threads、TikTok、YouTube、Reddit、Bluesky、Mastodon、Discord、Slack、Telegram 等平台排期、存草稿或发布帖子;附带 postiz 工作流技能。
EthanYoQ/Invoice-Downloader#dsh-invoice-downloader★ 465
面向 DeepSeek Harness 的本地 IMAP 发票下载、OCR 识别、归档与 Excel 报销汇总。
anysearch-team/anysearch-dsh★ 432
基于 AnySearch 的实时网页与垂直搜索插件,为 DeepSeek Harness 提供搜索工具。
社区评论
评论公开保存在 GitHub Discussions。加载评论会连接 GitHub 和 Giscus;发表内容需要 GitHub 账号。