Skip to main content
Glama
zjh02249

dsh-desktop-operator

by zjh02249

DSH Desktop Operator

🌐 Cambio de idioma / Language: 简体中文 | English

Version Platform License

dsh-desktop-operator es un plugin de Computer Use para Windows, automatización de escritorio y MCP orientado a DeepSeek Harness / DSH. Empaqueta el runtime nativo de Open Computer Use adaptado, la capa de puente DSH, las licencias y los binarios de Windows x64/arm64 en un solo paquete de plugin; tras la instalación ya no depende de un segundo proyecto ni de un directorio de código fuente adyacente.

El objetivo del proyecto no es simular simplemente el ratón y el teclado, sino replicar progresivamente las capacidades de ingeniería clave de Codex Computer Use: seleccionar ventanas con precisión, observar la interfaz, priorizar elementos de accesibilidad, ejecutar acciones, verificar resultados, gestionar ventanas modales, confirmar antes de acciones sensibles y permitir que el usuario vea claramente que el ordenador está siendo controlado.

Estado actual: 0.8.0, prioridad Windows, disponible para pruebas por desarrolladores. Se ha verificado en escritorio real con Windows 10 x64 y DeepSeek Harness 0.3.5 / DSH 0.1.0-rc.6; aún no debe considerarse una versión final con estabilidad de nivel producción en todos los sistemas y aplicaciones.

Relación y atribución del proyecto

Esta es una derivación mejorada con mantenimiento independiente de valkia/dsh-plugin-computer-use. La implementación del plugin original proviene de trabajos relacionados con DeepSeek Harness; este repositorio conserva la licencia MIT original y la declaración Copyright (c) 2026 DeepSeek, y ha fusionado y transformado de forma continua el runtime de Windows procedente de iFurySt/open-codex-computer-use. Este repositorio no es una distribución oficial de DeepSeek.

El producto actual utiliza el ID de paquete de software independiente dsh-desktop-operator y ya no utiliza el identificador @valkia/dsh-plugin-computer-use del repositorio original. El ID antiguo solo aparece en las notas de procedencia y en los comandos de migración, y no implica que este repositorio posea o represente al usuario de GitHub valkia.

Instalación rápida

1. Descargar el paquete del plugin

Descarga la versión más reciente desde Releases de este repositorio:

dsh-desktop-operator-<版本号>.tgz

Por ejemplo, 0.8.0 corresponde a:

dsh-desktop-operator-0.8.0.tgz

Si acabas de compilar desde el código fuente, el paquete de instalación se encuentra en:

artifacts/package/dsh-desktop-operator-0.8.0.tgz

2. Instalar en el perfil web de DSH

dsh plugin --profile web add "D:\Downloads\dsh-desktop-operator-0.8.0.tgz"

Si el terminal no encuentra dsh, utiliza el CLI de DSH incluido con DeepSeek Harness:

$DshCli = "$env:USERPROFILE\.dsh\profiles\node_modules\@deepseek-ai\dsh\lib\bin.js"
node $DshCli plugin --profile web add "D:\Downloads\dsh-desktop-operator-0.8.0.tgz"

3. Montar en un Agent Preset

Solo instalar el paquete del plugin no expone automáticamente las herramientas de Computer Use al modelo. También debes añadir lo siguiente al Agent Preset que necesite capacidades de control de escritorio:

- id: computer-use
  name: 'dsh-desktop-operator'
  config:
    accessPolicy: allow
    highRiskActionPolicy: confirm
    interactionMode: foreground-verified
    allowAppLaunch: false
    visualIndicator: true
    toolCallTimeoutMs: 120000

Los Agent Preset locales suelen encontrarse en:

%USERPROFILE%\.dsh\.agent-presets\<preset-name>\agent.cordis.yml

Razones para recomendar la configuración anterior: actualmente, en algunos entornos de DeepSeek Harness la política de aprobación global es never, en cuyo caso accessPolicy: per-call será rechazado directamente; accessPolicy: allow permite que las acciones de escritorio normales se ejecuten, mientras que highRiskActionPolicy: confirm seguirá invocando la interfaz de confirmación nativa de DSH antes de acciones finales como enviar, eliminar, comprar, subir o instalar.

