Get started

کارگران ابری

Status: active

عامل‌های ابری به یک نشست اجازه می‌دهند حلقه عامل خود را روی یک ماشین ابری یک‌بارمصرف اجرا کند، درحالی‌که همه‌چیز درباره نشست در همان جای همیشگی باقی می‌ماند: در نوار کناری قابل‌مشاهده است، به‌صورت زنده پخش می‌شود و مالک رونوشت Gateway است. Gateway یک ماشین اجاره می‌کند، یک نسخه پین‌شده از OpenClaw را روی آن نصب می‌کند، فضای کاری نشست را به آن همگام می‌سازد و حلقه نوبت را به یک فرایند محدودشده openclaw worker می‌سپارد. فراخوانی‌های مدل از طریق Gateway پروکسی می‌شوند، بنابراین اعتبارنامه‌های ارائه‌دهنده هرگز ماشین شما را ترک نمی‌کنند و کش‌کردن پرامپت همچنان کار می‌کند، زیرا ارائه‌دهنده یک جریان پیوسته واحد می‌بیند.

وقتی کار تمام شود (یا ماشین از کار بیفتد)، ماشین کنار گذاشته می‌شود. وضعیت پایدار — رونوشت، کامیت‌های فضای کاری، رکوردهای استقرار — نزد Gateway باقی می‌ماند.

چه چیزی کجا اجرا می‌شود

موضوع مکان
حلقه عامل + ابزارها (exec، read، write، edit، …) ماشین عامل ابری
استنتاج مدل و اعتبارنامه‌های ارائه‌دهنده Gateway (پروکسی‌شده با ارجاع {provider, model})
رونوشت (پایدار، مخزن نشست) Gateway
پخش زنده در نوار کناری توزیع Gateway، تغذیه‌شده با جریان رویداد قابل‌بازپخش عامل
تاریخچه git فضای کاری بدون اعتبارنامه روی ماشین ایجاد می‌شود؛ Gateway کامیت‌ها را می‌پذیرد و مالک push/PR است

ماشین به‌جز sshd به هیچ درگاه ورودی نیاز ندارد: Gateway از طریق SSH پین‌شده اتصال خروجی برقرار می‌کند و یک تونل معکوس، WebSocket عامل را بازمی‌گرداند. ارائه‌دهنده همراه Crabbox مسیر عمومی SSH را اجباری و ثبت‌نام مدیریت‌شده Tailscale را غیرفعال می‌کند. دسترسی خروجی به اینترنت تابع سیاست ارائه‌دهنده است؛ پروفایل پیش‌فرض AWS می‌تواند به اینترنت دسترسی داشته باشد، مگر اینکه شبکه یا گروه امنیتی آن را محدود کنید.

الزامات

  • یک Plugin ارائه‌دهنده عامل. Plugin همراه crabbox، Crabbox CLI را هدایت می‌کند که اجاره‌ها را میان بک‌اندهای ابری (AWS، Hetzner و دیگران) واسطه‌گری می‌کند. فایل اجرایی crabbox باید در PATH باشد (یا settings.binary را تنظیم کنید) و اعتبارنامه‌های ارائه‌دهنده از پیش پیکربندی شده باشند. پذیرش AWS به Crabbox 0.38.1 یا جدیدتر نیاز دارد.
  • برای عامل‌های Crabbox AWS، مقدار مؤثر aws.instanceProfile باید خالی باشد. ارائه‌دهنده پیش از تخصیص، crabbox config show --json را بررسی می‌کند و سپس لازم می‌داند crabbox inspect --json مقدار providerMetadata.instanceProfileAttached: false را از EC2 DescribeInstances گزارش کند. اجاره‌های دارای نقش نمونه یا فاقد فراداده معتبر متوقف و رد می‌شوند.
  • Node.js روی ماشین اجاره‌شده. ایمیج‌های خام ابری معمولاً آن را ندارند — آن را در فرمان setup پروفایل نصب کنید.
  • یک نشست با worktree مدیریت‌شده متعلق به نشست (یکی با worktree: true ایجاد کنید). ارسال، محتوای آن worktree را منتقل می‌کند؛ دایرکتوری‌های معمولی به‌صورت آینه مانیفست همگام می‌شوند.

پیکربندی

یک پروفایل زیر cloudWorkers.profiles در openclaw.json اضافه کنید:

json
{  "cloudWorkers": {    "profiles": {      "aws": {        "provider": "crabbox",        "install": "bundle",        "settings": {          "provider": "aws",          "class": "standard",          "ttl": "8h",          "idleTimeout": "45m",          "setup": "test -x /usr/bin/node || (curl -fsSL https://deb.nodesource.com/setup_22.x | sudo -E bash - && sudo apt-get install -y nodejs)"        }      }    }  }}

فیلدهای پروفایل:

کلید معنا
provider شناسه ارائه‌دهنده عامل که توسط یک Plugin ثبت شده است (crabbox برای Plugin همراه).
install bundle (پیش‌فرض) بیلد Gateway درحال‌اجرا را ارسال می‌کند؛ npm نسخه دقیق منتشرشده Gateway را با یکپارچگی پین‌شده نصب می‌کند. npm مستلزم آن است که Gateway از یک انتشار بسته‌بندی‌شده اجرا شود.
settings JSON متعلق به ارائه‌دهنده. برای crabbox: provider (بک‌اند)، class (کلاس ماشین)، ttl، idleTimeout (مدت‌زمان‌های Go)، و در صورت نیاز setup و مسیر مطلق binary. OpenClaw برای این اجاره‌ها SSH عمومی را اجباری و Tailscale مدیریت‌شده را غیرفعال می‌کند.
lifetime سیاست ذخیره‌شده اختیاری (idleTimeoutMinutes، maxLifetimeMinutes).

فرمان راه‌اندازی

settings.setup پس از آماده‌شدن SSH ماشین اجاره‌شده و پیش از نصب OpenClaw روی آن اجرا می‌شود. این فرمان در هر تلاش تأمین اجرا می‌شود (از جمله بازپخش‌ها پس از ارسال قطع‌شده)، بنابراین باید هم‌توان باشد — مانند مثال، از نصب‌ها با بررسی command -v/test -x محافظت کنید. اگر راه‌اندازی شکست بخورد، ارائه‌دهنده اجاره را متوقف می‌کند و ارسال به‌صورت بسته شکست می‌خورد؛ هیچ ماشین نیمه‌پیکربندی‌شده‌ای درحال‌اجرا باقی نمی‌ماند.

کانال‌های نصب

  • bundle، dist متعلق به Gateway درحال‌اجرا، یک package.json هرس‌شده و همه بسته‌های فضای کاری مورد ارجاع بیلد را بسته‌بندی می‌کند که همگی تحت پوشش یک هش محتوا هستند. ماشین بسته دست‌نخورده را با آن هش اعتبارسنجی می‌کند، سپس وابستگی‌های npm محیط تولید را نصب می‌کند (اسکریپت‌ها غیرفعال‌اند). به این روش می‌توانید یک بیلد توسعه را روی عامل اجرا کنید.
  • npm وجود انتشار در رجیستری عمومی را اثبات می‌کند، یکپارچگی SHA-512 آن را پین می‌کند و openclaw@<version> را دقیقاً مطابق Gateway نصب می‌کند.

ارسال یک نشست

در رابط کنترل، New Session را باز کنید، عاملی را انتخاب کنید که runtime پیکربندی‌شده آن OpenClaw است، یک مقصد پیکربندی‌شده Cloud · profile را از منوی Where انتخاب کنید و کار را آغاز کنید. انتخاب ابر، worktree مدیریت‌شده موردنیاز را به‌طور خودکار فعال می‌کند؛ Gateway نشست را ایجاد می‌کند، ارسال را به پایان می‌رساند و تنها سپس نخستین نوبت را می‌فرستد. نشان سرور در نوار کناری نشست، وضعیت پایدار استقرار را نشان می‌دهد. مقصدهای ابری برای کاتالوگ‌های نشست CLI خارجی ارائه نمی‌شوند.

جریان RPC معادل چنین است:

یک نشست با worktree مدیریت‌شده ایجاد کنید، سپس آن را ارسال کنید (RPC به operator.admin نیاز دارد و تنها زمانی وجود دارد که پروفایل‌ها پیکربندی شده باشند):

