Свой Remote Desktop за пару вечеров: не написав ни строчки кода

Начну с себя. Сейчас я работаю QA — тестирую приложения для Windows. До этого был системным администратором Windows в разных учебных заведениях. Периодически подрабатывал удалённой поддержкой: подключиться, помочь, настроить, установить, удалить. В общем, ничего особо интересного.
Пока всё более‑менее работало, пользовался TeamViewer и AnyDesk. Клиенту достаточно было установить программу и продиктовать цифры для подключения — быстро и удобно. Но когда сервисы начали блокировать, начались танцы с бубном. Одним из решений стал Radmin VPN + RDP или AmmyAdmin. Последний мне не нравился, зато клиенты его любили за простой запуск. Сейчас не сильно часто приходится удаленно подключаться.
Идея
Со временем я начал замечать, что на Хабре часто появляются статьи в духе: «Я написал замену AnyDesk бесплатный но платный „. И тут мне пришла мысль: а что, если попробовать самому? Хотя я не программист.“»
Вооружился Cursor, купил лимит на $20 и начал общаться с машиной, «сделать чудо, чтобы работало». Первые двадцать долларов улетели быстро и непринуждённо — приложение получилось страшным и почти не работало. Причина была проста: запросы были слишком абстрактными, прыгал с одного функционала на другой, а мелкие правки превращались в бесконечное количество багов.

Вторая попытка
Через месяц я взял лимит уже на $40 и, учитывая прошлый опыт, решил действовать структурно: последовательно описал, каким должно быть приложение и какие технологии использовать. Для дизайна под рукой оказался Radmin VPN — я вырезал его интерфейс ножницами, вставил в Cursor и написал: «Хочу, чтобы выглядело похоже».

Дальше стал описывать дополнительный функционал: использование VPS на Ubuntu (у меня уже был сервер для просмотра разных социальных сете VK и Рутуб ),одно из требований автоматическая установка серверной части одним скриптом
powershell -ExecutionPolicy Bypass -File .\deploy_from_windows.ps1
`-VpsIp 93.115.203.200 -SshUser root -TurnPass "change_me" -PublicIpv4 93.115.203.200После работы скрипта вывод настроек для приложения.
[4/5] Done.
Client settings:
Server API URL: http://93.115.203.200:8080
WebSocket URL: ws://93.115.203.200:8080/ws
STUN URL: stun:93.115.203.200:3478
TURN URL: turn:93.115.203.200:3478?transport=udpПриложение постепенно становилось относительно стабильным. Пару раз ловил краши, приходилось подключался к процессу через WinDbg, смотреть стек ошибок и отправлять его в Cursor. Он радовался и хвалил меня за точную диагностику — вот бы коллеги-программисты так реагировали.


Описывать этапы приложения не буду коротко опишу чего смог добиться.
В итоге получилось приложение со следующим функционалом:
Управление мышью и клавиатурой удалённо.
Автоопределение нескольких мониторов.
Текстовый буфер обмена.
Передача файлов до 10 МБ.
Синхронизация курсора с хостом.
Приоритет соединения: LAN → NAT → Relay В приоритете lan из‑за Radmin VPN который у многих уже стоит.
Показ UAC. Клики не проходят — для этого нужно запускать под LocalSystem.
Оставшийся лимит я потратил на улучшение интерфейса — хотелось сделать его современнее и дружелюбнее. Вроде выглядит неплохо.

Что я понял о работе с ИИ
1. Просите вести документацию изменений.
Обязательно заставляйте его записывать всё, что он меняет. Тогда он сможет сам к этому возвращаться и помнить архитектуру проекта. Но всё равно нужно всё перепроверять что‑то дополнять или удалять.
2. Следите за лимитом контекста.
Когда память диалога подходит к пределу (~275k токенов), просите сохранить изменения в документацию и только потом переходите к новой задаче.
3. Не прыгайте между задачами.
Нужно последовательно закрывать одну проблему и только потом плавно переходить к другой. Нельзя обсуждать UI, а через пару сообщений внезапно переключаться на серверную часть.
4. Просите уточняющие вопросы.
Например, я сказал: «Перенеси настройки в отдельное окно с главного окна». Он перенёс но кнопку «Сохранить» оставил в главном окное. Пришлось уточнять, что кнопку тоже нужно переместить.
5.Следить за оперативной памятью.
Почувствовал на себе подражание оперативной память моих 16GB катастрофически не хватает. При анализе документации Cursor намертво зависал на несколько минут проблема оказалась недостатке оперативной памяти.

Итог
Думаю, эксперимент получился: я не написал ни строчки кода — только описывал желания и ловил баги. Конечно, в проекте ещё огромное количество ошибок, если тестировать его серьёзно. Также интересно посмотреть, как он будет лечить утечки или подземные стуки, обязательно позже попробую. Буду ли пользоваться своим приложением? Однозначно да. Как минимум оно уже покрывает мои базовые задачи. Возможно, позже вложу ещё немного денег и уберу основные проблемы.
Считаю, что сейчас почти каждый может и наверное должен пытаться написать для себя нужный софт небольших размеров, покрывающий их проблемные места в любой профессии, до серьёзных приложений, ещё рано, так как памяти у языковой модели не хватает крутить и код, и документацию сразу. Но думаю, в ближайшем будущем всё изменится.
Проект полностью выложил на GitHub — с исходниками и инструкцией по развёртыванию сервера.
Почему ZConect c 1 буквой n? Опечатался в самом начале:-)
P.S.: думаю нужно было указать языковую модель которой пользовался «GPT-5.3 Codex»