مرجع إعدادات النواة لـDocumentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
~/.openclaw/openclaw.json. للحصول على نظرة عامة موجهة للمهام، راجع التكوين.
يغطي أسطح إعدادات OpenClaw الرئيسية، ويربط إلى مراجع أعمق عندما يكون للنظام الفرعي مرجعه الخاص. توجد كتالوجات الأوامر المملوكة للقنوات والـ plugin ومفاتيح الذاكرة العميقة/QMD في صفحاتها الخاصة بدلًا من هذه الصفحة.
حقيقة الكود:
- يطبع
openclaw config schemaمخطط JSON Schema الحي المستخدم للتحقق وواجهة Control UI، مع دمج بيانات الحزم/الـ plugin/القنوات الوصفية عند توفرها - يعيد
config.schema.lookupعقدة مخطط واحدة محددة بالمسار لأدوات التعمق - يتحقق
pnpm config:docs:check/pnpm config:docs:genمن تجزئة خط أساس وثائق الإعدادات مقابل سطح المخطط الحالي
gateway وهو config.schema.lookup للحصول على
وثائق وقيود دقيقة على مستوى الحقل قبل التعديلات. استخدم
التكوين للإرشادات الموجهة للمهام، وهذه الصفحة
لخريطة الحقول الأوسع، والقيم الافتراضية، وروابط مراجع الأنظمة الفرعية.
مراجع عميقة مخصصة:
- مرجع تكوين الذاكرة لـ
agents.defaults.memorySearch.*وmemory.qmd.*وmemory.citationsوتكوين dreaming ضمنplugins.entries.memory-core.config.dreaming - أوامر Slash لكتالوج الأوامر الحالي المدمج + المحزم
- صفحات القنوات/الـ plugin المالكة لأسطح الأوامر الخاصة بالقنوات
القنوات
انتقلت مفاتيح الإعدادات الخاصة بكل قناة إلى صفحة مخصصة - راجع التكوين - القنوات لـchannels.*،
بما في ذلك Slack وDiscord وTelegram وWhatsApp وMatrix وiMessage وقنوات أخرى
محزمة (المصادقة، والتحكم في الوصول، وتعدد الحسابات، وبوابة الإشارات).
القيم الافتراضية للوكلاء، وتعدد الوكلاء، والجلسات، والرسائل
انتقلت إلى صفحة مخصصة - راجع التكوين - الوكلاء من أجل:agents.defaults.*(مساحة العمل، النموذج، التفكير، heartbeat، الذاكرة، الوسائط، Skills، صندوق العزل)multiAgent.*(توجيه تعدد الوكلاء والارتباطات)session.*(دورة حياة الجلسة، Compaction، التشذيب)messages.*(تسليم الرسائل، TTS، عرض markdown)talk.*(وضع Talk)talk.consultThinkingLevel: تجاوز مستوى التفكير لتشغيل وكيل OpenClaw الكامل خلف استشارات Control UI Talk الفوريةtalk.consultFastMode: تجاوز لمرة واحدة لوضع السرعة لاستشارات Control UI Talk الفوريةtalk.speechLocale: معرف لغة اختياري وفق BCP 47 للتعرف على كلام Talk على iOS/macOStalk.silenceTimeoutMs: عند عدم تعيينه، يحتفظ Talk بنافذة التوقف الافتراضية للمنصة قبل إرسال النص (700 ms on macOS and Android, 900 ms on iOS)
الأدوات والمزودون المخصصون
انتقلت سياسة الأدوات، والمفاتيح التجريبية، وإعدادات الأدوات المدعومة بالمزودين، وإعداد المزود المخصص / عنوان URL الأساسي إلى صفحة مخصصة - راجع التكوين - الأدوات والمزودون المخصصون.النماذج
توجد تعريفات المزودين، وقوائم السماح للنماذج، وإعداد المزود المخصص في التكوين - الأدوات والمزودون المخصصون. كما يملك جذرmodels سلوك كتالوج النماذج العام.
models.mode: سلوك كتالوج المزودين (mergeأوreplace).models.providers: خريطة مزودين مخصصة مفهرسة بمعرف المزود.models.providers.*.localService: مدير عمليات اختياري عند الطلب لخوادم النماذج المحلية. يفحص OpenClaw نقطة نهاية الصحة المكوّنة، ويبدأcommandالمطلق عند الحاجة، وينتظر الجاهزية، ثم يرسل طلب النموذج. راجع خدمات النماذج المحلية.models.pricing.enabled: يتحكم في تمهيد التسعير في الخلفية الذي يبدأ بعد وصول العمليات الجانبية والقنوات إلى مسار جاهزية Gateway. عندما تكونfalse، يتخطى Gateway جلب كتالوجات تسعير OpenRouter وLiteLLM؛ وتظل قيمmodels.providers.*.models[].costالمكوّنة تعمل لتقديرات التكلفة المحلية.
MCP
توجد تعريفات خوادم MCP المُدارة بواسطة OpenClaw ضمنmcp.servers وتستهلكها
Pi المضمنة ومهايئات تشغيل أخرى. تدير أوامر openclaw mcp list و
show وset وunset هذه الكتلة دون الاتصال بالخادم
الهدف أثناء تعديلات الإعدادات.
mcp.servers: تعريفات خوادم MCP مسماة بنمط stdio أو بعيدة لبيئات التشغيل التي تعرض أدوات MCP المكوّنة. تستخدم الإدخالات البعيدةtransport: "streamable-http"أوtransport: "sse"؛ وtype: "http"اسم مستعار أصلي للـ CLI يقومopenclaw mcp setوopenclaw doctor --fixبتطبيعه إلى حقلtransportالقياسي.mcp.sessionIdleTtlMs: مدة TTL للخمول لبيئات تشغيل MCP المحزمة المحددة بنطاق الجلسة. تطلب التشغيلات المضمنة لمرة واحدة التنظيف عند نهاية التشغيل؛ وتكون مدة TTL هذه هي حد الأمان للجلسات طويلة العمر والمستدعين المستقبليين.- تُطبّق التغييرات ضمن
mcp.*فورًا عبر التخلص من بيئات تشغيل MCP المخزنة للجلسات. يعيد اكتشاف/استخدام الأداة التالي إنشاءها من الإعدادات الجديدة، لذلك تُزال إدخالاتmcp.serversالمحذوفة فورًا بدلًا من انتظار مدة TTL للخمول.
Skills
allowBundled: قائمة سماح اختيارية للـ skills المحزمة فقط (لا تتأثر skills المُدارة/الخاصة بمساحة العمل).load.extraDirs: جذور skills مشتركة إضافية (أدنى أولوية).load.allowSymlinkTargets: جذور أهداف حقيقية موثوقة يمكن أن تتحلل إليها روابط skills الرمزية عندما يكون الرابط خارج جذر المصدر المكوّن له.install.preferBrew: عند true، يفضل مثبّتات Homebrew عندما يكونbrewمتاحًا قبل الرجوع إلى أنواع مثبّتات أخرى.install.nodeManager: تفضيل مثبّت Node لمواصفاتmetadata.openclaw.install(npm|pnpm|yarn|bun).install.allowUploadedArchives: يسمح لعملاء Gateway الموثوقينoperator.adminبتثبيت أرشيفات zip خاصة مُحضّرة عبرskills.upload.*(القيمة الافتراضية: false). يمكّن هذا مسار الأرشيفات المرفوعة فقط؛ ولا تتطلب تثبيتات ClawHub العادية ذلك.entries.<skillKey>.enabled: falseيعطل skill حتى لو كانت محزمة/مثبتة.entries.<skillKey>.apiKey: تسهيل للـ skills التي تعلن متغير بيئة أساسيًا (سلسلة نصية صريحة أو كائن SecretRef).
Plugins
- تُحمّل من
~/.openclaw/extensionsو<workspace>/.openclaw/extensions، إضافة إلىplugins.load.paths. - يقبل الاكتشاف plugins OpenClaw الأصلية إضافة إلى حزم Codex المتوافقة وحزم Claude، بما في ذلك حزم Claude ذات التخطيط الافتراضي بلا manifest.
- تتطلب تغييرات الإعدادات إعادة تشغيل gateway.
allow: قائمة سماح اختيارية (تُحمّل plugins المدرجة فقط). تكون أولويةdenyأعلى.bundledDiscovery: القيمة الافتراضية هي"allowlist"للإعدادات الجديدة، بحيث إن وجودplugins.allowغير فارغة يقيّد أيضًا plugins المزودين المحزمة، بما في ذلك مزودي تشغيل بحث الويب. يكتب Doctor القيمة"compat"لإعدادات قوائم السماح القديمة المرحّلة للحفاظ على سلوك مزودي الحزم الحالي حتى تختار الاشتراك.plugins.entries.<id>.apiKey: حقل تسهيل لمفتاح API على مستوى plugin (عندما يدعمه plugin).plugins.entries.<id>.env: خريطة متغيرات بيئة محددة بنطاق plugin.plugins.entries.<id>.hooks.allowPromptInjection: عندما يكونfalse، تمنع النواةbefore_prompt_buildوتتجاهل الحقول التي تغيّر الموجه منbefore_agent_startالقديم، مع الحفاظ علىmodelOverrideوproviderOverrideالقديمين. ينطبق على خطافات plugin الأصلية وأدلة الخطافات المدعومة المقدمة من الحزم.plugins.entries.<id>.hooks.allowConversationAccess: عندما يكونtrue، يمكن للـ plugins غير المحزمة الموثوقة قراءة محتوى المحادثة الخام من خطافات نوعية مثلllm_inputوllm_outputوbefore_model_resolveوbefore_agent_replyوbefore_agent_runوbefore_agent_finalizeوagent_end.plugins.entries.<id>.subagent.allowModelOverride: ثق صراحة بهذا plugin لطلب تجاوزاتproviderوmodelلكل تشغيل لتشغيلات الوكلاء الفرعيين في الخلفية.plugins.entries.<id>.subagent.allowedModels: قائمة سماح اختيارية لأهدافprovider/modelالقياسية لتجاوزات الوكيل الفرعي الموثوقة. استخدم"*"فقط عندما تريد عمدًا السماح بأي نموذج.plugins.entries.<id>.llm.allowModelOverride: ثق صراحة بهذا plugin لطلب تجاوزات النموذج لـapi.runtime.llm.complete.plugins.entries.<id>.llm.allowedModels: قائمة سماح اختيارية لأهدافprovider/modelالقياسية لتجاوزات إكمال LLM من plugin الموثوقة. استخدم"*"فقط عندما تريد عمدًا السماح بأي نموذج.plugins.entries.<id>.llm.allowAgentIdOverride: ثق صراحة بهذا plugin لتشغيلapi.runtime.llm.completeمقابل معرف وكيل غير افتراضي.plugins.entries.<id>.config: كائن إعدادات يعرّفه plugin (يتم التحقق منه بواسطة مخطط plugin OpenClaw الأصلي عند توفره).- تعيش إعدادات حساب/تشغيل Plugin القناة ضمن
channels.<id>وينبغي أن تصفها بياناتchannelConfigsالوصفية في manifest الخاصة بالـ plugin المالك، لا سجل خيارات OpenClaw مركزي.
إعدادات Codex harness plugin
يمتلك Plugincodex المحزم إعدادات harness لخادم تطبيق Codex الأصلي ضمن
plugins.entries.codex.config. راجع
مرجع Codex harness لسطح الإعدادات الكامل
وCodex harness لنموذج وقت التشغيل.
ينطبق codexPlugins فقط على الجلسات التي تختار Codex harness الأصلي.
لا يفعّل plugins Codex لـ Pi أو تشغيلات مزود OpenAI العادية أو ارتباطات محادثة ACP
أو أي harness غير Codex.
plugins.entries.codex.config.codexPlugins.enabled: يفعّل دعم plugin/app الأصلي لحزمة Codex. الافتراضي:false.plugins.entries.codex.config.codexPlugins.allow_destructive_actions: سياسة إجراءات التدمير الافتراضية لاستدعاءات تطبيقات Plugin المرحّلة. الافتراضي:true.plugins.entries.codex.config.codexPlugins.plugins.<key>.enabled: يفعّل إدخال Plugin مرحّلاً عندما يكونcodexPlugins.enabledالعام مضبوطاً أيضاً على true. الافتراضي:trueللإدخالات الصريحة.plugins.entries.codex.config.codexPlugins.plugins.<key>.marketplaceName: هوية سوق ثابتة. يدعم V1 فقط"openai-curated".plugins.entries.codex.config.codexPlugins.plugins.<key>.pluginName: هوية Codex Plugin ثابتة من الترحيل، مثل"google-calendar".plugins.entries.codex.config.codexPlugins.plugins.<key>.allow_destructive_actions: تجاوز إجراءات التدمير لكل Plugin. عند حذفه، تُستخدم قيمةallow_destructive_actionsالعامة.
codexPlugins.enabled هو توجيه التفعيل العام. إدخالات Plugin الصريحة
التي يكتبها الترحيل هي مجموعة التثبيت الدائمة والأهلية للإصلاح.
plugins["*"] غير مدعوم، ولا يوجد مفتاح install، وقيم
marketplacePath المحلية ليست حقول إعدادات عمداً لأنها خاصة بالمضيف.
تُخزَّن فحوص جاهزية app/list مؤقتاً لمدة ساعة واحدة وتُحدَّث
بشكل غير متزامن عندما تصبح قديمة. تُحسب إعدادات تطبيق سلسلة Codex عند إنشاء
جلسة حزمة Codex، وليس في كل دورة؛ استخدم /new أو /reset أو إعادة تشغيل
Gateway بعد تغيير إعدادات Plugin الأصلية.
plugins.entries.firecrawl.config.webFetch: إعدادات موفر جلب الويب Firecrawl.apiKey: مفتاح Firecrawl API (يقبل SecretRef). يعود إلىplugins.entries.firecrawl.config.webSearch.apiKeyأوtools.web.fetch.firecrawl.apiKeyالقديم أو متغير البيئةFIRECRAWL_API_KEY.baseUrl: عنوان URL الأساسي لـ Firecrawl API (الافتراضي:https://api.firecrawl.dev؛ يجب أن تستهدف تجاوزات الاستضافة الذاتية نقاط نهاية خاصة/داخلية).onlyMainContent: استخرج المحتوى الرئيسي فقط من الصفحات (الافتراضي:true).maxAgeMs: الحد الأقصى لعمر التخزين المؤقت بالمللي ثانية (الافتراضي:172800000/ يومان).timeoutSeconds: مهلة طلب الكشط بالثواني (الافتراضي:60).
plugins.entries.xai.config.xSearch: إعدادات xAI X Search (بحث Grok على الويب).enabled: فعّل موفر X Search.model: نموذج Grok المراد استخدامه للبحث (مثل"grok-4-1-fast").
plugins.entries.memory-core.config.dreaming: إعدادات dreaming للذاكرة. راجع Dreaming لمعرفة المراحل والعتبات.enabled: مفتاح dreaming الرئيسي (الافتراضيfalse).frequency: وتيرة cron لكل مسح dreaming كامل ("0 3 * * *"افتراضياً).model: تجاوز اختياري لنموذج الوكيل الفرعي Dream Diary. يتطلبplugins.entries.memory-core.subagent.allowModelOverride: true؛ اقرنه معallowedModelsلتقييد الأهداف. تُعاد محاولة أخطاء عدم توفر النموذج مرة واحدة باستخدام نموذج الجلسة الافتراضي؛ إخفاقات الثقة أو قائمة السماح لا تعود احتياطياً بصمت.- سياسة المراحل والعتبات هي تفاصيل تنفيذية (وليست مفاتيح إعدادات ظاهرة للمستخدم).
- توجد إعدادات الذاكرة الكاملة في مرجع إعدادات الذاكرة:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- يمكن أيضاً لـ plugins حزمة Claude المفعّلة المساهمة بإعدادات Pi افتراضية مضمّنة من
settings.json؛ يطبق OpenClaw هذه كإعدادات وكيل منقّاة، وليس كتصحيحات إعدادات OpenClaw خام. plugins.slots.memory: اختر معرّف Plugin الذاكرة النشط، أو"none"لتعطيل plugins الذاكرة.plugins.slots.contextEngine: اختر معرّف Plugin محرك السياق النشط؛ تكون القيمة الافتراضية"legacy"ما لم تثبّت وتحدد محركاً آخر.
الالتزامات
يتحكمcommitments في ذاكرة المتابعة المستنتجة: يمكن لـ OpenClaw اكتشاف طلبات التحقق من دورات المحادثة وتسليمها عبر تشغيلات Heartbeat.
commitments.enabled: فعّل استخراج LLM المخفي والتخزين وتسليم Heartbeat لالتزامات المتابعة المستنتجة. الافتراضي:false.commitments.maxPerDay: الحد الأقصى لالتزامات المتابعة المستنتجة التي تُسلَّم لكل جلسة وكيل في يوم متحرك. الافتراضي:3.
المتصفح
evaluateEnabled: falseيعطّلact:evaluateوwait --fn.- يستعيد
tabCleanupألسنة الوكيل الأساسي المتتبعة بعد وقت الخمول أو عندما تتجاوز جلسة حدها الأقصى. اضبطidleMinutes: 0أوmaxTabsPerSession: 0لتعطيل أوضاع التنظيف الفردية هذه. - يكون
ssrfPolicy.dangerouslyAllowPrivateNetworkمعطلاً عند عدم ضبطه، لذا يبقى تنقل المتصفح صارماً افتراضياً. - اضبط
ssrfPolicy.dangerouslyAllowPrivateNetwork: trueفقط عندما تثق عمداً بتنقل المتصفح عبر الشبكة الخاصة. - في الوضع الصارم، تخضع نقاط نهاية ملفات تعريف CDP البعيدة (
profiles.*.cdpUrl) لنفس حظر الشبكة الخاصة أثناء فحوص الوصول/الاكتشاف. - يظل
ssrfPolicy.allowPrivateNetworkمدعوماً كاسم مستعار قديم. - في الوضع الصارم، استخدم
ssrfPolicy.hostnameAllowlistوssrfPolicy.allowedHostnamesللاستثناءات الصريحة. - ملفات التعريف البعيدة هي للاتصال فقط (التشغيل/الإيقاف/إعادة الضبط معطلة).
- يقبل
profiles.*.cdpUrlالقيمhttp://وhttps://وws://وwss://. استخدم HTTP(S) عندما تريد أن يكتشف OpenClaw المسار/json/version؛ واستخدم WS(S) عندما يوفر لك موفرك عنوان URL مباشراً لـ DevTools WebSocket. - ينطبق
remoteCdpTimeoutMsوremoteCdpHandshakeTimeoutMsعلى قابلية الوصول إلى CDP البعيد وattachOnlyبالإضافة إلى طلبات فتح الألسنة. تحتفظ ملفات تعريف loopback المُدارة بإعدادات CDP المحلية الافتراضية. - إذا كانت خدمة CDP مُدارة خارجياً وقابلة للوصول عبر loopback، فاضبط
attachOnly: trueلذلك الملف الشخصي؛ وإلا يعامل OpenClaw منفذ loopback كملف تعريف متصفح محلي مُدار وقد يبلغ عن أخطاء ملكية المنفذ المحلي. - تستخدم ملفات تعريف
existing-sessionChrome MCP بدلاً من CDP ويمكنها الاتصال على المضيف المحدد أو عبر عقدة متصفح متصلة. - يمكن لملفات تعريف
existing-sessionضبطuserDataDirلاستهداف ملف تعريف متصفح محدد قائم على Chromium مثل Brave أو Edge. - تحتفظ ملفات تعريف
existing-sessionبحدود مسار Chrome MCP الحالية: إجراءات مدفوعة باللقطات/المراجع بدلاً من استهداف محددات CSS، وخطافات تحميل ملف واحد، ولا توجد تجاوزات مهلة للحوار، ولاwait --load networkidle، ولاresponsebody، أو تصدير PDF، أو اعتراض التنزيل، أو إجراءات دفعية. - تُعيّن ملفات تعريف
openclawالمحلية المُدارةcdpPortوcdpUrlتلقائياً؛ اضبطcdpUrlصراحةً فقط لـ CDP البعيد. - يمكن لملفات التعريف المحلية المُدارة ضبط
executablePathلتجاوزbrowser.executablePathالعام لذلك الملف الشخصي. استخدم هذا لتشغيل ملف تعريف في Chrome وآخر في Brave. - تستخدم ملفات التعريف المحلية المُدارة
browser.localLaunchTimeoutMsلاكتشاف HTTP الخاص بـ Chrome CDP بعد بدء العملية وbrowser.localCdpReadyTimeoutMsلجاهزية websocket الخاصة بـ CDP بعد الإطلاق. ارفعها على المضيفات الأبطأ حيث يبدأ Chrome بنجاح لكن فحوص الجاهزية تتسابق مع بدء التشغيل. يجب أن تكون كلتا القيمتين أعداداً صحيحة موجبة حتى120000مللي ثانية؛ تُرفض قيم الإعدادات غير الصالحة. - ترتيب الاكتشاف التلقائي: المتصفح الافتراضي إذا كان قائماً على Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- يقبل كل من
browser.executablePathوbrowser.profiles.<name>.executablePath~و~/...لدليل المنزل في نظام التشغيل لديك قبل تشغيل Chromium. يتم أيضاً توسيع التلدة فيuserDataDirلكل ملف تعريف على ملفات تعريفexisting-session. - خدمة التحكم: loopback فقط (المنفذ مشتق من
gateway.port، الافتراضي18791). - يضيف
extraArgsأعلام تشغيل إضافية إلى بدء Chromium المحلي (مثل--disable-gpu، أو تحجيم النافذة، أو أعلام التصحيح).
واجهة المستخدم
seamColor: لون تمييز لإطار واجهة مستخدم التطبيق الأصلي (تدرج فقاعة Talk Mode، إلخ).assistant: تجاوز هوية واجهة التحكم. يعود إلى هوية الوكيل النشط.
Gateway
تفاصيل حقول Gateway
تفاصيل حقول Gateway
mode:local(تشغيل Gateway) أوremote(الاتصال بـ Gateway بعيد). يرفض Gateway البدء ما لم تكن القيمةlocal.port: منفذ واحد متعدد الإرسال لـ WS + HTTP. ترتيب الأولوية:--port>OPENCLAW_GATEWAY_PORT>gateway.port>18789.bind:autoأوloopback(الافتراضي) أوlan(0.0.0.0) أوtailnet(عنوان IP لـ Tailscale فقط) أوcustom.- أسماء الربط القديمة البديلة: استخدم قيم وضع الربط في
gateway.bind(auto،loopback،lan،tailnet،custom)، وليس أسماء المضيف البديلة (0.0.0.0،127.0.0.1،localhost،::،::1). - ملاحظة Docker: يستمع ربط
loopbackالافتراضي على127.0.0.1داخل الحاوية. مع شبكات Docker الجسرية (-p 18789:18789)، تصل حركة المرور علىeth0، لذلك يتعذر الوصول إلى Gateway. استخدم--network host، أو عيّنbind: "lan"(أوbind: "custom"معcustomBindHost: "0.0.0.0") للاستماع على جميع الواجهات. - المصادقة: مطلوبة افتراضيًا. تتطلب عمليات الربط غير
loopbackمصادقة Gateway. عمليًا، يعني ذلك رمزًا/كلمة مرور مشتركة أو وكيلاً عكسيًا واعيًا بالهوية معgateway.auth.mode: "trusted-proxy". ينشئ معالج الإعداد رمزًا افتراضيًا. - إذا تم تكوين كل من
gateway.auth.tokenوgateway.auth.password(بما في ذلك SecretRefs)، فعيّنgateway.auth.modeصراحةً إلىtokenأوpassword. تفشل تدفقات بدء التشغيل وتثبيت/إصلاح الخدمة عندما يكون كلاهما مكوّنًا ويكون الوضع غير معيّن. gateway.auth.mode: "none": وضع صريح بلا مصادقة. استخدمه فقط لإعدادات local loopback الموثوقة؛ وهذا غير معروض عمدًا في مطالبات الإعداد.gateway.auth.mode: "trusted-proxy": فوّض مصادقة المتصفح/المستخدم إلى وكيل عكسي واعٍ بالهوية وثق بترويسات الهوية منgateway.trustedProxies(راجع مصادقة الوكيل الموثوق). يتوقع هذا الوضع مصدر وكيل غير loopback افتراضيًا؛ تتطلب الوكلاء العكسية علىloopbackعلى المضيف نفسه تعيينًا صريحًا لـgateway.auth.trustedProxy.allowLoopback = true. يمكن للمنادين الداخليين على المضيف نفسه استخدامgateway.auth.passwordكخيار احتياطي محلي مباشر؛ يظلgateway.auth.tokenمتعارضًا تبادليًا مع وضع الوكيل الموثوق.gateway.auth.allowTailscale: عندtrue، يمكن لترويسات هوية Tailscale Serve تلبية مصادقة واجهة التحكم/WebSocket (مع التحقق عبرtailscale whois). لا تستخدم نقاط نهاية HTTP API مصادقة ترويسة Tailscale هذه؛ بل تتبع بدلًا من ذلك وضع مصادقة HTTP العادي لـ Gateway. يفترض هذا التدفق بلا رموز أن مضيف Gateway موثوق. تكون القيمة الافتراضيةtrueعندما تكونtailscale.mode = "serve".gateway.auth.rateLimit: محدد اختياري لمحاولات المصادقة الفاشلة. يُطبّق لكل عنوان IP عميل ولكل نطاق مصادقة (يتم تتبع السر المشترك ورمز الجهاز بشكل مستقل). تعيد المحاولات المحظورة429+Retry-After.- في مسار واجهة التحكم غير المتزامن لـ Tailscale Serve، تُسلسل المحاولات الفاشلة لنفس
{scope, clientIp}قبل كتابة الفشل. لذلك يمكن للمحاولات السيئة المتزامنة من العميل نفسه أن تفعّل المحدد عند الطلب الثاني بدلًا من أن تمر كلتاهما كعدم تطابق عادي. - القيمة الافتراضية لـ
gateway.auth.rateLimit.exemptLoopbackهيtrue؛ عيّنها إلىfalseعندما تريد عمدًا تقييد حركة localhost أيضًا (لإعدادات الاختبار أو نشر الوكيل الصارم).
- في مسار واجهة التحكم غير المتزامن لـ Tailscale Serve، تُسلسل المحاولات الفاشلة لنفس
- تُقيَّد دائمًا محاولات مصادقة WS الصادرة من أصل متصفح مع تعطيل إعفاء
loopback(دفاع متعمق ضد القوة الغاشمة على localhost من المتصفح). - على
loopback، تُعزل عمليات القفل الصادرة من المتصفح لكل قيمةOriginمُطبَّعة، لذلك لا تؤدي الإخفاقات المتكررة من أصل localhost واحد تلقائيًا إلى قفل أصل مختلف. tailscale.mode:serve(tailnet فقط، ربط loopback) أوfunnel(عام، يتطلب مصادقة).tailscale.preserveFunnel: عندtrueومعtailscale.mode = "serve"، يتحقق OpenClaw منtailscale funnel statusقبل إعادة تطبيق Serve عند بدء التشغيل ويتخطاه إذا كان مسار Funnel مكوّنًا خارجيًا يغطي بالفعل منفذ Gateway. القيمة الافتراضيةfalse.controlUi.allowedOrigins: قائمة سماح صريحة لأصول المتصفح لاتصالات WebSocket مع Gateway. مطلوبة عندما يُتوقع وجود عملاء متصفح من أصول غيرloopback.controlUi.chatMessageMaxWidth: عرض أقصى اختياري لرسائل دردشة واجهة التحكم المجمّعة. يقبل قيم عرض CSS مقيّدة مثل960pxو82%وmin(1280px, 82%)وcalc(100% - 2rem).controlUi.dangerouslyAllowHostHeaderOriginFallback: وضع خطير يفعّل الرجوع إلى أصل ترويسة Host للنشرات التي تعتمد عمدًا على سياسة أصل ترويسة Host.remote.transport:ssh(الافتراضي) أوdirect(ws/wss). عندdirect، يجب أن تكونremote.urlهيws://أوwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: تجاوز طارئ في بيئة عملية العميل يسمح بـws://بنص عادي إلى عناوين IP موثوقة على شبكة خاصة؛ يظل الافتراضي هو loopback فقط للنص العادي. لا يوجد مكافئ فيopenclaw.json، ولا تؤثر إعدادات الشبكة الخاصة للمتصفح مثلbrowser.ssrfPolicy.dangerouslyAllowPrivateNetworkفي عملاء WebSocket لـ Gateway.gateway.remote.token/.passwordهي حقول اعتماد للعميل البعيد. لا تكوّن مصادقة Gateway بذاتها.gateway.push.apns.relay.baseUrl: عنوان URL أساسي عبر HTTPS للمرحل الخارجي لـ APNs المستخدم بواسطة إصدارات iOS الرسمية/TestFlight بعد نشرها التسجيلات المدعومة بالمرحل إلى Gateway. يجب أن يطابق هذا العنوان عنوان المرحل المضمّن في بنية iOS.gateway.push.apns.relay.timeoutMs: مهلة إرسال Gateway إلى المرحل بالمللي ثانية. القيمة الافتراضية10000.- تُفوَّض التسجيلات المدعومة بالمرحل إلى هوية Gateway محددة. يجلب تطبيق iOS المقترن
gateway.identity.get، ويضمّن تلك الهوية في تسجيل المرحل، ويمرر منحة إرسال بنطاق التسجيل إلى Gateway. لا يمكن لـ Gateway آخر إعادة استخدام ذلك التسجيل المخزن. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: تجاوزات بيئية مؤقتة لإعداد المرحل أعلاه.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: منفذ هروب للتطوير فقط لعناوين مرحل HTTP على loopback. يجب أن تبقى عناوين مرحل الإنتاج على HTTPS.gateway.handshakeTimeoutMs: مهلة مصافحة WebSocket قبل المصادقة لـ Gateway بالمللي ثانية. الافتراضي:15000. تكون لـOPENCLAW_HANDSHAKE_TIMEOUT_MSأولوية عند تعيينها. زد هذه القيمة على المضيفات المحملة أو منخفضة الطاقة حيث يمكن للعملاء المحليين الاتصال بينما لا يزال إحماء بدء التشغيل يستقر.gateway.channelHealthCheckMinutes: فاصل مراقبة صحة القناة بالدقائق. عيّن0لتعطيل إعادات تشغيل مراقبة الصحة عالميًا. الافتراضي:5.gateway.channelStaleEventThresholdMinutes: عتبة المقبس الخامل بالدقائق. أبقِها أكبر من أو مساوية لـgateway.channelHealthCheckMinutes. الافتراضي:30.gateway.channelMaxRestartsPerHour: الحد الأقصى لإعادات تشغيل مراقبة الصحة لكل قناة/حساب خلال ساعة متدحرجة. الافتراضي:10.channels.<provider>.healthMonitor.enabled: إلغاء اشتراك لكل قناة في إعادات تشغيل مراقبة الصحة مع إبقاء المراقب العالمي مفعّلًا.channels.<provider>.accounts.<accountId>.healthMonitor.enabled: تجاوز لكل حساب للقنوات متعددة الحسابات. عند تعيينه، تكون له أولوية على التجاوز على مستوى القناة.- يمكن لمسارات استدعاء Gateway المحلية استخدام
gateway.remote.*كخيار احتياطي فقط عندما تكونgateway.auth.*غير معيّنة. - إذا تم تكوين
gateway.auth.token/gateway.auth.passwordصراحةً عبر SecretRef ولم يتم حلّه، يفشل الحل مغلقًا (بلا إخفاء عبر رجوع بعيد). trustedProxies: عناوين IP للوكلاء العكسيين التي تنهي TLS أو تحقن ترويسات العميل المُمرَّرة. أدرج فقط الوكلاء الذين تتحكم بهم. تظل إدخالات loopback صالحة لإعدادات الوكيل على المضيف نفسه/الكشف المحلي (مثل Tailscale Serve أو وكيل عكسي محلي)، لكنها لا تجعل طلبات loopback مؤهلة لـgateway.auth.mode: "trusted-proxy".allowRealIpFallback: عندtrue، يقبل Gateway ترويسةX-Real-IPإذا كانتX-Forwarded-Forمفقودة. الافتراضيfalseلسلوك يفشل مغلقًا.gateway.nodes.pairing.autoApproveCidrs: قائمة سماح CIDR/IP اختيارية للموافقة التلقائية على إقران جهاز عقدة لأول مرة بلا نطاقات مطلوبة. تكون معطلة عند عدم تعيينها. لا يوافق هذا تلقائيًا على إقران المشغل/المتصفح/واجهة التحكم/WebChat، ولا يوافق تلقائيًا على ترقيات الدور أو النطاق أو البيانات الوصفية أو المفتاح العام.gateway.nodes.allowCommands/gateway.nodes.denyCommands: تشكيل سماح/منع عام لأوامر العقدة المعلنة بعد الإقران وتقييم قائمة سماح المنصة. استخدمallowCommandsللاشتراك في أوامر عقدة خطيرة مثلcamera.snapوcamera.clipوscreen.record؛ يزيلdenyCommandsأمرًا حتى لو كان افتراض منصة أو سماح صريح سيتضمنه بخلاف ذلك. بعد أن تغيّر عقدة قائمة أوامرها المعلنة، ارفض إقران ذلك الجهاز وأعد الموافقة عليه حتى يخزن Gateway لقطة الأوامر المحدّثة.gateway.tools.deny: أسماء أدوات إضافية محظورة لـ HTTPPOST /tools/invoke(يوسّع قائمة المنع الافتراضية).gateway.tools.allow: إزالة أسماء أدوات من قائمة منع HTTP الافتراضية.
نقاط النهاية المتوافقة مع OpenAI
- إكمالات الدردشة: معطلة افتراضيًا. فعّلها باستخدام
gateway.http.endpoints.chatCompletions.enabled: true. - واجهة Responses API:
gateway.http.endpoints.responses.enabled. - تقوية إدخال عناوين URL في Responses:
gateway.http.endpoints.responses.maxUrlPartsgateway.http.endpoints.responses.files.urlAllowlistgateway.http.endpoints.responses.images.urlAllowlistتُعامَل قوائم السماح الفارغة كأنها غير معيّنة؛ استخدمgateway.http.endpoints.responses.files.allowUrl=falseو/أوgateway.http.endpoints.responses.images.allowUrl=falseلتعطيل جلب عناوين URL.
- ترويسة تقوية استجابة اختيارية:
gateway.http.securityHeaders.strictTransportSecurity(عيّنها فقط لأصول HTTPS التي تتحكم بها؛ راجع مصادقة الوكيل الموثوق)
عزل المثيلات المتعددة
شغّل عدة Gateways على مضيف واحد بمنافذ وأدلة حالة فريدة:--dev (يستخدم ~/.openclaw-dev + المنفذ 19001)، و--profile <name> (يستخدم ~/.openclaw-<name>).
راجع بوابات متعددة.
gateway.tls
enabled: يفعّل إنهاء TLS عند مستمع Gateway (HTTPS/WSS) (الافتراضي:false).autoGenerate: ينشئ تلقائيًا زوج شهادة/مفتاح محلي موقّع ذاتيًا عندما لا تكون الملفات الصريحة مكوّنة؛ للاستخدام المحلي/التطوير فقط.certPath: مسار نظام الملفات إلى ملف شهادة TLS.keyPath: مسار نظام الملفات إلى ملف مفتاح TLS الخاص؛ أبقه مقيّد الأذونات.caPath: مسار اختياري لحزمة CA للتحقق من العملاء أو سلاسل الثقة المخصصة.
gateway.reload
mode: يتحكم في كيفية تطبيق تعديلات الإعدادات في وقت التشغيل."off": تجاهل التعديلات المباشرة؛ تتطلب التغييرات إعادة تشغيل صريحة."restart": أعد تشغيل عملية Gateway دائمًا عند تغيير الإعدادات."hot": طبّق التغييرات داخل العملية بدون إعادة تشغيل."hybrid"(الافتراضي): جرّب إعادة التحميل الساخنة أولًا؛ ثم ارجع إلى إعادة التشغيل إذا لزم الأمر.
debounceMs: نافذة إزالة الارتداد بالمللي ثانية قبل تطبيق تغييرات الإعدادات (عدد صحيح غير سالب).deferralTimeoutMs: مدة قصوى اختيارية بالمللي ثانية للانتظار حتى تكتمل العمليات الجارية قبل فرض إعادة تشغيل أو إعادة تحميل ساخنة للقناة. احذفها لاستخدام الانتظار المحدود الافتراضي (300000)؛ عيّنها إلى0للانتظار إلى أجل غير مسمى وتسجيل تحذيرات دورية بأن العمليات ما زالت معلقة.
الخطافات
Authorization: Bearer <token> أو x-openclaw-token: <token>.
تُرفض رموز hook الممررة عبر سلسلة الاستعلام.
ملاحظات التحقق والسلامة:
- يتطلب
hooks.enabled=trueقيمة غير فارغة فيhooks.token. - يجب أن يكون
hooks.tokenمختلفًا عنgateway.auth.token؛ تُرفض إعادة استخدام رمز Gateway. - لا يمكن أن يكون
hooks.pathهو/؛ استخدم مسارًا فرعيًا مخصصًا مثل/hooks. - إذا كان
hooks.allowRequestSessionKey=true، فقيّدhooks.allowedSessionKeyPrefixes(على سبيل المثال["hook:"]). - إذا كان تعيين أو إعداد مسبق يستخدم
sessionKeyبقالب، فعيّنhooks.allowedSessionKeyPrefixesوhooks.allowRequestSessionKey=true. لا تتطلب مفاتيح التعيين الثابتة هذا الاشتراك.
POST /hooks/wake→{ text, mode?: "now"|"next-heartbeat" }POST /hooks/agent→{ message, name?, agentId?, sessionKey?, wakeMode?, deliver?, channel?, to?, model?, thinking?, timeoutSeconds? }- لا يُقبل
sessionKeyمن حمولة الطلب إلا عندما يكونhooks.allowRequestSessionKey=true(الافتراضي:false).
- لا يُقبل
POST /hooks/<name>→ يُحل عبرhooks.mappings- تُعامل قيم
sessionKeyفي التعيين المعروضة من قالب على أنها مقدمة خارجيًا وتتطلب أيضًاhooks.allowRequestSessionKey=true.
- تُعامل قيم
Mapping details
Mapping details
- يطابق
match.pathالمسار الفرعي بعد/hooks(مثال:/hooks/gmail→gmail). - يطابق
match.sourceحقلًا في الحمولة للمسارات العامة. - تقرأ القوالب مثل
{{messages[0].subject}}من الحمولة. - يمكن أن يشير
transformإلى وحدة JS/TS تُرجع إجراء hook.- يجب أن يكون
transform.moduleمسارًا نسبيًا وأن يبقى ضمنhooks.transformsDir(تُرفض المسارات المطلقة واجتياز المسارات). - أبقِ
hooks.transformsDirضمن~/.openclaw/hooks/transforms؛ تُرفض أدلة Skills في مساحة العمل. إذا أبلغopenclaw doctorأن هذا المسار غير صالح، فانقل وحدة التحويل إلى دليل تحويلات hooks أو أزلhooks.transformsDir.
- يجب أن يكون
- يوجه
agentIdإلى وكيل محدد؛ تعود المعرفات غير المعروفة إلى الافتراضي. allowedAgentIds: يقيّد التوجيه الصريح (*أو محذوف = السماح للجميع،[]= رفض الجميع).defaultSessionKey: مفتاح جلسة ثابت اختياري لتشغيلات وكيل hook دونsessionKeyصريح.allowRequestSessionKey: يسمح لمستدعي/hooks/agentومفاتيح جلسات التعيين المدفوعة بالقوالب بتعيينsessionKey(الافتراضي:false).allowedSessionKeyPrefixes: قائمة سماح اختيارية للبادئات لقيمsessionKeyالصريحة (الطلب + التعيين)، مثل["hook:"]. تصبح مطلوبة عندما يستخدم أي تعيين أو إعداد مسبقsessionKeyبقالب.- يرسل
deliver: trueالرد النهائي إلى قناة؛ القيمة الافتراضية لـchannelهيlast. - يتجاوز
modelنموذج LLM لتشغيل hook هذا (يجب السماح به إذا تم تعيين كتالوج النماذج).
تكامل Gmail
- يستخدم إعداد Gmail المسبق المضمن
sessionKey: "hook:gmail:{{messages[0].id}}". - إذا أبقيت هذا التوجيه لكل رسالة، فعيّن
hooks.allowRequestSessionKey: trueوقيّدhooks.allowedSessionKeyPrefixesلتطابق مساحة أسماء Gmail، على سبيل المثال["hook:", "hook:gmail:"]. - إذا كنت تحتاج إلى
hooks.allowRequestSessionKey: false، فتجاوز الإعداد المسبق باستخدامsessionKeyثابت بدلًا من الافتراضي ذي القالب.
- يبدأ Gateway تلقائيًا
gog gmail watch serveعند الإقلاع عند تكوينه. عيّنOPENCLAW_SKIP_GMAIL_WATCHER=1للتعطيل. - لا تشغل
gog gmail watch serveمنفصلًا بجانب Gateway.
مضيف Plugin اللوحة
- يقدم HTML/CSS/JS القابلة للتحرير بواسطة الوكيل وA2UI عبر HTTP تحت منفذ Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- محلي فقط: أبقِ
gateway.bind: "loopback"(الافتراضي). - الارتباطات غير loopback: تتطلب مسارات اللوحة مصادقة Gateway (رمز/كلمة مرور/وكيل موثوق)، مثل أسطح HTTP الأخرى في Gateway.
- لا ترسل Node WebViews عادةً رؤوس المصادقة؛ بعد إقران node واتصالها، يعلن Gateway عن عناوين URL للقدرات محددة النطاق للـ node للوصول إلى اللوحة/A2UI.
- ترتبط عناوين URL للقدرات بجلسة WS النشطة الخاصة بـ node وتنتهي صلاحيتها بسرعة. لا يُستخدم الرجوع المستند إلى IP.
- يحقن عميل إعادة التحميل الحي في HTML المقدّم.
- ينشئ تلقائيًا ملف
index.htmlبادئًا عندما يكون فارغًا. - يقدم أيضًا A2UI عند
/__openclaw__/a2ui/. - تتطلب التغييرات إعادة تشغيل Gateway.
- عطّل إعادة التحميل الحي للأدلة الكبيرة أو أخطاء
EMFILE.
الاكتشاف
mDNS (Bonjour)
minimal(الافتراضي عندما يكون Pluginbonjourالمضمن ممكّنًا): يحذفcliPath+sshPortمن سجلات TXT.full: يتضمنcliPath+sshPort؛ ما زال إعلان البث المتعدد عبر LAN يتطلب تمكين Pluginbonjourالمضمن.off: يمنع إعلان البث المتعدد عبر LAN دون تغيير تمكين Plugin.- يبدأ Plugin
bonjourالمضمن تلقائيًا على مضيفي macOS ويكون اختياريًا على Linux وWindows ونشرات Gateway المعبأة في حاويات. - يكون اسم المضيف افتراضيًا هو اسم مضيف النظام عندما يكون تسمية DNS صالحة، مع الرجوع إلى
openclaw. تجاوزه باستخدامOPENCLAW_MDNS_HOSTNAME.
النطاق الواسع (DNS-SD)
~/.openclaw/dns/. للاكتشاف عبر الشبكات، اقرنها بخادم DNS (يوصى بـ CoreDNS) + Tailscale split DNS.
الإعداد: openclaw dns setup --apply.
البيئة
env (متغيرات بيئة مضمنة)
- لا تُطبّق متغيرات البيئة المضمنة إلا إذا كانت بيئة العملية تفتقد المفتاح.
- ملفات
.env: ملف.envفي CWD +~/.openclaw/.env(لا يتجاوز أي منهما المتغيرات الموجودة). shellEnv: يستورد المفاتيح المتوقعة المفقودة من ملف تعريف صدفة تسجيل الدخول لديك.- راجع البيئة لمعرفة أسبقية الإعدادات الكاملة.
استبدال متغيرات البيئة
أشِر إلى متغيرات البيئة في أي سلسلة إعدادات باستخدام${VAR_NAME}:
- تتم مطابقة الأسماء المكتوبة بأحرف كبيرة فقط:
[A-Z_][A-Z0-9_]*. - تؤدي المتغيرات المفقودة/الفارغة إلى طرح خطأ عند تحميل الإعدادات.
- استخدم
$${VAR}للهروب للحصول على القيمة الحرفية${VAR}. - يعمل مع
$include.
الأسرار
مراجع الأسرار إضافية: تظل قيم النص الصريح تعمل.SecretRef
استخدم شكل كائن واحد:
- نمط
provider:^[a-z][a-z0-9_-]{0,63}$ - نمط معرّف
source: "env":^[A-Z][A-Z0-9_]{0,127}$ - معرّف
source: "file": مؤشر JSON مطلق (على سبيل المثال"/providers/openai/apiKey") - نمط معرّف
source: "exec":^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - يجب ألا تحتوي معرّفات
source: "exec"على مقاطع مسار مفصولة بشرطة مائلة هي.أو..(على سبيل المثال يُرفضa/../b)
سطح بيانات الاعتماد المدعوم
- المصفوفة الرسمية: سطح بيانات اعتماد SecretRef
- تستهدف
secrets applyمسارات بيانات الاعتماد المدعومة فيopenclaw.json. - تُضمّن مراجع
auth-profiles.jsonفي حل وقت التشغيل وتغطية التدقيق.
إعداد موفري الأسرار
- يدعم موفر
fileالوضعmode: "json"والوضعmode: "singleValue"(يجب أن يكونidهو"value"في وضع singleValue). - تفشل مسارات موفرَي file وexec بإغلاق آمن عندما لا يتوفر التحقق من Windows ACL. عيّن
allowInsecurePath: trueفقط للمسارات الموثوقة التي لا يمكن التحقق منها. - يتطلب موفر
execمسارcommandمطلقًا ويستخدم حمولات البروتوكول عبر stdin/stdout. - افتراضيًا، تُرفض مسارات أوامر symlink. عيّن
allowSymlinkCommand: trueللسماح بمسارات symlink مع التحقق من مسار الهدف بعد الحل. - إذا تم إعداد
trustedDirs، ينطبق فحص الدليل الموثوق على مسار الهدف بعد الحل. - تكون بيئة العملية الفرعية لـ
execبالحد الأدنى افتراضيًا؛ مرّر المتغيرات المطلوبة صراحةً باستخدامpassEnv. - تُحل مراجع الأسرار عند وقت التنشيط إلى لقطة داخل الذاكرة، ثم تقرأ مسارات الطلب اللقطة فقط.
- ينطبق ترشيح السطح النشط أثناء التنشيط: تفشل المراجع غير المحلولة على الأسطح الممكّنة في بدء التشغيل/إعادة التحميل، بينما يتم تخطي الأسطح غير النشطة مع تشخيصات.
تخزين المصادقة
- تُخزّن ملفات التعريف الخاصة بكل وكيل في
<agentDir>/auth-profiles.json. - يدعم
auth-profiles.jsonالمراجع على مستوى القيمة (keyRefلـapi_key، وtokenRefلـtoken) لأوضاع بيانات الاعتماد الثابتة. - خرائط
auth-profiles.jsonالمسطحة القديمة مثل{ "provider": { "apiKey": "..." } }ليست تنسيق وقت تشغيل؛ يعيدopenclaw doctor --fixكتابتها إلى ملفات تعريف مفاتيح API رسمية بصيغةprovider:defaultمع نسخة احتياطية.legacy-flat.*.bak. - لا تدعم ملفات التعريف بوضع OAuth (
auth.profiles.<id>.mode = "oauth") بيانات اعتماد ملف تعريف المصادقة المدعومة بـ SecretRef. - تأتي بيانات اعتماد وقت التشغيل الثابتة من لقطات محلولة داخل الذاكرة؛ وتُمسح إدخالات
auth.jsonالثابتة القديمة عند اكتشافها. - تُستورد بيانات OAuth القديمة من
~/.openclaw/credentials/oauth.json. - راجع OAuth.
- سلوك وقت تشغيل الأسرار وأدوات
audit/configure/apply: إدارة الأسرار.
auth.cooldowns
billingBackoffHours: مدة التراجع الأساسية بالساعات عندما يفشل ملف تعريف بسبب أخطاء فوترة/رصيد غير كافٍ حقيقية (الافتراضي:5). قد يظل نص الفوترة الصريح يصل إلى هنا حتى في استجابات401/403، لكن مطابقات النص الخاصة بالمزوّد تبقى محصورة في نطاق المزوّد الذي يملكها (مثل OpenRouterKey limit exceeded). تبقى رسائل نافذة استخدام HTTP402القابلة لإعادة المحاولة أو رسائل حد إنفاق المؤسسة/مساحة العمل في مسارrate_limitبدلًا من ذلك.billingBackoffHoursByProvider: تجاوزات اختيارية لكل مزوّد لساعات تراجع الفوترة.billingMaxHours: الحد الأقصى بالساعات لنمو تراجع الفوترة الأسي (الافتراضي:24).authPermanentBackoffMinutes: مدة التراجع الأساسية بالدقائق لإخفاقاتauth_permanentعالية الثقة (الافتراضي:10).authPermanentMaxMinutes: الحد الأقصى بالدقائق لنمو تراجعauth_permanent(الافتراضي:60).failureWindowHours: نافذة متحركة بالساعات تُستخدم لعدادات التراجع (الافتراضي:24).overloadedProfileRotations: الحد الأقصى لدورات تبديل ملفات تعريف المصادقة لدى المزوّد نفسه لأخطاء فرط التحميل قبل الانتقال إلى بديل النموذج (الافتراضي:1). تصل أشكال انشغال المزوّد مثلModelNotReadyExceptionإلى هنا.overloadedBackoffMs: تأخير ثابت قبل إعادة محاولة تدوير مزوّد/ملف تعريف محمّل فوق طاقته (الافتراضي:0).rateLimitedProfileRotations: الحد الأقصى لدورات تبديل ملفات تعريف المصادقة لدى المزوّد نفسه لأخطاء حد المعدل قبل الانتقال إلى بديل النموذج (الافتراضي:1). يتضمن دلو حد المعدل هذا نصوصًا بصياغة المزوّد مثلToo many concurrent requestsوThrottlingExceptionوconcurrency limit reachedوworkers_ai ... quota limit exceededوresource exhausted.
تسجيل السجلات
- ملف السجل الافتراضي:
/tmp/openclaw/openclaw-YYYY-MM-DD.log. - عيّن
logging.fileلاستخدام مسار ثابت. - يرتفع
consoleLevelإلىdebugعند استخدام--verbose. maxFileBytes: الحد الأقصى لحجم ملف السجل النشط بالبايت قبل التدوير (عدد صحيح موجب؛ الافتراضي:104857600= 100 ميغابايت). يحتفظ OpenClaw بما يصل إلى خمسة أرشيفات مرقمة بجانب الملف النشط.redactSensitive/redactPatterns: إخفاء بأفضل جهد لمخرجات وحدة التحكم، وسجلات الملفات، وسجلات OTLP، ونصوص محاضر الجلسات المحفوظة. يعطّلredactSensitive: "off"سياسة السجلات/المحاضر العامة هذه فقط؛ أما أسطح أمان الواجهة/الأدوات/التشخيصات فلا تزال تحجب الأسرار قبل الإرسال.
التشخيصات
enabled: مفتاح التبديل الرئيسي لمخرجات القياس (الافتراضي:true).flags: مصفوفة من سلاسل العلامات التي تفعّل مخرجات سجلات موجهة (تدعم أحرف البدل مثل"telegram.*"أو"*").stuckSessionWarnMs: عتبة عمر انعدام التقدم بالمللي ثانية لتصنيف جلسات المعالجة طويلة التشغيل على أنهاsession.long_runningأوsession.stalledأوsession.stuck. تؤدي الردود والأدوات والحالة والكتل وتقدم ACP إلى إعادة ضبط المؤقت؛ وتتراجع تشخيصاتsession.stuckالمتكررة ما دامت بلا تغيير.stuckSessionAbortMs: عتبة عمر انعدام التقدم بالمللي ثانية قبل أن يصبح العمل النشط المتوقف مؤهلًا للتفريغ بالإيقاف من أجل الاسترداد. عند عدم تعيينها، يستخدم OpenClaw نافذة تشغيل مضمّن ممتدة أكثر أمانًا لا تقل عن 10 دقائق و5 أضعافstuckSessionWarnMs.otel.enabled: يفعّل مسار تصدير OpenTelemetry (الافتراضي:false). للاطلاع على التكوين الكامل وفهرس الإشارات ونموذج الخصوصية، راجع تصدير OpenTelemetry.otel.endpoint: عنوان URL للمجمّع المستخدم في تصدير OTel.otel.tracesEndpoint/otel.metricsEndpoint/otel.logsEndpoint: نقاط نهاية OTLP اختيارية خاصة بكل إشارة. عند تعيينها، تتجاوزotel.endpointلتلك الإشارة فقط.otel.protocol:"http/protobuf"(الافتراضي) أو"grpc".otel.headers: رؤوس بيانات تعريف HTTP/gRPC إضافية تُرسل مع طلبات تصدير OTel.otel.serviceName: اسم الخدمة لسمات المورد.otel.traces/otel.metrics/otel.logs: تفعيل تصدير التتبعات أو المقاييس أو السجلات.otel.sampleRate: معدل أخذ عينات التتبع0-1.otel.flushIntervalMs: فاصل تفريغ القياسات الدورية بالمللي ثانية.otel.captureContent: التقاط اختياري للمحتوى الخام لسمات امتداد OTEL. يكون معطلًا افتراضيًا. يلتقط Booleantrueمحتوى الرسائل/الأدوات غير النظامي؛ أما صيغة الكائن فتتيح لك تفعيلinputMessagesوoutputMessagesوtoolInputsوtoolOutputsوsystemPromptصراحةً.OTEL_SEMCONV_STABILITY_OPT_IN=gen_ai_latest_experimental: مفتاح تبديل بيئة لسمات مزوّد امتدادات GenAI التجريبية الأحدث. تحتفظ الامتدادات افتراضيًا بسمةgen_ai.systemالقديمة للتوافق؛ وتستخدم مقاييس GenAI سمات دلالية محدودة.OPENCLAW_OTEL_PRELOADED=1: مفتاح تبديل بيئة للمضيفين الذين سجّلوا مسبقًا SDK عامًّا لـ OpenTelemetry. يتخطى OpenClaw عندها بدء/إيقاف SDK المملوك للـ Plugin مع إبقاء مستمعي التشخيص نشطين.OTEL_EXPORTER_OTLP_TRACES_ENDPOINTوOTEL_EXPORTER_OTLP_METRICS_ENDPOINTوOTEL_EXPORTER_OTLP_LOGS_ENDPOINT: متغيرات بيئة لنقاط نهاية خاصة بكل إشارة تُستخدم عندما يكون مفتاح التكوين المطابق غير معيّن.cacheTrace.enabled: تسجيل لقطات تتبع الذاكرة المؤقتة للتشغيلات المضمّنة (الافتراضي:false).cacheTrace.filePath: مسار إخراج JSONL لتتبع الذاكرة المؤقتة (الافتراضي:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: تتحكم فيما يُضمّن في مخرجات تتبع الذاكرة المؤقتة (كلها افتراضيًا:true).
التحديث
channel: قناة الإصدار لتثبيتات npm/git -"stable"أو"beta"أو"dev".checkOnStart: التحقق من تحديثات npm عند بدء Gateway (الافتراضي:true).auto.enabled: تفعيل التحديث التلقائي في الخلفية لتثبيتات الحزم (الافتراضي:false).auto.stableDelayHours: الحد الأدنى للتأخير بالساعات قبل التطبيق التلقائي لقناة stable (الافتراضي:6؛ الحد الأقصى:168).auto.stableJitterHours: نافذة توزيع إضافية بالساعات لطرح قناة stable (الافتراضي:12؛ الحد الأقصى:168).auto.betaCheckIntervalHours: عدد مرات تشغيل فحوصات قناة beta بالساعات (الافتراضي:1؛ الحد الأقصى:24).
ACP
enabled: بوابة ميزة ACP العامة (الافتراضي:true؛ عيّنfalseلإخفاء إمكانات إرسال ACP والإنشاء).dispatch.enabled: بوابة مستقلة لإرسال دور جلسة ACP (الافتراضي:true). عيّنfalseلإبقاء أوامر ACP متاحة مع حظر التنفيذ.backend: معرّف خلفية تشغيل ACP الافتراضي (يجب أن يطابق Plugin تشغيل ACP مسجلًا). ثبّت Plugin الخلفية أولًا، وإذا كانplugins.allowمعيّنًا، فأدرج معرّف Plugin الخلفية (مثلacpx) وإلا فلن تُحمّل خلفية ACP.defaultAgent: معرّف الوكيل الهدف الاحتياطي لـ ACP عندما لا تحدد عمليات الإنشاء هدفًا صريحًا.allowedAgents: قائمة سماح بمعرّفات الوكلاء المسموح بها لجلسات تشغيل ACP؛ تعني القائمة الفارغة عدم وجود قيد إضافي.maxConcurrentSessions: الحد الأقصى لجلسات ACP النشطة بالتزامن.stream.coalesceIdleMs: نافذة تفريغ الخمول بالمللي ثانية للنص المتدفق.stream.maxChunkChars: الحد الأقصى لحجم الجزء قبل تقسيم إسقاط الكتلة المتدفقة.stream.repeatSuppression: حجب أسطر الحالة/الأداة المتكررة لكل دور (الافتراضي:true).stream.deliveryMode: يبث"live"تدريجيًا؛ أما"final_only"فيخزن مؤقتًا حتى أحداث نهاية الدور.stream.hiddenBoundarySeparator: الفاصل قبل النص المرئي بعد أحداث الأدوات المخفية (الافتراضي:"paragraph").stream.maxOutputChars: الحد الأقصى لأحرف مخرجات المساعد المسقطة لكل دور ACP.stream.maxSessionUpdateChars: الحد الأقصى للأحرف لأسطر حالة/تحديث ACP المسقطة.stream.tagVisibility: سجل بأسماء الوسوم إلى تجاوزات رؤية منطقية للأحداث المتدفقة.runtime.ttlMinutes: مدة TTL للخمول بالدقائق لعمّال جلسات ACP قبل أن يصبحوا مؤهلين للتنظيف.runtime.installCommand: أمر تثبيت اختياري لتشغيله عند تهيئة بيئة تشغيل ACP.
CLI
- يتحكم
cli.banner.taglineModeفي نمط عبارة الشعار:"random"(الافتراضي): عبارات متناوبة مرحة/موسمية."default": عبارة ثابتة محايدة (All your chats, one OpenClaw.)."off": بلا نص عبارة (مع استمرار عرض عنوان/إصدار اللافتة).
- لإخفاء اللافتة بالكامل (وليس العبارات فقط)، عيّن متغير البيئة
OPENCLAW_HIDE_BANNER=1.
المعالج
بيانات وصفية تكتبها تدفقات الإعداد الموجّهة عبر CLI (onboard وconfigure وdoctor):
الهوية
راجع حقول هويةagents.list ضمن افتراضيات الوكيل.
الجسر (قديم، مُزال)
لم تعد البُنى الحالية تتضمن جسر TCP. تتصل Nodes عبر WebSocket الخاص بالـ Gateway. لم تعد مفاتيحbridge.* جزءًا من مخطط التكوين (يفشل التحقق إلى أن تُزال؛ يمكن لـ openclaw doctor --fix حذف المفاتيح غير المعروفة).
تكوين الجسر القديم (مرجع تاريخي)
تكوين الجسر القديم (مرجع تاريخي)
Cron
sessionRetention: مدة الاحتفاظ بجلسات تشغيل Cron المعزولة المكتملة قبل تقليمها منsessions.json. يتحكم أيضًا في تنظيف نصوص Cron المحذوفة المؤرشفة. الافتراضي:24h؛ اضبطه علىfalseللتعطيل.runLog.maxBytes: الحجم الأقصى لكل ملف سجل تشغيل (cron/runs/<jobId>.jsonl) قبل التقليم. الافتراضي:2_000_000بايت.runLog.keepLines: أحدث الأسطر المحتفَظ بها عند تشغيل تقليم سجل التشغيل. الافتراضي:2000.webhookToken: رمز الحامل المستخدم لتسليم POST الخاص بـ Cron Webhook (delivery.mode = "webhook")، وإذا أُغفل فلن يُرسل ترويس مصادقة.webhook: عنوان URL قديم ومهمل لـ Webhook احتياطي (http/https) يُستخدم فقط للمهام المخزنة التي لا تزال تحتوي علىnotify: true.
cron.retry
maxAttempts: الحد الأقصى لإعادة المحاولة لمهام التشغيل لمرة واحدة عند حدوث أخطاء عابرة (الافتراضي:3؛ النطاق:0-10).backoffMs: مصفوفة تأخيرات التراجع بالمللي ثانية لكل محاولة إعادة (الافتراضي:[30000, 60000, 300000]؛ من 1 إلى 10 إدخالات).retryOn: أنواع الأخطاء التي تؤدي إلى إعادة المحاولة -"rate_limit"و"overloaded"و"network"و"timeout"و"server_error". احذفها لإعادة المحاولة لكل الأنواع العابرة.
cron.failureAlert
enabled: تفعيل تنبيهات الفشل لمهام Cron (الافتراضي:false).after: عدد حالات الفشل المتتالية قبل إطلاق تنبيه (عدد صحيح موجب، الحد الأدنى:1).cooldownMs: الحد الأدنى بالمللي ثانية بين التنبيهات المتكررة للمهمة نفسها (عدد صحيح غير سالب).includeSkipped: احتساب عمليات التشغيل المتخطاة المتتالية ضمن عتبة التنبيه (الافتراضي:false). تُتتبَّع عمليات التشغيل المتخطاة بشكل منفصل ولا تؤثر في تراجع أخطاء التنفيذ.mode: وضع التسليم - يرسل"announce"عبر رسالة قناة؛ وينشر"webhook"إلى Webhook المُهيّأ.accountId: معرّف حساب أو قناة اختياري لتحديد نطاق تسليم التنبيه.
cron.failureDestination
- الوجهة الافتراضية لإشعارات فشل Cron عبر كل المهام.
mode:"announce"أو"webhook"؛ يكون الافتراضي"announce"عند توفر بيانات هدف كافية.channel: تجاوز القناة لتسليم الإعلان. يعيد"last"استخدام آخر قناة تسليم معروفة.to: هدف إعلان صريح أو عنوان URL لـ Webhook. مطلوب لوضع Webhook.accountId: تجاوز حساب اختياري للتسليم.- يتجاوز
delivery.failureDestinationلكل مهمة هذا الافتراضي العام. - عندما لا تُعيَّن وجهة فشل عامة ولا وجهة فشل لكل مهمة، تعود المهام التي تُسلّم بالفعل عبر
announceإلى هدف الإعلان الأساسي ذاك عند الفشل. delivery.failureDestinationمدعوم فقط للمهام ذاتsessionTarget="isolated"ما لم يكنdelivery.modeالأساسي للمهمة هو"webhook".
متغيرات قالب نموذج الوسائط
عناصر نائبة للقالب تُوسَّع فيtools.media.models[].args:
| المتغير | الوصف |
|---|---|
{{Body}} | نص الرسالة الواردة الكامل |
{{RawBody}} | النص الخام (بلا أغلفة السجل/المرسل) |
{{BodyStripped}} | النص بعد إزالة إشارات المجموعة |
{{From}} | معرّف المرسل |
{{To}} | معرّف الوجهة |
{{MessageSid}} | معرّف رسالة القناة |
{{SessionId}} | UUID للجلسة الحالية |
{{IsNewSession}} | "true" عند إنشاء جلسة جديدة |
{{MediaUrl}} | عنوان URL زائف للوسائط الواردة |
{{MediaPath}} | مسار الوسائط المحلي |
{{MediaType}} | نوع الوسائط (صورة/صوت/مستند/…) |
{{Transcript}} | نص التفريغ الصوتي |
{{Prompt}} | مطالبة الوسائط المحلولة لإدخالات CLI |
{{MaxChars}} | الحد الأقصى المحلول لأحرف الإخراج لإدخالات CLI |
{{ChatType}} | "direct" أو "group" |
{{GroupSubject}} | موضوع المجموعة (بأفضل جهد) |
{{GroupMembers}} | معاينة أعضاء المجموعة (بأفضل جهد) |
{{SenderName}} | اسم عرض المرسل (بأفضل جهد) |
{{SenderE164}} | رقم هاتف المرسل (بأفضل جهد) |
{{Provider}} | تلميح المزوّد (whatsapp، telegram، discord، وما إلى ذلك) |
تضمينات الإعداد ($include)
قسّم الإعداد إلى ملفات متعددة:
- ملف واحد: يستبدل الكائن الحاوي.
- مصفوفة ملفات: تُدمج دمجًا عميقًا بالترتيب (اللاحق يتجاوز السابق).
- المفاتيح الشقيقة: تُدمج بعد التضمينات (تتجاوز القيم المضمّنة).
- التضمينات المتداخلة: حتى 10 مستويات عمق.
- المسارات: تُحل نسبةً إلى الملف الذي يجري التضمين، لكن يجب أن تبقى داخل دليل الإعداد ذي المستوى الأعلى (
dirnameلـopenclaw.json). لا تُسمح صيغ المسارات المطلقة/../إلا عندما تظل تُحل داخل ذلك الحد. - عمليات الكتابة المملوكة لـ OpenClaw التي تغيّر قسمًا واحدًا فقط من المستوى الأعلى مدعومًا بتضمين ملف واحد تكتب عبره إلى ذلك الملف المضمّن. على سبيل المثال، يحدّث
plugins installالقسمplugins: { $include: "./plugins.json5" }فيplugins.json5ويتركopenclaw.jsonدون تغيير. - تضمينات الجذر، ومصفوفات التضمين، والتضمينات ذات التجاوزات الشقيقة تكون للقراءة فقط لعمليات الكتابة المملوكة لـ OpenClaw؛ تفشل تلك الكتابات بإغلاق آمن بدل تسطيح الإعداد.
- الأخطاء: رسائل واضحة للملفات المفقودة، وأخطاء التحليل، والتضمينات الدائرية.
ذو صلة: الإعداد · أمثلة الإعداد · Doctor