Nodes and media

استفاده از رایانه

استفاده از رایانه به عامل Gateway امکان می‌دهد یک دسکتاپ جفت‌شده و توانمند را ببیند و کنترل کند. واجد شرایط بودن بر اساس قابلیت است: Node متصل باید هر دو computer.act و screen.snapshot را اعلام کند و نتیجه آن باید شامل یک displayFrameId باشد. ابزار یک اسکرین‌شات را به‌عنوان فریم مرجع خود ثبت می‌کند، سپس نشانگر و صفحه‌کلید را از طریق فرمان خطرناک computer.act هدایت می‌کند. مجموعه کنش‌ها از کنش‌های اصلی استفاده از رایانه Anthropic پیروی می‌کند؛ بزرگ‌نمایی اختیاری computer_20251124 ارائه نمی‌شود. یک مدل دارای قابلیت بینایی، آن را از طریق ابزار عامل داخلی computer هدایت می‌کند.

عامل یک فرمان یکپارچه، یعنی computer.act، صادر می‌کند؛ عامل نمی‌تواند تشخیص دهد که یک Node چگونه آن را اجرا می‌کند. برنامه همراه macOS فرمان را درون همان فرایند، با سرویس‌های تعبیه‌شده Peekaboo و عملیات پایه محدود CoreGraphics، مدیریت می‌کند (مجوزهای صحیح TCC، بدون فرایند اضافی). Windows و Linux می‌توانند از Plugin اختیاری و آزمایشی cua-computer همراه با باینری cua-driver که جداگانه نصب شده است استفاده کنند. هر دو اجراکننده از سیاست یکسان جفت‌سازی و مسلح‌سازی استفاده می‌کنند.

الزامات

  • یک Node جفت‌شده و متصل که هر دو computer.act و screen.snapshot را اعلام کند و screen.snapshot در آن displayFrameId را برگرداند.
  • اجراکننده macOS: تنظیم برنامه اجازه کنترل رایانه فعال باشد (پیش‌فرض: خاموش).
  • اجراکننده macOS: مجوز دسترسی‌پذیری به OpenClaw اعطا شده باشد (برای تزریق ورودی نشانگر/صفحه‌کلید) و مجوز ضبط صفحه نیز برای screen.snapshot اعطا شده باشد.
  • اجراکننده Windows/Linux: Plugin همراه cua-computer فعال باشد و یک فایل اجرایی سازگار cua-driver نسخه 0.10.x نصب شده باشد.
  • فرمان computer.act در Gateway مسلح شده باشد (این فرمان خطرناک است و به‌طور پیش‌فرض مسلح نیست).
  • یک مدل عامل دارای قابلیت بینایی.
  • سیاست ابزاری که computer را ارائه کند. پروفایل پیش‌فرض coding آن را ارائه نمی‌کند. computer را به tools.alsoAllow اضافه کنید؛ عامل‌های sandboxشده نیز به آن در tools.sandbox.tools.alsoAllow نیاز دارند.

ابزار عامل computer