4. Reiniciar y crear una nueva sesión

Reinicia DeepSeek Harness/el perfil correspondiente y luego crea una nueva sesión con el Agent Preset que acabas de configurar. Las sesiones antiguas no obtendrán automáticamente las herramientas recién montadas.

Puedes pedir primero al modelo que ejecute una comprobación sin efectos secundarios:

列出当前 Windows 桌面上的窗口,不要点击或输入。

5. Verificar la versión instalada

$PluginRoot = "$env:USERPROFILE\.dsh\profiles\web\node_modules\dsh-desktop-operator"
(Get-Content -Raw "$PluginRoot\package.json" | ConvertFrom-Json).version
& "$PluginRoot\runtime\bin\win32-x64\open-computer-use.exe" --version

Ambas versiones deben coincidir con la versión del Release.

Migración desde el paquete antiguo

Si has instalado previamente @valkia/dsh-plugin-computer-use, elimina primero el ID antiguo, luego instala el nuevo paquete independiente y cambia el name en el Agent Preset a dsh-desktop-operator:

dsh plugin --profile web remove '@valkia/dsh-plugin-computer-use'
dsh plugin --profile web add "D:\Downloads\dsh-desktop-operator-0.8.0.tgz"

Actualizar una instalación existente de dsh-desktop-operator

DSH/pnpm puede reutilizar la caché de paquetes locales con el mismo nombre. Al actualizar, se recomienda eliminar primero el paquete antiguo y luego instalar el nuevo .tgz:

dsh plugin --profile web remove 'dsh-desktop-operator'
dsh plugin --profile web add "D:\Downloads\dsh-desktop-operator-0.8.0.tgz"

Después, reinicia DeepSeek Harness y vuelve a verificar la versión con una nueva sesión.

Related MCP server: Windows MCP Server

Compatibilidad del sistema

Entorno

Estado

Descripción

Windows 10 x64

Verificado

El equipo de desarrollo actual es Windows 10 22H2 / Build 19045; se han probado flujos reales de WPF, WinForms y parte de DingTalk.

Windows 11 x64

Se espera compatible, pendiente de matriz completa en hardware real

Las API WGC, UI Automation y SendInput utilizadas son compatibles, pero aún no se ha completado una regresión completa.

Windows arm64

Compilado, sin verificar en hardware real

El Release incluye binarios win32-arm64; actualmente solo se ha completado la compilación cruzada y la verificación de integridad del paquete.

macOS

No implementado

Actualmente no hay runtime para macOS, adaptación de permisos ni artefactos de instalación.

Linux

No implementado

Actualmente no hay runtime X11/Wayland ni artefactos de instalación.

Pantalla de bloqueo, escritorio seguro de UAC

No compatible

El escritorio dentro de los límites de seguridad de Windows no puede ser controlado por procesos de usuario normales.

Sesión de escritorio remoto desconectada

No garantizado

Depende de una sesión de escritorio interactiva válida.

DeepSeek Harness y entorno de desarrollo

Proyecto

Requisito/alcance de verificación

DeepSeek Harness

Verificado 0.3.5

DSH

Verificado 0.1.0-rc.6; DSH sigue siendo una API de prelanzamiento, las actualizaciones futuras pueden requerir adaptación

Node.js

^22.19.0 o >=24.0.0

pnpm

11.7.0

Go

Se necesita 1.22+ para compilar el runtime

Windows SDK

La verificación de compilación actual utiliza 10.0.26100.0

Compatibilidad de aplicaciones

Aplicación/marco

Estado actual

Controles WPF estándar

Verificado: observación de ventanas, foco, set_value, clic, postcondiciones combinadas, captura WGC

Controles WinForms estándar

Verificado: reconocimiento de owner/modal, bloqueo de diálogos de conmutación, window_closed

Cliente de escritorio DingTalk

