macOS
Computer Use

让客户端负责规划,让执行器负责真实桌面输入。

dsh-macos-computer-use / MCP / DeepSeek Harness

GitHub

操作之前,
先确认依据。

模型知道要点击什么,不等于旧截图上的位置仍然有效。窗口移动、焦点变化和应用反馈,都可能改变一次输入的含义。

这个项目将 macOS 桌面执行能力接入 MCP 客户端与 DeepSeek Harness。客户端产生操作意图;本机执行层提供观察、目标校验、输入与停止能力,工具结果再返回客户端。

执行器本身不调用模型,也不需要模型 API key。这样可以分别检查客户端规划和执行层行为,并为同一执行层保留两种接入方式。

从观察,
到一次输入。

点击执行阶段,查看这一步的输入、校验与反馈。下方是机制说明,实际录屏稍后加入。

一次输入,如何发生

执行机制示意
客户端与 macOS 执行器的交互MCP 客户端或 Harness 提供规划,执行器观察、校验并操作 macOS 桌面,结果返回客户端。客户端MCP / Harness模型规划执行器观察 · 校验 · 输入macOS真实桌面截图、文本与工具结果返回客户端
客户端MCP / Harness
执行器观察与输入
macOS真实桌面

结果返回客户端

computer_observe

读取截图、窗口与可访问性元素,生成本次观察的 observation_id。

先看清,再操作。

每次操作都基于当前观察。截图像素与桌面坐标之间的映射随观察返回,客户端据此选择目标。

这里展示执行逻辑。
真实任务录屏将在完成录制后加入。

阅读已有任务记录

两种入口,共用执行层

MCP 使用标准 stdio 服务;Harness 使用原生插件注册桌面工具。两者通过进程桥接调用 Python 执行器,减少接口间的行为分歧。

观察与操作绑定

优先使用可访问性元素目标;原始坐标绑定截图的 observation_id。操作前检查显示布局及目标身份、几何信息,被拒绝后重新观察。

查看剪贴板与停止语义

MCP 的 computer_read_existing_clipboard 只读取已有剪贴板文本,不发送复制快捷键。Harness 保留复制当前内容后还原剪贴板文本的路径。两种工具的输入语义明确区分。

computer_stop 绕过操作队列,取消待执行工作并请求释放已按住的输入。离线测试验证适配与取消逻辑;实际按键释放仍需要对应真机验收。

我的工作

把已有桌面执行层整理为可供客户端调用的公开项目,补齐接口适配、错误反馈与验证材料。

接口与适配MCP stdio 服务、Harness 工具接入、进程桥接、截图内容和结构化错误返回。

行为与约束观察编号、坐标映射与目标校验;区分两种剪贴板语义,提供只读模式与停止路径。

验证与交付接口测试、真实只读检查、既有桌面任务审计、安装示例与演示分镜。

公开项目复用已有执行层;上述范围不包含客户端模型,也不将公司产品作为个人作品。

每类验证,
回答不同问题。

接口是否符合契约、工具能否读取真实桌面、任务是否完成,分别保留证据。

离线接口与执行层测试

有测试记录

第二轮报告记录 Python 103 项、Harness 50 项、MCP 35 项通过。覆盖适配、参数拒绝、只读输入限制、取消和停止等行为;这些用例不调用模型,也不发送真实桌面输入。

查看原始测试报告

真实桌面只读检查

有工具轨迹

Terminal MCP 检查有维护者提供的成功输出;Harness 原生插件检查核对了状态、PNG 截图附件、AX 文本、等待与停止返回。读取结果不等于完整正文覆盖,也不证明真实输入任务成功。

查看只读验证记录

既有桌面任务审计

逐案例保留结论

已有十项任务报告涉及计算器、备忘录、提醒事项、地图与窗口干扰。审计分别检查执行路径、最终状态和副作用;不将混合验收结果合并为总成功率。

查看逐任务审计

真实任务演示

录屏待补充。计划保留界面变化、旧目标被拒绝、重新观察与最终确认的完整过程。

当前页面的交互图仅说明执行机制。

当前边界

目前只支持 macOS。可访问性文本覆盖依应用而异;浏览器返回控件信息,不意味着已经读取正文。

输入已提交,不意味着应用已经接受操作。几何校验也不覆盖每一种视觉变化,客户端仍需要重新观察并按任务验收条件确认结果。

真实输入、拖拽精度、不同 MCP 客户端的审批行为与干净机器安装体验,需要按对应环境继续验证。

EnzSub

了解酶–底物表示学习与实验结果。