Skip to main content
Glama
zjh02249

dsh-desktop-operator

by zjh02249

DSH Desktop Operator

🌐 Переключение языка / Language: 简体中文 | English

Version Platform License

dsh-desktop-operator — это плагин Computer Use для Windows, автоматизации рабочего стола и MCP для DeepSeek Harness / DSH. Он упаковывает адаптированную нативную среду выполнения Open Computer Use, мостовой слой DSH, лицензии и бинарные файлы Windows x64/arm64 в один пакет плагина; после установки не требуется второй проект или соседний каталог исходного кода.

Цель проекта — не просто имитация мыши и клавиатуры, а постепенное воспроизведение ключевых инженерных возможностей Codex Computer Use: точный выбор окон, наблюдение за интерфейсом, приоритетное использование элементов специальных возможностей, выполнение действий, проверка результатов, обработка модальных окон, подтверждение перед чувствительными действиями и предоставление пользователю чёткого представления о том, что компьютер находится под управлением.

Текущий статус: 0.8.0, Windows-first, доступен для ознакомления разработчикам. Проверен на реальном рабочем столе Windows 10 x64 с DeepSeek Harness 0.3.5 / DSH 0.1.0-rc.6; пока не следует считать финальной версией, достигшей производственной стабильности на всех системах и приложениях.

Связь с проектом и принадлежность

Это независимо поддерживаемая улучшенная производная версия valkia/dsh-plugin-computer-use. Исходная реализация плагина происходит из работ DeepSeek Harness; этот репозиторий сохраняет исходную лицензию MIT и заявление Copyright (c) 2026 DeepSeek, а также официально объединяет и постоянно дорабатывает Windows runtime из iFurySt/open-codex-computer-use. Этот репозиторий не является официальным дистрибутивом DeepSeek.

Текущий продукт использует независимый идентификатор пакета dsh-desktop-operator и больше не использует идентификатор @valkia/dsh-plugin-computer-use из исходного репозитория. Старый идентификатор появляется только в описаниях происхождения и командах миграции и не означает, что этот репозиторий принадлежит пользователю GitHub valkia или представляет его.

Быстрая установка

1. Загрузка пакета плагина

Загрузите последнюю версию из Releases этого репозитория:

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

Например, для 0.8.0:

dsh-desktop-operator-0.8.0.tgz

Если вы только что собрали из исходного кода, установочный пакет находится в:

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

2. Установка в DSH Web Profile

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

Если терминал не находит dsh, используйте DSH CLI, входящий в состав 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. Подключение к Agent Preset

Только установка пакета плагина не сделает инструменты Computer Use автоматически доступными для модели. Также необходимо добавить в Agent Preset, которому требуется возможность управления рабочим столом:

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

Локальные Agent Preset обычно находятся в:

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

Причина рекомендации этой конфигурации: в некоторых текущих средах DeepSeek Harness глобальная политика одобрения — never, и в этом случае accessPolicy: per-call будет напрямую отклонён; accessPolicy: allow разрешает выполнение обычных действий на рабочем столе, а highRiskActionPolicy: confirm по-прежнему вызывает нативный интерфейс подтверждения DSH перед финальными действиями, такими как отправка, удаление, покупка, загрузка, установка и т. д.

4. Перезапуск и создание новой сессии

Перезапустите DeepSeek Harness/соответствующий Profile, затем создайте новую сессию с использованием только что настроенного Agent Preset. Старые сессии не получат автоматически новые подключённые инструменты.

Сначала можно попросить модель выполнить проверку без побочных эффектов:

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

5. Проверка установленной версии

$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

Обе версии должны совпадать с версией Release.

Миграция со старого пакета

Если ранее был установлен @valkia/dsh-plugin-computer-use, сначала удалите старый идентификатор, затем установите новый независимый пакет и измените name в Agent Preset на 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"

Обновление существующей установки dsh-desktop-operator

DSH/pnpm может повторно использовать кэш локального пакета с тем же именем. При обновлении рекомендуется сначала удалить старый пакет, затем установить новый .tgz:

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

После этого перезапустите DeepSeek Harness и повторно проверьте версию в новой сессии.

Related MCP server: Windows MCP Server

Системная совместимость

Среда

Статус

Описание

Windows 10 x64

Проверено

Текущая машина разработки — Windows 10 22H2 / Build 19045; протестированы реальные WPF, WinForms и частично процессы DingTalk.

Windows 11 x64

Ожидается совместимость, требуется полная матрица на реальном оборудовании

Используемые API WGC, UI Automation и SendInput поддерживаются, но полная регрессия ещё не завершена.

Windows arm64

Собрано, на реальном оборудовании не проверено