عامل‌های ابری runtime عامل OpenClaw را اجرا می‌کنند. یک openai/* یا مدل دیگری را انتخاب کنید که به آن runtime نگاشت می‌شود؛ نشست‌های پیکربندی‌شده برای یک runtime خارجی CLI مانند claude-cli قابل‌ارسال نیستند.

bash
openclaw gateway call sessions.create \  --params '{"key":"agent:main:big-refactor","worktree":true,"cwd":"/path/to/repo","worktreeName":"big-refactor"}' openclaw gateway call sessions.dispatch \  --timeout 1500000 \  --params '{"key":"agent:main:big-refactor","profileId":"aws"}'

sessions.dispatch پذیرش نوبت محلی را می‌بندد، کار فعال را تخلیه می‌کند، اجاره را تأمین می‌کند، راه‌اندازی را اجرا می‌کند، OpenClaw را بوت‌استرپ می‌کند، فضای کاری را همگام می‌سازد و زمانی بازمی‌گردد که استقرار به مالکیت عامل active برسد. برای نخستین ارسال چند دقیقه در نظر بگیرید؛ هرجا ارائه‌دهنده پشتیبانی کند، اجاره‌ها و نصب‌ها کش می‌شوند. پس از آن، طبق معمول با نشست گفتگو کنید — نوبت‌ها به‌طور خودکار به عامل مسیریابی می‌شوند.

نوبت‌های تکمیل‌شده عامل، پیش از آزادشدن ادعای نوبت، فایل‌های واجد شرایط و دارای اندازه محدود فضای کاری را دوباره با worktree مدیریت‌شده نشست تطبیق می‌دهند. رویداد پایانی عامل، پیش از تأییدشدن، یک حصار پایدار نتیجه معلق ایجاد می‌کند تا بازیابی پس از راه‌اندازی مجدد Gateway، فضای کاری راه‌دور را پیش از آن بازگرداند که پاک‌سازی نوبت منقضی بتواند مالک آن را نابود کند. تطبیق، مانیفست عامل را احراز اصالت می‌کند و در صورت واگرایی محلی، به‌جای بازنویسی هر یک از طرفین متوقف می‌شود. پیش از تغییر فایل‌ها، Gateway یک ژورنال بازگردانی محدود را در پایگاه داده وضعیت SQLite خود ذخیره می‌کند؛ تلاش مجدد پس از قطع فرایند Gateway آن ژورنال را بازیابی می‌کند. نتایج فضای کاری از معناشناسی فایل Git استفاده می‌کنند: فایل‌های معمولی، بیت‌های اجرایی، پیوندهای نمادین، افزوده‌ها، تغییرات و حذف‌ها حفظ می‌شوند، اما دایرکتوری‌های خالی و دیگر حالت‌های دایرکتوری حفظ نمی‌شوند. اشیای کامیت راه‌دور حفظ نمی‌شوند؛ تغییرات فایل حاصل برای بازبینی و کامیت عادی در worktree مدیریت‌شده باقی می‌مانند.

وقتی کار کامل شد و هیچ نوبتی درحال‌اجرا نبود، منوی نشست را باز و Stop cloud worker… را انتخاب کنید. Gateway پیش از نابودکردن محیط، یک تطبیق نهایی فضای کاری انجام می‌دهد. استقراری که از قبل در draining یا reconciling است، درحال تکمیل برچیدن است؛ پیش از حذف نشست صبر کنید تا نشان آن به reclaimed تبدیل شود.

برای یک عامل متصل خراب یا مهارنشدنی، اپراتور می‌تواند به‌عنوان آخرین راه‌حل، environments.destroy را با { "force": true } فراخوانی کند. برچیدن اجباری، پیش از نابودکردن محیط، استقرار را به‌طور پایدار شکست‌خورده علامت می‌زند و هر نتیجه راه‌دور تطبیق‌نیافته را رها می‌کند.

RPC مدیریتی معادل چنین است:

bash
openclaw gateway call sessions.reclaim \  --timeout 600000 \  --params '{"key":"agent:main:big-refactor"}'

استقرار از یک ماشین حالت پایدار (local → requested → provisioning → syncing → starting → active) عبور می‌کند، بنابراین راه‌اندازی مجدد Gateway در میانه ارسال، به‌جای نشت ماشین‌ها تطبیق انجام می‌دهد. یک نوبت ناموفق مدل، استقرار فعال را برای تلاش مجدد در دسترس نگه می‌دارد. اگر تطبیق ورودی فضای کاری شکست بخورد، عامل نیز فعال می‌ماند تا اپراتور بتواند تعارض محلی را برطرف و بدون ازدست‌دادن نتیجه راه‌دور دوباره تلاش کند؛ در مقابل، شکست‌های چرخه‌عمر استقرار را به وضعیت خطا یا بازپس‌گرفته‌شده منتقل و دنباله تشخیصی آن را حفظ می‌کنند.

مدل امنیتی

  • ورودی بسته عامل. عامل‌ها روی سوکت تونل‌شده با یک پروتکل اختصاصی و فهرست مجاز بسته‌ای از متدها ارتباط برقرار می‌کنند — یک عامل نمی‌تواند RPCهای اپراتور را فراخوانی کند.
  • اعتبارنامه‌های صادرشده، هش‌شده در حالت سکون. هر ارسال یک اعتبارنامه عامل صادر می‌کند؛ Gateway فقط هش آن را ذخیره می‌کند. چرخش اعتبارنامه و حصارگذاری دوره مالک تضمین می‌کنند که در هر نشست حداکثر یک مالک زنده وجود داشته باشد — عامل منقضی که دوباره متصل شود حصارگذاری می‌شود و هرگز ادغام نمی‌شود.
  • پین‌کردن کلید میزبان. ارائه‌دهنده باید هنگام تأمین، کلید میزبان SSH ماشین را ارائه کند؛ بوت‌استرپ با پین‌کردن سخت‌گیرانه متصل می‌شود و بدون آن به‌صورت بسته شکست می‌خورد.
  • نبود اعتبارنامه‌های دائمی مدل، forge یا ابر روی ماشین. احراز هویت مدل روی Gateway باقی می‌ماند (استنتاج با ارجاع {provider, model} منتقل می‌شود)، کامیت‌های git فضای کاری بدون اعتبارنامه‌های forge ایجاد می‌شوند و فراداده اجاره Crabbox AWS پیش از راه‌اندازی به‌طور معتبر برای وجود نقش نمونه بررسی می‌شود. فرمان‌های راه‌اندازی را نیز بدون اعتبارنامه نگه دارید.
  • خروجی متعلق به ارائه‌دهنده. تونل معکوس هرگونه نیاز OpenClaw به دسترسی مستقیم مدل را برطرف می‌کند، اما OpenClaw دیواره‌های آتش ارائه‌دهنده را بازنویسی نمی‌کند. وقتی کار به آن نیاز دارد، ترافیک خروجی را در ارائه‌دهنده عامل محدود کنید.
  • رونوشت‌های پایدار و دقیقاً یک‌باره. عامل دسته‌های رونوشت را از طریق پروتکل مقایسه‌و‌تعویض در برابر برگ نشست کامیت می‌کند؛ یک مبنای منقضی به‌جای تکرار یا تغییر مبنای خروجی پولی، اجرای کار را متوقف می‌کند.

عیب‌یابی

  • sessions.dispatch روشی ناشناخته است — هیچ cloudWorkers.profiles پیکربندی نشده است، یا فراخواننده فاقد operator.admin است.
  • «نوبت‌های کارگر ابری به زمان اجرای OpenClaw نیاز دارند» — مدلی را انتخاب کنید که زمان اجرای پیکربندی‌شدهٔ آن OpenClaw باشد. زمان‌های اجرای CLI خارجی مانند claude-cli از استنتاج کارگر پشتیبانی نمی‌کنند.
  • «راه‌اندازی اولیهٔ کارگر به Node.js روی میزبان اجاره‌شده نیاز دارد» — نصب Node را به settings.setup اضافه کنید (بخش بالا را ببینید).
  • تأیید نقش نمونهٔ AWS ناموفق استaws.instanceProfile (و در صورت تنظیم، CRABBOX_AWS_INSTANCE_PROFILE) را پاک کنید. Crabbox نسخهٔ 0.38.1 یا جدیدتر را نصب کنید؛ فایل‌های اجرایی قدیمی‌تر قرارداد معتبر providerMetadata.instanceProfileAttached را که برای پذیرش AWS لازم است ارائه نمی‌کنند.
  • ارسال با خطای ارائه‌دهنده ناموفق می‌شود — رکورد استقرار و environments.list آخرین خطا، از جمله انتهای stderr مربوط به تنظیم/راه‌اندازی اولیه، را نگه می‌دارند. جعبه‌ها هنگام شکست از بین می‌روند، بنابراین آن بخش انتهایی منبع اصلی بررسی جرم‌شناختی است.
  • پایان مهلت کلاینت هنگام ارسال — مهلت پیش‌فرض openclaw gateway call برابر با 10s است؛ مقدار --timeout را سخاوتمندانه تعیین کنید (ارسال در هر صورت در سمت سرور ادامه می‌یابد و تلاش مجدد هنگام تأمین با session cannot dispatch from placement provisioning رد می‌شود).
  • نگهداشت اجاره‌هاcrabbox list --provider <backend> اجاره‌های فعال را نشان می‌دهد؛ crabbox stop --provider <backend> --id <lease> یکی را به‌صورت دستی آزاد می‌کند. اجاره‌های بی‌کار بر اساس idleTimeout نمایه منقضی می‌شوند.

مرتبط

Was this useful?
On this page

On this page