Parcialmente verificado: análisis de ventanas, activación, captura y lectura de estado disponibles; el bucle completo en hardware real de búsqueda de contactos, entrada en chino y envío final sigue pendiente

Electron / Qt / WinUI / UWP / Office

Algunas capacidades pueden estar disponibles, sin matriz sistemática completada

Juegos, DirectX, lienzos de dibujo propio

No garantizado: puede que solo se puedan usar coordenadas de captura, sin elementos semánticos fiables

Páginas web en navegador

Puede controlar la ventana del navegador, pero este proyecto no es una herramienta de automatización DOM específica para navegadores

Funciones implementadas

Instalación de paquete único y runtime

  • Un solo .tgz incluye el plugin DSH, el código fuente del runtime, los binarios de Windows x64/arm64, las licencias y las declaraciones de terceros.

  • Tras la instalación no depende de un proyecto independiente open-computer-use-dsh.

  • Selecciona automáticamente el runtime integrado correspondiente a la arquitectura actual de Windows; admite sobrescritura con ruta absoluta para depuración de desarrollo.

  • El plugin, el runtime nativo y el Release utilizan el mismo número de versión.

  • Reintento de conexión limitado tras la salida anómala del subproceso MCP; terminación del subproceso y cancelación del registro de herramientas al liberar Agent/Session.

Ventanas y observación

  • Enumera aplicaciones y ventanas de nivel superior, utilizando WindowRef estable, generación, identidad de proceso y ventana para reducir operaciones erróneas.

  • Detecta referencias de ventana obsoletas/ambiguas y rechaza continuar operando sobre objetivos que han cambiado o no pueden confirmarse de forma única.

  • Utiliza Windows Graphics Capture (WGC) como ruta principal de captura de ventanas; puede capturar de forma independiente incluso cuando la ventana está cubierta por otras.

  • Devuelve dimensiones de píxeles físicos, origen de la ventana, DPI, límites del escritorio virtual y diagnóstico de degradación de captura.

  • Detecta movimiento/redimensionamiento de la ventana tras la captura y rechaza el uso de coordenadas obsoletas.

  • Identifica ventanas minimizadas y exige restaurarlas y reobservarlas primero.

  • Expone el árbol de UI Automation, índices de elementos, elemento enfocado y relaciones de ventanas modales.

Acciones de escritorio

  • Activar ventana, clic, arrastre, desplazamiento, teclas/combinaciones de teclas, entrada de texto, set_value de UIA y acciones auxiliares.

  • En el modo de verificación en primer plano utiliza el SendInput real de Windows y verifica la ventana objetivo y el foco antes de cualquier entrada.

  • set_value prioriza el ValuePattern de UIA y, si es necesario, utiliza una entrada de respaldo con foco verificado; si la lectura de retorno no coincide, no informa éxito.

  • Las coordenadas del ratón se mapean de píxeles de captura a coordenadas físicas de ventana y se rechazan puntos fuera de límites.

  • Tras la acción se pueden verificar target_focused, target_value_equals, text_contains, foreground_window, screenshot_changed y window_closed.

  • Admite hasta 8 combinaciones de postcondiciones all/any no anidadas.

  • Solo devuelve ActionStatus: applied cuando el resultado está verificado; si no se puede determinar, devuelve unknown, evitando informes falsos de éxito.

Estado de control visible para el usuario

  • Muestra por defecto una barra de estado superior que no roba el foco y permite clics a través.

  • Un halo naranja sigue la posición real del ratón del sistema.

  • Las acciones del ratón utilizan movimiento suave de corta distancia para que el usuario pueda ver la automatización operando.

  • Al final de cada ronda de uso real se invoca turn-ended para limpiar la barra de estado y el estado visual temporal.

