让模型截屏并点击输入,直接操作 macOS 桌面
35.4/100
综合分
2
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/4 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
自动兼容检查有告警:npm 同名包「dsh-plugin-computer-use」归属 tofu-zyc/dsh-plugin-tofu-box,装到的可能不是本插件。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add Admaing/dsh-plugin-computer-use该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · vision
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 40 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查⚠ 装前注意npm 同名包「dsh-plugin-computer-use」归属 tofu-zyc/dsh-plugin-tofu-box,装到的可能不是本插件
展开查看检查明细 ↓
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-plugin-computer-use @ 2.5.2
✓Node 引擎要求 >=20 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/11/3 17:53:58
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件
查看扫描证据(共 14 处,展示前 14 条)
- 读取本地文件src/backends/applescript.js:166
const data = await readFile(file) - 删除本地文件递归src/backends/applescript.js:170
await rm(directory, { recursive: true, force: true }) - 写入本地文件src/backends/native.js:90
await mkdir(config.helperCacheDir, { recursive: true }) - 写入本地文件src/backends/native.js:95
await mkdir(preferred, { recursive: true }) - 写入本地文件src/backends/native.js:99
await mkdir(fallback, { recursive: true }) - 读取本地文件src/backends/native.js:137
source = await readFile(SOURCE_PATH) - 写入本地文件src/backends/native.js:142
await mkdir(directory, { recursive: true }) - 读取本地文件src/backends/native.js:145
await access(binary, constants.X_OK) - 写入本地文件src/backends/native.js:171
await rename(staging, binary) - 删除本地文件src/backends/native.js:173
await rm(staging, { force: true }) - 读取本地文件src/backends/native.js:295
const data = await readFile(file) - 删除本地文件递归src/backends/native.js:308
await rm(directory, { recursive: true, force: true }) - 执行外部命令来自配置/变量src/exec.js:36
child = spawn(command, args, { cwd, signal, stdio: ['pipe', 'pipe', 'pipe'] }) - 读取本地文件src/exec.js:103
await access(candidate, constants.X_OK)
扫描于 2026/11/2(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-tools给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
功能亮点
- 截屏
- 点击与输入
- 滚动拖拽
给 DeepSeek Harness 带来 Codex 风格的电脑操作:一个 `computer` 工具,能截屏、点击、输入、滚动和拖拽 macOS 桌面。
README
由 DeepSeek 最新模型翻译生成dsh-plugin-computer-use
为 DeepSeek Harness 提供 Codex 风格的 computer use。
插件注册一个面向模型的工具 computer,它的动作词汇表和批量调用约定与 OpenAI 的 computer 工具一致。模型发送一批有序动作,插件在真实桌面上执行,然后返回一张新截图,外加一份精确的执行记录——所以已经熟悉这套接口的模型不需要学任何新词汇。
在 macOS 上,输入事件由一个小型 Objective-C 辅助程序发送,首次使用时从源码编译;没有编译器的机器则回退到 AppleScript。
┌─────────────┐ actions[] ┌──────────────────────────────────────┐
│ model │ ─────────────► │ computer tool │
│ │ │ normalize → map coords → post input │
│ │ ◄───────────── │ capture → commit → render │
└─────────────┘ screenshot + └──────────────────────────────────────┘
executed[] │ │
│ CGEvent │ screencapture
▼ ▼
展开完整文档(README 剩余 1 节)
dsh-plugin-computer-use 为 DeepSeek Harness 提供 Codex 风格的 computer use。 插件注册一个面向模型的工具 computer,它的动作词汇表和批量调用约定与 OpenAI 的 computer 工具一致。模型发送一批有序动作,插件在真实桌面上执行,然后返回一张新截图,外加一份精确的执行记录——所以已经熟悉这套接口的模型不需要学任何新词汇。 在 macOS 上,输入事件由一个小型 Objective-C 辅助程序发送,首次使用时从源码编译;没有编译器的机器则回退到 AppleScript。 ┌─────────────┐ actions[] ┌──────────────────────────────────────┐ │ model │ ─────────────► │ computer tool │ │ │ │ normalize → map coords → post input │ │ │ ◄───────────── │ capture → commit → render │ └─────────────┘ screenshot + └──────────────────────────────────────┘ executed[] │ │ │ CGEvent │ screencapture ▼ ▼ the desktop the screen 它能做什么 | 动作 | 字段 | 效果 | | screenshot | — | 观察。无论批次内容如何,结果截图都在批次结束后拍摄。 | | click | x、y、button?、keys? | 移动并点击。button 取 left(默认)、right 或 middle。 | | double_click | x、y、keys? | 按平台的双击语义点击两次。 | | move | x、y、keys? | 移动指针,不点击。 | | drag | path、button?、keys? | 在第一个点按下,沿路径移动,在最后一个点松开。 | | scroll | x、y、scroll_x、scroll_y、keys? | 在某个点滚动。scroll_y 为正表示向下滚动。 | | keypress | keys | 组合键,例如 ["CTRL","C"] 或 ["ENTER"]。 | | type | text | 输入字面文本,包括空格和换行。 | | wait | — | 暂停(时长来自配置,默认 2 秒)。 | 动作集合、字段名、scroll 的正负号约定都与参考实现保持一致,所以批次可以在不同 harness 之间通用。 安装 from a checkout dsh plugin --profile <profile> add /path/to/dsh-plugin-computer-use or once published / from git dsh plugin --profile <profile> add dsh-plugin-computer-use 然后给需要这个工具的智能体预设加一行。复制一份随部署发布的预设再改副本——绝不要直接改随部署发布的预设: - id: tool-computer-use name: dsh-plugin-computer-use config: display: 0 完整的一行配置(含所有选项)见 examples/agent.cordis.yml;预设如何被发现和挂载见 dsh-agent-presets。 权限 macOS 会同时拦截这个工具的两部分权限,缺了任何一个,工具就直接拒绝运行,而不是莫名其妙地失败。把这两项权限都授予承载智能体的应用: | 权限 | 用途 | 位置 | | 屏幕录制 | 每一次截图 | 系统设置 → 隐私与安全性 → 屏幕录制 | | 辅助功能 | 每一次点击、按键和滚动 | 系统设置 → 隐私与安全性 → 辅助功能 | 有两个细节值得了解: - 没有辅助功能权限,截图照样能用。 这两道权限相互独立,所以在没有授予辅助功能的机器上,只跑 screenshot 的批次依然能成功。这是安全子集,单独用也很有价值。 - 没有辅助功能权限,输入事件会被静默丢弃。 CGEventPost 报告成功,macOS 却把事件丢掉。正因如此,工具会预先检查权限,而不是轻信调用结果:跳过检查的智能体会点进虚空,看到屏幕毫无变化,然后永远循环下去。 运行 doctor,看看你究竟处在什么状态: npx dsh-computer-use-doctor --test-input platform darwin (arm64) backend native displays [main] display 0 1470x956 pt 2940x1912 px 2x origin (0, 0) permissions [FAIL] Accessibility — post clicks and keystrokes add the host application under System Settings > Privacy & Security > Accessibility [OK ] Screen Recording — capture the screen capture [OK ] main display: 2940x1912 px PNG input delivery [FAIL] posted events are being discarded --test-input 会把光标移动 40 点,确认它确实跟过去了,再移回原位——权限标志只是断言,光标动了才是证据。 模型要求 每个结果都带截图,所以调用链路必须声明图像输入。工具动手之前会先检查这一点,遇到读不了图的模型就直接拒绝,免得白白浪费一次截图: Error: the computer tool returns screenshots as images, but model "…" does not declare image input. Switch to an image-capable model, or set requireImageCapableModel: false to run it blind. 在显式声明模型的服务商上,这个声明不会自动生效。通过 llm-pi-ai 配置的服务商,会把每一个模型默认设成 input: ["text"],所以一个从不声明自己模态的视觉模型会被当成纯文本模型——这个工具和 read_image 都会拒绝。在模型条目上写明模态: llm-pi-ai: providers: <provider>: models: - id: some-vision-model name: some-vision-model input: [text, image] # without this the model reads as text-only 把 requireImageCapableModel: false 当作逃生舱也行,但它并不能让模型看见:截图照样会拍下来并返回,模型只是用不了。还是声明模态更好。 配置 | 字段 | 默认值 | 含义 | | enabled | true | 是否注册该工具。 | | backend | "auto" | auto、native 或 applescript。auto 优先用 native,失败后降级。 | | display | 0 | 驱动哪块显示器(从 0 开始,主显示器排第一)。 | | maxActionsPerCall | 25 | 单批动作数量上限。 | | waitMs | 2000 | wait 动作的时长。 | | settleMs | 250 | 输入之后、结果截图之前的停顿。 | | allowedActions | null | 动作类型的允许列表;null 表示全部放行。 | | invertScroll | false | 翻转滚动的正负号约定。 | | helperCacheDir | null | 编译后 helper 的缓存位置。 | | requireImageCapableModel | true | 调用方路由看不到图像时拒绝运行。 | 未知字段会被拒绝,而不是忽略:组合配置里写错一个字段,不能让部署方误以为自己关掉了某项功能,实际却没关。 锁定权限 计算机操作能力很强,而截图是攻击者可控的输入。有两个配置项真正起作用: - id: tool-computer-use name: dsh-plugin-computer-use config: Read-only: the model can look at the screen but never touch it. allowedActions: [screenshot, wait] - id: tool-computer-use name: dsh-plugin-computer-use config: No clicking, no typing: move and scroll only. allowedActions: [screenshot, move, scroll, wait] 插件还会注册一段系统提示词,指示模型把屏幕上的内容当作不可信输入,操作后要验证,遇到难以撤销的操作要先确认。提示词只是引导,不构成强制边界——允许列表才是。 工作原理 坐标空间 这里涉及三种空间,把它们混为一谈就是计算机操作类工具的经典 bug: | 空间 | 含义 | | 图像空间 | 模型实际收到的 PNG 像素——附件服务可能把大尺寸截图缩小 | | 像素空间 | 磁盘上截图的像素,也就是显示器真实的后备分辨率 | | 点空间 | CGEvent 投递到的全局左上原点空间;Retina 显示器的像素数是点数的两倍 | 模型在图像空间里测量,helper 在点空间里投递。插件按智能体保存上一次返回截图的几何信息,把每个传入坐标都从这套信息里换算出来——模型自己永远不用做缩放,结果文本里也总会写明比例,方便核对: screenshot 2940x1912 px · display 1470x956 pt · backing scale 2x · 1 screenshot px = 0.5x0.5 display pt 截图被视为后备像素的权威依据,因为显示器跑缩放版 Retina 模式时,CGDisplayPixelsWide 报的是点尺寸。 为什么 helper 要编译,为什么截图不走它 helper 首次使用时从源码编译,并按源码摘要缓存。选择编译而不是直接发二进制,是为了让包跨架构可移植,也避免下载未签名 blob;一次大约耗时 0.6 秒。如果 ~/Library/Caches 不可写,就回退到系统临时目录,而不是丢掉原生后端。 这个回退有代价,值得了解,因为辅助程序的路径就是权限身份:macOS 把辅助功能授权绑定到二进制文件,而不是绑定到工具。系统临时目录会被无预警回收,所以针对那里的辅助程序做出的授权,之后会静默失效。doctor 会打印目录和确切的二进制文件,当目录是易失目录时还会说明: helper cache /var/folders/…/T/dsh-plugin-computer-use (volatile) the system reclaims this directory, so an Accessibility grant made against /var/folders/…/T/dsh-plugin-computer-use/computer-helper-27836c7760923b3c stops working once it does. Set helperCacheDir to a stable path, for example ~/Library/Caches/dsh-plugin-computer-use, and start a new session. 当宿主机无法写入用户缓存时,把 helperCacheDir 设为稳定路径——比如只允许在工作区内写入的沙箱。 截图走系统的 screencapture 二进制文件,不走辅助程序,因为 CGDisplayCreateImage 从 macOS 15 起已废弃(ScreenCaptureKit 取代了它)。截图是这个工具里最容易在后续版本中失效的部分,所以它依赖 Apple 维护的工具。精确的像素尺寸从 PNG 自身的 IHDR 块读取——不用图像库,也不靠猜测。 后端 | 后端 | 输入 | 显示器 | 需要 | | native | 完整动作集,精确 | 全部,原点正确 | Xcode Command Line Tools(clang) | | applescript | 仅 click、keypress、type、wait | 仅主显示器 | macOS 之外无需其他 | auto 优先用 native,工具链缺失时降级到 AppleScript,因为能用的缩减后端胜过硬失败。显式写 backend: native 会被严格遵从——编译失败会报告,不会悄悄降级。auto 降级时,原因会带在解析出的后端上,方便诊断解释。 开发 npm install # fetches @deepseek-ai/dsh-tools, needed by the schema suites npm test # 108 tests: pure logic + a real compile of the native helper npm run doctor # check permissions on this machine npm run smoke # drive the real tool once and write the screenshot to .scratch/ 还有两项检查会驱动工具操作本机并读回结果,所以坐标映射或输入路径出现回归时会大声失败,而不是生成一张看似合理的截图: npm run check:input # move the cursor, read it back, compare against the mapping npm run check:click-type # click and type into a scratch document, then read the text npm run check:scroll # scroll a document and read which way the view moved check:input 会自我验证:它用辅助程序在前后各读一次光标,所以缩放系数错了,读出的坐标就会错。check:click-type 需要一个获得焦点的 TextEdit 窗口,否则直接跳过,不会往当前持有焦点的其他窗口里点。check:scroll 向 Accessibility API 查询 TextEdit 文档的可见字符范围,这是唯一能分辨向下滚动和向上滚动的办法——截图看不出视图往哪个方向移动。之所以有这个检查,是因为滚动方向的正负号曾经反过一次,而当时没人发现。 不碰 harness 包的测试套件,即使没跑 npm install 也能运行;工具 schema 相关的套件会自己跳过并给出说明,而不是报错。 src/ index.js the Cordis plugin: registers the tool and the prompt section tool.js the computer tool, coordinate state, permission gates actions.js the action vocabulary, schema, and canonicalisation keys.js Codex key/button names → canonical macOS names geometry.js image space ↔ display point mapping png.js PNG IHDR reader config.js defaults and validation prompt.js the system-prompt policy exec.js subprocess helper with timeout and cancellation backends/ index.js backend selection native.js compile, probe, act, capture applescript.js the reduced fallback native/ computer_helper.m the Objective-C helper 验证环境 macOS 26.0.1(arm64),Node 24,接了两台显示器。原生辅助程序能编译,能探测两台显示器,能对一块 1470×956 点的 Retina 屏截出 2940×1912 的 PNG,并且会报告:在未授予 Accessibility 权限时,输入事件会被丢弃——在一台还没授权的机器上,这就是正确答案。 安全 这个工具操作用户真实的桌面,用的是用户真实登录的应用。它不是沙箱,也不假装自己是。 - 截图和窗口内容都是不可信输入。提示词里写明了这一点,但模型可能出错;真正的强制点在 allowedActions 白名单。 - 屏幕上任何东西都能碰到,包括用户的邮件、银行和终端。 - 辅助程序是从本仓库源码编译出来的本地二进制文件。它没有用 Developer ID 签名,所以除了你授予的权限之外,它没有任何特殊信任。 许可证 MIT —— 见 LICENSE。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
Admaing/dsh-plugin-computer-use
让模型截屏并点击输入,直接操作 macOS 桌面
相关插件 · 视觉能力
智能体工作台Devin-AXIS/iPolloWork
企业级、本地优先的智能体工作台,面向个人和智能体团队——一个工作区,容纳多个智能体引擎;一套统一体系,管理插件和技能;支…
★ 7,359已汉化DSH
72
开源设计工作台nexu-io/open-design
OpenDesign:首个协作式 AI 设计智能体工作区
★ 105,514已汉化DSH
71.8
多智能体编码工作区spacering-net/codeg
多智能体协作的 AI 编程工作区:汇总 Claude Code、Codex、OpenCode、Pi、Grok Build 等来源的会话。支持桌面应用、自托管服务器或 Docker。
★ 4,289已汉化DSH
71.6
GPT 图像提示词库freestylefly/awesome-gpt-image-2
Prompt as Code | GPT Image 2 / 2.5 提示词与案例库,530+ 个案例、20+…
★ 34,534已汉化DSH
71.5
架构图生成器tt-a1i/archify
把你想理解、规划或分享的事,变成可以互动的可视化作品。
★ 92,675已汉化DSH
71.2
AI 用量桌面小部件Javis603/token-monitor
EN | 简 | 繁 | KO | JA | PT
★ 3,522已汉化DSH
71
这是你的仓库?认领条目