← Back to home@Shang-ZZ

dsh-computer-use

dsh-computer-use 为 DeepSeek Harness 带来 computer use 能力:通过 js 与 js_reset 两个工具,让智能体读取窗口、点击、输入文字并截屏,操控 macOS 上的任意桌面应用。它直接复用本机已安装的 ChatGPT 桌面应用自带的 computer-use 运行时,无需额外部署;应用授权走 DeepSeek Harness 的提问卡片,每轮结束自动清理上游状态。仅支持 Apple Silicon 版 macOS。

Stars
0
Language
JavaScript
Created
Oct 23, 2026
Updated
Oct 26, 2026

Introduction

dsh-computer-use

Self-contained DeepSeek Harness plugin that gives the agent computer use: read windows, click, type, and screenshot any desktop app — through the computer-use runtime of the locally installed ChatGPT desktop app. macOS (Apple Silicon) only.

It vendors only the macOS launch path of the original computer-use integration: it drops the multi-platform host, the setup/update machinery, and any separate CLI, and reuses the CUA runtime of the installed ChatGPT app in place (never copied or re-signed).

Prerequisites

  • macOS on Apple Silicon.
  • The official ChatGPT desktop app installed at /Applications/ChatGPT.app (supplies the original CUA runtime). The plugin reads it in place; it never downloads or modifies it.
  • DeepSeek Harness >=0.2.1-rc.2 <0.3.

How it works

DSH Host process (plugin)
  └─ spawns <app>/Contents/Resources/cua_node/bin/node  runtime/launcher.mjs
       ├─ resolveInstalledMacApp()      validate ChatGPT.app (signature/team/arch/manifest)
       ├─ environment()                 build the CUA REPL's env (NODE_REPL_*/SKY_*)
       ├─ configureMacosLifecycle()     wrap Sky with runtime/macos_sky_service.mjs (turn-ended hook)
       ├─ startOriginalHost()           lifetime socket + control bridge (runtime/macos_host.mjs)
       └─ spawn the original cua-repl.mjs (the stdio MCP server) with inherited stdio

The plugin then talks MCP to the CUA REPL and registers its js / js_reset tools on DSH's tool registry, injects the runtime's instructions as a system-prompt section, forwards native-app approvals through DSH's question card, and ends each turn upstream (Stop/Interrupt) on DSH's turn/end.

Config

The bundle patch inserts one row with a single option:

appPath: /Applications/ChatGPT.app   # path to the installed ChatGPT app

Vendored dependency

@modelcontextprotocol/sdk@1.30.0 is vendored under node_modules/ because DSH links local bundles (link:) and does not install their npm dependencies. DSH ships the newer @modelcontextprotocol/client (v2); adapters/client.mjs is written against the v1 SDK, so the v1 SDK is pinned and committed here. If you move to a file: install or publish to npm, dependencies in package.json already declares the correct version.