前言¶
在 DeepSeek Harness(DSH)里让 Agent 操作本机应用,常见做法是走全局鼠标键盘注入或脚本桥接。这类路径容易带来两个问题:一是动作与当前 UI 状态脱节,模型基于过期界面信息重放点击;二是输入事件进入全局 HID 流,可能移动系统光标、抢占前台,打断用户正在进行的操作。
dsh-computer-use 是 Anionex 维护的 DSH 插件,定位为 macOS 上的原生动作层。它以 Accessibility 观测为先,把每个动作绑定到未过期的 observation,并通过进程/窗口定向的路由把 fallback 输入投递给目标应用,而不是全局桌面。目前仅支持 macOS 14 及以上版本。
这是什么¶
@anionex/dsh-computer-use 是发布在 npm 上的 DSH Bundle,GitHub 仓库为 Anionex/dsh-computer-use。插件分类为 admin-security,当前版本 v0.1.0,采用 MIT 许可证。
它解决的核心问题是:在 DSH Session 中,让 Agent 能够观察 macOS 应用的 Accessibility 树、对指定进程/窗口执行语义化或 fallback 输入,并在每次动作后返回新鲜状态;同时通过作用域权限、过期状态拒绝和前台安全输入策略,降低误操作与干扰用户的风险。
核心功能¶
下面介绍插件在 README 中明确列出的能力。
先观察再动作¶
computer_observe 返回有界的 Accessibility 树、带 index 的元素、准确的 app/process/window 元数据、权限状态,以及可选的截图 Artifact。每个元素带有 observation-local index 和 opaque targetHandle,后续动作必须引用未过期的 observationId。
前台安全的输入路由¶
默认策略有意避免干扰用户当前工作:
- 不移动系统光标;helper 中没有 cursor warp 路径。
- click、scroll、drag 的 fallback 走 pid/window 定向的 SkyLight 路由,不进入全局 HID 事件流。
- 语义化 Accessibility、
keyboardPolicy: preserve与目标进程指针输入不激活应用;Bundle 默认的keyboardPolicy: activate仅在键盘 fallback 前把目标应用带到前台。 - click、scroll、drag 使用独立的 Agent 软件光标(点击穿透、不激活应用),系统真实光标保持不变。
优先语义输入,fallback 投递给目标¶
动作优先使用 AXPress、可编辑 value、selected-text 赋值和元素声明的 Accessibility action;仅在必要时才走指针或键盘 fallback。键盘输入发给选定 pid;指针输入携带窗口本地坐标,发给选定 pid 和 CGWindowID。
作用域权限与敏感动作确认¶
read/control lease 按 Agent、Session、turn 和准确 bundle id 分离。没有配置 grant 时,DSH 会请求 approval:read approval 在 Session 内有效,control approval 只在当前 turn 有效。高影响动作需要一次性 confirmation。
模型 Tool 按需暴露¶
Bundle 初始只贡献 computer_use_activate。在当前 Agent 加载 Computer Use Skill 后,才暴露 computer_list_apps、computer_observe、computer_click、computer_set_value、computer_type_text、computer_press_key、computer_scroll、computer_drag、computer_perform_action、computer_wait、computer_confirm 等执行 Tool。
安装与启用¶
前置条件¶
- macOS 14 或更新版本。
- 已安装 Web 或 Headless Profile、并挂载 Skill Tool 的 DeepSeek Harness。
- macOS Accessibility 权限(观察和原生动作必需)。
- 仅当请求截图时需要 macOS Screen Recording 权限。
已发布的包名为
@anionex/dsh-computer-use。旧名@dsh-external/dsh-computer-use从未发布到 npm,不可安装;安装前请先更新旧的 profile 或 manifest 引用。
安装命令¶
下面是从 README 给出的官方安装方式,分别添加到 web 与 headless profile:
dsh plugin --profile web add @anionex/dsh-computer-use
dsh plugin --profile headless add @anionex/dsh-computer-use
安装后可用以下命令确认配置已写入:
dsh --profile web --dump-config | grep computer-use
dsh --profile headless --dump-config | grep computer-use
修改已安装插件后,需要重启正在运行的 dsh web host,再创建一个新 Session,让 host 重新载入 Bundle 与 Skill catalog。
加载 Skill¶
在新 Session 中输入:
/computer-use
典型用法¶
加载 Skill 后,可以让 Agent 按「先观察、再动作、返回新鲜状态」的流程操作本机应用。README 给出的示例如下:
使用 Computer Use 检查正在运行的 DSH Computer Use Fixture,启用 deterministic option,并根据动作后返回的新状态报告结果。优先使用 Accessibility 元素,不要复用旧 observation。
仓库自带的 AppKit fixture 用于验证前台安全策略:发布测试通过 open -g 以后台模式启动 fixture,再经与 Agent 相同的协议完成 observe → click → 新鲜 observation 的流程,并检查 activation 为 not-requested、pointerRouting 为 target-process。
典型工作流可概括为:
computer_list_apps列出有界用户应用及权限诊断。computer_observe获取目标应用的 Accessibility 树与observationId。- 基于元素 index 或
targetHandle调用computer_click、computer_set_value等 Tool。 - 动作 settle 后返回完整或差分 observation,供下一步决策。
适用场景与注意¶
适合谁¶
- 需要在 DSH Agent 中操作 macOS 原生应用(无专用 API/CLI 插件时)的开发者。
- 希望 Agent 在后台操作其他应用、同时尽量不干扰用户当前前台工作的场景。
- 需要 stale-state 拒绝、按应用 lease 和敏感动作确认等安全控制的 admin-security 类工作流。
不取代什么¶
README 明确划定了范围:dsh-computer-use 是原生动作层,不会取代更窄的接口:
- 浏览器任务应继续使用 browser automation 和 DOM/CDP 状态。
- 有 API、CLI 或专用应用插件时仍应优先使用。
- OCR 与视觉理解应交给独立安装的
dsh-vision-toolkit,通过vision-toolsSkill 处理截图 Artifact。
安装前须知¶
插件以当前 DSH 进程权限运行,需要 Accessibility 权限,截图时还需要 Screen Recording 权限。安装前应阅读 GitHub 仓库 源码与 MIT 许可证,确认交互策略和权限模型符合你的安全要求。Helper executable 是 DSH 内部传输实现,应通过已注册 Tool 使用,以保留应用 lease、敏感动作 confirmation 与宿主策略检查。
目前仅支持 macOS;Linux 或 Windows 环境无法使用此插件。
结尾¶
dsh-computer-use 把 macOS Accessibility 观测、过期状态拒绝、作用域权限和前台安全输入路由组合成 DSH 的原生动作层,适合需要在本机 GUI 上可靠、可控地执行 Agent 操作的场景。