Ocupación y recuperación de sesión

  • El primer turno de Agent que supera la política obtiene una concesión del runtime, evitando que dos sesiones reutilicen simultáneamente el mismo conjunto de instantáneas de elementos.

  • Liberación automática al detener el turno, destruir el Agent o destruir la Session; las nuevas sesiones pueden continuar usándolo sin reiniciar DSH.

  • Las solicitudes de control concurrente fallan explícitamente, sin enviar silenciosamente entrada a la sesión incorrecta.

  • Detecta ventanas owner deshabilitadas por modales owned y devuelve modal_window_required con ventanas candidatas.

Confirmación de acciones de alto riesgo

  • Todas las herramientas con efectos secundarios requieren un action_intent.kind preciso y un resumen legible por el usuario.

  • send, submit, publish, delete, purchase, approve, upload, change_access, expose_sensitive_data e install se consideran acciones finales de alto riesgo.

  • El valor predeterminado highRiskActionPolicy: confirm confirma antes de la acción final mediante la interfaz de preguntas nativa de DSH.

  • Se puede configurar para rechazar todo o permitir explícitamente.

  • Comprobación básica anti-degradación para controles semánticamente evidentes de envío, eliminación, pago, etc., evitando disfrazar acciones de alto riesgo como clics normales.

Parcialmente implementado, aún requiere mejoras

  • Matriz completa de combinaciones de múltiples monitores, coordenadas negativas y DPI mixto 100%/125%/150%/200%.

  • Regresión a largo plazo en dispositivos reales con Windows 11 y Windows arm64.

  • Matriz de adaptación de aplicaciones para Electron, Qt, WinUI, UWP, Office y controles complejos de dibujo propio.

  • Aceptación completa de extremo a extremo de búsqueda real de contactos en DingTalk, entrada en chino, revisión del contenido del mensaje y "confirmación antes de enviar".

  • Las capturas como adjuntos de imagen del modelo dependen de que DSH monte ctx.attachments y de que el enrutamiento del modelo seleccionado admita entrada de imágenes.

  • Mecanismos más finos de cancelación por usuario, bloqueo a nivel de ventana, recuperación ante fallos y deduplicación de acciones repetidas.

  • La clasificación de acciones de riesgo depende actualmente principalmente de declaraciones, etiquetas de controles y políticas; aún no es un motor de seguridad semántica completo.

Aún no implementado

  • Runtime/paquetes de instalación para macOS y Linux.

  • OCR integrado, grounding visual, reconocimiento de iconos y modelos de localización de objetivos puramente visuales.

  • Entrada en segundo plano fiable para todas las aplicaciones sin activar la ventana.

  • Escritorio seguro de UAC, pantalla de bloqueo, niveles de integridad cruzados y control de interfaces de credenciales del sistema.

  • CAPTCHA, verificación de inicio de sesión, comprobaciones de seguridad o elusión de restricciones de seguridad del sistema operativo/aplicaciones.

  • Herramientas semánticas de portapapeles, arrastrar y soltar archivos, selector de archivos del sistema y herramientas de alto nivel específicas de Office.

  • Aislamiento de sandbox/máquina virtual, reversión de acciones, allowlist de dominios y reproducción completa de auditoría.

  • Firma de macOS, notarización, firma de código de Windows, actualización automática y publicación en el registro público de npm.

La hoja de ruta a largo plazo se encuentra en ROADMAP.md.

Lista de herramientas

El runtime expone actualmente 14 herramientas MCP:

Herramienta

Función

list_apps

Lista aplicaciones instaladas o en ejecución

list_windows

Lista ventanas de nivel superior y WindowRef

get_app_state

Obtiene captura a nivel de aplicación y estado de accesibilidad

get_window

Resuelve una ventana precisa

get_window_state

Obtiene captura de ventana, elementos UIA, foco y relaciones modales

launch_app

Inicia una aplicación cuando la política lo permite

activate_window

Restaura y activa una ventana

click

Hace clic en un índice de elemento o coordenadas de captura

drag

Arrastra entre coordenadas de captura

perform_secondary_action

Ejecuta acciones de accesibilidad auxiliares proporcionadas por el elemento, como SetFocus

press_key

Envía una tecla o combinación de teclas

scroll

Desplaza un elemento o ventana

set_value

