Get started

العاملون السحابيون

Status: active

تتيح العُقد العاملة السحابية للجلسة تشغيل حلقة وكيلها على جهاز سحابي مؤقت، بينما يبقى كل ما يتعلق بالجلسة في مكانه المعتاد: ظاهرًا في الشريط الجانبي، ومتدفقًا مباشرة، مع امتلاك Gateway للنص المنسوخ. يستأجر Gateway جهازًا، ويثبّت عليه نسخة مثبّتة الإصدار من OpenClaw، ويزامن إليه مساحة عمل الجلسة، ويسلّم حلقة الدور إلى عملية openclaw worker مقيّدة. تُمرَّر استدعاءات النموذج بالوكالة عائدةً عبر Gateway، بحيث لا تغادر بيانات اعتماد المزوّد جهازك أبدًا، ويستمر التخزين المؤقت للمطالبات في العمل لأن المزوّد يرى تدفقًا واحدًا متصلًا.

عند اكتمال العمل (أو تعطل الجهاز)، يُتخلّص من الجهاز. وتبقى الحالة الدائمة — النص المنسوخ، والتزامات مساحة العمل، وسجلات الموضع — لدى Gateway.

ما الذي يعمل وأين

الجانب الموقع
حلقة الوكيل + الأدوات (exec، read، write، edit، …) جهاز العقدة العاملة السحابية
استدلال النموذج وبيانات اعتماد المزوّد Gateway (يُمرَّر بالوكالة بواسطة مرجع {provider, model})
النص المنسوخ (دائم، مخزن الجلسة) Gateway
التدفق المباشر إلى الشريط الجانبي توزيع Gateway، تغذّيه سلسلة أحداث العقدة العاملة القابلة لإعادة التشغيل
سجل Git لمساحة العمل يُنشأ على الجهاز بلا بيانات اعتماد؛ يتبنّى Gateway الالتزامات ويمتلك الدفع/طلب السحب

لا يحتاج الجهاز إلى منافذ واردة باستثناء sshd: يتصل Gateway إلى الخارج عبر SSH مثبّت المفتاح، ويحمل نفق عكسي WebSocket الخاص بالعقدة العاملة عائدًا. يفرض مزوّد Crabbox المضمّن مسار SSH العام ويعطّل التسجيل المُدار في Tailscale. الوصول الصادر إلى الإنترنت من سياسة المزوّد؛ يمكن لملف AWS الافتراضي الوصول إلى الإنترنت ما لم تقيّد شبكته أو مجموعة الأمان الخاصة به.