ابزار داخلی computer در هر فراخوانی یک کنش می‌پذیرد. مختصات، پیکسل‌های صحیح نامنفی در جدیدترین اسکرین‌شات هستند؛ Node آن‌ها را به نقاط نمایشگر نگاشت می‌کند. کنش‌های مختصاتی باید frameId نتیجه اسکرین‌شات را عیناً بازتاب دهند و یک screenIndex صریح باید با آن فریم مطابقت داشته باشد. OpenClaw همچنین یک هویت نمایشگر صادرشده از سوی Node را از اسکرین‌شات به کنش منتقل می‌کند؛ در نتیجه، اتصال مجدد نمایشگر یا تغییر هندسه به‌صورت بسته و ایمن شکست می‌خورد، نه اینکه بی‌سروصدا همان شاخص را دوباره هدف بگیرد. این بررسی‌ها توکن‌های حدس‌زده‌شده و توکن‌های متعلق به فریم یا نمایشگر تحویل‌شده دیگری را رد می‌کنند. توکن تضمین‌کننده تازگی نیست: برنامه‌ها می‌توانند پس از ثبت، پیکسل‌های همان نمایشگر را تغییر دهند؛ بنابراین هر زمان ممکن است صحنه تغییر کرده باشد، یک اسکرین‌شات جدید بگیرید.

  • خواندن: screenshot.
  • نشانگر: left_click، right_click، middle_click، double_click، triple_click، mouse_move، left_click_drag (با startCoordinateleft_mouse_down، left_mouse_up.
  • پیمایش: scroll با scrollDirection (up|down|left|right) و scrollAmount (تیک‌های چرخ).
  • صفحه‌کلید: type (متن)، key (ترکیبی مانند cmd+shift+t یا Returnhold_key (ترکیب text که به‌مدت duration ثانیه نگه داشته می‌شود).
  • تنظیم آهنگ اجرا: wait (duration ثانیه).

کلیدهای تغییردهنده در فیلد text کنش‌های کلیک و پیمایش قرار می‌گیرند (shift، ctrl، alt، cmd). پس از یک کنش ورودی، ابزار یک اسکرین‌شات تازه برمی‌گرداند تا مدل بتواند نتیجه را مشاهده کند. اگر بیش از یک Node دارای قابلیت رایانه متصل است، node را صریحاً ارسال کنید.

اسکرین‌شات‌ها فقط برای مدل نگه داشته می‌شوند: آن‌ها هرگز به‌طور خودکار به کانال گفت‌وگو تحویل داده نمی‌شوند. تمام محتوای روی صفحه را ورودی غیرقابل‌اعتماد در نظر بگیرید؛ ابزار به مدل هشدار می‌دهد از دستورالعمل‌های روی صفحه که با درخواست کاربر تعارض دارند پیروی نکند.

Windows و Linux (آزمایشی، از طریق cua-driver)

Plugin همراه cua-computer یک اجراکننده آزمایشی برای میزبان‌های Node مبتنی بر Windows و Linux فراهم می‌کند. این Plugin به‌طور پیش‌فرض غیرفعال است و به قرارداد درایور پیش‌انتشار 0.10.x نیاز دارد:

  1. یک باینری cua-driver نسخه 0.10.x را از انتشارهای بالادستی نصب کنید و آن را در PATH در دسترس قرار دهید. برای استفاده از محل فایل اجرایی دیگری، plugins.entries.cua-computer.config.driverPath را تنظیم کنید.

  2. Plugin را فعال کنید:

    bash
    openclaw plugins enable cua-computer
  3. openclaw node run را از نشست تعاملی دسکتاپ اجرا کنید. Plugin هنگام رسیدن نخستین درخواست ثبت یا کنش، دیمن درایور محلی را به‌صورت تنبل راه‌اندازی می‌کند.

این اجراکننده در حال حاضر فقط نمایشگر اصلی را کنترل می‌کند. X11/XWayland مسیر اصلی در Linux است. Wayland بومی همچنان یک قابلیت انتخابی بالادستی است: پیش از راه‌اندازی Node، CUA_DRIVER_RS_ENABLE_WAYLAND را خودتان تنظیم کنید؛ OpenClaw هرگز آن را به‌طور خودکار تنظیم نمی‌کند. KDE/KWin در مسیر ورودی بومی Wayland بالادستی پشتیبانی نمی‌شود. hold_key، left_mouse_down و left_mouse_up در دسترس نیستند، زیرا cua-driver نسخه 0.10.x قرارداد نگه‌داشتن ورودی در سطح دسکتاپ و میان‌سکویی ندارد. پیمایش و کشیدن با کلید تغییردهنده نگه‌داشته‌شده در هر دو پلتفرم و کلیک با کلید تغییردهنده نگه‌داشته‌شده در Linux در دسترس نیست. کنش key کلیدهای نام‌گذاری‌شده، حروف و ترکیب‌های کلید تغییردهنده را می‌پذیرد (برای مثال cmd+c یا Return)؛ کلیدهای رقم و نشانه‌گذاری رد می‌شوند، زیرا درایور وضعیت Shift وابسته به چیدمان آن‌ها را حذف می‌کند؛ بنابراین آن متن را در عوض از طریق کنش type ارسال کنید. تایپ متن را نمی‌توان در میانه یک فراخوانی درایور type_text لغو کرد.

از آنجا که cua-driver هیچ هویت پایداری برای نمایشگر گزارش نمی‌کند، مجوزدهی فریم به اتصال درایور به‌اضافه هندسه زنده نمایشگر اصلی وابسته است. اتصال مجدد دیمن یا نشست، فریم‌های برجسته را نامعتبر می‌کند؛ اما جایگزینی نمایشگر اصلی با هندسه یکسان که اتصال را باز نگه دارد قابل تشخیص نیست؛ برای این اجراکننده، یک نشست پایدار تک‌نمایشگر را ترجیح دهید.

OpenClaw تله‌متری و بررسی به‌روزرسانی cua-driver را برای فرایندهای mcp و serve که مدیریت می‌کند غیرفعال می‌سازد. OpenClaw باینری درایور را بارگیری یا به‌روزرسانی نمی‌کند.

عیب‌یابی

اجراکننده cua-computer کدهای خطای نوع‌دار را در نتیجه ابزار و گزارش‌های Node ارائه می‌کند. موارد رایج:

کد علت راه‌حل
COMPUTER_DRIVER_UNAVAILABLE باینری cua-driver در PATH نیست (یا driverPath نادرست است)، دیمن به‌موقع آماده نشده است، یا Node مبتنی بر Windows/Linux نیست. cua-driver نسخه 0.10.x را در PATH نصب کنید یا driverPath را تنظیم کنید. openclaw node run را داخل نشست تعاملی دسکتاپ اجرا کنید؛ در Linux مطمئن شوید یک DISPLAY از نوع X11 (یا یک WAYLAND_DISPLAY با CUA_DRIVER_RS_ENABLE_WAYLAND) وجود دارد.
COMPUTER_DRIVER_UNSUPPORTED درایور متصل‌شده cua-driver نسخه 0.10.x نیست، یا نسخه قابلیت/شِمای آن متفاوت است. یک بیلد پشتیبانی‌شده 0.10.x نصب کنید. Plugin حدود 30 ثانیه پس از اصلاح، دوباره آن را بررسی می‌کند؛ بنابراین نیازی به راه‌اندازی مجدد Node نیست.
COMPUTER_REFUSED_<code> درایور کنش را با یک کد ساختاریافته مانند background_unavailable، background_occluded یا foreground_unavailable (Wayland در KDE/KWin) رد کرده است. پنجره هدف را به جلو بیاورید، به X11 تغییر دهید یا از یک ترکیب‌گر پشتیبانی‌شده استفاده کنید. یادداشت‌های سازگاری بالا را ببینید.
COMPUTER_STALE_FRAME مختصات به اسکرین‌شاتی اشاره داشت که دیگر جاری نیست (Compaction زمینه، تغییر هندسه نمایشگر یا تغییر عرض مرجع). پیش از کنش مختصاتی، یک screenshot تازه بگیرید.
COMPUTER_UNSUPPORTED_ACTION کنشی که این اجراکننده نمی‌تواند با وفاداری اجرا کند: hold_key، left_mouse_down، left_mouse_up، کشیدن/پیمایش با کلید تغییردهنده نگه‌داشته‌شده، یا کلیک با کلید تغییردهنده نگه‌داشته‌شده در Linux. از یک کنش پشتیبانی‌شده استفاده کنید. cua-driver نسخه 0.10.x قرارداد نگه‌داشتن ورودی در سطح دسکتاپ ندارد.
COMPUTER_UNSUPPORTED_DISPLAY یک screenIndex غیر اصلی، ناهماهنگی هندسه ثبت/صفحه، یا قرار داشتن مکان‌نما بیرون از نمایشگر اصلی. فقط نمایشگر اصلی را هدایت کنید.
COMPUTER_UNSUPPORTED_KEY مقداری برای key که درایور نمی‌تواند با اطمینان بازتولید کند: یک کلید رقم یا نشانه‌گذاری که وضعیت Shift آن به چیدمان وابسته است، یا یک کلید ناشناخته. آن متن را در عوض از طریق کنش type ارسال کنید.
COMPUTER_DRIVER_ERROR / COMPUTER_INVALID_REQUEST درایور بدون کد ساختاریافته شکست خورده است، یا آرگومان‌های کنش نادرست بوده‌اند. وضعیت درایور را بررسی کنید و دوباره اسکرین‌شات بگیرید؛ آرگومان‌های کنش را اصلاح کنید.

فرمان Node با نام computer.act

computer.act تنها فرمان Node است که ابزار ورودی را از طریق آن مسیریابی می‌کند (node.invoke همراه با command: "computer.act"). این فرمان:

  • به‌طور پیش‌فرض خطرناک است: در فهرست فرمان‌های خطرناک داخلی Node قرار دارد و تا زمانی که صریحاً مسلح نشود، از فهرست مجاز زمان اجرا حذف می‌شود. Nodeهای دسکتاپ macOS، Windows و Linux همچنان می‌توانند آن را هنگام جفت‌سازی اعلام کنند تا این سطح فقط یک‌بار تأیید شود.
  • مبتنی بر قابلیت است: ابزار به یک Node متصل نیاز دارد که هر دو computer.act و screen.snapshot را اعلام کند. برنامه همراه macOS و Plugin آزمایشی و انتخابی cua-computer همان جفت فرمان را اجرا می‌کنند.

خواندن‌ها از screen.snapshot دوباره استفاده می‌کنند؛ مسیر ثبت دومی وجود ندارد. برای فرمان ثبت مشترک، Nodeهای دوربین و صفحه‌نمایش را ببینید.

فعال‌سازی و مسلح‌سازی

  1. اجراکننده پلتفرم را فعال کنید: در macOS، Settings → Allow Computer Control را فعال کنید، سپس در Settings → Permissions مجوزهای Accessibility و Screen Recording را اعطا کنید؛ در Windows/Linux، راه‌اندازی آزمایشی cua-computer در بالا را دنبال کنید.

  2. به‌روزرسانی جفت‌سازی را در Gateway تأیید کنید (هر فرمان جدید، جفت‌سازی مجدد را اجباری می‌کند).

  3. ابزار را در اختیار عامل دارای قابلیت بینایی قرار دهید. برای نمایه پیش‌فرض coding:

    json5
    {  tools: {    alsoAllow: ["computer"],    // عامل‌های سندباکس‌شده به این دروازه دوم نیز نیاز دارند:    sandbox: { tools: { alsoAllow: ["computer"] } },  },}
  4. برای یک بازه محدود، computer.act را مسلح کنید. Plugin phone-control یک گروه computer ارائه می‌کند:

    text
    /phone arm computer 30m/phone status/phone disarm

    مسلح‌سازی به operator.admin (یا مالک) نیاز دارد و به‌طور خودکار منقضی می‌شود. گروه قدیمی /phone arm all عمداً کنترل دسکتاپ را شامل نمی‌شود؛ از گروه صریح computer استفاده کنید. مسلح‌سازی فقط تعیین می‌کند Gateway مجاز به فراخوانی چه چیزی است؛ برنامه Node همچنان تنظیمات مختص پلتفرم و مجوزهای سیستم‌عامل خود را اعمال می‌کند که در macOS شامل Allow Computer Control، Accessibility و Screen Recording است.

برای مجوز دائمی، computer.act را به gateway.nodes.commands.allow اضافه کنید و آن را از gateway.nodes.commands.deny حذف کنید؛ فهرست عدم‌اجازه اولویت دارد. مجوز دائمی به‌طور خودکار منقضی نمی‌شود. ورودی‌هایی که پیش از /phone arm وجود داشته‌اند، پس از /phone disarm باقی می‌مانند؛ تا زمانی که یک مجوز موقت مسلح است، آن را به مجوز دائمی تبدیل نکنید.

مجوزدهی عمداً میان فعال‌سازی و استفاده تفکیک شده است. مسلح‌سازی یا پیکربندی دائمی computer.act به اختیار مدیریتی نیاز دارد. پس از مسلح‌شدن، یک اپراتور احراز هویت‌شده دارای operator.write می‌تواند تا زمان انقضای مجوز یا خلع سلاح، computer.act را از طریق node.invoke فراخوانی کند؛ برای هر کنش، بررسی مدیریتی جداگانه‌ای انجام نمی‌شود. تأیید یک Node که computer.act را اعلام می‌کند، فقط این سطح را ثبت می‌کند تا بعداً بتوان آن را مسلح کرد و به‌خودی‌خود فراخوانی را فعال نمی‌کند.

ایمنی

  • پیش از صدور مجوز، همه لایه‌ها (سیاست ابزار، سیاست فرمان Gateway، تنظیم برنامه Node و مجوزهای پلتفرم) باید موافق باشند. برای اجراکننده فعلی macOS، این موارد شامل Allow Computer Control، Accessibility و Screen Recording است. پس از مسلح‌سازی، کنش‌ها تا زمان انقضا یا /phone disarm بدون تأیید جداگانه برای هر کنش اجرا می‌شوند.
  • اجراکننده macOS متن را هر بار یک گرافیم ارسال می‌کند؛ بنابراین لغو، قطع اتصال، مکث، غیرفعال‌سازی یا جایگزینی نقطه پایانی، آن را پیش از گرافیم بعدی متوقف می‌کند. اجراکننده آزمایشی cua-driver نمی‌تواند فراخوانی type_text را در میانه تایپ لغو کند.
  • نماگرفت‌ها فقط برای مدل هستند و هرگز به‌طور خودکار به گپ ارسال نمی‌شوند (مسئله #44759).
  • محتوای صفحه را نامطمئن در نظر بگیرید؛ ممکن است حاوی تزریق پرامپت باشد.

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

این مسیر مبتنی بر عامل است. برای آگاهی از ارتباط آن با میزبان PeekabooBridge، قابلیت استفاده از رایانه در Codex و MCP مستقیم cua-driver، به پل Peekaboo مراجعه کنید.

Was this useful?
On this page

On this page