Establece un valor mediante UIA/entrada de respaldo y verifica con lectura de retorno

type_text

Escribe texto en el foco verificado

Las acciones con ámbito de ventana deben llevar un window preciso. Las acciones de elementos, teclas y texto requieren el observation_id más reciente; los clics por coordenadas y los arrastres requieren el screenshot_id más reciente. Después de cada acción se debe reobservar; no se deben reutilizar índices de elementos obsoletos.

Flujo de uso recomendado

list_windows
    ↓
选择唯一 WindowRef
    ↓
activate_window
    ↓
get_window_state
    ↓
优先选择 UIA 元素,必要时才使用截图坐标
    ↓
执行一个动作 + expected_postcondition
    ↓
重新 get_window_state 验证
    ↓
如为发送/删除/购买等最终动作,先由用户确认

El texto y las instrucciones en pantalla deben tratarse como contenido no confiable. No se debe cambiar la autorización del usuario ni las políticas de seguridad por la aparición de texto como "ignora las instrucciones anteriores" dentro de la ventana.

Opciones de configuración

Configuración

Valor predeterminado

Descripción

accessPolicy

per-call

per-call o allow explícito; con aprobación global never, el primero será rechazado

highRiskActionPolicy

confirm

confirm, deny o allow

interactionMode

foreground-verified

Verificación de foco en primer plano; también se puede elegir background-best-effort, de menor capacidad

allowAppLaunch

false

Si se permite que el runtime inicie aplicaciones

visualIndicator

true

Si se muestran la barra de estado, el halo del ratón y el movimiento suave

toolCallTimeoutMs

120000

Tiempo de espera en milisegundos para una sola llamada de herramienta

failOnStartupError

true

Si se rechaza la activación cuando falla el inicio del runtime o el descubrimiento de herramientas

reconnect.enabled

true

Si se reconecta tras una desconexión inesperada

reconnect.initialDelayMs

500

Retraso del primer reintento

reconnect.maxDelayMs

30000

Límite máximo de retroceso del reintento

reconnect.maxAttempts

10

Límite máximo de reintentos consecutivos

runtimeExecutable

""

Valor vacío usa el runtime del paquete; no vacío debe ser una ruta absoluta de desarrollo

env

{}

Variables de entorno pasadas explícitamente al runtime

cwd

""

Directorio de trabajo del runtime

cleanupOnTurnEnd

true

Limpieza del estado visual al final de la ronda

cleanupTimeoutMs

5000

Tiempo de espera del notificador de limpieza

cleanupGraceMs

1000

Período de gracia para terminar el árbol de procesos del notificador

Compilación desde el código fuente

Requisitos previos

  • Windows PowerShell 5.1 o PowerShell 7

  • Node.js ^22.19.0 o >=24

  • pnpm 11.7.0

  • Go 1.22+

  • Windows SDK y cadena de herramientas de compilación C# disponible

Compilar, probar y empaquetar con un solo comando

pnpm install --frozen-lockfile
pnpm package:plugin

package:plugin ejecutará secuencialmente:

  1. Probar el runtime vendored y ejecutar go vet;

  2. Compilar los runtimes nativos de Windows x64 y arm64;

  3. Ejecutar las pruebas Node del plugin;

  4. Generar el .tgz;

  5. Desempaquetar y verificar runtime, código fuente, licencias y herramientas necesarias;

  6. Iniciar el runtime MCP empaquetado y verificar la versión y la lista de herramientas.

Si Go no está en el PATH, se puede invocar directamente:

powershell.exe -NoProfile -ExecutionPolicy Bypass `
  -File .\scripts\package-plugin.ps1 `
  -GoExecutable "C:\path\to\go.exe"

Alcance de pruebas y aceptación

Las pruebas automatizadas cubren configuración del plugin, selección de runtime, limpieza de variables de entorno, sincronización de herramientas, políticas de aprobación, confirmación de alto riesgo, liberación de concesiones, reconexión tras desconexión, limpieza de rondas e integridad del paquete. El runtime de Windows también proporciona scripts smoke de ventanas reales:

runtime/windows/scripts/run-windows-window-smoke.ps1
runtime/windows/scripts/run-windows-capture-smoke.ps1
runtime/windows/scripts/run-windows-action-smoke.ps1
runtime/windows/scripts/run-windows-modal-smoke.ps1

La compilación del Release no pretende sustituir la aceptación de aplicaciones reales. Cuando se trate de enviar mensajes, eliminar datos, comprar, subir o modificar permisos, se debe ejecutar sobre objetos de prueba aislados y mantener la confirmación del usuario final.

Versiones publicadas

  • El historial de versiones se encuentra en CHANGELOG.md.

  • Al enviar una etiqueta v*, GitHub Actions vuelve a probar y empaquetar en un runner de Windows.

  • El Release incluye automáticamente el .tgz, los runtimes de ambas arquitecturas, el manifest y los archivos de verificación SHA-256.

  • Un job de backfill en la rama principal crea las páginas de Release de GitHub que falten para etiquetas históricas.

Ejemplo de publicación para mantenedores:

git tag -a v0.8.0 -m "v0.8.0"
git push origin main --follow-tags

Estructura de directorios

lib/                         DSH 插件运行时代码与类型
runtime/windows/             合并维护的 Windows Computer Use runtime 源码
runtime/bin/                 构建生成的 x64/arm64 二进制和 manifest
runtime/LICENSE.*            上游许可证
runtime/THIRD_PARTY_*        第三方声明和溯源
scripts/build-runtime.ps1    runtime 构建入口
scripts/package-plugin.ps1   一键测试、构建、打包和校验
test/                        插件测试
.github/workflows/           CI 与 GitHub Releases 自动化
ROADMAP.md                   长期 Codex 能力对齐路线
CHANGELOG.md                 版本历史

Límites de seguridad

Este plugin controla el escritorio real del usuario, no una sandbox. No elude los permisos del sistema operativo y no puede garantizar que los controles de dibujo propio de todas las aplicaciones de terceros sean observables. Mantén por defecto:

  • allowAppLaunch: false;

  • highRiskActionPolicy: confirm;

  • visualIndicator: true;

  • Confirmación individual para cada acción final de envío, eliminación, compra, autorización, subida e instalación;

  • Para ActionStatus: unknown, reobservar y nunca reintentar a ciegas acciones con efectos secundarios.

Upstream y licencias

El runtime de Windows de este proyecto se basa en iFurySt/open-codex-computer-use, con fusión, adaptación y mantenimiento continuo. La licencia del código upstream y las declaraciones de terceros se conservan en runtime/.

Este repositorio utiliza en su conjunto la MIT License. Al usar y redistribuir se deben conservar los avisos de copyright, licencia y terceros correspondientes.

A
license - permissive license
Not graded
quality - not tested
A
maintenance

Maintenance

Maintainers
Response time
0dRelease cycle
4Releases (12mo)
Commit activity

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables AI agents to interact with Windows operating systems through native UI automation, file navigation, application control, and system commands. Provides seamless integration between LLMs and Windows environments for tasks like clicking, typing, launching apps, and capturing desktop state.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables comprehensive Windows desktop automation including screen capture, OCR text extraction, mouse/keyboard control, window management, process control, and clipboard operations through 25+ tools for AI agents.
    4
    MIT
  • F
    license
    Not graded
    quality
    B
    maintenance
    Enables AI agents to interact with the Windows desktop environment, including browser control, clipboard, file management, GitHub, Roblox Studio, OCR, and more, with a privileged approval system for risky actions.

View all related MCP servers

Related MCP Connectors

  • Eyes and hands on real Windows PCs — observe, click, type via Glasswarp API.

  • Operate Linux, macOS and Windows from your LLM. Every action runs through an auditable allowlist.

  • AI-powered browser automation — navigate, click, fill forms, and extract data from any website.

View all MCP Connectors

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/zjh02249/dsh-desktop-operator'

If you have feedback or need assistance with the MCP directory API, please join our Discord server