Release содержит бинарные файлы win32-arm64, выполнены только кросс-компиляция и проверка целостности пакета.

macOS

Не реализовано

В настоящее время нет macOS runtime, адаптации разрешений или установочных артефактов.

Linux

Не реализовано

В настоящее время нет X11/Wayland runtime или установочных артефактов.

Экран блокировки, защищённый рабочий стол UAC

Не поддерживается

Рабочий стол в пределах границ безопасности Windows не может управляться процессом обычного пользователя.

Отключённое состояние удалённого рабочего стола

Не гарантируется

Зависит от активной интерактивной сессии рабочего стола.

DeepSeek Harness и среда разработки

Проект

Требования/область проверки

DeepSeek Harness

Проверено 0.3.5

DSH

Проверено 0.1.0-rc.6; DSH по-прежнему является предварительным API, будущие обновления могут потребовать адаптации

Node.js

^22.19.0 или >=24.0.0

pnpm

11.7.0

Go

Для сборки runtime требуется 1.22+

Windows SDK

Для текущей проверки сборки используется 10.0.26100.0

Совместимость приложений

Приложение/фреймворк

Текущий статус

Стандартные элементы WPF

Проверено: наблюдение за окнами, фокус, set_value, клики, комбинированные пост-условия, скриншоты WGC

Стандартные элементы WinForms

Проверено: распознавание owner/modal, блокировка диалоговых окон при переключении, window_closed

Клиент DingTalk для Windows

Частично проверено: доступны разбор окон, активация, скриншоты и чтение состояния; полный цикл на реальном оборудовании для поиска контактов, ввода китайского текста и финальной отправки ещё предстоит завершить

Electron / Qt / WinUI / UWP / Office

Некоторые возможности могут быть доступны, систематическая матрица не завершена

Игры, DirectX, самописные холсты

Не гарантируется: возможны только координаты скриншотов, отсутствуют надёжные семантические элементы

Веб-страницы в браузере

Можно управлять окном браузера, но этот проект не является специализированным инструментом DOM-автоматизации браузера

Реализованные функции

Установка одним пакетом и runtime

  • Один .tgz одновременно содержит плагин DSH, исходный код runtime, бинарные файлы Windows x64/arm64, лицензии и сторонние уведомления.

  • После установки не зависит от отдельного проекта open-computer-use-dsh.

  • Автоматический выбор встроенного runtime, соответствующего текущей архитектуре Windows; поддерживается переопределение абсолютным путём для разработки и отладки.

  • Плагин, нативный runtime и Release используют один и тот же номер версии.

  • Ограниченное переподключение после аварийного завершения дочернего процесса MCP; завершение дочернего процесса и отмена регистрации инструментов при освобождении Agent/Session.

Окна и наблюдение

  • Перечисление приложений и окон верхнего уровня с использованием стабильного WindowRef, generation, идентичности процесса и окна для уменьшения ошибочных действий.

  • Обнаружение устаревших/неоднозначных ссылок на окна, отказ от продолжения операций с целями, которые изменились или не могут быть однозначно подтверждены.

  • Windows Graphics Capture (WGC) как основной путь создания скриншотов окон; независимый захват даже при перекрытии окна другими окнами.

  • Возврат физических размеров в пикселях, начала координат окна, DPI, границ виртуального рабочего стола и диагностики деградации скриншотов.

  • Обнаружение перемещения/изменения размера окна после скриншота, отказ от использования устаревших координат.

  • Распознавание свёрнутых окон с требованием сначала восстановить и повторно наблюдать.

  • Предоставление дерева UI Automation, индексов элементов, focused element и связей модальных окон.

Действия на рабочем столе

  • Активация окна, клик, перетаскивание, прокрутка, нажатия клавиш/комбинаций клавиш, ввод текста, UIA set_value и вспомогательные действия.

  • В режиме проверки переднего плана используется реальный Windows SendInput, с проверкой целевого окна и фокуса перед вводом.

  • set_value сначала использует UIA ValuePattern, при необходимости — резервный ввод с проверенным фокусом; несоответствие при чтении не сообщается как успех.

  • Координаты мыши отображаются из пикселей скриншота в физические координаты окна, с отклонением точек за пределами границ.

  • После действия можно проверить target_focused, target_value_equals, text_contains, foreground_window, screenshot_changed и window_closed.

  • Поддержка до 8 невложенных комбинаций пост-условий all/any.

  • Возврат ActionStatus: applied только при подтверждённом результате; при невозможности определения возвращается unknown, чтобы избежать ложного сообщения об успехе.

