Vercel Labs ابزار متن‌باز agent-desktop را برای کنترل اپلیکیشن‌های دسکتاپ توسط ایجنت‌های هوش مصنوعی عرضه کرده است. این ابزار به‌جای گرفتن اسکرین‌شات و جست‌وجوی مختصات پیکسلی، ساختار دسترس‌پذیری رابط کاربری را می‌خواند؛ رویکردی که به ایجنت اجازه می‌دهد عناصر قابل تعامل را مستقیماً شناسایی و نتیجه هر اقدام را بررسی کند.

نکات کلیدی

  • agent-desktop یک ابزار خط فرمان نوشته‌شده با Rust برای ایجنت‌های هوش مصنوعی است.
  • اپ‌های ویندوز، macOS و لینوکس از طریق درخت دسترس‌پذیری سیستم‌عامل کنترل می‌شوند.
  • برای یافتن دکمه‌ها و فیلدها به اسکرین‌شات یا تطبیق پیکسلی نیازی نیست.
  • ابزار به‌صورت پیش‌فرض بدون رابط گرافیکی اجرا می‌شود و متن‌باز است.
  • agent-desktop خودش مدل هوش مصنوعی ندارد و حلقه تصمیم‌گیری در ایجنت میزبان اجرا می‌شود.

کنترل رابط کاربری بدون نگاه‌کردن به پیکسل‌ها

مخزن agent-desktop در GitHub این ابزار را یک CLI برای «استفاده از کامپیوتر» توسط ایجنت‌های هوش مصنوعی معرفی می‌کند. agent-desktop درخت دسترس‌پذیری اپلیکیشن را می‌خواند و آن را به‌شکل JSON برمی‌گرداند؛ در این خروجی، هر عنصر قابل تعامل یک شناسه مرجع یا ref دارد.

ایجنت می‌تواند با استفاده از همین شناسه روی یک عنصر کلیک کند، در آن متن بنویسد و سپس رابط کاربری را دوباره بخواند تا نتیجه را بسنجد. روند اصلی به این شکل است:

  • گرفتن یک snapshot از پنجره یا اپلیکیشن؛
  • دریافت عناصر تعاملی و شناسه هرکدام؛
  • اجرای عملیاتی مانند کلیک یا تایپ روی شناسه؛
  • گرفتن snapshot تازه برای بررسی نتیجه.

این شناسه‌ها به snapshot خودشان وابسته‌اند. اگر رابط کاربری تغییر کند، ابزار خطاهایی مانند قدیمی‌شدن مرجع یا مبهم‌بودن هدف را برمی‌گرداند تا ایجنت snapshot تازه‌ای بگیرد و دوباره عنصر درست را انتخاب کند.

اجرای بدون رابط و پشتیبانی از سه سیستم‌عامل

agent-desktop برای macOS، ویندوز و لینوکس طراحی شده و هر نسخه از API دسترس‌پذیری همان سیستم‌عامل استفاده می‌کند. ابزار به‌صورت پیش‌فرض headless است؛ یعنی اقدامات مبتنی بر ref بدون حرکت‌دادن نشانگر ماوس یا گرفتن تمرکز پنجره انجام می‌شوند. در صورت نیاز، حالت headed نیز برای ورودی فیزیکی در دسترس است.

این پروژه هم به‌شکل ابزار خط فرمان و هم به‌صورت کتابخانه C ارائه می‌شود. بسته npm آن باینری‌ها و ابزارهای کمکی موردنیاز برای معماری‌های x64 و ARM64 را شامل می‌شود و Bun، Yarn و pnpm نیز می‌توانند همان بسته را نصب کنند. در macOS و لینوکس امکان نصب با Homebrew وجود دارد، اما در زمان انتشار اطلاعات پروژه، بسته رسمی Scoop برای ویندوز ارائه نشده است.

نکته مهم این است که agent-desktop مدل داخلی ندارد. ایجنت شما باید تصمیم بگیرد چه زمانی رابط را بخواند، روی کدام عنصر عمل کند و چگونه نتیجه را بررسی یا خطا را مدیریت کند. این همان موضوعی است که در بحث کار مؤثر با ایجنت‌های هوش مصنوعی هم اهمیت دارد: اجرای قابل اتکا فقط به پرامپت محدود نمی‌شود و به مشاهده، اقدام و راستی‌آزمایی نیاز دارد.

حریم خصوصی هنگام اجرای ایجنت‌ها

کنترل دسکتاپ می‌تواند ایجنت را در معرض محتوای خصوصی قرار دهد. مستندات پروژه هشدار می‌دهند که snapshotها، محتوای خوانده‌شده از کلیپ‌بورد، اسکرین‌شات‌ها، خروجی فرمان‌ها و فایل‌های اشکال‌زدایی ممکن است اطلاعات خصوصی دسکتاپ را در خود داشته باشند؛ بنابراین نباید آن‌ها را در گزارش‌های عمومی یا سرویس‌های اشتراک‌گذاری بارگذاری کنید.

برای متن‌های محرمانه نیز امکان دریافت ورودی از ورودی استاندارد فراهم شده است تا محتوا در آرگومان‌های پردازش ظاهر نشود. پیشنهاد پروژه این است که مراحل حاوی اطلاعات حساس جداگانه اجرا شوند، چون متن عملیات گروهی ممکن است در آرگومان‌های پردازش قابل مشاهده باشد.

برای شما به‌عنوان توسعه‌دهنده، نکته اصلی این است که مجوزهای دسترس‌پذیری، محدوده دسترسی ایجنت و نگهداری خروجی‌های تشخیصی باید بخشی از طراحی سامانه باشند، نه تنظیماتی که بعداً به آن‌ها فکر شود.

جمع‌بندی

agent-desktop مسیر متفاوتی برای خودکارسازی اپ‌های دسکتاپ پیش پای ایجنت‌های هوش مصنوعی می‌گذارد: به‌جای تماشای پیکسل‌ها، ساختار واقعی رابط را می‌خواند و هر اقدام را دوباره بررسی می‌کند. اگر قصد دارید ایجنتی برای کار با نرم‌افزارهای دسکتاپ بسازید، این ابزار گزینه‌ای چندپلتفرمه و متن‌باز است؛ البته مدیریت دقیق مجوزها و داده‌های خصوصی همچنان ضروری خواهد بود.