dsh-plugin-lcu:利用 ChatGPT 桌面应用 runtime 进行本地控制

前言

在 DeepSeek Harness (DSH) 的生态中,实现本地桌面或浏览器的自动化控制通常需要额外的运行环境。dsh-plugin-lcu 插件利用了 ChatGPT 桌面应用内置的 Computer-Use API (cua) runtime,通过 MCP 协议与该运行时通信,从而驱动桌面和 Chrome 浏览器。它无需安装额外的 Python 解释器或独立的运行时包装器,直接复用 ChatGPT 桌面应用提供的本地能力。

功能列表

该插件为 DSH Agent 添加了三个核心工具:

  • js:使用 cua API 运行一段 JavaScript 程序。首次调用会返回 API 文档,选择应用或标签页后会返回初始 UI 状态。
  • js_reset:丢弃当前持久的 JavaScript 会话,启动一个新的运行时实例。
  • computer_use_stop:用于管理会话中持有的应用。不带参数时列出当前应用,传入应用 Bundle ID 时释放该应用。这会清除运行时的“计算机使用处于激活状态”标记,而不会结束整个会话。

安装步骤

  1. 安装插件
    将插件安装到指定的 DSH profile 中。安装后,插件在 profile 中处于激活状态,但不会自动启动任何进程。
    dsh plugin --profile <profile> add dsh-plugin-lcu
对于桌面应用管理的 profile,请通过应用内的插件管理器(设置 -> 插件)进行安装,以避免 CLI 冲突。
  1. 生成预设
    DSH Agent 预设不支持继承,config.plugins 是完整的插件列表。因此,启用该插件需要手动生成包含该插件的 heavy 预设。
    git clone https://github.com/ckanner/dsh-preset-generator
    node dsh-preset-generator/src/gen-presets.mjs --profile ~/.dsh/profiles/<profile>
此操作会在 profile 的 `cordis.patch.yml` 中写入 `heavy` 预设。`heavy` 模式会将工具展示方式设为 `native`,确保 `js` 工具可以直接调用。
  1. 配置允许列表
    编辑 profile 的配置文件(或 cordis.patch.yml),在 dsh-plugin-lcu 配置段中声明允许使用的预设 ID。
    - id: lcu
      name: 'dsh-plugin-lcu'
      config:
        presets:
          - heavy
  1. 重启 Harness
    插件代码和配置更改不支持热重载,必须重启 DSH Harness 后生效。

配置说明

在 cordis.patch.yml 中可配置以下项:

  • app:指定提供 runtime 的应用程序路径,默认为 /Applications/ChatGPT.app。
  • chrome:是否启用浏览器表面功能,默认为 false。
  • allowedOrigins:预批准的网站源列表。配置后,运行时访问这些源时会跳过授权提示。

启用 Chrome 功能需要安装官方 ChatGPT Chrome 扩展。

使用示例

启用 heavy 模式后,Agent 可以执行以下操作:

  • 获取系统状态:使用 js 工具运行 await cua.getState(); 查看当前运行的应用和标签页。
  • 截图:让 Agent 截取 Finder 窗口并读取分辨率。
  • 浏览器操作:打开 Safari,访问 example.com 并读取页面标题。
  • 列出标签页:查询当前 Chrome 的所有标签页。

运行环境与限制

使用该插件需满足以下前提条件:

  • 操作系统:仅支持 macOS on Apple Silicon。Launcher 需要解析 macOS 应用包,生命周期包装器为 macOS 服务。
  • 应用要求:ChatGPT 桌面应用必须安装在 /Applications/ChatGPT.app。
  • Node 版本:本地安装的 Node.js 版本需为 ^22.19.0 或 >=24.0.0。
  • 运行时来源:Runtime 来自本地 ChatGPT 应用,不会下载、重写或需要额外的 Codex 或 ChatGPT 认证流程。

总结

dsh-plugin-lcu 提供了一种轻量级的本地控制方案,它通过复用 ChatGPT 桌面应用的原生能力,简化了环境搭建流程。配合 DSH 的插件化架构,开发者可以在不引入复杂依赖的情况下,直接通过 JavaScript 调用系统 API。

更多细节与源码:GitHub - ckanner/dsh-plugin-lcu

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