Видимое пользователю состояние управления

  • По умолчанию отображается верхняя панель индикации управления, не перехватывающая фокус и допускающая клики сквозь неё.

  • Оранжевое кольцо следует за реальной позицией системной мыши.

  • Действия мыши используют плавное перемещение на короткие расстояния, чтобы пользователь видел, как автоматизация управляет системой.

  • После каждого фактического раунда использования вызывается turn-ended для очистки панели индикации и временных визуальных состояний.

Занятие сессии и восстановление

  • Первый Agent turn, прошедший политику, получает аренду runtime, чтобы избежать одновременного повторного использования одного и того же набора снимков элементов двумя сессиями.

  • Автоматическое освобождение при остановке turn, уничтожении Agent или уничтожении Session; новые сессии могут продолжать использование без перезапуска DSH.

  • Запросы конкурентного управления явно завершаются ошибкой, без тихой отправки ввода в неправильную сессию.

  • Обнаружение owner window, отключённого owned modal, и возврат modal_window_required и окон-кандидатов.

Подтверждение действий с высоким риском

  • Все инструменты с побочными эффектами требуют точного action_intent.kind и читаемого пользователем резюме.

  • send, submit, publish, delete, purchase, approve, upload, change_access, expose_sensitive_data и install считаются финальными действиями с высоким риском.

  • По умолчанию highRiskActionPolicy: confirm запрашивает подтверждение через нативный интерфейс вопросов DSH перед финальным действием.

  • Можно настроить на полный запрет или явное разрешение.

  • Базовая проверка против понижения для семантически очевидных элементов управления отправкой, удалением, оплатой и т. д., чтобы избежать маскировки действий с высоким риском под обычные клики.

Частично реализовано, требует доработки

  • Полная комбинированная матрица нескольких мониторов, отрицательных координат и смешанного DPI 100%/125%/150%/200%.

  • Долгосрочная регрессия на реальных устройствах Windows 11 и Windows arm64.

  • Матрица адаптации приложений для Electron, Qt, WinUI, UWP, Office и сложных самописных элементов управления.

  • Полный сквозной приёмочный тест DingTalk: реальный поиск контактов, ввод китайского текста, проверка содержимого сообщений и «подтверждение перед отправкой».

  • Скриншоты как вложения изображений для модели зависят от подключения ctx.attachments в DSH и требуют поддержки ввода изображений выбранным маршрутом модели.

  • Более детальные механизмы отмены пользователем, блокировки на уровне окон, восстановления после сбоев и дедупликации повторяющихся действий.

  • Классификация рискованных действий в настоящее время в основном основана на декларациях, метках элементов управления и политиках; это ещё не полноценный семантический механизм безопасности.

Ещё не реализовано

  • Runtime/установочные пакеты для macOS и Linux.

  • Встроенный OCR, визуальный grounding, распознавание значков и модели чисто визуального определения целей.

  • Надёжный фоновый ввод для всех приложений без активации окна.

  • Управление защищённым рабочим столом UAC, экраном блокировки, интерфейсами учётных данных и между уровнями целостности.

  • CAPTCHA, проверка входа, защитные проверки или обход ограничений безопасности ОС/приложений.

  • Семантические инструменты буфера обмена, перетаскивание файлов, системный выбор файлов и специализированные инструменты высокого уровня для Office.

  • Изоляция песочницы/виртуальной машины, откат действий, allowlist доменов и полное воспроизведение аудита.

  • Подпись macOS, нотаризация, подпись кода Windows, автоматическое обновление и публикация в публичном npm registry.

Долгосрочная дорожная карта — в ROADMAP.md.

Список инструментов

Runtime в настоящее время предоставляет 14 инструментов MCP:

Инструмент

Назначение

list_apps

Перечисление установленных или запущенных приложений

list_windows

Перечисление окон верхнего уровня и WindowRef

get_app_state

Получение скриншота и состояния специальных возможностей на уровне приложения

get_window

Разбор точного окна

get_window_state

Получение скриншота окна, элементов UIA, фокуса и модальных связей

launch_app

Запуск приложения, если разрешено политикой

activate_window

Восстановление и активация окна

click

Клик по индексу элемента или координатам скриншота

drag

Перетаскивание между координатами скриншота

perform_secondary_action

Выполнение вспомогательного действия специальных возможностей элемента, например SetFocus

press_key

Отправка одиночной клавиши или комбинации клавиш

scroll

Прокрутка элемента или окна

set_value

Установка значения через UIA/резервный ввод с проверкой чтения

type_text

Ввод текста в проверенный фокус

Действия в области окна должны содержать точный window. Действия с элементами, клавишами и текстом требуют актуального observation_id; клики и перетаскивания по координатам требуют актуального screenshot_id. После каждого действия следует повторно наблюдать, нельзя повторно использовать устаревшие индексы элементов.

