الإعدادات
يقرأ OpenClaw إعدادات اختيارية من~/.openclaw/openclaw.json.
إذا كان الملف مفقودًا، يستخدم OpenClaw إعدادات افتراضية آمنة. ومن الأسباب الشائعة لإضافة إعدادات:
- توصيل القنوات والتحكم فيمن يمكنه مراسلة البوت
- ضبط النماذج، والأدوات، وsandboxing، أو الأتمتة (
cronوhooks) - ضبط الجلسات، والوسائط، والشبكات، أو واجهة المستخدم
إعدادات دنيا
تعديل الإعدادات
- المعالج التفاعلي
- CLI (أوامر مختصرة)
- Control UI
- تعديل مباشر
التحقق الصارم
ملاحظات أدوات المخطط:- يطبع
openclaw config schemaعائلة JSON Schema نفسها المستخدمة بواسطة Control UI والتحقق من الإعدادات. - تُنقل قيمتا
titleوdescriptionللحقل إلى خرج المخطط من أجل المحررات وأدوات النماذج. - ترث إدخالات الكائنات المتداخلة، والبدل الشامل (
*)، وعناصر المصفوفات ([]) بيانات التوثيق الوصفية نفسها حيث توجد وثائق حقول مطابقة. - ترث فروع التركيب
anyOf/oneOf/allOfأيضًا بيانات التوثيق الوصفية نفسها، بحيث تحتفظ متغيرات union/intersection بمساعدة الحقول نفسها. - يعيد
config.schema.lookupمسار إعدادات واحدًا مطبّعًا مع عقدة مخطط سطحية (titleوdescriptionوtypeوenumوconstوالحدود الشائعة وحقول تحقق مشابهة)، وبيانات تلميحات واجهة مستخدم مطابقة، وملخصات الأبناء المباشرين لأدوات التفصيل. - يتم دمج مخططات plugin/channel وقت التشغيل عندما يتمكن gateway من تحميل سجل manifest الحالي.
- لا يقلع Gateway
- تعمل فقط أوامر التشخيص (
openclaw doctorوopenclaw logsوopenclaw healthوopenclaw status) - شغّل
openclaw doctorلرؤية المشكلات الدقيقة - شغّل
openclaw doctor --fix(أو--yes) لتطبيق الإصلاحات
المهام الشائعة
إعداد قناة (WhatsApp، Telegram، Discord، إلخ)
إعداد قناة (WhatsApp، Telegram، Discord، إلخ)
لكل قناة قسم إعدادات خاص بها تحت
channels.<provider>. راجع صفحة القناة المخصصة لخطوات الإعداد:- WhatsApp —
channels.whatsapp - Telegram —
channels.telegram - Discord —
channels.discord - Feishu —
channels.feishu - Google Chat —
channels.googlechat - Microsoft Teams —
channels.msteams - Slack —
channels.slack - Signal —
channels.signal - iMessage —
channels.imessage - Mattermost —
channels.mattermost
اختيار النماذج وإعدادها
اختيار النماذج وإعدادها
اضبط النموذج الأساسي والتراجعات الاختيارية:
- يعرّف
agents.defaults.modelsفهرس النماذج ويعمل كقائمة سماح لـ/model. - تستخدم مراجع النماذج تنسيق
provider/model(مثلanthropic/claude-opus-4-6). - يتحكم
agents.defaults.imageMaxDimensionPxفي تصغير صور السجل النصي/الأدوات (الافتراضي1200)؛ وتؤدي القيم الأقل عادةً إلى تقليل استخدام رموز الرؤية في التشغيلات الكثيفة لصور الشاشة. - راجع Models CLI لتبديل النماذج في الدردشة وModel Failover لسلوك تدوير المصادقة والتراجع.
- بالنسبة إلى المزوّدين المخصصين/المستضافين ذاتيًا، راجع المزوّدون المخصصون في المرجع.
التحكم فيمن يمكنه مراسلة البوت
التحكم فيمن يمكنه مراسلة البوت
يتم التحكم في الوصول إلى الرسائل المباشرة لكل قناة عبر
dmPolicy:"pairing"(الافتراضي): يحصل المرسلون غير المعروفين على رمز اقتران لمرة واحدة للموافقة"allowlist": فقط المرسلون الموجودون فيallowFrom(أو مخزن السماح المقترن)"open": السماح بجميع الرسائل المباشرة الواردة (يتطلبallowFrom: ["*"])"disabled": تجاهل جميع الرسائل المباشرة
groupPolicy + groupAllowFrom أو قوائم السماح الخاصة بالقناة.راجع المرجع الكامل لتفاصيل كل قناة.إعداد بوابة الإشارات في دردشات المجموعات
إعداد بوابة الإشارات في دردشات المجموعات
تكون رسائل المجموعات افتراضيًا تتطلب إشارة. قم بإعداد الأنماط لكل وكيل:
- إشارات البيانات الوصفية: إشارات @ الأصلية (WhatsApp tap-to-mention، وTelegram @bot، إلخ)
- أنماط النص: أنماط regex آمنة في
mentionPatterns - راجع المرجع الكامل لتجاوزات كل قناة ووضع الدردشة الذاتية.
تقييد Skills لكل وكيل
تقييد Skills لكل وكيل
استخدم
agents.defaults.skills لخط أساس مشترك، ثم تجاوز
الوكلاء المحددين باستخدام agents.list[].skills:- احذف
agents.defaults.skillsللحصول على Skills غير مقيّدة افتراضيًا. - احذف
agents.list[].skillsللوراثة من الإعدادات الافتراضية. - اضبط
agents.list[].skills: []لعدم وجود Skills. - راجع Skills، وإعدادات Skills، و مرجع الإعدادات.
ضبط مراقبة صحة قنوات gateway
ضبط مراقبة صحة قنوات gateway
تحكّم في مدى شدة إعادة تشغيل gateway للقنوات التي تبدو قديمة:
- اضبط
gateway.channelHealthCheckMinutes: 0لتعطيل عمليات إعادة التشغيل الناتجة عن مراقبة الصحة عالميًا. - يجب أن تكون
channelStaleEventThresholdMinutesأكبر من أو مساوية لفاصل التحقق. - استخدم
channels.<provider>.healthMonitor.enabledأوchannels.<provider>.accounts.<id>.healthMonitor.enabledلتعطيل إعادة التشغيل التلقائي لقناة أو حساب واحد من دون تعطيل المراقب العام. - راجع فحوصات الصحة لتصحيح العمليات، والمرجع الكامل لجميع الحقول.
إعداد الجلسات وإعادة الضبط
إعداد الجلسات وإعادة الضبط
تتحكم الجلسات في استمرارية المحادثة والعزل:
dmScope: main(مشترك) |per-peer|per-channel-peer|per-account-channel-peerthreadBindings: إعدادات افتراضية عامة لتوجيه الجلسات المرتبطة بالسلاسل (يدعم Discord الأوامر/focusو/unfocusو/agentsو/session idleو/session max-age).- راجع إدارة الجلسات للنطاقات وروابط الهوية وسياسة الإرسال.
- راجع المرجع الكامل لجميع الحقول.
تمكين sandboxing
تمكين sandboxing
شغّل جلسات الوكيل داخل حاويات Docker معزولة:أنشئ الصورة أولًا:
scripts/sandbox-setup.shراجع Sandboxing للدليل الكامل والمرجع الكامل لجميع الخيارات.تمكين push المدعوم عبر relay للإصدارات الرسمية من iOS
تمكين push المدعوم عبر relay للإصدارات الرسمية من iOS
يتم إعداد push المدعوم عبر relay في مكافئ CLI:ما الذي يفعله هذا:
openclaw.json.اضبط هذا في إعدادات gateway:- يتيح لـ gateway إرسال
push.testوطلبات التنبيه wake nudges وتنبيهات إعادة الاتصال عبر relay الخارجي. - يستخدم منح إرسال ضمن نطاق التسجيل تعيد توجيهه تطبيقات iOS المقترنة. ولا يحتاج gateway إلى رمز relay عام على مستوى النشر.
- يربط كل تسجيل مدعوم عبر relay بهوية gateway التي اقترن بها تطبيق iOS، بحيث لا يستطيع gateway آخر إعادة استخدام التسجيل المخزن.
- يُبقي إصدارات iOS المحلية/اليدوية على APNs المباشر. وتنطبق عمليات الإرسال المدعومة عبر relay فقط على الإصدارات الرسمية الموزعة التي سجّلت عبر relay.
- يجب أن يطابق عنوان URL الأساسي الخاص بـ relay المضمّن في إصدار iOS الرسمي/TestFlight، حتى تصل حركة التسجيل والإرسال إلى نشر relay نفسه.
- ثبّت إصدار iOS رسميًا/TestFlight تم تجميعه بعنوان URL أساسي لـ relay نفسه.
- اضبط
gateway.push.apns.relay.baseUrlعلى gateway. - اقترن بتطبيق iOS مع gateway ودع جلسات node وoperator تتصل.
- يجلب تطبيق iOS هوية gateway، ويسجّل مع relay باستخدام App Attest وإيصال التطبيق، ثم ينشر حمولة
push.apns.registerالمدعومة عبر relay إلى gateway المقترن. - يخزن gateway مقبض relay ومنح الإرسال، ثم يستخدمهما في
push.testوطلبات التنبيه وتنبيهات إعادة الاتصال.
- إذا بدّلت تطبيق iOS إلى gateway مختلف، فأعد توصيل التطبيق حتى يتمكن من نشر تسجيل relay جديد مرتبط بذلك gateway.
- إذا أصدرت إصدار iOS جديدًا يشير إلى نشر relay مختلف، فسيقوم التطبيق بتحديث تسجيل relay المخبأ بدلًا من إعادة استخدام مصدر relay القديم.
- لا يزال كل من
OPENCLAW_APNS_RELAY_BASE_URLوOPENCLAW_APNS_RELAY_TIMEOUT_MSيعملان كتجاوزات بيئة مؤقتة. - يظل
OPENCLAW_APNS_RELAY_ALLOW_HTTP=trueمنفذ هروب تطويريًا محصورًا بـ loopback فقط؛ لا تحفظ عناوين URL لـ relay عبر HTTP في الإعدادات.
إعداد heartbeat (تسجيلات دورية)
إعداد heartbeat (تسجيلات دورية)
every: سلسلة مدة (30mو2h). اضبط0mللتعطيل.target: last|none|<channel-id>(مثلdiscordأوmatrixأوtelegramأوwhatsapp)directPolicy: allow(الافتراضي) أوblockلأهداف heartbeat من نمط الرسائل المباشرة- راجع Heartbeat للدليل الكامل.
إعداد مهام cron
إعداد مهام cron
sessionRetention: تقليم جلسات التشغيل المعزولة المكتملة منsessions.json(الافتراضي24h؛ اضبطfalseللتعطيل).runLog: تقليمcron/runs/<jobId>.jsonlحسب الحجم والأسطر المحتفظ بها.- راجع مهام Cron لنظرة عامة على الميزات وأمثلة CLI.
إعداد webhooks (hooks)
إعداد webhooks (hooks)
فعّل نقاط نهاية HTTP webhook على Gateway:ملاحظة أمان:
- تعامل مع كل محتوى حمولة hook/webhook على أنه إدخال غير موثوق.
- استخدم
hooks.tokenمخصصًا؛ لا تعِد استخدام رمز Gateway المشترك. - تكون مصادقة hook عبر الترويسات فقط (
Authorization: Bearer ...أوx-openclaw-token)؛ وتُرفض الرموز الموجودة في سلسلة الاستعلام. - لا يمكن أن يكون
hooks.pathهو/؛ أبقِ إدخال webhook على مسار فرعي مخصص مثل/hooks. - أبقِ أعلام تجاوز المحتوى غير الآمن معطلة (
hooks.gmail.allowUnsafeExternalContentوhooks.mappings[].allowUnsafeExternalContent) ما لم تكن تجري تصحيحًا محكم النطاق. - إذا فعّلت
hooks.allowRequestSessionKey، فاضبط أيضًاhooks.allowedSessionKeyPrefixesلتقييد مفاتيح الجلسات التي يحددها المتصل. - بالنسبة إلى الوكلاء المدفوعين عبر hook، فضّل مستويات النماذج الحديثة القوية وسياسة الأدوات الصارمة (على سبيل المثال الرسائل فقط مع sandboxing حيثما أمكن).
إعداد التوجيه متعدد الوكلاء
إعداد التوجيه متعدد الوكلاء
شغّل عدة وكلاء معزولين مع مساحات عمل وجلسات منفصلة:راجع Multi-Agent والمرجع الكامل لقواعد الارتباط وملفات الوصول لكل وكيل.
تقسيم الإعدادات إلى عدة ملفات ($include)
تقسيم الإعدادات إلى عدة ملفات ($include)
استخدم
$include لتنظيم ملفات الإعدادات الكبيرة:- ملف واحد: يستبدل الكائن الحاوي
- مصفوفة ملفات: تُدمج دمجًا عميقًا بالترتيب (الأخير ينتصر)
- المفاتيح المجاورة: تُدمج بعد عمليات التضمين (وتتجاوز القيم المضمّنة)
- التضمينات المتداخلة: مدعومة حتى عمق 10 مستويات
- المسارات النسبية: تُحل نسبةً إلى الملف الذي يتضمنها
- التعامل مع الأخطاء: أخطاء واضحة للملفات المفقودة، وأخطاء التحليل، والتضمينات الدائرية
إعادة التحميل السريع للإعدادات
يراقب Gateway الملف~/.openclaw/openclaw.json ويطبّق التغييرات تلقائيًا — ولا حاجة إلى إعادة تشغيل يدوية لمعظم الإعدادات.
أوضاع إعادة التحميل
| الوضع | السلوك |
|---|---|
hybrid (الافتراضي) | يطبّق التغييرات الآمنة مباشرة. ويعيد التشغيل تلقائيًا للتغييرات الحرجة. |
hot | يطبّق التغييرات الآمنة فقط. ويسجل تحذيرًا عند الحاجة إلى إعادة تشغيل — وأنت تتولى الأمر. |
restart | يعيد تشغيل Gateway عند أي تغيير في الإعدادات، سواء كان آمنًا أم لا. |
off | يعطّل مراقبة الملفات. وتدخل التغييرات حيز التنفيذ عند إعادة التشغيل اليدوية التالية. |
ما الذي يُطبَّق مباشرة وما الذي يحتاج إلى إعادة تشغيل
تُطبّق معظم الحقول مباشرة من دون توقف. وفي وضعhybrid، تتم معالجة التغييرات التي تتطلب إعادة تشغيل تلقائيًا.
| الفئة | الحقول | هل يلزم إعادة تشغيل؟ |
|---|---|---|
| القنوات | channels.* وweb (WhatsApp) — جميع القنوات المضمنة وقنوات plugins | لا |
| الوكيل والنماذج | agent وagents وmodels وrouting | لا |
| الأتمتة | hooks وcron وagent.heartbeat | لا |
| الجلسات والرسائل | session وmessages | لا |
| الأدوات والوسائط | tools وbrowser وskills وaudio وtalk | لا |
| واجهة المستخدم ومتفرقات | ui وlogging وidentity وbindings | لا |
| خادم Gateway | gateway.* (المنفذ، والربط، والمصادقة، وtailscale، وTLS، وHTTP) | نعم |
| البنية التحتية | discovery وcanvasHost وplugins | نعم |
يُعد كل من
gateway.reload وgateway.remote استثناءين — فالتغيير فيهما لا يؤدي إلى إعادة تشغيل.Config RPC (تحديثات برمجية)
تخضع استدعاءات RPC الخاصة بالكتابة في مستوى التحكم (
config.apply وconfig.patch وupdate.run) لحد معدل يبلغ 3 طلبات لكل 60 ثانية لكل deviceId+clientIp. وعند تطبيق الحد، يعيد RPC القيمة UNAVAILABLE مع retryAfterMs.config.schema.lookup: فحص شجرة إعدادات واحدة ضمن نطاق مسار واحد مع عقدة مخطط سطحية، وبيانات تلميحات مطابقة، وملخصات الأبناء المباشرينconfig.get: جلب اللقطة الحالية + hashconfig.patch: المسار المفضل للتحديث الجزئيconfig.apply: استبدال الإعدادات الكاملة فقطupdate.run: تحديث ذاتي صريح + إعادة تشغيل
config.schema.lookup
ثم config.patch.
config.apply (استبدال كامل)
config.apply (استبدال كامل)
يتحقق من الإعدادات الكاملة ويكتبها ثم يعيد تشغيل Gateway في خطوة واحدة.المعلمات:
raw(string) — حمولة JSON5 للإعدادات الكاملةbaseHash(اختياري) — hash الإعدادات منconfig.get(مطلوب عندما تكون الإعدادات موجودة)sessionKey(اختياري) — مفتاح الجلسة لتنبيه wake-up بعد إعادة التشغيلnote(اختياري) — ملاحظة لـ restart sentinelrestartDelayMs(اختياري) — تأخير قبل إعادة التشغيل (الافتراضي 2000)
config.patch (تحديث جزئي)
config.patch (تحديث جزئي)
يدمج تحديثًا جزئيًا في الإعدادات الحالية (وفق دلالات JSON merge patch):
- تُدمج الكائنات بشكل متكرر
- تحذف
nullالمفتاح - تستبدل المصفوفات
raw(string) — JSON5 يحتوي فقط على المفاتيح المطلوب تغييرهاbaseHash(مطلوب) — hash الإعدادات منconfig.getsessionKeyوnoteوrestartDelayMs— مثلconfig.apply
config.apply: إعادة التشغيلات المعلقة المدمجة بالإضافة إلى تبريد 30 ثانية بين دورات إعادة التشغيل.متغيرات البيئة
يقرأ OpenClaw متغيرات البيئة من العملية الأصلية بالإضافة إلى:.envمن دليل العمل الحالي (إن وجد)~/.openclaw/.env(تراجع عام)
استيراد بيئة shell (اختياري)
استيراد بيئة shell (اختياري)
إذا كان مفعّلًا ولم تكن المفاتيح المتوقعة مضبوطة، فإن OpenClaw يشغّل shell تسجيل الدخول الخاص بك ويستورد فقط المفاتيح المفقودة:مكافئ متغير البيئة:
OPENCLAW_LOAD_SHELL_ENV=1استبدال متغيرات البيئة داخل قيم الإعدادات
استبدال متغيرات البيئة داخل قيم الإعدادات
أشر إلى متغيرات البيئة في أي قيمة نصية داخل الإعدادات باستخدام القواعد:
${VAR_NAME}:- تتم مطابقة الأسماء الكبيرة فقط:
[A-Z_][A-Z0-9_]* - تؤدي المتغيرات المفقودة/الفارغة إلى خطأ وقت التحميل
- استخدم
$${VAR}للحصول على خرج حرفي - يعمل داخل ملفات
$include - استبدال مضمن:
"${BASE}/v1"→"https://api.example.com/v1"
مراجع الأسرار (env وfile وexec)
مراجع الأسرار (env وfile وexec)
بالنسبة إلى الحقول التي تدعم كائنات SecretRef، يمكنك استخدام:توجد تفاصيل SecretRef (بما في ذلك
secrets.providers الخاصة بـ env/file/exec) في إدارة الأسرار.
وتُسرد مسارات بيانات الاعتماد المدعومة في سطح بيانات اعتماد SecretRef.المرجع الكامل
للحصول على مرجع كامل لكل حقل، راجع مرجع الإعدادات.ذو صلة: أمثلة الإعدادات · مرجع الإعدادات · Doctor