dsh-desktop-operator
DSH Desktop Operator
🌐 Cambio de idioma / Language: 简体中文 | English
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 Harness0.3.5/ DSH0.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-<版本号>.tgzPor ejemplo, 0.8.0 corresponde a:
dsh-desktop-operator-0.8.0.tgzSi acabas de compilar desde el código fuente, el paquete de instalación se encuentra en:
artifacts/package/dsh-desktop-operator-0.8.0.tgz2. 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: 120000Los Agent Preset locales suelen encontrarse en:
%USERPROFILE%\.dsh\.agent-presets\<preset-name>\agent.cordis.ymlRazones 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" --versionAmbas 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 |
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 |
DSH | Verificado |
Node.js |
|
pnpm |
|
Go | Se necesita |
Windows SDK | La verificación de compilación actual utiliza |
Compatibilidad de aplicaciones
Aplicación/marco | Estado actual |
Controles WPF estándar | Verificado: observación de ventanas, foco, |
Controles WinForms estándar | Verificado: reconocimiento de owner/modal, bloqueo de diálogos de conmutación, |
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
.tgzincluye 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
WindowRefestable, 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_valuede UIA y acciones auxiliares.En el modo de verificación en primer plano utiliza el
SendInputreal de Windows y verifica la ventana objetivo y el foco antes de cualquier entrada.set_valueprioriza elValuePatternde 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_changedywindow_closed.Admite hasta 8 combinaciones de postcondiciones
all/anyno anidadas.Solo devuelve
ActionStatus: appliedcuando el resultado está verificado; si no se puede determinar, devuelveunknown, 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-endedpara 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_requiredcon ventanas candidatas.
Confirmación de acciones de alto riesgo
Todas las herramientas con efectos secundarios requieren un
action_intent.kindpreciso y un resumen legible por el usuario.send,submit,publish,delete,purchase,approve,upload,change_access,expose_sensitive_dataeinstallse consideran acciones finales de alto riesgo.El valor predeterminado
highRiskActionPolicy: confirmconfirma 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.attachmentsy 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 |
| Lista aplicaciones instaladas o en ejecución |
| Lista ventanas de nivel superior y WindowRef |
| Obtiene captura a nivel de aplicación y estado de accesibilidad |
| Resuelve una ventana precisa |
| Obtiene captura de ventana, elementos UIA, foco y relaciones modales |
| Inicia una aplicación cuando la política lo permite |
| Restaura y activa una ventana |
| Hace clic en un índice de elemento o coordenadas de captura |
| Arrastra entre coordenadas de captura |
| Ejecuta acciones de accesibilidad auxiliares proporcionadas por el elemento, como SetFocus |
| Envía una tecla o combinación de teclas |
| Desplaza un elemento o ventana |
| Establece un valor mediante UIA/entrada de respaldo y verifica con lectura de retorno |
| 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 |
|
|
|
|
|
|
|
| Verificación de foco en primer plano; también se puede elegir |
|
| Si se permite que el runtime inicie aplicaciones |
|
| Si se muestran la barra de estado, el halo del ratón y el movimiento suave |
|
| Tiempo de espera en milisegundos para una sola llamada de herramienta |
|
| Si se rechaza la activación cuando falla el inicio del runtime o el descubrimiento de herramientas |
|
| Si se reconecta tras una desconexión inesperada |
|
| Retraso del primer reintento |
|
| Límite máximo de retroceso del reintento |
|
| Límite máximo de reintentos consecutivos |
|
| Valor vacío usa el runtime del paquete; no vacío debe ser una ruta absoluta de desarrollo |
|
| Variables de entorno pasadas explícitamente al runtime |
|
| Directorio de trabajo del runtime |
|
| Limpieza del estado visual al final de la ronda |
|
| Tiempo de espera del notificador de limpieza |
|
| 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.0o>=24pnpm
11.7.0Go
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:pluginpackage:plugin ejecutará secuencialmente:
Probar el runtime vendored y ejecutar
go vet;Compilar los runtimes nativos de Windows x64 y arm64;
Ejecutar las pruebas Node del plugin;
Generar el
.tgz;Desempaquetar y verificar runtime, código fuente, licencias y herramientas necesarias;
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.ps1La 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-tagsEstructura 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.
This server cannot be installed
Maintenance
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
- AlicenseNot gradedqualityCmaintenanceEnables 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
- AlicenseNot gradedqualityAmaintenanceEnables 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.4MIT
- FlicenseNot gradedqualityBmaintenanceEnables 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.
- FlicenseNot gradedqualityCmaintenanceEnables AI agents to control Windows GUI applications like a human using screen capture, OCR, mouse and keyboard input, and window management, with safety levels and memory.
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.
Latest Blog Posts
- Who's Calling? MCP Hosts Are an Identity Blind Spot (And the Spec Knows It)By Om-Shree-0709 on .mcpAgent IdentityOAuth 2.1
- Your AI Chatbot Just Exposed Your CEO's Salary to an InternBy Om-Shree-0709 on .Agent IdentityMCP SecurityOAuth Delegation
- Why MCP Servers Need Execution Sandboxing (And Why Your Current Stack Isn't Enough)By Om-Shree-0709 on .Agentic AiPrompt InjectionWebAssembly
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