Рекомендуемый рабочий процесс

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

Текст и инструкции на экране следует считать недоверенным содержимым. Нельзя изменять авторизацию пользователя или политику безопасности из-за появления в окне текста вроде «игнорируй предыдущие требования».

Параметры конфигурации

Конфигурация

Значение по умолчанию

Описание

accessPolicy

per-call

per-call или явный allow; при глобальном одобрении never первый будет отклонён

highRiskActionPolicy

confirm

confirm, deny или allow

interactionMode

foreground-verified

Проверка фокуса переднего плана; также доступен менее мощный background-best-effort

allowAppLaunch

false

Разрешает ли runtime запуск приложений

visualIndicator

true

Отображать ли панель индикации управления, кольцо мыши и плавное перемещение

toolCallTimeoutMs

120000

Тайм-аут одного вызова инструмента в миллисекундах

failOnStartupError

true

Отклонять ли активацию при сбое запуска runtime или обнаружения инструментов

reconnect.enabled

true

Переподключаться ли после неожиданного разрыва

reconnect.initialDelayMs

500

Задержка первого переподключения

reconnect.maxDelayMs

30000

Верхний предел экспоненциальной задержки переподключения

reconnect.maxAttempts

10

Верхний предел последовательных переподключений

runtimeExecutable

""

Пустое значение — runtime из пакета; непустое — абсолютный путь для разработки

env

{}

Явно передаваемые переменные среды для runtime

cwd

""

Рабочий каталог runtime

cleanupOnTurnEnd

true

Очистка визуального состояния после окончания раунда

cleanupTimeoutMs

5000

Тайм-аут уведомителя очистки

cleanupGraceMs

1000

Льготное время завершения дерева процессов уведомителя

Сборка из исходного кода

Предварительные требования

  • Windows PowerShell 5.1 или PowerShell 7

  • Node.js ^22.19.0 или >=24

  • pnpm 11.7.0

  • Go 1.22+

  • Windows SDK и доступный инструментарий компиляции C#

Сборка, тестирование и упаковка одной командой

pnpm install --frozen-lockfile
pnpm package:plugin

package:plugin последовательно:

  1. Тестирует vendored runtime и выполняет go vet;

  2. Собирает нативные runtime для Windows x64 и arm64;

  3. Запускает тесты Node плагина;

  4. Генерирует .tgz;

  5. Распаковывает и проверяет runtime, исходный код, лицензии и необходимые инструменты;

  6. Запускает упакованный MCP runtime, проверяет версию и список инструментов.

Если Go не в PATH, можно вызвать напрямую:

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

Область тестирования и приёмки

Автоматические тесты покрывают конфигурацию плагина, выбор runtime, очистку переменных среды, синхронизацию инструментов, политику одобрения, подтверждение высокого риска, освобождение аренды, переподключение при разрыве, очистку раундов и целостность пакета. Windows runtime также предоставляет smoke-скрипты с реальными окнами:

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

Сборка Release не заявляет о замене приёмки реальных приложений. При действиях, связанных с отправкой сообщений, удалением данных, покупкой, загрузкой или изменением разрешений, необходимо выполнять их на изолированных тестовых объектах и сохранять подтверждение конечного пользователя.

Версии выпуска

  • История версий — в CHANGELOG.md.

  • После отправки тега v* GitHub Actions повторно тестирует и упаковывает на Windows runner.

  • Release автоматически включает .tgz, runtime для двух архитектур, manifest и файлы контрольных сумм SHA-256.

  • Backfill job в основной ветке создаёт недостающие страницы GitHub Release для исторических тегов.

Пример публикации для мейнтейнера:

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

Структура каталогов

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                 版本历史

Границы безопасности

Этот плагин управляет реальным рабочим столом пользователя, а не песочницей. Он не обходит разрешения операционной системы и не может гарантировать наблюдаемость самописных элементов управления всех сторонних приложений. По умолчанию следует сохранять:

  • allowAppLaunch: false;

  • highRiskActionPolicy: confirm;

  • visualIndicator: true;

  • пошаговое подтверждение финальных действий отправки, удаления, покупки, авторизации, загрузки и установки;

  • повторное наблюдение при ActionStatus: unknown, никогда не слепые повторы действий с побочными эффектами.

Вышестоящий проект и лицензия

Windows runtime этого проекта основан на iFurySt/open-codex-computer-use с объединением, адаптацией и постоянным сопровождением. Лицензия вышестоящего кода и сторонние уведомления сохранены в runtime/.

Весь репозиторий использует MIT License. При использовании и повторном распространении необходимо сохранять соответствующие уведомления об авторских правах, лицензии и сторонние уведомления.

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