Понадобилось мне автоматизировать рутину на удалённой винде, к которой есть только RDP и ничего больше, всё во имя великой безопасности.
Пошёл смотреть готовое и чёт приуныл, одни решения требуют поставить своего агента внутрь целевой машины, что на закрытом корпоративном терминале сомнительная идея. Другие отбирают у меня мышку и клавиатуру на время выполнения работ, примерно как с Playwright MCP, мешая работать.
Короче я пошёл своим путём, чай линукс одмин в прошлом, запилил скил на базе
xfreerdp он заставляет агента подключиться не к моему экрану, а к виртуальному дисплею Xvfb (ровно как в скиле screenshotting-gui о котором я недавно писал), дисплей доступен по VNC на localhost, рядом открывается обычное окно ремины через которое я вижу всё вживую и в любой момент могу перехватить мышу и пошебуршить.Агент водит по картинке синтетическим вводом через XTEST, снимает кадр, смотрит на него, кликает, печатает и снимает снова для проверки, обычный такой AgentOS флоу. Сессия RDP живёт между ходами агента и закрывается только по явной указивке от меня.
Если агент упёрся в непонятное окно, он присылает скриншот и спрашивает что делать, получив ответ продолжает с того же места, ничего не переподключая. Окно вьюера можно закрыть и открыть заново, на сессию это не влияет.
Изначально я думал сделать просто два клиента по RDP, одинаковых с лица, но терминал с которым я работаю запрещает мультисессию на одном юзере, так что увы и ах, шиндоус такой шиндоус.
Отдельная история была с локскрином, по политикам если экран не активен скажем пять минут сессия лочится, что для агента было проблемой. Скил снимает лок переподключением клиента, Windows сбрасывает его сама по NLA, а все открытые окна остаются на месте.
Печатать пароль в форму он тоже умеет, но только с явного подтверждения оператора, и после отказа авторизации повторять попытки отказывается, чтобы не положить учётку. Плюс шевелилка мышки раз в 90 секунд против лока и ввод кириллицы через ЙЦУКЕН, так как буфер обмена в RDP часто выключен политиками.
Ставится из каталога rpa-skills:
/plugin marketplace add EvilFreelancer/rpa-skills
/plugin install rdp-agent@rpa-skills
Дальше кладёте профиль с хостом и учёткой в
~/.config/rdp-agent/default.env с правами 600 и разговариваете обычными словами, типа "подключись по rdp к рабочей машине default и посмотри, что там открыто". Агент поднимет сессию, снимет экран, разберёт панель задач и ответит, а окно оставит жить.Реп: https://github.com/EvilFreelancer/rdp-agent
Каталог скилов: https://github.com/EvilFreelancer/rpa-skills