المتطلبات

  • Plugin لمزوّد عُقد عاملة. يقود Plugin ‏crabbox المضمّن CLI الخاص بـ Crabbox، الذي يتوسط في عمليات الاستئجار عبر الخلفيات السحابية (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 من DescribeInstances الخاص بـ EC2. تُوقَف عمليات الاستئجار ذات دور مثيل أو التي تفتقر إلى بيانات وصفية موثوقة وتُرفض.
  • Node.js على الجهاز المستأجر. عادةً ما تفتقر إليه صور السحابة المجردة — ثبّته في أمر setup الخاص بالملف الشخصي.
  • جلسة لها شجرة عمل مُدارة تملكها الجلسة (أنشئ واحدة باستخدام worktree: true). ينقل الإرسال محتويات شجرة العمل تلك؛ وتُزامن الأدلة العادية كمرآة بيان.

التهيئة

أضف ملفًا شخصيًا ضمن 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 تمامًا.

إرسال جلسة

في واجهة التحكم، افتح جلسة جديدة، واختر وكيلًا يكون وقت التشغيل المهيأ له هو OpenClaw، وحدد هدف السحابة · الملف الشخصي المهيأ من قائمة المكان، وابدأ المهمة. يفعّل تحديد السحابة شجرة العمل المُدارة المطلوبة تلقائيًا؛ وينشئ Gateway الجلسة، ويكمل الإرسال، وعندئذ فقط يرسل الدور الأول. تعرض شارة الخادم في الشريط الجانبي للجلسة حالة الموضع الدائمة. لا تُعرض الأهداف السحابية لكتالوجات جلسات CLI الخارجية.

تدفق RPC المكافئ هو:

أنشئ جلسة ذات شجرة عمل مُدارة، ثم أرسلها (يتطلب RPC ‏operator.admin ولا يكون موجودًا إلا عند تهيئة الملفات الشخصية):

تشغّل العُقد العاملة السحابية وقت تشغيل وكيل OpenClaw. اختر openai/* أو نموذجًا آخر يُحل إلى وقت التشغيل ذلك؛ لا يمكن إرسال الجلسات المهيأة لوقت تشغيل 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. خصّص عدة دقائق للإرسال الأول؛ تُخزّن عمليات الاستئجار والتثبيت مؤقتًا حيث يدعم المزوّد ذلك. بعد ذلك، تفاعل مع الجلسة كالمعتاد — تُوجّه الأدوار إلى العقدة العاملة تلقائيًا.

تعيد أدوار العقدة العاملة المكتملة تسوية ملفات مساحة العمل المؤهلة والمحدودة الحجم إلى شجرة العمل المُدارة للجلسة قبل تحرير المطالبة بالدور. ينشئ حدث العقدة العاملة النهائي حاجز نتيجة معلّقة دائمًا قبل الإقرار به، لذلك تستعيد عملية التعافي من إعادة تشغيل Gateway مساحة العمل البعيدة قبل أن يتمكن تنظيف الدور القديم من تدمير مالكها. تصادق التسوية على بيان العقدة العاملة وتتوقف عند وجود تباعد محلي بدلًا من الكتابة فوق أي من الجانبين. قبل تغيير الملفات، يخزّن Gateway سجل تراجع محدودًا في قاعدة بيانات حالة SQLite الخاصة به؛ وتستعيد إعادة المحاولة ذلك السجل بعد انقطاع عملية Gateway. تستخدم نتائج مساحة العمل دلالات ملفات Git: تُحتفظ بالملفات العادية، وبتات التنفيذ، والروابط الرمزية، والإضافات، والتغييرات، والحذف، بينما لا تُحتفظ بالأدلة الفارغة وأنماط الأدلة الأخرى. لا يُحتفظ بكائنات الالتزام البعيدة؛ وتبقى تغييرات الملفات الناتجة في شجرة العمل المُدارة للمراجعة والالتزام المعتادين.

عند اكتمال العمل وعدم وجود دور قيد التشغيل، افتح قائمة الجلسة واختر إيقاف العقدة العاملة السحابية…. يجري 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 في منتصف الإرسال التسوية بدلًا من تسريب الأجهزة. يُبقي دور النموذج الفاشل الموضع النشط متاحًا لإعادة المحاولة. إذا فشلت تسوية مساحة العمل الواردة، تظل العقدة العاملة نشطة أيضًا حتى يتمكن المشغّل من حل التعارض المحلي وإعادة المحاولة دون فقدان النتيجة البعيدة؛ أما إخفاقات دورة الحياة فتنقل الموضع إلى حالة خطأ أو استرداد وتحافظ على ذيل التشخيص الخاص بها.

نموذج الأمان

  • وصول وارد مغلق للعقدة العاملة. تتواصل العُقد العاملة ببروتوكول مخصص على المقبس النفقي مع قائمة سماح مغلقة للطرائق — لا يمكن للعقدة العاملة استدعاء RPCs الخاصة بالمشغّل.
  • بيانات اعتماد مُنشأة، ومجزأة عند التخزين. ينشئ كل إرسال بيانات اعتماد للعقدة العاملة؛ ولا يخزّن Gateway سوى تجزئتها. يضمن تدوير بيانات الاعتماد وتسييج حقبة المالك وجود مالك حي واحد على الأكثر لكل جلسة — وتُسيَّج العقدة العاملة القديمة التي تعيد الاتصال، ولا تُدمج أبدًا.
  • تثبيت مفتاح المضيف. يجب أن يعرض المزوّد مفتاح مضيف SSH الخاص بالجهاز عند وقت التوفير؛ ويتصل التمهيد بتثبيت صارم ويفشل بصورة مغلقة بدونه.
  • لا توجد بيانات اعتماد دائمة للنموذج أو مستودع الاستضافة أو السحابة على الجهاز. تبقى مصادقة النموذج على Gateway (ينتقل الاستدلال بواسطة مرجع {provider, model})، وتُنشأ التزامات Git لمساحة العمل دون بيانات اعتماد مستودع الاستضافة، ويُتحقق بصورة موثوقة من بيانات وصف استئجار Crabbox على AWS بحثًا عن دور مثيل قبل الإعداد. أبقِ أوامر الإعداد خالية من بيانات الاعتماد أيضًا.
  • خروج يملكه المزوّد. يزيل النفق العكسي أي حاجة لدى OpenClaw للوصول المباشر إلى النموذج، لكن OpenClaw لا يعيد كتابة جدران حماية المزوّد. قيّد حركة المرور الصادرة لدى مزوّد العقدة العاملة عندما تتطلب المهمة ذلك.
  • نصوص منسوخة دائمة تُسجَّل مرة واحدة بالضبط. تلتزم العقدة العاملة بدفعات النص المنسوخ عبر بروتوكول مقارنة وتبديل مقابل طرف الجلسة؛ وتؤدي قاعدة قديمة إلى إيقاف التشغيل عند الفشل بدلًا من تكرار المخرجات المدفوعة أو إعادة تأسيسها.

استكشاف الأخطاء وإصلاحها

  • sessions.dispatch طريقة غير معروفة — لم تُهيّأ أي cloudWorkers.profiles، أو يفتقر المستدعي إلى operator.admin.
  • "تتطلب أدوار العامل السحابي بيئة تشغيل OpenClaw" — اختر نموذجًا تكون بيئة التشغيل المهيّأة له هي OpenClaw. لا تدعم بيئات تشغيل CLI الخارجية مثل claude-cli استدلال العامل.
  • "يتطلب تمهيد العامل وجود Node.js على المضيف المؤجَّر" — أضف تثبيت Node إلى settings.setup (انظر أعلاه).
  • فشل إثبات دور مثيل AWS — امسح aws.instanceProfileCRABBOX_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