مرجع الإعدادات
مرجع الإعدادات الأساسية لملف~/.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من تجزئة خط الأساس لوثائق الإعدادات مقارنةً بسطح المخطط الحالي
- مرجع إعدادات الذاكرة لـ
agents.defaults.memorySearch.*وmemory.qmd.*وmemory.citationsوإعدادات Dreaming تحتplugins.entries.memory-core.config.dreaming - Slash Commands لفهرس الأوامر الحالي المضمن + المجمّع
- صفحات القنوات/Plugin المالكة لأسطح الأوامر الخاصة بكل قناة
القنوات
تبدأ كل قناة تلقائيًا عند وجود قسم إعداداتها (ما لم يكنenabled: false).
الوصول إلى الرسائل المباشرة والمجموعات
تدعم جميع القنوات سياسات الرسائل المباشرة وسياسات المجموعات:| سياسة الرسائل المباشرة | السلوك |
|---|---|
pairing (الافتراضي) | يحصل المرسلون غير المعروفين على رمز اقتران لمرة واحدة؛ ويجب أن يوافق المالك |
allowlist | فقط المرسلون الموجودون في allowFrom (أو مخزن السماح المقترن) |
open | السماح بجميع الرسائل المباشرة الواردة (يتطلب allowFrom: ["*"]) |
disabled | تجاهل جميع الرسائل المباشرة الواردة |
| سياسة المجموعات | السلوك |
|---|---|
allowlist (الافتراضي) | فقط المجموعات المطابقة لقائمة السماح المُعدّة |
open | تجاوز قوائم السماح الخاصة بالمجموعات (مع استمرار تطبيق اشتراط الإشارة) |
disabled | حظر جميع رسائل المجموعات/الغرف |
يضبط
channels.defaults.groupPolicy القيمة الافتراضية عندما لا تكون groupPolicy الخاصة بالمزوّد معيّنة.
تنتهي صلاحية رموز الاقتران بعد ساعة واحدة. ويُحدَّد الحد الأقصى لطلبات اقتران الرسائل المباشرة المعلقة عند 3 لكل قناة.
إذا كانت كتلة المزوّد مفقودة بالكامل (channels.<provider> غير موجودة)، فإن سياسة المجموعات أثناء التشغيل تعود إلى allowlist (إغلاق افتراضي) مع تحذير عند بدء التشغيل.تجاوزات نموذج القناة
استخدمchannels.modelByChannel لتثبيت معرّفات قنوات محددة على نموذج معيّن. تقبل القيم provider/model أو الأسماء المستعارة للنماذج المهيأة. يُطبَّق تعيين القناة عندما لا تكون الجلسة تملك بالفعل تجاوزًا للنموذج (على سبيل المثال، تم تعيينه عبر /model).
الإعدادات الافتراضية للقنوات وHeartbeat
استخدمchannels.defaults للسلوك المشترك الخاص بسياسة المجموعات وHeartbeat عبر المزوّدين:
channels.defaults.groupPolicy: سياسة المجموعات الاحتياطية عندما لا تكونgroupPolicyعلى مستوى المزوّد معيّنة.channels.defaults.contextVisibility: وضع إظهار السياق التكميلي الافتراضي لجميع القنوات. القيم:all(الافتراضي، تضمين كل سياق الاقتباس/المواضيع/السجل)، وallowlist(تضمين السياق فقط من المرسلين الموجودين في قائمة السماح)، وallowlist_quote(مثل allowlist لكن مع الاحتفاظ بسياق الاقتباس/الرد الصريح). تجاوز لكل قناة:channels.<channel>.contextVisibility.channels.defaults.heartbeat.showOk: تضمين حالات القنوات السليمة في مخرجات Heartbeat.channels.defaults.heartbeat.showAlerts: تضمين الحالات المتدهورة/حالات الخطأ في مخرجات Heartbeat.channels.defaults.heartbeat.useIndicator: عرض مخرجات Heartbeat بأسلوب مؤشرات مضغوط.
WhatsApp متعدد الحسابات
WhatsApp متعدد الحسابات
- تستخدم الأوامر الصادرة الحساب
defaultافتراضيًا إذا كان موجودًا؛ وإلا فسيُستخدم أول معرّف حساب مُهيأ (بعد الفرز). - يتجاوز
channels.whatsapp.defaultAccountالاختياري هذا اختيار الحساب الافتراضي الاحتياطي عندما يطابق معرّف حساب مُهيأ. - ينقل
openclaw doctorدليل مصادقة Baileys القديم أحادي الحساب إلىwhatsapp/default. - تجاوزات لكل حساب:
channels.whatsapp.accounts.<id>.sendReadReceiptsوchannels.whatsapp.accounts.<id>.dmPolicyوchannels.whatsapp.accounts.<id>.allowFrom.
Telegram
- رمز البوت:
channels.telegram.botTokenأوchannels.telegram.tokenFile(ملف عادي فقط؛ تُرفض الروابط الرمزية)، معTELEGRAM_BOT_TOKENكقيمة احتياطية للحساب الافتراضي. - يتجاوز
channels.telegram.defaultAccountالاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مُهيأ. - في إعدادات الحسابات المتعددة (معرّفا حساب أو أكثر)، عيّن افتراضيًا صريحًا (
channels.telegram.defaultAccountأوchannels.telegram.accounts.default) لتجنب التوجيه الاحتياطي؛ ويحذّرopenclaw doctorعندما يكون هذا مفقودًا أو غير صالح. - يؤدي
configWrites: falseإلى حظر عمليات كتابة الإعدادات التي يبدؤها Telegram (ترحيل معرّفات supergroup، و/config set|unset). - تُهيّئ إدخالات
bindings[]ذات المستوى الأعلى معtype: "acp"ارتباطات ACP دائمة لموضوعات المنتدى (استخدم الصيغة القانونيةchatId:topic:topicIdفيmatch.peer.id). دلالات الحقول مشتركة في ACP Agents. - تستخدم معاينات البث في Telegram كلًا من
sendMessageوeditMessageText(وتعمل في الدردشات المباشرة والجماعية). - سياسة إعادة المحاولة: راجع سياسة إعادة المحاولة.
Discord
- الرمز المميز:
channels.discord.token، معDISCORD_BOT_TOKENكقيمة احتياطية للحساب الافتراضي. - تستخدم الاستدعاءات الصادرة المباشرة التي توفّر
tokenصريحًا لـ Discord ذلك الرمز المميز لهذا الاستدعاء؛ بينما تستمر إعدادات إعادة المحاولة/السياسة الخاصة بالحساب في الاعتماد على الحساب المحدد في اللقطة النشطة أثناء التشغيل. - يتجاوز
channels.discord.defaultAccountالاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مُهيأ. - استخدم
user:<id>(رسالة مباشرة) أوchannel:<id>(قناة guild) كأهداف للتسليم؛ وتُرفض المعرّفات الرقمية المجردة. - تكون الأسماء المختصرة لـ guild بأحرف صغيرة مع استبدال المسافات بـ
-؛ وتستخدم مفاتيح القنوات الاسم المختصر (من دون#). ويُفضّل استخدام معرّفات guild. - تُتجاهل الرسائل التي ينشئها البوت افتراضيًا. يفعّل
allowBots: trueقبولها؛ واستخدمallowBots: "mentions"لقبول رسائل البوت التي تذكر البوت فقط (مع استمرار تصفية رسائله الذاتية). - يؤدي
channels.discord.guilds.<id>.ignoreOtherMentions(وتجاوزات القنوات) إلى إسقاط الرسائل التي تذكر مستخدمًا آخر أو دورًا آخر ولكنها لا تذكر البوت (باستثناء @everyone/@here). - يقسم
maxLinesPerMessage(الافتراضي 17) الرسائل الطويلة عموديًا حتى عندما تكون أقل من 2000 حرف. - يتحكم
channels.discord.threadBindingsفي التوجيه المرتبط بسلاسل Discord:enabled: تجاوز Discord لميزات الجلسات المرتبطة بالسلاسل (/focusو/unfocusو/agentsو/session idleو/session max-age، والتسليم/التوجيه المرتبط)idleHours: تجاوز Discord لإلغاء التركيز التلقائي بعد عدم النشاط، بالساعات (0للتعطيل)maxAgeHours: تجاوز Discord للحد الأقصى الصارم للعمر، بالساعات (0للتعطيل)spawnSubagentSessions: مفتاح تفعيل اختياري لإنشاء/ربط السلاسل تلقائيًا بواسطةsessions_spawn({ thread: true })
- تُهيّئ إدخالات
bindings[]ذات المستوى الأعلى معtype: "acp"ارتباطات ACP دائمة للقنوات والسلاسل (استخدم معرّف القناة/السلسلة فيmatch.peer.id). دلالات الحقول مشتركة في ACP Agents. - يضبط
channels.discord.ui.components.accentColorلون التمييز لحاويات مكونات Discord v2. - يفعّل
channels.discord.voiceمحادثات القنوات الصوتية في Discord وتجاوزات الانضمام التلقائي وTTS الاختيارية. - يُمرَّر
channels.discord.voice.daveEncryptionوchannels.discord.voice.decryptionFailureToleranceإلى خيارات DAVE في@discordjs/voice(القيم الافتراضيةtrueو24). - يحاول OpenClaw أيضًا استعادة استقبال الصوت عبر مغادرة الجلسة الصوتية وإعادة الانضمام إليها بعد تكرار إخفاقات فك التشفير.
- يُعد
channels.discord.streamingمفتاح وضع البث القانوني. وتُرحَّل تلقائيًا القيم القديمةstreamModeوقيمstreamingالمنطقية. - يربط
channels.discord.autoPresenceحالة التوفر أثناء التشغيل بحضور البوت (سليم => online، متدهور => idle، مستنفد => dnd)، ويسمح بتجاوزات اختيارية لنص الحالة. - يعيد
channels.discord.dangerouslyAllowNameMatchingتفعيل المطابقة القابلة للتغيير للاسم/الوسم (وضع توافق طارئ). channels.discord.execApprovals: تسليم موافقات exec الأصلية في Discord وتفويض الموافقين.enabled: القيمtrueأوfalseأو"auto"(الافتراضي). في وضع auto، تُفعَّل موافقات exec عندما يمكن حلّ الموافقين منapproversأوcommands.ownerAllowFrom.approvers: معرّفات مستخدمي Discord المسموح لهم بالموافقة على طلبات exec. ويُستخدمcommands.ownerAllowFromكقيمة احتياطية عند حذفه.agentFilter: قائمة سماح اختيارية لمعرّفات الوكلاء. احذفها لتمرير الموافقات لجميع الوكلاء.sessionFilter: أنماط مفاتيح جلسات اختيارية (سلسلة فرعية أو regex).target: مكان إرسال مطالبات الموافقة. ترسل"dm"(الافتراضي) إلى الرسائل المباشرة للموافقين، وترسل"channel"إلى القناة الأصلية، وترسل"both"إلى كليهما. وعندما يتضمن الهدف"channel"، لا تكون الأزرار قابلة للاستخدام إلا من قبل الموافقين الذين تم حلّهم.cleanupAfterResolve: عند تعيينه إلىtrue، يحذف رسائل الموافقة المباشرة بعد الموافقة أو الرفض أو انتهاء المهلة.
off (بدون)، own (رسائل البوت، الافتراضي)، all (كل الرسائل)، allowlist (من guilds.<id>.users على جميع الرسائل).
Google Chat
- JSON لحساب الخدمة: مضمّن (
serviceAccount) أو مستند إلى ملف (serviceAccountFile). - كما أن SecretRef لحساب الخدمة مدعوم أيضًا (
serviceAccountRef). - القيم الاحتياطية من البيئة:
GOOGLE_CHAT_SERVICE_ACCOUNTأوGOOGLE_CHAT_SERVICE_ACCOUNT_FILE. - استخدم
spaces/<spaceId>أوusers/<userId>كأهداف للتسليم. - يعيد
channels.googlechat.dangerouslyAllowNameMatchingتفعيل مطابقة كيان البريد الإلكتروني القابلة للتغيير (وضع توافق طارئ).
Slack
- يتطلب وضع Socket كلًا من
botTokenوappToken(SLACK_BOT_TOKEN+SLACK_APP_TOKENكقيمة احتياطية من البيئة للحساب الافتراضي). - يتطلب وضع HTTP
botTokenبالإضافة إلىsigningSecret(على المستوى الجذري أو لكل حساب). - تقبل
botTokenوappTokenوsigningSecretوuserTokenسلاسل نصية صريحة أو كائنات SecretRef. - تعرض لقطات حساب Slack حقول المصدر/الحالة لكل اعتماد مثل
botTokenSourceوbotTokenStatusوappTokenStatus، وفي وضع HTTP،signingSecretStatus. وتعنيconfigured_unavailableأن الحساب مهيأ عبر SecretRef لكن مسار الأمر/التشغيل الحالي لم يتمكن من حل قيمة السر. - يؤدي
configWrites: falseإلى حظر عمليات كتابة الإعدادات التي يبدؤها Slack. - يتجاوز
channels.slack.defaultAccountالاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مُهيأ. - يُعد
channels.slack.streaming.modeمفتاح وضع بث Slack القانوني. ويتحكمchannels.slack.streaming.nativeTransportفي وسيلة النقل الأصلية للبث في Slack. وتُرحَّل تلقائيًا القيم القديمةstreamModeوقيمstreamingالمنطقية وnativeStreaming. - استخدم
user:<id>(رسالة مباشرة) أوchannel:<id>كأهداف للتسليم.
off وown (الافتراضي) وall وallowlist (من reactionAllowlist).
عزل جلسات السلاسل: يكون thread.historyScope لكل سلسلة على حدة (الافتراضي) أو مشتركًا عبر القناة. ويؤدي thread.inheritParent إلى نسخ سجل القناة الأم إلى السلاسل الجديدة.
- يتطلب البث الأصلي في Slack بالإضافة إلى حالة السلسلة بأسلوب Slack assistant “is typing…” هدف ردّ داخل سلسلة. وتبقى الرسائل المباشرة ذات المستوى الأعلى خارج السلاسل افتراضيًا، لذلك تستخدم
typingReactionأو التسليم العادي بدلًا من المعاينة بأسلوب السلسلة. - تضيف
typingReactionتفاعلًا مؤقتًا إلى رسالة Slack الواردة أثناء تشغيل الرد، ثم تزيله عند الاكتمال. استخدم اختصار emoji في Slack مثل"hourglass_flowing_sand". channels.slack.execApprovals: تسليم موافقات exec الأصلية في Slack وتفويض الموافقين. نفس مخطط Discord:enabled(true/false/"auto")، وapprovers(معرّفات مستخدمي Slack)، وagentFilter، وsessionFilter، وtarget("dm"أو"channel"أو"both").
| مجموعة الإجراءات | الافتراضي | ملاحظات |
|---|---|---|
| reactions | مفعّل | التفاعل + سرد التفاعلات |
| messages | مفعّل | قراءة/إرسال/تعديل/حذف |
| pins | مفعّل | تثبيت/إلغاء تثبيت/سرد |
| memberInfo | مفعّل | معلومات العضو |
| emojiList | مفعّل | قائمة emoji المخصصة |
Mattermost
يُشحن Mattermost كـ Plugin: openclaw plugins install @openclaw/mattermost.
oncall (الرد عند @-mention، الافتراضي)، وonmessage (كل رسالة)، وonchar (الرسائل التي تبدأ ببادئة التشغيل).
عند تفعيل الأوامر الأصلية في Mattermost:
- يجب أن يكون
commands.callbackPathمسارًا (على سبيل المثال/api/channels/mattermost/command)، وليس عنوان URL كاملًا. - يجب أن يشير
commands.callbackUrlإلى نقطة نهاية Gateway الخاصة بـ OpenClaw وأن يكون قابلاً للوصول من خادم Mattermost. - تُصادَق عمليات الاستدعاء العكسي الأصلية لـ slash بواسطة الرموز المميزة الخاصة بكل أمر التي يعيدها Mattermost أثناء تسجيل slash command. وإذا فشل التسجيل أو لم تُفعَّل أي أوامر، يرفض OpenClaw عمليات الاستدعاء العكسي بالرسالة
Unauthorized: invalid command token. - بالنسبة إلى مستضيفي الاستدعاء العكسي الخاصين/داخليي tailnet/الداخليين، قد يتطلب Mattermost أن يتضمن
ServiceSettings.AllowedUntrustedInternalConnectionsمستضيف/نطاق الاستدعاء العكسي. استخدم قيم المستضيف/النطاق، وليس عناوين URL كاملة. channels.mattermost.configWrites: السماح أو الرفض لعمليات كتابة الإعدادات التي يبدؤها Mattermost.channels.mattermost.requireMention: طلب@mentionقبل الرد في القنوات.channels.mattermost.groups.<channelId>.requireMention: تجاوز اشتراط الإشارة لكل قناة ("*"للافتراضي).- يتجاوز
channels.mattermost.defaultAccountالاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مُهيأ.
Signal
off وown (الافتراضي) وall وallowlist (من reactionAllowlist).
channels.signal.account: تثبيت بدء تشغيل القناة على هوية حساب Signal محددة.channels.signal.configWrites: السماح أو الرفض لعمليات كتابة الإعدادات التي يبدؤها Signal.- يتجاوز
channels.signal.defaultAccountالاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مُهيأ.
BlueBubbles
يُعد BlueBubbles المسار الموصى به لـ iMessage (مدعومًا بواسطة Plugin، ويُضبط تحتchannels.bluebubbles).
- مسارات المفاتيح الأساسية المغطاة هنا:
channels.bluebubblesوchannels.bluebubbles.dmPolicy. - يتجاوز
channels.bluebubbles.defaultAccountالاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مُهيأ. - يمكن لإدخالات
bindings[]ذات المستوى الأعلى معtype: "acp"ربط محادثات BlueBubbles بجلسات ACP دائمة. استخدم مقبض BlueBubbles أو سلسلة الهدف (chat_id:*أوchat_guid:*أوchat_identifier:*) فيmatch.peer.id. دلالات الحقول المشتركة: ACP Agents. - إعداد قناة BlueBubbles الكامل موثق في BlueBubbles.
iMessage
يشغّل OpenClaw الأمرimsg rpc (JSON-RPC عبر stdio). لا حاجة إلى daemon أو منفذ.
-
يتجاوز
channels.imessage.defaultAccountالاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مُهيأ. - يتطلب Full Disk Access إلى قاعدة بيانات Messages.
-
يُفضل استخدام أهداف
chat_id:<id>. استخدمimsg chats --limit 20لسرد الدردشات. -
يمكن أن يشير
cliPathإلى غلاف SSH؛ اضبطremoteHost(hostأوuser@host) لجلب المرفقات عبر SCP. -
يقيّد
attachmentRootsوremoteAttachmentRootsمسارات المرفقات الواردة (الافتراضي:/Users/*/Library/Messages/Attachments). -
يستخدم SCP التحقق الصارم من مفتاح المستضيف، لذا تأكد من أن مفتاح مستضيف الترحيل موجود مسبقًا في
~/.ssh/known_hosts. -
channels.imessage.configWrites: السماح أو الرفض لعمليات كتابة الإعدادات التي يبدؤها iMessage. -
يمكن لإدخالات
bindings[]ذات المستوى الأعلى معtype: "acp"ربط محادثات iMessage بجلسات ACP دائمة. استخدم مقبضًا مُطبَّعًا أو هدف دردشة صريحًا (chat_id:*أوchat_guid:*أوchat_identifier:*) فيmatch.peer.id. دلالات الحقول المشتركة: ACP Agents.
مثال على غلاف SSH لـ iMessage
مثال على غلاف SSH لـ iMessage
Matrix
تأتي Matrix مدعومة بواسطة extension وتُضبط تحتchannels.matrix.
- تستخدم مصادقة الرمز
accessToken؛ وتستخدم مصادقة كلمة المرورuserId+password. - يوجّه
channels.matrix.proxyحركة HTTP الخاصة بـ Matrix عبر وكيل HTTP(S) صريح. ويمكن للحسابات المسماة تجاوزه باستخدامchannels.matrix.accounts.<id>.proxy. - يسمح
channels.matrix.network.dangerouslyAllowPrivateNetworkبخوادم homeserver الخاصة/الداخلية. ويُعد كل منproxyوخيار الشبكة هذا عنصرَي تحكم مستقلين. - يحدد
channels.matrix.defaultAccountالحساب المفضل في إعدادات الحسابات المتعددة. - تكون القيمة الافتراضية لـ
channels.matrix.autoJoinهيoff، لذا تُتجاهل الغرف المدعوّة ودعوات الرسائل المباشرة الجديدة حتى تعيّنautoJoin: "allowlist"معautoJoinAllowlistأوautoJoin: "always". channels.matrix.execApprovals: تسليم موافقات exec الأصلية في Matrix وتفويض الموافقين.enabled: القيمtrueأوfalseأو"auto"(الافتراضي). في وضع auto، تُفعَّل موافقات exec عندما يمكن حلّ الموافقين منapproversأوcommands.ownerAllowFrom.approvers: معرّفات مستخدمي Matrix (مثل@owner:example.org) المسموح لهم بالموافقة على طلبات exec.agentFilter: قائمة سماح اختيارية لمعرّفات الوكلاء. احذفها لتمرير الموافقات لجميع الوكلاء.sessionFilter: أنماط مفاتيح جلسات اختيارية (سلسلة فرعية أو regex).target: مكان إرسال مطالبات الموافقة."dm"(الافتراضي) أو"channel"(الغرفة الأصلية) أو"both".- تجاوزات لكل حساب:
channels.matrix.accounts.<id>.execApprovals.
- يتحكم
channels.matrix.dm.sessionScopeفي كيفية تجميع الرسائل المباشرة في Matrix ضمن الجلسات: يشاركper-user(الافتراضي) حسب النظير الموجّه، بينما يعزلper-roomكل غرفة رسائل مباشرة على حدة. - تستخدم مجسات الحالة في Matrix وعمليات بحث الدليل الحية سياسة الوكيل نفسها المستخدمة في حركة التشغيل.
- إعداد Matrix الكامل وقواعد الاستهداف وأمثلة الإعداد موثقة في Matrix.
Microsoft Teams
تأتي Microsoft Teams مدعومة بواسطة extension وتُضبط تحتchannels.msteams.
- مسارات المفاتيح الأساسية المغطاة هنا:
channels.msteamsوchannels.msteams.configWrites. - إعداد Teams الكامل (بيانات الاعتماد وWebhook وسياسة الرسائل المباشرة/المجموعات والتجاوزات لكل فريق/قناة) موثق في Microsoft Teams.
IRC
تأتي IRC مدعومة بواسطة extension وتُضبط تحتchannels.irc.
- مسارات المفاتيح الأساسية المغطاة هنا:
channels.ircوchannels.irc.dmPolicyوchannels.irc.configWritesوchannels.irc.nickserv.*. - يتجاوز
channels.irc.defaultAccountالاختياري اختيار الحساب الافتراضي عندما يطابق معرّف حساب مُهيأ. - إعداد قناة IRC الكامل (المستضيف/المنفذ/TLS/القنوات/قوائم السماح/اشتراط الإشارة) موثق في IRC.
تعدد الحسابات (كل القنوات)
شغّل عدة حسابات لكل قناة (لكل منهاaccountId خاص بها):
- يُستخدم
defaultعند حذفaccountId(في CLI والتوجيه). - لا تنطبق الرموز المميزة من البيئة إلا على الحساب default.
- تنطبق إعدادات القناة الأساسية على جميع الحسابات ما لم تُتجاوز لكل حساب.
- استخدم
bindings[].match.accountIdلتوجيه كل حساب إلى وكيل مختلف. - إذا أضفت حسابًا غير افتراضي عبر
openclaw channels add(أو إعداد القناة) بينما لا تزال تستخدم إعداد قناة أحادي الحساب على المستوى الأعلى، فسيقوم OpenClaw أولًا بترقية قيم الحساب الأحادي على المستوى الأعلى والمحددة بنطاق الحساب إلى خريطة حسابات القناة لكي يستمر الحساب الأصلي في العمل. تنقلها معظم القنوات إلىchannels.<channel>.accounts.default؛ ويمكن لـ Matrix بدلًا من ذلك الحفاظ على هدف مسمّى/افتراضي مطابق موجود. - تظل ارتباطات القناة فقط الحالية (من دون
accountId) تطابق الحساب الافتراضي؛ وتبقى الارتباطات المحددة بنطاق الحساب اختيارية. - يقوم
openclaw doctor --fixأيضًا بإصلاح الأشكال المختلطة عبر نقل قيم الحساب الأحادي على المستوى الأعلى والمحددة بنطاق الحساب إلى الحساب المُرقّى المختار لتلك القناة. تستخدم معظم القنواتaccounts.default؛ ويمكن لـ Matrix بدلًا من ذلك الحفاظ على هدف مسمّى/افتراضي مطابق موجود.
قنوات extension الأخرى
تُضبط العديد من قنوات extension على شكلchannels.<id> وتُوثق في صفحات القنوات المخصصة لها (على سبيل المثال Feishu وMatrix وLINE وNostr وZalo وNextcloud Talk وSynology Chat وTwitch).
راجع فهرس القنوات الكامل: القنوات.
اشتراط الإشارة في الدردشة الجماعية
تستخدم الرسائل الجماعية افتراضيًا require mention (إشارة في بيانات التعريف أو أنماط regex آمنة). ينطبق ذلك على دردشات المجموعات في WhatsApp وTelegram وDiscord وGoogle Chat وiMessage. أنواع الإشارة:- الإشارات في بيانات التعريف: إشارات @-mention الأصلية للمنصة. تُتجاهل في وضع الدردشة الذاتية في WhatsApp.
- أنماط النص: أنماط regex آمنة في
agents.list[].groupChat.mentionPatterns. تُتجاهل الأنماط غير الصالحة والتكرار المتداخل غير الآمن. - لا يُفرض اشتراط الإشارة إلا عندما يكون الاكتشاف ممكنًا (إشارات أصلية أو نمط واحد على الأقل).
messages.groupChat.historyLimit القيمة الافتراضية العامة. ويمكن للقنوات تجاوزها باستخدام channels.<channel>.historyLimit (أو لكل حساب). عيّن القيمة 0 للتعطيل.
حدود سجل الرسائل المباشرة
telegram وwhatsapp وdiscord وslack وsignal وimessage وmsteams.
وضع الدردشة الذاتية
أدرج رقمك الخاص فيallowFrom لتفعيل وضع الدردشة الذاتية (يتجاهل إشارات @ الأصلية، ويرد فقط على أنماط النص):
الأوامر (معالجة أوامر الدردشة)
تفاصيل الأوامر
تفاصيل الأوامر
- تهيّئ هذه الكتلة أسطح الأوامر. لفهرس الأوامر الحالي المضمن + المجمّع، راجع Slash Commands.
- هذه الصفحة هي مرجع لمفاتيح الإعدادات، وليست فهرس الأوامر الكامل. الأوامر المملوكة للقنوات/Plugin مثل QQ Bot
/bot-pingو/bot-helpو/bot-logs، وLINE /card، وdevice-pair /pair، وmemory /dreaming، وphone-control /phone، وTalk /voiceموثقة في صفحات القنوات/Plugin الخاصة بها بالإضافة إلى Slash Commands. - يجب أن تكون الأوامر النصية رسائل مستقلة تبدأ بـ
/. - يؤدي
native: "auto"إلى تشغيل الأوامر الأصلية لـ Discord/Telegram، ويترك Slack معطّلًا. - يؤدي
nativeSkills: "auto"إلى تشغيل أوامر Skills الأصلية لـ Discord/Telegram، ويترك Slack معطّلًا. - تجاوز لكل قناة:
channels.discord.commands.native(قيمة منطقية أو"auto"). تؤدي القيمةfalseإلى مسح الأوامر المسجلة سابقًا. - تجاوز تسجيل Skills الأصلية لكل قناة باستخدام
channels.<provider>.commands.nativeSkills. - يضيف
channels.telegram.customCommandsإدخالات إضافية إلى قائمة بوت Telegram. - يفعّل
bash: trueالأمر! <cmd>لصدفة المستضيف. ويتطلبtools.elevated.enabledوأن يكون المرسل ضمنtools.elevated.allowFrom.<channel>. - يفعّل
config: trueالأمر/config(لقراءة/كتابةopenclaw.json). وبالنسبة إلى عملاءchat.sendفي Gateway، تتطلب عمليات الكتابة الدائمة عبر/config set|unsetأيضًاoperator.admin؛ بينما يبقى/config showللقراءة فقط متاحًا لعملاء operator العاديين ذوي نطاق الكتابة. - يفعّل
mcp: trueالأمر/mcpلإعداد خادم MCP الذي يديره OpenClaw تحتmcp.servers. - يفعّل
plugins: trueالأمر/pluginsلاكتشاف Plugin وتثبيتها وعناصر التحكم في التفعيل/التعطيل. - يتحكم
channels.<provider>.configWritesفي تعديلات الإعدادات لكل قناة (الافتراضي: true). - بالنسبة إلى القنوات متعددة الحسابات، يتحكم
channels.<provider>.accounts.<id>.configWritesأيضًا في عمليات الكتابة التي تستهدف ذلك الحساب (على سبيل المثال/allowlist --config --account <id>أو/config set channels.<provider>.accounts.<id>...). - يؤدي
restart: falseإلى تعطيل/restartوإجراءات أداة إعادة تشغيل gateway. الافتراضي:true. ownerAllowFromهي قائمة السماح الصريحة للمالك الخاصة بالأوامر/الأدوات المخصصة للمالك فقط. وهي منفصلة عنallowFrom.- يؤدي
ownerDisplay: "hash"إلى تجزئة معرّفات المالك في system prompt. اضبطownerDisplaySecretللتحكم في التجزئة. allowFromيكون لكل مزوّد. وعند تعيينه، يصبح مصدر التفويض الوحيد (ويتم تجاهل قوائم السماح/الاقتران الخاصة بالقناة وuseAccessGroups).- يتيح
useAccessGroups: falseللأوامر تجاوز سياسات مجموعات الوصول عندما لا يكونallowFromمعيّنًا. - خريطة وثائق الأوامر:
الإعدادات الافتراضية للوكلاء
agents.defaults.workspace
الافتراضي: ~/.openclaw/workspace.
agents.defaults.repoRoot
جذر المستودع الاختياري المعروض في سطر Runtime داخل system prompt. وإذا لم يُعيَّن، يكتشفه OpenClaw تلقائيًا عبر الصعود من مساحة العمل.
agents.defaults.skills
قائمة السماح الافتراضية الاختيارية لـ Skills للوكلاء الذين لا يعيّنون
agents.list[].skills.
- احذف
agents.defaults.skillsللحصول على Skills غير مقيّدة افتراضيًا. - احذف
agents.list[].skillsلوراثة القيم الافتراضية. - عيّن
agents.list[].skills: []لعدم استخدام أي Skills. - تمثل قائمة
agents.list[].skillsغير الفارغة المجموعة النهائية لذلك الوكيل؛ وهي لا تندمج مع القيم الافتراضية.
agents.defaults.skipBootstrap
يعطّل الإنشاء التلقائي لملفات bootstrap الخاصة بمساحة العمل (AGENTS.md وSOUL.md وTOOLS.md وIDENTITY.md وUSER.md وHEARTBEAT.md وBOOTSTRAP.md).
agents.defaults.contextInjection
يتحكم في وقت حقن ملفات bootstrap الخاصة بمساحة العمل داخل system prompt. الافتراضي: "always".
"continuation-skip": تتجاوز أدوار المتابعة الآمنة (بعد اكتمال استجابة المساعد) إعادة حقن bootstrap الخاص بمساحة العمل، مما يقلل حجم prompt. وتستمر تشغيلات Heartbeat وإعادات المحاولة بعد Compaction في إعادة بناء السياق.
agents.defaults.bootstrapMaxChars
الحد الأقصى لعدد الأحرف لكل ملف bootstrap في مساحة العمل قبل الاقتطاع. الافتراضي: 12000.
agents.defaults.bootstrapTotalMaxChars
الحد الأقصى لإجمالي الأحرف المحقونة عبر جميع ملفات bootstrap الخاصة بمساحة العمل. الافتراضي: 60000.
agents.defaults.bootstrapPromptTruncationWarning
يتحكم في نص التحذير المرئي للوكيل عند اقتطاع سياق bootstrap.
الافتراضي: "once".
"off": لا تحقن نص التحذير مطلقًا في system prompt."once": احقن التحذير مرة واحدة لكل توقيع اقتطاع فريد (موصى به)."always": احقن التحذير في كل تشغيل عندما يوجد اقتطاع.
خريطة ملكية ميزانية السياق
يحتوي OpenClaw على عدة ميزانيات كبيرة الحجم لـ prompt/السياق، وهي مقسمة عمدًا حسب النظام الفرعي بدلًا من مرورها كلها عبر مفتاح ضبط عام واحد.agents.defaults.bootstrapMaxChars/agents.defaults.bootstrapTotalMaxChars: حقن bootstrap العادي لمساحة العمل.agents.defaults.startupContext.*: تمهيد بدء التشغيل لمرة واحدة لأوامر/newو/reset، بما في ذلك ملفاتmemory/*.mdاليومية الحديثة.skills.limits.*: قائمة Skills المدمجة المحقونة في system prompt.agents.defaults.contextLimits.*: مقتطفات التشغيل المحدودة والكتل المملوكة لوقت التشغيل والمحقونة.memory.qmd.limits.*: مقتطفات البحث في الذاكرة المفهرسة وتحجيم الحقن.
agents.list[].skillsLimits.maxSkillsPromptCharsagents.list[].contextLimits.*
agents.defaults.startupContext
يتحكم في تمهيد بدء التشغيل لأول دور، والذي يُحقن في تشغيلات /new و/reset
العادية.
agents.defaults.contextLimits
إعدادات افتراضية مشتركة لأسطح سياق التشغيل المحدودة.
memoryGetMaxChars: الحد الافتراضي لمقتطفmemory_getقبل إضافة بيانات وصفية للاقتطاع وإشعار بالمتابعة.memoryGetDefaultLines: نافذة الأسطر الافتراضية لـmemory_getعند حذفlines.toolResultMaxChars: الحد الأقصى لنتائج الأدوات أثناء التشغيل والمستخدم للنتائج المحفوظة ومعالجة الفائض.postCompactionMaxChars: الحد الأقصى لمقتطفات AGENTS.md المستخدمة أثناء حقن التحديث بعد Compaction.
agents.list[].contextLimits
تجاوز لكل وكيل لمفاتيح contextLimits المشتركة. وترث الحقول المحذوفة
من agents.defaults.contextLimits.
skills.limits.maxSkillsPromptChars
الحد الأقصى العام لقائمة Skills المدمجة المحقونة في system prompt. هذا
لا يؤثر في قراءة ملفات SKILL.md عند الطلب.
agents.list[].skillsLimits.maxSkillsPromptChars
تجاوز لكل وكيل لميزانية prompt الخاصة بـ Skills.
agents.defaults.imageMaxDimensionPx
الحد الأقصى لحجم البكسل لأطول ضلع في الصورة ضمن كتل صور السجل/الأدوات قبل استدعاءات المزوّد.
الافتراضي: 1200.
تقلل القيم المنخفضة عادةً من استخدام رموز الرؤية وحجم حمولة الطلب في التشغيلات التي تحتوي على الكثير من لقطات الشاشة.
وتحافظ القيم الأعلى على قدر أكبر من التفاصيل المرئية.
agents.defaults.userTimezone
المنطقة الزمنية لسياق system prompt (وليس الطوابع الزمنية للرسائل). وتعود إلى المنطقة الزمنية الخاصة بالمستضيف عند عدم التعيين.
agents.defaults.timeFormat
تنسيق الوقت في system prompt. الافتراضي: auto (تفضيل نظام التشغيل).
agents.defaults.model
model: يقبل إما سلسلة ("provider/model") أو كائنًا ({ primary, fallbacks }).- يضبط نموذج السلسلة النموذج الأساسي فقط.
- يضبط نموذج الكائن النموذج الأساسي بالإضافة إلى نماذج التحويل الاحتياطي المرتبة.
imageModel: يقبل إما سلسلة ("provider/model") أو كائنًا ({ primary, fallbacks }).- يُستخدم في مسار أداة
imageكإعداد لنموذج الرؤية الخاص بها. - ويُستخدم أيضًا كتوجيه احتياطي عندما لا يستطيع النموذج المحدد/الافتراضي قبول مدخلات الصور.
- يُستخدم في مسار أداة
imageGenerationModel: يقبل إما سلسلة ("provider/model") أو كائنًا ({ primary, fallbacks }).- يُستخدم في إمكانية توليد الصور المشتركة وأي سطح أداة/Plugin مستقبلي يولد صورًا.
- القيم النموذجية:
google/gemini-3.1-flash-image-previewلتوليد صور Gemini الأصلي، أوfal/fal-ai/flux/devلـ fal، أوopenai/gpt-image-1لـ OpenAI Images. - إذا اخترت مزودًا/نموذجًا مباشرةً، فاضبط أيضًا مصادقة المزوّد/مفتاح API المطابق (على سبيل المثال
GEMINI_API_KEYأوGOOGLE_API_KEYلـgoogle/*، وOPENAI_API_KEYلـopenai/*، وFAL_KEYلـfal/*). - إذا لم يُعيَّن، يمكن لـ
image_generateمع ذلك استنتاج افتراضي مزوّد مدعوم بالمصادقة. إذ يحاول أولًا المزوّد الافتراضي الحالي، ثم بقية مزوّدي توليد الصور المسجلين حسب ترتيب معرّف المزوّد.
musicGenerationModel: يقبل إما سلسلة ("provider/model") أو كائنًا ({ primary, fallbacks }).- يُستخدم في إمكانية توليد الموسيقى المشتركة وفي الأداة المضمنة
music_generate. - القيم النموذجية:
google/lyria-3-clip-previewأوgoogle/lyria-3-pro-previewأوminimax/music-2.5+. - إذا لم يُعيَّن، يمكن لـ
music_generateمع ذلك استنتاج افتراضي مزوّد مدعوم بالمصادقة. إذ يحاول أولًا المزوّد الافتراضي الحالي، ثم بقية مزوّدي توليد الموسيقى المسجلين حسب ترتيب معرّف المزوّد. - إذا اخترت مزودًا/نموذجًا مباشرةً، فاضبط أيضًا مصادقة المزوّد/مفتاح API المطابق.
- يُستخدم في إمكانية توليد الموسيقى المشتركة وفي الأداة المضمنة
videoGenerationModel: يقبل إما سلسلة ("provider/model") أو كائنًا ({ primary, fallbacks }).- يُستخدم في إمكانية توليد الفيديو المشتركة وفي الأداة المضمنة
video_generate. - القيم النموذجية:
qwen/wan2.6-t2vأوqwen/wan2.6-i2vأوqwen/wan2.6-r2vأوqwen/wan2.6-r2v-flashأوqwen/wan2.7-r2v. - إذا لم يُعيَّن، يمكن لـ
video_generateمع ذلك استنتاج افتراضي مزوّد مدعوم بالمصادقة. إذ يحاول أولًا المزوّد الافتراضي الحالي، ثم بقية مزوّدي توليد الفيديو المسجلين حسب ترتيب معرّف المزوّد. - إذا اخترت مزودًا/نموذجًا مباشرةً، فاضبط أيضًا مصادقة المزوّد/مفتاح API المطابق.
- يدعم مزود توليد الفيديو المضمّن Qwen ما يصل إلى فيديو مخرج واحد، وصورة إدخال واحدة، و4 فيديوهات إدخال، ومدة 10 ثوانٍ، وخيارات على مستوى المزوّد مثل
sizeوaspectRatioوresolutionوaudioوwatermark.
- يُستخدم في إمكانية توليد الفيديو المشتركة وفي الأداة المضمنة
pdfModel: يقبل إما سلسلة ("provider/model") أو كائنًا ({ primary, fallbacks }).- يُستخدم بواسطة أداة
pdfلتوجيه النموذج. - إذا لم يُعيَّن، تعود أداة PDF إلى
imageModel، ثم إلى النموذج المحلول للجلسة/الافتراضي.
- يُستخدم بواسطة أداة
pdfMaxBytesMb: حد حجم PDF الافتراضي لأداةpdfعندما لا يُمرَّرmaxBytesMbوقت الاستدعاء.pdfMaxPages: الحد الأقصى الافتراضي للصفحات التي ينظر فيها وضع الاستخراج الاحتياطي في أداةpdf.verboseDefault: مستوى verbose الافتراضي للوكلاء. القيم:"off"و"on"و"full". الافتراضي:"off".elevatedDefault: مستوى المخرجات المرتفعة الافتراضي للوكلاء. القيم:"off"و"on"و"ask"و"full". الافتراضي:"on".model.primary: التنسيقprovider/model(مثلopenai/gpt-5.4). إذا حذفت المزوّد، يحاول OpenClaw أولًا اسمًا مستعارًا، ثم تطابقًا فريدًا لمزوّد مهيأ لذلك المعرّف الدقيق للنموذج، وبعدها فقط يعود إلى المزوّد الافتراضي المهيأ (سلوك توافق قديم ومهجور، لذا يُفضّل استخدامprovider/modelالصريح). وإذا لم يعد ذلك المزوّد يوفّر النموذج الافتراضي المهيأ، يعود OpenClaw إلى أول مزوّد/نموذج مهيأ بدلًا من إظهار افتراضي قديم لمزوّد تمت إزالته.models: فهرس النماذج المهيأ وقائمة السماح الخاصة بـ/model. يمكن أن يتضمن كل إدخالalias(اختصارًا) وparams(خاصة بالمزوّد، مثلtemperatureوmaxTokensوcacheRetentionوcontext1m).params: معاملات المزوّد الافتراضية العامة المطبقة على جميع النماذج. تُضبط فيagents.defaults.params(مثل{ cacheRetention: "long" }).- أولوية دمج
params(في الإعدادات): يتم تجاوزagents.defaults.params(الأساس العام) بواسطةagents.defaults.models["provider/model"].params(لكل نموذج)، ثم يتجاوزagents.list[].params(لمعرّف الوكيل المطابق) بالمفتاح. راجع Prompt Caching للتفاصيل. embeddedHarness: سياسة وقت التشغيل المضمن منخفضة المستوى الافتراضية للوكيل. استخدمruntime: "auto"للسماح لـ harnesses الخاصة بـ Plugin المسجلة بادعاء النماذج المدعومة، أوruntime: "pi"لفرض harness المضمن PI، أو معرّف harness مسجل مثلruntime: "codex". عيّنfallback: "none"لتعطيل الرجوع التلقائي إلى PI.- تقوم كاتبات الإعدادات التي تعدّل هذه الحقول (مثل
/models setو/models set-imageوأوامر إضافة/إزالة الاحتياطي) بحفظ صيغة الكائن القانونية مع الحفاظ على قوائم fallback الموجودة متى أمكن. maxConcurrent: الحد الأقصى لتشغيلات الوكلاء المتوازية عبر الجلسات (مع بقاء كل جلسة متسلسلة داخليًا). الافتراضي: 4.
agents.defaults.embeddedHarness
يتحكم embeddedHarness في المنفّذ منخفض المستوى الذي يشغّل أدوار الوكيل المضمنة.
ينبغي لمعظم عمليات النشر الإبقاء على الإعداد الافتراضي { runtime: "auto", fallback: "pi" }.
استخدمه عندما يوفّر Plugin موثوق harness أصليًا، مثل
harness خادم التطبيق Codex المضمّن.
runtime: القيم"auto"أو"pi"أو معرّف harness مسجل لأحد Plugin. يسجل Plugin Codex المضمّن المعرفcodex.fallback: القيم"pi"أو"none". تبقي"pi"harness PI المضمن كاحتياطي توافق. وتؤدي"none"إلى فشل اختيار harness الخاص بـ Plugin عندما يكون مفقودًا أو غير مدعوم بدلًا من استخدام PI بصمت.- تجاوزات البيئة: يتجاوز
OPENCLAW_AGENT_RUNTIME=<id|auto|pi>القيمةruntime؛ ويعطّلOPENCLAW_AGENT_HARNESS_FALLBACK=noneالرجوع إلى PI لتلك العملية. - لعمليات النشر الخاصة بـ Codex فقط، اضبط
model: "codex/gpt-5.4"وembeddedHarness.runtime: "codex"وembeddedHarness.fallback: "none". - يتحكم هذا فقط في harness الدردشة المضمن. أما توليد الوسائط والرؤية وPDF والموسيقى والفيديو وTTS فما زالت تستخدم إعدادات المزوّد/النموذج الخاصة بها.
agents.defaults.models):
| الاسم المستعار | النموذج |
|---|---|
opus | anthropic/claude-opus-4-6 |
sonnet | anthropic/claude-sonnet-4-6 |
gpt | openai/gpt-5.4 |
gpt-mini | openai/gpt-5.4-mini |
gpt-nano | openai/gpt-5.4-nano |
gemini | google/gemini-3.1-pro-preview |
gemini-flash | google/gemini-3-flash-preview |
gemini-flash-lite | google/gemini-3.1-flash-lite-preview |
--thinking off أو تعرّف agents.defaults.models["zai/<model>"].params.thinking بنفسك.
وتفعّل نماذج Z.AI القيمة tool_stream افتراضيًا لبث استدعاءات الأدوات. عيّن agents.defaults.models["zai/<model>"].params.tool_stream إلى false لتعطيلها.
وتستخدم نماذج Anthropic Claude 4.6 افتراضيًا التفكير adaptive عندما لا يكون هناك مستوى تفكير صريح محدد.
agents.defaults.cliBackends
واجهات CLI خلفية اختيارية لتشغيلات الاحتياط النصية فقط (من دون استدعاءات أدوات). وهي مفيدة كنسخة احتياطية عند تعطل مزوّدي API.
- الواجهات الخلفية CLI موجهة للنص أولًا؛ وتكون الأدوات معطلة دائمًا.
- تُدعَم الجلسات عندما يكون
sessionArgمعيّنًا. - يُدعَم تمرير الصور عندما يقبل
imageArgمسارات الملفات.
agents.defaults.systemPromptOverride
استبدل system prompt الكامل الذي يجمعه OpenClaw بسلسلة ثابتة. يُضبط على المستوى الافتراضي (agents.defaults.systemPromptOverride) أو لكل وكيل (agents.list[].systemPromptOverride). وتأخذ القيم لكل وكيل الأولوية؛ وتُتجاهل القيم الفارغة أو التي تحتوي على مسافات بيضاء فقط. وهذا مفيد لتجارب prompt المنضبطة.
agents.defaults.heartbeat
تشغيلات Heartbeat الدورية.
every: سلسلة مدة (ms/s/m/h). الافتراضي:30m(مصادقة مفتاح API) أو1h(مصادقة OAuth). عيّنها إلى0mللتعطيل.includeSystemPromptSection: عند تعيينها إلى false، تُحذف فقرة Heartbeat من system prompt ويُتخطى حقنHEARTBEAT.mdفي سياق bootstrap. الافتراضي:true.suppressToolErrorWarnings: عند تعيينه إلى true، ي suppress حمولة تحذيرات أخطاء الأدوات أثناء تشغيلات Heartbeat.timeoutSeconds: الحد الأقصى بالثواني المسموح به لدور وكيل Heartbeat قبل إيقافه. اتركه غير معيّن لاستخدامagents.defaults.timeoutSeconds.directPolicy: سياسة التسليم المباشر/للرسائل المباشرة. تسمحallow(الافتراضي) بالتسليم المباشر إلى الهدف. وتؤديblockإلى منع التسليم المباشر إلى الهدف وإخراجreason=dm-blocked.lightContext: عند تعيينه إلى true، تستخدم تشغيلات Heartbeat سياق bootstrap خفيفًا وتُبقي فقطHEARTBEAT.mdمن ملفات bootstrap الخاصة بمساحة العمل.isolatedSession: عند تعيينه إلى true، تعمل كل Heartbeat في جلسة جديدة من دون أي سجل محادثة سابق. وهو نفس نمط العزل في Cron معsessionTarget: "isolated". ويقلل تكلفة الرموز لكل Heartbeat من نحو ~100K إلى ~2-5K رمز.- لكل وكيل: اضبط
agents.list[].heartbeat. وعندما يعرّف أي وكيلheartbeat، تعمل هؤلاء الوكلاء فقط على تشغيل Heartbeat. - تشغّل Heartbeat أدوار وكلاء كاملة — والفواصل الأقصر تستهلك مزيدًا من الرموز.
agents.defaults.compaction
mode: defaultأوsafeguard(تلخيص مجزأ للسجلات الطويلة). راجع Compaction.provider: معرّف Plugin مزوّد Compaction مسجل. عند تعيينه، يُستدعىsummarize()الخاص بالمزوّد بدلًا من التلخيص المضمن في LLM. ويعود إلى المضمن عند الفشل. ويؤدي تعيين مزوّد إلى فرضmode: "safeguard". راجع Compaction.timeoutSeconds: الحد الأقصى بالثواني المسموح به لعملية Compaction واحدة قبل أن يقوم OpenClaw بإيقافها. الافتراضي:900.identifierPolicy: strict(الافتراضي) أوoffأوcustom. تضيفstrictتلقائيًا إرشادات مضمنة للحفاظ على المعرّفات المعتمة أثناء تلخيص Compaction.identifierInstructions: نص اختياري مخصص للحفاظ على المعرّفات يُستخدم عندما يكونidentifierPolicy=custom.postCompactionSections: أسماء أقسام H2/H3 اختيارية من AGENTS.md لإعادة حقنها بعد Compaction. القيمة الافتراضية["Session Startup", "Red Lines"]؛ عيّن[]لتعطيل إعادة الحقن. وعندما لا تكون معيّنة أو تكون معيّنة صراحةً إلى هذا الزوج الافتراضي، تُقبل أيضًا العناوين الأقدمEvery Session/Safetyكقيمة احتياطية قديمة.model: تجاوز اختياريprovider/model-idلتلخيص Compaction فقط. استخدم هذا عندما يجب أن تبقي الجلسة الرئيسية نموذجًا معينًا بينما تعمل ملخصات Compaction على نموذج آخر؛ وعند عدم تعيينه، يستخدم Compaction النموذج الأساسي للجلسة.notifyUser: عند تعيينه إلىtrue، يرسل إشعارًا موجزًا إلى المستخدم عند بدء Compaction (على سبيل المثال: “Compacting context…”). وهو معطّل افتراضيًا لإبقاء Compaction صامتًا.memoryFlush: دور وكيلي صامت قبل Compaction التلقائي لتخزين الذكريات الدائمة. ويُتخطى عندما تكون مساحة العمل للقراءة فقط.
agents.defaults.contextPruning
يقص نتائج الأدوات القديمة من السياق الموجود في الذاكرة قبل إرسالها إلى LLM. ولا يعدّل سجل الجلسة على القرص.
سلوك وضع cache-ttl
سلوك وضع cache-ttl
- يفعّل
mode: "cache-ttl"عمليات القص. - يتحكم
ttlفي عدد المرات التي يمكن فيها تشغيل القص مرة أخرى (بعد آخر لمسة cache). - تقوم عملية القص أولًا باقتطاع نتائج الأدوات المتضخمة بشكل جزئي، ثم تمسح نتائج الأدوات الأقدم بالكامل إذا لزم الأمر.
... في المنتصف.المسح الكامل يستبدل نتيجة الأداة بالكامل بالنص النائب.ملاحظات:- لا تُقتطع/تُمسح كتل الصور مطلقًا.
- تستند النِّسب إلى عدد الأحرف (تقريبيًا)، وليس إلى أعداد الرموز الدقيقة.
- إذا كان عدد رسائل المساعد أقل من
keepLastAssistants، تُتخطى عملية القص.
البث على شكل كتل
- تتطلب القنوات غير Telegram تعيين
*.blockStreaming: trueصراحةً لتفعيل الردود على شكل كتل. - تجاوزات القنوات:
channels.<channel>.blockStreamingCoalesce(ومتغيرات كل حساب). تستخدم Signal/Slack/Discord/Google Chat افتراضيًاminChars: 1500. humanDelay: توقف عشوائي بين الردود على شكل كتل. تعنيnatural= 800–2500ms. تجاوز لكل وكيل:agents.list[].humanDelay.
مؤشرات الكتابة
- القيم الافتراضية:
instantللدردشات المباشرة/الإشارات، وmessageللدردشات الجماعية غير المشار فيها. - تجاوزات لكل جلسة:
session.typingModeوsession.typingIntervalSeconds.
agents.defaults.sandbox
إعداد اختياري لـ sandbox للوكيل المضمن. راجع Sandboxing للحصول على الدليل الكامل.
تفاصيل sandbox
تفاصيل sandbox
الواجهة الخلفية:وضع OpenShell:
docker: وقت تشغيل Docker محلي (الافتراضي)ssh: وقت تشغيل بعيد عام مدعوم بواسطة SSHopenshell: وقت تشغيل OpenShell
backend: "openshell"، تنتقل الإعدادات الخاصة بوقت التشغيل إلى
plugins.entries.openshell.config.إعداد SSH backend:target: هدف SSH بصيغةuser@host[:port]command: أمر عميل SSH (الافتراضي:ssh)workspaceRoot: جذر بعيد مطلق يُستخدم لمساحات العمل لكل نطاقidentityFile/certificateFile/knownHostsFile: ملفات محلية موجودة مسبقًا تُمرَّر إلى OpenSSHidentityData/certificateData/knownHostsData: محتويات مضمنة أو SecretRefs يقوم OpenClaw بتحويلها إلى ملفات مؤقتة أثناء التشغيلstrictHostKeyChecking/updateHostKeys: مفاتيح سياسة مفاتيح المستضيف في OpenSSH
identityDataيتغلب علىidentityFilecertificateDataيتغلب علىcertificateFileknownHostsDataيتغلب علىknownHostsFile- تُحل قيم
*Dataالمدعومة بواسطة SecretRef من اللقطة النشطة لوقت تشغيل الأسرار قبل بدء جلسة sandbox
- يزرع مساحة العمل البعيدة مرة واحدة بعد الإنشاء أو إعادة الإنشاء
- ثم يُبقي مساحة عمل SSH البعيدة هي القانونية
- ويوجّه
execوأدوات الملفات ومسارات الوسائط عبر SSH - ولا يزامن التغييرات البعيدة إلى المستضيف تلقائيًا
- ولا يدعم حاويات متصفح sandbox
none: مساحة عمل sandbox لكل نطاق تحت~/.openclaw/sandboxesro: مساحة عمل sandbox عند/workspace، مع تركيب مساحة عمل الوكيل للقراءة فقط عند/agentrw: تركيب مساحة عمل الوكيل للقراءة/الكتابة عند/workspace
session: حاوية + مساحة عمل لكل جلسةagent: حاوية + مساحة عمل واحدة لكل وكيل (الافتراضي)shared: حاوية ومساحة عمل مشتركتان (من دون عزل بين الجلسات)
mirror: زرع البعيد من المحلي قبل التنفيذ، ثم المزامنة عكسيًا بعد التنفيذ؛ وتبقى مساحة العمل المحلية هي القانونيةremote: زرع البعيد مرة واحدة عند إنشاء sandbox، ثم إبقاء مساحة العمل البعيدة هي القانونية
remote، لا تُزامَن تعديلات المستضيف المحلية التي تُجرى خارج OpenClaw إلى sandbox تلقائيًا بعد خطوة الزرع.
تكون وسيلة النقل عبر SSH إلى sandbox الخاص بـ OpenShell، لكن Plugin يملك دورة حياة sandbox والمزامنة العكسية الاختيارية.setupCommand يعمل مرة واحدة بعد إنشاء الحاوية (عبر sh -lc). ويحتاج إلى خروج شبكي، وجذر قابل للكتابة، ومستخدم root.تستخدم الحاويات افتراضيًا network: "none" — عيّنها إلى "bridge" (أو شبكة bridge مخصصة) إذا كان الوكيل يحتاج إلى وصول صادر.
تكون "host" محظورة. وتكون "container:<id>" محظورة افتراضيًا ما لم تعيّن صراحةً
sandbox.docker.dangerouslyAllowContainerNamespaceJoin: true (وضع طارئ).تُجهَّز المرفقات الواردة ضمن media/inbound/* في مساحة العمل النشطة.docker.binds يركّب أدلة إضافية من المستضيف؛ ويتم دمج الروابط العامة وتلك الخاصة بكل وكيل.المتصفح داخل sandbox (sandbox.browser.enabled): Chromium + CDP داخل حاوية. يتم حقن عنوان noVNC URL في system prompt. ولا يتطلب browser.enabled في openclaw.json.
يستخدم وصول المراقبة عبر noVNC مصادقة VNC افتراضيًا، ويصدر OpenClaw عنوان URL برمز مميز قصير العمر (بدلًا من كشف كلمة المرور في عنوان URL المشترك).- يؤدي
allowHostControl: false(الافتراضي) إلى حظر استهداف جلسات sandbox للمستعرض الموجود على المستضيف. - تكون القيمة الافتراضية لـ
networkهيopenclaw-sandbox-browser(شبكة bridge مخصصة). اضبطها علىbridgeفقط عندما تريد صراحةً اتصال bridge عامًا. - يقيّد
cdpSourceRangeاختياريًا حركة CDP الواردة عند حافة الحاوية إلى نطاق CIDR (على سبيل المثال172.21.0.1/32). - يقوم
sandbox.browser.bindsبتركيب أدلة إضافية من المستضيف داخل حاوية متصفح sandbox فقط. وعند تعيينه (بما في ذلك[])، فإنه يستبدلdocker.bindsلحاوية المتصفح. - تُعرَّف افتراضيات التشغيل في
scripts/sandbox-browser-entrypoint.shوتُضبط لمستضيفي الحاويات:--remote-debugging-address=127.0.0.1--remote-debugging-port=<derived from OPENCLAW_BROWSER_CDP_PORT>--user-data-dir=${HOME}/.chrome--no-first-run--no-default-browser-check--disable-3d-apis--disable-gpu--disable-software-rasterizer--disable-dev-shm-usage--disable-background-networking--disable-features=TranslateUI--disable-breakpad--disable-crash-reporter--renderer-process-limit=2--no-zygote--metrics-recording-only--disable-extensions(مفعّل افتراضيًا)- تكون
--disable-3d-apisو--disable-software-rasterizerو--disable-gpuمفعّلة افتراضيًا، ويمكن تعطيلها عبرOPENCLAW_BROWSER_DISABLE_GRAPHICS_FLAGS=0إذا كان استخدام WebGL/3D يتطلب ذلك. - يعيد
OPENCLAW_BROWSER_DISABLE_EXTENSIONS=0تفعيل الإضافات إذا كان سير عملك يعتمد عليها. - يمكن تغيير
--renderer-process-limit=2عبرOPENCLAW_BROWSER_RENDERER_PROCESS_LIMIT=<N>؛ اضبطه إلى0لاستخدام حد العمليات الافتراضي في Chromium. - بالإضافة إلى
--no-sandboxو--disable-setuid-sandboxعندما يكونnoSandboxمفعّلًا. - تمثل القيم الافتراضية خط الأساس لصورة الحاوية؛ استخدم صورة متصفح مخصصة مع entrypoint مخصص لتغيير افتراضيات الحاوية.
sandbox.docker.binds على Docker فقط.
أنشئ الصور:
agents.list (تجاوزات لكل وكيل)
id: معرّف وكيل ثابت (مطلوب).default: عند تعيين عدة قيم، يفوز الأول (مع تسجيل تحذير). وإذا لم تُعيَّن أي قيمة، يكون أول إدخال في القائمة هو الافتراضي.model: يتجاوز نموذج السلسلة القيمةprimaryفقط؛ أما نموذج الكائن{ primary, fallbacks }فيتجاوز كليهما ([]يعطّل القيم الاحتياطية العامة). وتظل مهام Cron التي تتجاوزprimaryفقط ترث القيم الاحتياطية الافتراضية ما لم تعيّنfallbacks: [].params: معاملات البث لكل وكيل، وتُدمج فوق إدخال النموذج المحدد فيagents.defaults.models. استخدم هذا لتجاوزات خاصة بالوكيل مثلcacheRetentionأوtemperatureأوmaxTokensمن دون تكرار فهرس النماذج بالكامل.skills: قائمة سماح اختيارية لـ Skills لكل وكيل. إذا حُذفت، يرث الوكيلagents.defaults.skillsعند تعيينها؛ وتستبدل القائمة الصريحة القيم الافتراضية بدلًا من دمجها، وتعني[]عدم وجود Skills.thinkingDefault: مستوى التفكير الافتراضي الاختياري لكل وكيل (off | minimal | low | medium | high | xhigh | adaptive). ويتجاوزagents.defaults.thinkingDefaultلهذا الوكيل عندما لا يكون هناك تجاوز لكل رسالة أو جلسة.reasoningDefault: إظهار الاستدلال الافتراضي الاختياري لكل وكيل (on | off | stream). ويُطبَّق عندما لا يكون هناك تجاوز للاستدلال لكل رسالة أو جلسة.fastModeDefault: القيمة الافتراضية الاختيارية لكل وكيل للوضع السريع (true | false). وتُطبَّق عندما لا يكون هناك تجاوز للوضع السريع لكل رسالة أو جلسة.embeddedHarness: تجاوز اختياري لسياسة harness منخفضة المستوى لكل وكيل. استخدم{ runtime: "codex", fallback: "none" }لجعل أحد الوكلاء يعمل بـ Codex فقط بينما يحتفظ الآخرون بالقيمة الاحتياطية الافتراضية PI.runtime: واصف وقت تشغيل اختياري لكل وكيل. استخدمtype: "acp"مع القيم الافتراضيةruntime.acp(agentوbackendوmodeوcwd) عندما يجب أن يستخدم الوكيل افتراضيًا جلسات ACP harness.identity.avatar: مسار نسبي إلى مساحة العمل، أو عنوان URL من نوعhttp(s)، أو معرّف URI من نوعdata:.- تستمد
identityالقيم الافتراضية:ackReactionمنemoji، وmentionPatternsمنname/emoji. subagents.allowAgents: قائمة سماح لمعرّفات الوكلاء لـsessions_spawn(["*"]= أي وكيل؛ الافتراضي: الوكيل نفسه فقط).- حماية وراثة sandbox: إذا كانت جلسة الطالب داخل sandbox، فإن
sessions_spawnيرفض الأهداف التي ستعمل خارج sandbox. subagents.requireAgentId: عند تعيينه إلى true، يحظر استدعاءاتsessions_spawnالتي تحذفagentId(يفرض اختيار ملف تعريف صريح؛ الافتراضي: false).
توجيه الوكلاء المتعددين
شغّل عدة وكلاء معزولين داخل Gateway واحد. راجع Multi-Agent.حقول المطابقة في Binding
type(اختياري):routeللتوجيه العادي (وعند غياب النوع تكون القيمة الافتراضية route)، وacpلارتباطات المحادثات الدائمة الخاصة بـ ACP.match.channel(مطلوب)match.accountId(اختياري؛*= أي حساب؛ والحذف = الحساب الافتراضي)match.peer(اختياري؛{ kind: direct|group|channel, id })match.guildId/match.teamId(اختياري؛ خاص بالقناة)acp(اختياري؛ فقط لإدخالاتtype: "acp"): { mode, label, cwd, backend }
match.peermatch.guildIdmatch.teamIdmatch.accountId(مطابقة تامة، بلا peer/guild/team)match.accountId: "*"(على مستوى القناة)- الوكيل الافتراضي
bindings.
بالنسبة إلى إدخالات type: "acp"، يحل OpenClaw بالاعتماد على هوية المحادثة الدقيقة (match.channel + الحساب + match.peer.id) ولا يستخدم ترتيب مستويات route binding المذكور أعلاه.
ملفات الوصول لكل وكيل
وصول كامل (من دون sandbox)
وصول كامل (من دون sandbox)
أدوات + مساحة عمل للقراءة فقط
أدوات + مساحة عمل للقراءة فقط
من دون وصول إلى نظام الملفات (مراسلة فقط)
من دون وصول إلى نظام الملفات (مراسلة فقط)
الجلسة
تفاصيل حقول الجلسة
تفاصيل حقول الجلسة
scope: استراتيجية تجميع الجلسات الأساسية لسياقات الدردشة الجماعية.per-sender(الافتراضي): يحصل كل مرسل على جلسة معزولة ضمن سياق القناة.global: يشارك جميع المشاركين في سياق القناة جلسة واحدة (استخدمه فقط عندما يكون المقصود سياقًا مشتركًا).
dmScope: كيفية تجميع الرسائل المباشرة.main: تشترك جميع الرسائل المباشرة في الجلسة الرئيسية.per-peer: العزل حسب معرّف المرسل عبر القنوات.per-channel-peer: العزل لكل قناة + مرسل (موصى به لصناديق الوارد متعددة المستخدمين).per-account-channel-peer: العزل لكل حساب + قناة + مرسل (موصى به لتعدد الحسابات).
identityLinks: يربط المعرّفات القانونية بالنظراء ذوي بادئة المزوّد لمشاركة الجلسات عبر القنوات.reset: سياسة إعادة التعيين الأساسية. يعيدdailyالتعيين عندatHourبالتوقيت المحلي؛ ويعيدidleالتعيين بعدidleMinutes. وعند ضبط كليهما، يفوز الذي تنتهي مدته أولًا.resetByType: تجاوزات حسب النوع (directوgroupوthread). وتُقبلdmالقديمة كاسم بديل لـdirect.parentForkMaxTokens: الحد الأقصى لـtotalTokensالمسموح به في الجلسة الأم عند إنشاء جلسة سلسلة متفرعة (الافتراضي100000).- إذا كانت قيمة
totalTokensفي الجلسة الأم أعلى من هذا الحد، يبدأ OpenClaw جلسة سلسلة جديدة بدلًا من وراثة سجل الجلسة الأم. - عيّن القيمة
0لتعطيل هذه الحماية والسماح دائمًا بالتفرع من الجلسة الأم.
- إذا كانت قيمة
mainKey: حقل قديم. يستخدم وقت التشغيل دائمًا"main"كحاوية الدردشة المباشرة الرئيسية.agentToAgent.maxPingPongTurns: الحد الأقصى لعدد أدوار الرد المتبادل بين الوكلاء أثناء تبادلات وكيل إلى وكيل (عدد صحيح، النطاق:0–5). تؤدي0إلى تعطيل تسلسل ping-pong.sendPolicy: المطابقة حسبchannel، وchatType(direct|group|channel، مع الاسم البديل القديمdm)، أوkeyPrefix، أوrawKeyPrefix. يفوز أول رفض.maintenance: عناصر التحكم في تنظيف مخزن الجلسات والاحتفاظ بها.mode: يؤديwarnإلى إصدار تحذيرات فقط؛ ويطبقenforceالتنظيف.pruneAfter: حد العمر للإدخالات القديمة (الافتراضي30d).maxEntries: الحد الأقصى لعدد الإدخالات فيsessions.json(الافتراضي500).rotateBytes: تدويرsessions.jsonعندما يتجاوز هذا الحجم (الافتراضي10mb).resetArchiveRetention: مدة الاحتفاظ بأرشيفات النصوص*.reset.<timestamp>. وتكون افتراضيًا مساوية لـpruneAfter؛ اضبطها علىfalseللتعطيل.maxDiskBytes: ميزانية قرص اختيارية لدليل الجلسات. في وضعwarnتسجَّل تحذيرات؛ وفي وضعenforceتُزال أقدم الملفات/الجلسات أولًا.highWaterBytes: هدف اختياري بعد تنظيف الميزانية. ويكون افتراضيًا80%منmaxDiskBytes.
threadBindings: القيم الافتراضية العامة لميزات الجلسات المرتبطة بالسلاسل.enabled: مفتاح افتراضي رئيسي (يمكن للمزوّدين تجاوزه؛ يستخدم Discord القيمةchannels.discord.threadBindings.enabled)idleHours: القيمة الافتراضية لإلغاء التركيز التلقائي بعد عدم النشاط، بالساعات (0للتعطيل؛ ويمكن للمزوّدين تجاوزها)maxAgeHours: القيمة الافتراضية للحد الأقصى الصارم للعمر، بالساعات (0للتعطيل؛ ويمكن للمزوّدين تجاوزها)
الرسائل
بادئة الاستجابة
تجاوزات لكل قناة/حساب:channels.<channel>.responsePrefix وchannels.<channel>.accounts.<id>.responsePrefix.
آلية الحل (الأكثر تحديدًا يفوز): الحساب → القناة → العام. تؤدي "" إلى التعطيل وإيقاف التسلسل. وتشتق "auto" القيمة [{identity.name}].
متغيرات القالب:
| المتغير | الوصف | مثال |
|---|---|---|
{model} | الاسم المختصر للنموذج | claude-opus-4-6 |
{modelFull} | معرّف النموذج الكامل | anthropic/claude-opus-4-6 |
{provider} | اسم المزوّد | anthropic |
{thinkingLevel} | مستوى التفكير الحالي | high، low، off |
{identity.name} | اسم هوية الوكيل | (مثل "auto") |
{think} اسمًا بديلًا لـ {thinkingLevel}.
تفاعل التأكيد
- تكون القيمة الافتراضية هي
identity.emojiالخاصة بالوكيل النشط، وإلا"👀". عيّن""للتعطيل. - تجاوزات لكل قناة:
channels.<channel>.ackReactionوchannels.<channel>.accounts.<id>.ackReaction. - ترتيب الحل: الحساب → القناة →
messages.ackReaction→ الاحتياط المستند إلى الهوية. - النطاق:
group-mentions(الافتراضي) وgroup-allوdirectوall. - يؤدي
removeAckAfterReplyإلى إزالة التأكيد بعد الرد في Slack وDiscord وTelegram. - يفعّل
messages.statusReactions.enabledتفاعلات الحالة خلال دورة الحياة في Slack وDiscord وTelegram. وفي Slack وDiscord، يؤدي عدم التعيين إلى إبقاء تفاعلات الحالة مفعّلة عندما تكون تفاعلات التأكيد نشطة. وفي Telegram، عيّنه صراحةً إلىtrueلتفعيل تفاعلات الحالة خلال دورة الحياة.
إزالة الارتداد للرسائل الواردة
تجمع الرسائل النصية السريعة من المرسل نفسه في دور وكيل واحد. وتؤدي الوسائط/المرفقات إلى التفريغ فورًا. وتتجاوز أوامر التحكم إزالة الارتداد.TTS (تحويل النص إلى كلام)
- يتحكم
autoفي وضع TTS التلقائي الافتراضي:offأوalwaysأوinboundأوtagged. ويمكن أن يتجاوز/tts on|offالتفضيلات المحلية، بينما يعرض/tts statusالحالة الفعلية. - يتجاوز
summaryModelالقيمةagents.defaults.model.primaryللتلخيص التلقائي. - يكون
modelOverridesمفعّلًا افتراضيًا؛ وتكون القيمة الافتراضية لـmodelOverrides.allowProviderهيfalse(تفعيل اختياري). - تعود مفاتيح API إلى
ELEVENLABS_API_KEY/XI_API_KEYوOPENAI_API_KEY. - يتجاوز
openai.baseUrlنقطة نهاية OpenAI TTS. ترتيب الحل هو: الإعدادات، ثمOPENAI_TTS_BASE_URL، ثمhttps://api.openai.com/v1. - عندما يشير
openai.baseUrlإلى نقطة نهاية غير تابعة لـ OpenAI، يتعامل OpenClaw معها على أنها خادم TTS متوافق مع OpenAI ويخفف التحقق من النموذج/الصوت.
Talk
الإعدادات الافتراضية لوضع Talk (macOS/iOS/Android).- يجب أن يطابق
talk.providerمفتاحًا فيtalk.providersعند إعداد عدة مزوّدين لـ Talk. - مفاتيح Talk القديمة المسطحة (
talk.voiceIdوtalk.voiceAliasesوtalk.modelIdوtalk.outputFormatوtalk.apiKey) مخصصة للتوافق فقط، وتُرحَّل تلقائيًا إلىtalk.providers.<provider>. - تعود معرّفات الأصوات إلى
ELEVENLABS_VOICE_IDأوSAG_VOICE_ID. - يقبل
providers.*.apiKeyسلاسل نصية صريحة أو كائنات SecretRef. - لا يُطبَّق الاحتياطي
ELEVENLABS_API_KEYإلا عندما لا يكون مفتاح API الخاص بـ Talk مُعدًّا. - يتيح
providers.*.voiceAliasesلتوجيهات Talk استخدام أسماء سهلة. - يتحكم
silenceTimeoutMsفي مدة انتظار وضع Talk بعد صمت المستخدم قبل إرسال النص المفرغ. وعند عدم تعيينه، تُستخدم نافذة التوقف الافتراضية الخاصة بالمنصة (700 ms على macOS وAndroid، و900 ms على iOS).
الأدوات
ملفات تعريف الأدوات
يضبطtools.profile قائمة سماح أساسية قبل tools.allow/tools.deny:
تضبط عملية الإعداد المحلية الافتراضية للإعدادات المحلية الجديدة tools.profile: "coding" عندما لا يكون معينًا (وتُحفَظ ملفات التعريف الصريحة الحالية).
| ملف التعريف | يتضمن |
|---|---|
minimal | session_status فقط |
coding | group:fs وgroup:runtime وgroup:web وgroup:sessions وgroup:memory وcron وimage وimage_generate وvideo_generate |
messaging | group:messaging وsessions_list وsessions_history وsessions_send وsession_status |
full | بلا قيود (مثل عدم التعيين) |
مجموعات الأدوات
| المجموعة | الأدوات |
|---|---|
group:runtime | exec وprocess وcode_execution (bash مقبول كاسم بديل لـ exec) |
group:fs | read وwrite وedit وapply_patch |
group:sessions | sessions_list وsessions_history وsessions_send وsessions_spawn وsessions_yield وsubagents وsession_status |
group:memory | memory_search وmemory_get |
group:web | web_search وx_search وweb_fetch |
group:ui | browser وcanvas |
group:automation | cron وgateway |
group:messaging | message |
group:nodes | nodes |
group:agents | agents_list |
group:media | image وimage_generate وvideo_generate وtts |
group:openclaw | جميع الأدوات المضمنة (باستثناء Plugin الخاصة بالمزوّد) |
tools.allow / tools.deny
سياسة السماح/المنع العامة للأدوات (المنع يفوز). غير حساسة لحالة الأحرف، وتدعم أحرف البدل *. وتُطبَّق حتى عندما يكون Docker sandbox معطّلًا.
tools.byProvider
تقييد إضافي للأدوات لمزوّدين أو نماذج محددة. الترتيب: ملف التعريف الأساسي → ملف تعريف المزوّد → السماح/المنع.
tools.elevated
يتحكم في وصول exec المرتفع خارج sandbox:
- لا يمكن لتجاوز كل وكيل (
agents.list[].tools.elevated) إلا أن يضيف مزيدًا من التقييد. - يخزن
/elevated on|off|ask|fullالحالة لكل جلسة؛ وتُطبَّق التوجيهات المضمنة على رسالة واحدة فقط. - يتجاوز
execالمرتفع العزل في sandbox ويستخدم مسار الهروب المهيأ (gatewayافتراضيًا، أوnodeعندما يكون هدف exec هوnode).
tools.exec
tools.loopDetection
تكون فحوصات أمان حلقات الأدوات معطلة افتراضيًا. عيّن enabled: true لتفعيل الاكتشاف.
يمكن تعريف الإعدادات عالميًا في tools.loopDetection وتجاوزها لكل وكيل في agents.list[].tools.loopDetection.
historySize: الحد الأقصى لسجل استدعاءات الأدوات المحتفظ به لتحليل الحلقات.warningThreshold: حد نمط التكرار بلا تقدم لإصدار التحذيرات.criticalThreshold: حد تكرار أعلى لحظر الحلقات الحرجة.globalCircuitBreakerThreshold: حد إيقاف صارم لأي تشغيل بلا تقدم.detectors.genericRepeat: يحذر من الاستدعاءات المتكررة للأداة نفسها/المعاملات نفسها.detectors.knownPollNoProgress: يحذر/يحظر أدوات الاستطلاع المعروفة (process.pollوcommand_statusوما إلى ذلك).detectors.pingPong: يحذر/يحظر أنماط الأزواج المتناوبة بلا تقدم.- إذا كان
warningThreshold >= criticalThresholdأوcriticalThreshold >= globalCircuitBreakerThreshold، يفشل التحقق.
tools.web
tools.media
يضبط فهم الوسائط الواردة (صورة/صوت/فيديو):
حقول إدخال نموذج الوسائط
حقول إدخال نموذج الوسائط
إدخال المزوّد (
type: "provider" أو عند الحذف):provider: معرّف مزوّد API (openaiأوanthropicأوgoogle/geminiأوgroqوما إلى ذلك)model: تجاوز معرّف النموذجprofile/preferredProfile: اختيار ملف تعريف منauth-profiles.json
type: "cli"):command: الملف التنفيذي المطلوب تشغيلهargs: معاملات ذات قوالب (تدعم{{MediaPath}}و{{Prompt}}و{{MaxChars}}وما إلى ذلك)
capabilities: قائمة اختيارية (imageأوaudioأوvideo). القيم الافتراضية:openai/anthropic/minimax← صورة، وgoogle← صورة+صوت+فيديو، وgroq← صوت.promptوmaxCharsوmaxBytesوtimeoutSecondsوlanguage: تجاوزات لكل إدخال.- تؤدي الإخفاقات إلى الرجوع إلى الإدخال التالي.
auth-profiles.json → متغيرات البيئة → models.providers.*.apiKey.حقول الإكمال غير المتزامن:asyncCompletion.directSend: عند تعيينه إلىtrue، تحاول مهامmusic_generateوvideo_generateغير المتزامنة المكتملة التسليم المباشر إلى القناة أولًا. الافتراضي:false(مسار wake/model-delivery القديم المعتمد على جلسة الطالب).
tools.agentToAgent
tools.sessions
يتحكم في الجلسات التي يمكن استهدافها بواسطة أدوات الجلسة (sessions_list وsessions_history وsessions_send).
الافتراضي: tree (الجلسة الحالية + الجلسات التي أنشأتها، مثل الوكلاء الفرعيين).
self: مفتاح الجلسة الحالية فقط.tree: الجلسة الحالية + الجلسات التي أنشأتها الجلسة الحالية (الوكلاء الفرعيون).agent: أي جلسة تنتمي إلى معرّف الوكيل الحالي (وقد يشمل ذلك مستخدمين آخرين إذا كنت تستخدم جلسات per-sender تحت معرّف الوكيل نفسه).all: أي جلسة. وما يزال الاستهداف عبر الوكلاء يتطلبtools.agentToAgent.- تقييد sandbox: عندما تكون الجلسة الحالية داخل sandbox ويكون
agents.defaults.sandbox.sessionToolsVisibility="spawned"، تُفرض القيمةtreeعلى مستوى الرؤية حتى لو كانtools.sessions.visibility="all".
tools.sessions_spawn
يتحكم في دعم المرفقات المضمنة لـ sessions_spawn.
- لا تُدعَم المرفقات إلا مع
runtime: "subagent". ويرفض وقت تشغيل ACP هذه المرفقات. - تُحوَّل الملفات إلى مساحة عمل الابن في
.openclaw/attachments/<uuid>/مع.manifest.json. - يُحجَب محتوى المرفقات تلقائيًا من حفظ السجل.
- تُتحقق مدخلات Base64 باستخدام فحوص صارمة للأبجدية/الحشو وحارس حجم قبل فك الترميز.
- تكون صلاحيات الملفات
0700للأدلة و0600للملفات. - يتبع التنظيف سياسة
cleanup: يزيلdeleteالمرفقات دائمًا؛ بينما يحتفظkeepبها فقط عندما يكونretainOnSessionKeep: true.
tools.experimental
أعلام الأدوات المضمنة التجريبية. تكون معطلة افتراضيًا ما لم تنطبق قاعدة تفعيل تلقائي صارمة لوضع GPT-5 الوكيلي.
planTool: يفعّل الأداة المهيكلةupdate_planلتتبع العمل غير البسيط متعدد الخطوات.- الافتراضي:
falseما لم تكنagents.defaults.embeddedPi.executionContract(أو تجاوز لكل وكيل) مضبوطة على"strict-agentic"في تشغيل OpenAI أو OpenAI Codex من عائلة GPT-5. عيّنه إلىtrueلفرض تشغيل الأداة خارج ذلك النطاق، أو إلىfalseلإبقائها معطلة حتى في تشغيلات GPT-5 الصارمة الوكيلية. - عند التفعيل، تضيف system prompt أيضًا إرشادات استخدام بحيث يستخدمها النموذج فقط للأعمال الكبيرة ويحافظ على خطوة واحدة فقط كحد أقصى في حالة
in_progress.
agents.defaults.subagents
model: النموذج الافتراضي للوكلاء الفرعيين الذين تم إنشاؤهم. وإذا حُذف، يرث الوكلاء الفرعيون نموذج المستدعي.allowAgents: قائمة السماح الافتراضية لمعرّفات الوكلاء المستهدفة فيsessions_spawnعندما لا يعيّن الوكيل الطالب قيمةsubagents.allowAgentsالخاصة به (["*"]= أي وكيل؛ الافتراضي: الوكيل نفسه فقط).runTimeoutSeconds: المهلة الافتراضية (بالثواني) لـsessions_spawnعندما يحذف استدعاء الأداةrunTimeoutSeconds. وتعني0عدم وجود مهلة.- سياسة الأدوات لكل وكيل فرعي:
tools.subagents.tools.allow/tools.subagents.tools.deny.
المزوّدون المخصصون وعناوين URL الأساسية
يستخدم OpenClaw فهرس النماذج المضمن. أضف مزوّدين مخصصين عبرmodels.providers في الإعدادات أو ~/.openclaw/agents/<agentId>/agent/models.json.
- استخدم
authHeader: true+headersلاحتياجات المصادقة المخصصة. - تجاوز جذر إعداد الوكيل باستخدام
OPENCLAW_AGENT_DIR(أوPI_CODING_AGENT_DIR، وهو اسم قديم بديل لمتغير البيئة). - أولوية الدمج لمعرّفات المزوّد المطابقة:
- تفوز قيم
baseUrlغير الفارغة فيmodels.jsonالخاصة بالوكيل. - تفوز قيم
apiKeyغير الفارغة الخاصة بالوكيل فقط عندما لا يكون ذلك المزوّد مُدارًا بواسطة SecretRef في سياق الإعداد/ملف تعريف المصادقة الحالي. - تُحدَّث قيم
apiKeyالخاصة بالمزوّد المُدار بواسطة SecretRef من علامات المصدر (ENV_VAR_NAMEلإحالات البيئة، وsecretref-managedلإحالات الملف/التنفيذ) بدلًا من حفظ الأسرار المحلولة. - تُحدَّث قيم الرؤوس الخاصة بالمزوّد المُدار بواسطة SecretRef من علامات المصدر (
secretref-env:ENV_VAR_NAMEلإحالات البيئة، وsecretref-managedلإحالات الملف/التنفيذ). - تعود القيم الفارغة أو المفقودة لـ
apiKey/baseUrlالخاصة بالوكيل إلىmodels.providersفي الإعدادات. - تستخدم القيم المطابقة
contextWindow/maxTokensللنموذج القيمة الأعلى بين الإعداد الصريح وقيم الفهرس الضمنية. - تحافظ القيم المطابقة
contextTokensللنموذج على حد تشغيل صريح عندما يكون موجودًا؛ استخدمه لتقييد السياق الفعلي دون تغيير بيانات التعريف الأصلية للنموذج. - استخدم
models.mode: "replace"عندما تريد من الإعدادات إعادة كتابةmodels.jsonبالكامل. - يكون حفظ العلامات معتمدًا على المصدر: تُكتب العلامات من لقطة إعداد المصدر النشطة (قبل الحل)، وليس من قيم الأسرار المحلولة أثناء التشغيل.
- تفوز قيم
تفاصيل حقول المزوّد
models.mode: سلوك فهرس المزوّد (mergeأوreplace).models.providers: خريطة مزوّدين مخصصين مفهرسة بمعرّف المزوّد.models.providers.*.api: مهايئ الطلب (openai-completionsأوopenai-responsesأوanthropic-messagesأوgoogle-generative-aiوما إلى ذلك).models.providers.*.apiKey: بيانات اعتماد المزوّد (يُفضّل SecretRef/الاستبدال من البيئة).models.providers.*.auth: استراتيجية المصادقة (api-keyأوtokenأوoauthأوaws-sdk).models.providers.*.injectNumCtxForOpenAICompat: بالنسبة إلى Ollama +openai-completions، يحقنoptions.num_ctxفي الطلبات (الافتراضي:true).models.providers.*.authHeader: يفرض نقل بيانات الاعتماد في رأسAuthorizationعند الحاجة.models.providers.*.baseUrl: عنوان URL الأساسي لواجهة API في المصدر.models.providers.*.headers: رؤوس ثابتة إضافية لتوجيه الوكيل/المستأجر.models.providers.*.request: تجاوزات النقل لطلبات HTTP الخاصة بمزوّد النموذج.request.headers: رؤوس إضافية (تُدمج مع القيم الافتراضية للمزوّد). وتقبل القيم SecretRef.request.auth: تجاوز استراتيجية المصادقة. الأوضاع:"provider-default"(استخدام المصادقة المضمنة الخاصة بالمزوّد)، و"authorization-bearer"(معtoken)، و"header"(معheaderNameوvalueوprefixالاختياري).request.proxy: تجاوز وكيل HTTP. الأوضاع:"env-proxy"(استخدام متغيرات البيئةHTTP_PROXY/HTTPS_PROXY)، و"explicit-proxy"(معurl). ويقبل كلا الوضعين كائنًا فرعيًا اختياريًاtls.request.tls: تجاوز TLS للاتصالات المباشرة. الحقول:caوcertوkeyوpassphrase(كلها تقبل SecretRef) وserverNameوinsecureSkipVerify.request.allowPrivateNetwork: عند تعيينه إلىtrue، يسمح باتصالات HTTPS إلىbaseUrlعندما يُحل DNS إلى نطاقات خاصة أو CGNAT أو نطاقات مشابهة، عبر حارس جلب HTTP الخاص بالمزوّد (تفعيل اختياري للمشغّل لنقاط النهاية المتوافقة مع OpenAI والمستضافة ذاتيًا والموثوق بها). وتستخدم WebSocket الكائنrequestنفسه للرؤوس/TLS ولكن ليس بوابة SSRF الخاصة بالجلب. الافتراضيfalse.
models.providers.*.models: إدخالات صريحة لفهرس نماذج المزوّد.models.providers.*.models.*.contextWindow: بيانات تعريف نافذة السياق الأصلية للنموذج.models.providers.*.models.*.contextTokens: حد سياق اختياري أثناء التشغيل. استخدمه عندما تريد ميزانية سياق فعلية أصغر منcontextWindowالأصلية للنموذج.models.providers.*.models.*.compat.supportsDeveloperRole: تلميح توافق اختياري. بالنسبة إلىapi: "openai-completions"معbaseUrlغير فارغ وغير أصلي (المستضيف ليسapi.openai.com)، يفرض OpenClaw هذه القيمة إلىfalseأثناء التشغيل. أماbaseUrlالفارغ/المحذوف فيبقي سلوك OpenAI الافتراضي.models.providers.*.models.*.compat.requiresStringContent: تلميح توافق اختياري لنقاط نهاية الدردشة المتوافقة مع OpenAI والتي تقبل السلاسل فقط. وعندما تكونtrue، يقوم OpenClaw بتسطيح مصفوفاتmessages[].contentالنصية الخالصة إلى سلاسل عادية قبل إرسال الطلب.plugins.entries.amazon-bedrock.config.discovery: جذر إعدادات الاكتشاف التلقائي لـ Bedrock.plugins.entries.amazon-bedrock.config.discovery.enabled: تشغيل/إيقاف الاكتشاف الضمني.plugins.entries.amazon-bedrock.config.discovery.region: منطقة AWS للاكتشاف.plugins.entries.amazon-bedrock.config.discovery.providerFilter: مرشح اختياري لمعرّف المزوّد من أجل اكتشاف موجّه.plugins.entries.amazon-bedrock.config.discovery.refreshInterval: فاصل الاستطلاع لتحديث الاكتشاف.plugins.entries.amazon-bedrock.config.discovery.defaultContextWindow: نافذة السياق الاحتياطية للنماذج المكتشفة.plugins.entries.amazon-bedrock.config.discovery.defaultMaxTokens: الحد الاحتياطي الأقصى لرموز المخرجات للنماذج المكتشفة.
أمثلة على المزوّدين
Cerebras (GLM 4.6 / 4.7)
Cerebras (GLM 4.6 / 4.7)
cerebras/zai-glm-4.7 مع Cerebras؛ واستخدم zai/glm-4.7 مع Z.AI مباشرةً.OpenCode
OpenCode
OPENCODE_API_KEY (أو OPENCODE_ZEN_API_KEY). استخدم المراجع opencode/... لفهرس Zen أو المراجع opencode-go/... لفهرس Go. اختصار: openclaw onboard --auth-choice opencode-zen أو openclaw onboard --auth-choice opencode-go.Z.AI (GLM-4.7)
Z.AI (GLM-4.7)
ZAI_API_KEY. وتُقبل z.ai/* وz-ai/* كأسماء مستعارة. اختصار: openclaw onboard --auth-choice zai-api-key.- نقطة النهاية العامة:
https://api.z.ai/api/paas/v4 - نقطة نهاية البرمجة (الافتراضية):
https://api.z.ai/api/coding/paas/v4 - بالنسبة إلى نقطة النهاية العامة، عرّف مزودًا مخصصًا مع تجاوز
baseUrl.
Moonshot AI (Kimi)
Moonshot AI (Kimi)
baseUrl: "https://api.moonshot.cn/v1" أو openclaw onboard --auth-choice moonshot-api-key-cn.تعلن نقاط النهاية الأصلية لـ Moonshot عن توافق استخدام البث على النقل المشترك
openai-completions، ويعتمد OpenClaw في ذلك على قدرات نقطة النهاية
وليس على معرّف المزوّد المضمن وحده.Kimi Coding
Kimi Coding
openclaw onboard --auth-choice kimi-code-api-key.Synthetic (متوافق مع Anthropic)
Synthetic (متوافق مع Anthropic)
/v1 (لأن عميل Anthropic يضيفه). اختصار: openclaw onboard --auth-choice synthetic-api-key.MiniMax M2.7 (مباشر)
MiniMax M2.7 (مباشر)
MINIMAX_API_KEY. الاختصارات:
openclaw onboard --auth-choice minimax-global-api أو
openclaw onboard --auth-choice minimax-cn-api.
يفترض فهرس النماذج القيمة M2.7 فقط.
في مسار البث المتوافق مع Anthropic، يعطّل OpenClaw التفكير في MiniMax
افتراضيًا ما لم تعيّن thinking بنفسك صراحةً. ويعيد /fast on أو
params.fastMode: true كتابة MiniMax-M2.7 إلى
MiniMax-M2.7-highspeed.النماذج المحلية (LM Studio)
النماذج المحلية (LM Studio)
راجع Local Models. باختصار: شغّل نموذجًا محليًا كبيرًا عبر LM Studio Responses API على عتاد قوي؛ وأبقِ النماذج المستضافة مدمجة من أجل الاحتياط.
Skills
allowBundled: قائمة سماح اختيارية لـ Skills المضمنة فقط (ولا تتأثر Skills المُدارة/الخاصة بمساحة العمل).load.extraDirs: جذور Skills مشتركة إضافية (أدنى أولوية).install.preferBrew: عند تعيينه إلى true، يفضّل أدوات التثبيت عبر Homebrew عندما يكونbrewمتاحًا قبل الرجوع إلى أنواع أدوات التثبيت الأخرى.install.nodeManager: تفضيل مُثبّت Node لمواصفاتmetadata.openclaw.install(npm|pnpm|yarn|bun).- يؤدي
entries.<skillKey>.enabled: falseإلى تعطيل Skill حتى لو كانت مضمّنة/مثبّتة. entries.<skillKey>.apiKey: عنصر مناسب لـ Skills التي تعرّف متغير بيئة أساسيًا (سلسلة نصية صريحة أو كائن SecretRef).
Plugins
- يتم التحميل من
~/.openclaw/extensionsو<workspace>/.openclaw/extensionsبالإضافة إلىplugins.load.paths. - يقبل الاكتشاف Plugin الأصلية لـ OpenClaw بالإضافة إلى حزم Codex المتوافقة وحزم Claude، بما في ذلك حزم Claude ذات التخطيط الافتراضي من دون manifest.
- تتطلب تغييرات الإعدادات إعادة تشغيل gateway.
allow: قائمة سماح اختيارية (يتم تحميل Plugin المدرجة فقط). ويفوزdeny.plugins.entries.<id>.apiKey: حقل مناسب لمفتاح API على مستوى Plugin (عندما يكون مدعومًا من Plugin).plugins.entries.<id>.env: خريطة متغيرات بيئة ضمن نطاق Plugin.plugins.entries.<id>.hooks.allowPromptInjection: عندما تكون القيمةfalse، يحظر core الحدثbefore_prompt_buildويتجاهل الحقول القديمة المعدّلة لـ prompt منbefore_agent_start، مع الحفاظ علىmodelOverrideوproviderOverrideالقديمين. وينطبق ذلك على hooks الأصلية لـ Plugin وعلى أدلة hooks التي توفّرها الحزم المدعومة.plugins.entries.<id>.subagent.allowModelOverride: وثّق هذه Plugin صراحةً لطلب تجاوزاتproviderوmodelلكل تشغيل بالنسبة إلى تشغيلات الوكلاء الفرعيين في الخلفية.plugins.entries.<id>.subagent.allowedModels: قائمة سماح اختيارية لأهدافprovider/modelالقانونية الخاصة بتجاوزات الوكلاء الفرعيين الموثوق بها. استخدم"*"فقط عندما تريد عمدًا السماح بأي نموذج.plugins.entries.<id>.config: كائن إعدادات معرّف من Plugin (ويُتحقق منه بواسطة مخطط Plugin الأصلي لـ OpenClaw عندما يكون متاحًا).plugins.entries.firecrawl.config.webFetch: إعدادات مزوّد Firecrawl لجلب الويب.apiKey: مفتاح API لـ Firecrawl (يقبل 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: الحد الأقصى لعمر cache بالميلي ثانية (الافتراضي: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 * * *"افتراضيًا).- سياسة المراحل والحدود هي تفاصيل تنفيذية (وليست مفاتيح إعدادات موجّهة للمستخدم).
- يوجد إعداد الذاكرة الكامل في مرجع إعدادات الذاكرة:
agents.defaults.memorySearch.*memory.backendmemory.citationsmemory.qmd.*plugins.entries.memory-core.config.dreaming
- يمكن أيضًا لحزم Claude المفعّلة أن تساهم بقيم Pi افتراضية مضمنة من
settings.json؛ ويطبّق OpenClaw هذه القيم كإعدادات وكيل منقّحة، وليس كتصحيحات خام لإعدادات OpenClaw. plugins.slots.memory: اختر معرّف Plugin الذاكرة النشطة، أو"none"لتعطيل Plugin الذاكرة.plugins.slots.contextEngine: اختر معرّف Plugin لمحرك السياق النشط؛ وتكون القيمة الافتراضية"legacy"ما لم تثبّت وتحدد محركًا آخر.plugins.installs: بيانات تعريف التثبيت التي يديرها CLI وتستخدمهاopenclaw plugins update.- تتضمن
sourceوspecوsourcePathوinstallPathوversionوresolvedNameوresolvedVersionوresolvedSpecوintegrityوshasumوresolvedAtوinstalledAt. - تعامل مع
plugins.installs.*على أنها حالة مُدارة؛ وفضّل أوامر CLI بدلًا من التعديلات اليدوية.
- تتضمن
المتصفح
- يؤدي
evaluateEnabled: falseإلى تعطيلact:evaluateوwait --fn. - يكون
ssrfPolicy.dangerouslyAllowPrivateNetworkمعطّلًا عندما لا يُعيَّن، لذلك يبقى تنقل المتصفح صارمًا افتراضيًا. - عيّن
ssrfPolicy.dangerouslyAllowPrivateNetwork: trueفقط عندما تثق عمدًا في تنقل المتصفح عبر الشبكات الخاصة. - في الوضع الصارم، تخضع نقاط نهاية ملفات تعريف CDP البعيدة (
profiles.*.cdpUrl) لنفس حظر الشبكات الخاصة أثناء فحوصات الوصول/الاكتشاف. - يظل
ssrfPolicy.allowPrivateNetworkمدعومًا كاسم بديل قديم. - في الوضع الصارم، استخدم
ssrfPolicy.hostnameAllowlistوssrfPolicy.allowedHostnamesللاستثناءات الصريحة. - تكون ملفات التعريف البعيدة بنمط الإرفاق فقط (start/stop/reset معطّلة).
- تقبل
profiles.*.cdpUrlالقيمhttp://وhttps://وws://وwss://. استخدم HTTP(S) عندما تريد أن يكتشف OpenClaw المسار/json/version؛ واستخدم WS(S) عندما يوفّر لك مزوّدك عنوان DevTools WebSocket مباشرًا. - تكون ملفات تعريف
existing-sessionخاصة بالمستضيف فقط وتستخدم Chrome MCP بدلًا من CDP. - يمكن لملفات تعريف
existing-sessionتعيينuserDataDirلاستهداف ملف تعريف محدد لمتصفح مبني على Chromium مثل Brave أو Edge. - تحتفظ ملفات تعريف
existing-sessionبحدود مسار Chrome MCP الحالية: إجراءات موجّهة باللقطات/المراجع بدلًا من الاستهداف بمحددات CSS، وخطافات رفع ملف واحد، ومن دون تجاوزات مهلة الحوارات، ومن دونwait --load networkidle، ومن دونresponsebodyأو تصدير PDF أو اعتراض التنزيل أو الإجراءات الدفعية. - تعيّن ملفات تعريف
openclawالمحلية المُدارة تلقائيًاcdpPortوcdpUrl؛ ولا تعيّنcdpUrlصراحةً إلا لـ CDP البعيد. - ترتيب الاكتشاف التلقائي: المتصفح الافتراضي إذا كان مبنيًا على Chromium → Chrome → Brave → Edge → Chromium → Chrome Canary.
- خدمة التحكم: loopback فقط (المنفذ مشتق من
gateway.port، والافتراضي18791). - يضيف
extraArgsرايات تشغيل إضافية إلى بدء Chromium المحلي (على سبيل المثال--disable-gpuأو تحديد حجم النافذة أو رايات التصحيح).
UI
seamColor: لون التمييز لعناصر واجهة التطبيق الأصلية (مثل تلوين فقاعة Talk Mode، وما إلى ذلك).assistant: تجاوز هوية Control UI. ويعود احتياطيًا إلى هوية الوكيل النشط.
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.- الأسماء البديلة القديمة لـ bind: استخدم قيم وضع bind في
gateway.bind(autoوloopbackوlanوtailnetوcustom)، وليس أسماء المستضيف البديلة (0.0.0.0و127.0.0.1وlocalhostو::و::1). - ملاحظة Docker: يستمع bind الافتراضي
loopbackعلى127.0.0.1داخل الحاوية. ومع شبكات Docker bridge (-p 18789:18789)، تصل الحركة إلىeth0، لذلك يصبح gateway غير قابل للوصول. استخدم--network host، أو عيّنbind: "lan"(أوbind: "custom"معcustomBindHost: "0.0.0.0") للاستماع على جميع الواجهات. - المصادقة: مطلوبة افتراضيًا. تتطلب bind غير loopback مصادقة gateway. وعمليًا، يعني ذلك رمزًا مشتركًا/كلمة مرور مشتركة أو وكيلًا عكسيًا مدركًا للهوية مع
gateway.auth.mode: "trusted-proxy". ويولّد معالج الإعداد رمزًا افتراضيًا. - إذا كان كل من
gateway.auth.tokenوgateway.auth.passwordمهيأين (بما في ذلك SecretRefs)، فعيّنgateway.auth.modeصراحةً إلىtokenأوpassword. وتفشل تدفقات بدء التشغيل وتثبيت/إصلاح الخدمة عندما يكون كلاهما مهيأين ويكون mode غير معيّن. gateway.auth.mode: "none": وضع صريح بلا مصادقة. استخدمه فقط مع إعدادات local loopback الموثوق بها؛ وهذا غير معروض عمدًا في مطالبات الإعداد.gateway.auth.mode: "trusted-proxy": فوّض المصادقة إلى وكيل عكسي مدرك للهوية ووثّق رؤوس الهوية منgateway.trustedProxies(راجع Trusted Proxy Auth). يتوقع هذا الوضع مصدر وكيل غير loopback؛ إذ لا تلبّي الوكلاء العكسية ذات loopback على المستضيف نفسه مصادقة trusted-proxy.gateway.auth.allowTailscale: عند تعيينه إلىtrue، يمكن لرؤوس هوية Tailscale Serve استيفاء مصادقة Control UI/WebSocket (بعد التحقق عبرtailscale whois). ولا تستخدم نقاط نهاية HTTP API مصادقة رؤوس Tailscale تلك؛ بل تتبع وضع مصادقة HTTP العادي الخاص بـ gateway بدلًا من ذلك. ويفترض هذا التدفق من دون رمز أن مستضيف gateway موثوق. وتكون القيمة الافتراضيةtrueعندما يكونtailscale.mode = "serve".gateway.auth.rateLimit: محدّد اختياري لمحاولات المصادقة الفاشلة. ويُطبَّق لكل IP عميل ولكل نطاق مصادقة (يُتتبَّع السر المشترك ورمز الجهاز مستقلين عن بعضهما). وتعيد المحاولات المحظورة429+Retry-After.- في مسار Tailscale Serve غير المتزامن الخاص بـ Control UI، تُسلسل المحاولات الفاشلة لنفس
{scope, clientIp}قبل كتابة الفشل. لذلك يمكن للمحاولات السيئة المتزامنة من العميل نفسه أن تفعّل المحدِّد عند الطلب الثاني بدلًا من أن يمر الاثنان على أنهما عدم تطابق عادي. - تكون القيمة الافتراضية لـ
gateway.auth.rateLimit.exemptLoopbackهيtrue؛ عيّنها إلىfalseعندما تريد عمدًا تطبيق تحديد المعدل على حركة localhost أيضًا (لإعدادات الاختبار أو عمليات نشر الوكيل الصارمة).
- في مسار Tailscale Serve غير المتزامن الخاص بـ Control UI، تُسلسل المحاولات الفاشلة لنفس
- تُخفَّض دائمًا محاولات مصادقة WS ذات أصل المتصفح مع تعطيل إعفاء loopback (كإجراء دفاعي إضافي ضد الهجمات بالقوة الغاشمة على localhost انطلاقًا من المتصفح).
- على loopback، تُعزَل حالات القفل ذات الأصل من المتصفح بحسب قيمة
Originالمطَبَّعة، بحيث لا تؤدي الإخفاقات المتكررة من أصل localhost واحد تلقائيًا إلى قفل أصل مختلف. tailscale.mode: serve(tailnet فقط، مع bind loopback) أوfunnel(عام، ويتطلب مصادقة).controlUi.allowedOrigins: قائمة سماح صريحة لأصول المتصفح من أجل اتصالات WebSocket بـ Gateway. وهي مطلوبة عندما يُتوقع وجود عملاء متصفح من أصول غير loopback.controlUi.dangerouslyAllowHostHeaderOriginFallback: وضع خطير يفعّل الرجوع إلى أصل Host-header لعمليات النشر التي تعتمد عمدًا على سياسة أصل Host-header.remote.transport: ssh(الافتراضي) أوdirect(ws/wss). وبالنسبة إلىdirect، يجب أن يكونremote.urlمن النوعws://أوwss://.OPENCLAW_ALLOW_INSECURE_PRIVATE_WS=1: تجاوز طارئ من جهة العميل يسمح باستخدامws://النصي الصريح مع عناوين IP موثوق بها على الشبكات الخاصة؛ وتبقى القيمة الافتراضية مقتصرة على loopback فقط بالنسبة إلى الاتصالات النصية الصريحة.gateway.remote.token/.password: حقول بيانات اعتماد للعميل البعيد. وهي لا تهيّئ مصادقة gateway بحد ذاتها.gateway.push.apns.relay.baseUrl: عنوان HTTPS الأساسي للوكيل الخارجي APNs relay الذي تستخدمه إصدارات iOS الرسمية/TestFlight بعد أن تنشر تسجيلات مدعومة بالوكيل إلى gateway. ويجب أن يطابق هذا العنوان عنوان relay المضمّن في نسخة iOS.gateway.push.apns.relay.timeoutMs: مهلة الإرسال من gateway إلى relay بالميلي ثانية. الافتراضي10000.- تُفوَّض التسجيلات المدعومة بالوكيل إلى هوية gateway محددة. ويجلب تطبيق iOS المقترن
gateway.identity.get، ويضمّن تلك الهوية في تسجيل relay، ويمرّر صلاحية إرسال ضمن نطاق التسجيل إلى gateway. ولا يمكن لـ gateway آخر إعادة استخدام ذلك التسجيل المخزَّن. OPENCLAW_APNS_RELAY_BASE_URL/OPENCLAW_APNS_RELAY_TIMEOUT_MS: تجاوزات بيئة مؤقتة لإعداد relay المذكور أعلاه.OPENCLAW_APNS_RELAY_ALLOW_HTTP=true: مخرج تطويري فقط لعناوين relay من نوع HTTP على loopback. ويجب أن تبقى عناوين relay الإنتاجية على HTTPS.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.tools.deny: أسماء أدوات إضافية محظورة لطلب HTTPPOST /tools/invoke(تمتد فوق قائمة الرفض الافتراضية).gateway.tools.allow: إزالة أسماء أدوات من قائمة الرفض الافتراضية لـ HTTP.
نقاط النهاية المتوافقة مع OpenAI
- Chat Completions: معطّلة افتراضيًا. فعّلها عبر
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 التي تتحكم بها؛ راجع Trusted Proxy Auth)
العزل بين النسخ المتعددة
شغّل عدة Gateways على مستضيف واحد مع منافذ وأدلة حالة فريدة:--dev (يستخدم ~/.openclaw-dev + المنفذ 19001)، و--profile <name> (يستخدم ~/.openclaw-<name>).
راجع Multiple Gateways.
gateway.tls
enabled: يفعّل إنهاء TLS عند مستمع gateway (HTTPS/WSS) (الافتراضي:false).autoGenerate: يولّد تلقائيًا زوج cert/key محليًا موقّعًا ذاتيًا عندما لا تكون الملفات الصريحة مهيأة؛ للاستخدام local/dev فقط.certPath: مسار نظام الملفات إلى ملف شهادة TLS.keyPath: مسار نظام الملفات إلى ملف المفتاح الخاص لـ TLS؛ ويجب إبقاء الوصول إليه مقيّدًا.caPath: مسار اختياري إلى حزمة CA من أجل التحقق من العميل أو سلاسل الثقة المخصصة.
gateway.reload
mode: يتحكم في كيفية تطبيق تعديلات الإعدادات أثناء التشغيل."off": تجاهل التعديلات الحية؛ وتتطلب التغييرات إعادة تشغيل صريحة."restart": أعد تشغيل عملية gateway دائمًا عند تغيير الإعدادات."hot": طبّق التغييرات داخل العملية من دون إعادة تشغيل."hybrid"(الافتراضي): حاول أولًا إعادة التحميل الحية؛ وعُد إلى إعادة التشغيل إذا لزم الأمر.
debounceMs: نافذة إزالة ارتداد بالميلي ثانية قبل تطبيق تغييرات الإعدادات (عدد صحيح غير سالب).deferralTimeoutMs: الحد الأقصى بالميلي ثانية لانتظار العمليات الجارية قبل فرض إعادة التشغيل (الافتراضي:300000= 5 دقائق).
Hooks
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:"]).
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
تفاصيل التعيين
تفاصيل التعيين
- يطابق
match.pathالمسار الفرعي بعد/hooks(مثل/hooks/gmail←gmail). - يطابق
match.sourceحقلًا من الحمولة بالنسبة إلى المسارات العامة. - تقرأ القوالب مثل
{{messages[0].subject}}من الحمولة. - يمكن لـ
transformالإشارة إلى وحدة JS/TS تُرجع إجراء hook.- يجب أن يكون
transform.moduleمسارًا نسبيًا ويبقى ضمنhooks.transformsDir(وتُرفض المسارات المطلقة وعمليات العبور).
- يجب أن يكون
- يوجّه
agentIdإلى وكيل محدد؛ وتعود المعرّفات غير المعروفة إلى الوكيل الافتراضي. allowedAgentIds: يقيّد التوجيه الصريح (*أو الحذف = السماح للجميع، و[]= رفض الجميع).defaultSessionKey: مفتاح جلسة ثابت اختياري لتشغيلات hook agent التي لا تحتوي علىsessionKeyصريح.allowRequestSessionKey: يسمح لمستدعي/hooks/agentبتعيينsessionKey(الافتراضي:false).allowedSessionKeyPrefixes: قائمة سماح اختيارية للبادئات الخاصة بقيمsessionKeyالصريحة (الطلب + التعيين)، مثل["hook:"].- يؤدي
deliver: trueإلى إرسال الرد النهائي إلى قناة؛ وتكون القيمة الافتراضية لـchannelهيlast. - يتجاوز
modelقيمة LLM لهذا التشغيل الخاص بـ hook (ويجب أن يكون مسموحًا به إذا كان فهرس النماذج معيّنًا).
تكامل Gmail
- يبدأ Gateway تلقائيًا تشغيل
gog gmail watch serveعند الإقلاع عندما يكون مهيأً. عيّنOPENCLAW_SKIP_GMAIL_WATCHER=1لتعطيله. - لا تشغّل
gog gmail watch serveمنفصلًا إلى جانب Gateway.
مستضيف Canvas
- يقدّم HTML/CSS/JS القابلة للتعديل من الوكيل وA2UI عبر HTTP تحت منفذ Gateway:
http://<gateway-host>:<gateway.port>/__openclaw__/canvas/http://<gateway-host>:<gateway.port>/__openclaw__/a2ui/
- محلي فقط: أبقِ
gateway.bind: "loopback"(الافتراضي). - في bind غير loopback: تتطلب مسارات canvas مصادقة Gateway (token/password/trusted-proxy)، مثل بقية أسطح HTTP في Gateway.
- لا ترسل WebViews الخاصة بـ Node عادةً رؤوس مصادقة؛ وبعد إقران Node واتصالها، يعلن Gateway عناوين capability URL ضمن نطاق node للوصول إلى canvas/A2UI.
- ترتبط عناوين capability URL بجلسة WS النشطة الخاصة بـ node وتنتهي بسرعة. ولا يُستخدم احتياطي يعتمد على IP.
- يحقن عميل إعادة التحميل الحية في HTML المقدّم.
- ينشئ تلقائيًا ملف
index.htmlابتدائيًا عند الفراغ. - كما يقدّم A2UI عند
/__openclaw__/a2ui/. - تتطلب التغييرات إعادة تشغيل gateway.
- عطّل إعادة التحميل الحية بالنسبة إلى الأدلة الكبيرة أو أخطاء
EMFILE.
الاكتشاف
mDNS (Bonjour)
minimal(الافتراضي): يحذفcliPath+sshPortمن سجلات TXT.full: يتضمنcliPath+sshPort.- يكون اسم المستضيف افتراضيًا
openclaw. ويمكن تجاوزه عبرOPENCLAW_MDNS_HOSTNAME.
النطاق الواسع (DNS-SD)
~/.openclaw/dns/. وبالنسبة إلى الاكتشاف عبر الشبكات، اجمعه مع خادم DNS (ويُوصى بـ CoreDNS) + Tailscale split DNS.
الإعداد: openclaw dns setup --apply.
البيئة
env (متغيرات بيئة مضمنة)
- لا تُطبَّق متغيرات البيئة المضمنة إلا إذا كانت بيئة العملية تفتقد المفتاح.
- ملفات
.env: ملف.envفي CWD + الملف~/.openclaw/.env(ولا يتجاوز أي منهما المتغيرات الموجودة). shellEnv: يستورد المفاتيح المتوقعة المفقودة من ملف تعريف صدفة تسجيل الدخول لديك.- راجع Environment لمعرفة الأولوية الكاملة.
الاستبدال بمتغيرات البيئة
أشر إلى متغيرات البيئة في أي سلسلة إعدادات باستخدام${VAR_NAME}:
- تُطابق الأسماء المكتوبة بأحرف كبيرة فقط:
[A-Z_][A-Z0-9_]*. - تؤدي المتغيرات المفقودة/الفارغة إلى خطأ عند تحميل الإعدادات.
- استخدم
$${VAR}لتمثيل${VAR}حرفيًا. - يعمل ذلك مع
$include.
الأسرار
تكون مراجع الأسرار إضافية: ما تزال القيم النصية الصريحة تعمل.SecretRef
استخدم شكل كائن واحد:
- نمط
provider: ^[a-z][a-z0-9_-]{0,63}$ - نمط
idعندsource: "env": ^[A-Z][A-Z0-9_]{0,127}$ source: "file"معid: مؤشر JSON مطلق (مثل"/providers/openai/apiKey")- نمط
idعندsource: "exec": ^[A-Za-z0-9][A-Za-z0-9._:/-]{0,255}$ - يجب ألا تحتوي معرّفات
source: "exec"على مقاطع مسار.أو..مفصولة بشرطة مائلة (مثلa/../bوهو مرفوض)
سطح بيانات الاعتماد المدعوم
- المصفوفة القانونية: SecretRef Credential Surface
- تستهدف
secrets applyمسارات بيانات الاعتماد المدعومة فيopenclaw.json. - تُدرج مراجع
auth-profiles.jsonفي الحل أثناء التشغيل وفي تغطية التدقيق.
إعداد موفري الأسرار
- يدعم موفّر
fileالوضعينmode: "json"وmode: "singleValue"(ويجب أن يكونidمساويًا لـ"value"في وضع singleValue). - يتطلب موفّر
execمسارcommandمطلقًا ويستخدم حمولات البروتوكول على stdin/stdout. - تُرفض مسارات الأوامر الرمزية افتراضيًا. عيّن
allowSymlinkCommand: trueللسماح بمسارات الروابط الرمزية مع التحقق من مسار الهدف المحلول. - إذا كان
trustedDirsمعيّنًا، فيُطبَّق فحص الدليل الموثوق على مسار الهدف المحلول. - تكون بيئة العملية الابنة لـ
execمحدودة افتراضيًا؛ ومرّر المتغيرات المطلوبة صراحةً عبرpassEnv. - تُحل مراجع الأسرار وقت التفعيل إلى لقطة موجودة في الذاكرة، ثم تقرأ مسارات الطلب تلك اللقطة فقط.
- يُطبَّق ترشيح السطح النشط أثناء التفعيل: تؤدي المراجع غير المحلولة على الأسطح المفعّلة إلى فشل بدء التشغيل/إعادة التحميل، بينما تُتخطى الأسطح غير النشطة مع بيانات تشخيصية.
تخزين المصادقة
- تُخزَّن ملفات التعريف لكل وكيل في
<agentDir>/auth-profiles.json. - يدعم
auth-profiles.jsonمراجع على مستوى القيمة (keyRefللوضعapi_key، وtokenRefللوضعtoken) لأنماط بيانات الاعتماد الثابتة. - لا تدعم ملفات تعريف وضع OAuth (
auth.profiles.<id>.mode = "oauth") بيانات اعتماد ملفات التعريف المدعومة بواسطة SecretRef. - تأتي بيانات الاعتماد الثابتة أثناء التشغيل من لقطات محلولة في الذاكرة؛ وتُنظَّف إدخالات
auth.jsonالثابتة القديمة عند اكتشافها. - استيرادات OAuth القديمة من
~/.openclaw/credentials/oauth.json. - راجع OAuth.
- سلوك وقت تشغيل الأسرار وأدوات
audit/configure/apply: Secrets Management.
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: الحد الأقصى لعمليات تدوير ملفات تعريف المصادقة للمزوّد نفسه في حالات الحمل الزائد قبل التحويل إلى fallback للنموذج (الافتراضي:1). وتدخل هنا أشكال انشغال المزوّد مثلModelNotReadyException.overloadedBackoffMs: تأخير ثابت قبل إعادة محاولة تدوير ملف تعريف/مزوّد مثقل (الافتراضي:0).rateLimitedProfileRotations: الحد الأقصى لعمليات تدوير ملفات تعريف المصادقة للمزوّد نفسه في حالات تحديد المعدل قبل التحويل إلى fallback للنموذج (الافتراضي: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: الحد الأقصى لحجم ملف السجل بالبايت قبل كبح الكتابة (عدد صحيح موجب؛ الافتراضي:524288000= 500 MB). استخدم تدوير السجلات الخارجي لعمليات النشر الإنتاجية.
التشخيصات
enabled: المفتاح الرئيسي لمخرجات القياس (الافتراضي:true).flags: مصفوفة من سلاسل الرايات التي تفعّل مخرجات سجل موجّهة (وتدعم أحرف البدل مثل"telegram.*"أو"*").stuckSessionWarnMs: حد العمر بالميلي ثانية لإصدار تحذيرات الجلسة العالقة بينما تبقى الجلسة في حالة معالجة.otel.enabled: يفعّل مسار تصدير OpenTelemetry (الافتراضي:false).otel.endpoint: عنوان URL للمجمّع من أجل تصدير OTel.otel.protocol: "http/protobuf"(الافتراضي) أو"grpc".otel.headers: رؤوس بيانات تعريف HTTP/gRPC إضافية تُرسل مع طلبات تصدير OTel.otel.serviceName: اسم الخدمة لسمات المورد.otel.traces/otel.metrics/otel.logs: تفعيل تصدير الأثر أو المقاييس أو السجلات.otel.sampleRate: معدل أخذ عينات الأثر من0إلى1.otel.flushIntervalMs: فترة التفريغ الدورية للقياسات بالميلي ثانية.cacheTrace.enabled: تسجيل لقطات تتبع cache للتشغيلات المضمنة (الافتراضي:false).cacheTrace.filePath: مسار الإخراج لملف JSONL الخاص بتتبع cache (الافتراضي:$OPENCLAW_STATE_DIR/logs/cache-trace.jsonl).cacheTrace.includeMessages/includePrompt/includeSystem: تتحكم في ما يُضمَّن في مخرجات تتبع cache (وجميعها افتراضيًا: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 (الافتراضي:false).dispatch.enabled: بوابة مستقلة لإرسال أدوار جلسات ACP (الافتراضي:true). عيّنها إلىfalseللإبقاء على أوامر ACP متاحة مع حظر التنفيذ.backend: معرّف الواجهة الخلفية الافتراضية لوقت تشغيل ACP (ويجب أن يطابق Plugin وقت تشغيل ACP مسجلة).defaultAgent: معرّف وكيل ACP الاحتياطي المستهدف عندما لا تحدد عمليات spawn هدفًا صريحًا.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.
Wizard
بيانات تعريف يكتبها تدفق الإعداد الموجّه في CLI (onboard وconfigure وdoctor):
الهوية
راجع حقول الهوية فيagents.list تحت الإعدادات الافتراضية للوكلاء.
Bridge (قديم، أُزيل)
لم تعد الإصدارات الحالية تتضمن TCP bridge. تتصل Nodes عبر Gateway WebSocket. ولم تعد مفاتيحbridge.* جزءًا من مخطط الإعدادات (ويفشل التحقق حتى إزالتها؛ ويمكن لـ openclaw doctor --fix إزالة المفاتيح غير المعروفة).
إعداد Bridge القديم (مرجع تاريخي)
إعداد Bridge القديم (مرجع تاريخي)
Cron
sessionRetention: المدة التي تُحفَظ خلالها جلسات تشغيل Cron المعزولة المكتملة قبل قصّها منsessions.json. كما تتحكم أيضًا في تنظيف أرشيفات نصوص Cron المحذوفة. الافتراضي:24h؛ عيّنfalseللتعطيل.runLog.maxBytes: الحد الأقصى للحجم لكل ملف سجل تشغيل (cron/runs/<jobId>.jsonl) قبل القص. الافتراضي:2_000_000بايت.runLog.keepLines: أحدث الأسطر التي يُحتفَظ بها عند تفعيل قص سجل التشغيل. الافتراضي:2000.webhookToken: رمز bearer المستخدم في تسليم 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: الحد الأدنى بالميلي ثانية بين التنبيهات المتكررة للوظيفة نفسها (عدد صحيح غير سالب).mode: وضع التسليم — ترسل"announce"عبر رسالة قناة؛ بينما تنشر"webhook"إلى Webhook المهيأ.accountId: معرّف حساب أو قناة اختياري لتحديد نطاق تسليم التنبيه.
cron.failureDestination
- الوجهة الافتراضية لإشعارات فشل Cron عبر جميع الوظائف.
mode: "announce"أو"webhook"؛ وتكون القيمة الافتراضية"announce"عندما تتوفر بيانات هدف كافية.channel: تجاوز القناة لتسليم announce. وتعيد"last"استخدام آخر قناة تسليم معروفة.to: هدف announce صريح أو عنوان URL لـ Webhook. وهو مطلوب لوضع webhook.accountId: تجاوز اختياري للحساب من أجل التسليم.- يتجاوز
delivery.failureDestinationلكل وظيفة هذا الافتراضي العام. - عندما لا تكون هناك وجهة فشل عامة أو خاصة بالوظيفة، فإن الوظائف التي تُسلِّم أصلًا عبر
announceتعود احتياطيًا إلى هدف announce الأساسي نفسه عند الفشل. - لا يُدعم
delivery.failureDestinationإلا للوظائف ذاتsessionTarget="isolated"ما لم يكنdelivery.modeالأساسي للوظيفة هو"webhook".
متغيرات قالب نموذج الوسائط
العناصر النائبة في القالب التي تُوسَّع فيtools.media.models[].args:
| المتغير | الوصف |
|---|---|
{{Body}} | متن الرسالة الواردة بالكامل |
{{RawBody}} | المتن الخام (من دون أغلفة السجل/المرسل) |
{{BodyStripped}} | المتن بعد إزالة إشارات المجموعات منه |
{{From}} | معرّف المرسل |
{{To}} | معرّف الوجهة |
{{MessageSid}} | معرّف رسالة القناة |
{{SessionId}} | UUID الجلسة الحالية |
{{IsNewSession}} | القيمة "true" عند إنشاء جلسة جديدة |
{{MediaUrl}} | عنوان pseudo-URL للوسائط الواردة |
{{MediaPath}} | مسار الوسائط المحلي |
{{MediaType}} | نوع الوسائط (صورة/صوت/مستند/…) |
{{Transcript}} | النص المفرغ للصوت |
{{Prompt}} | prompt الوسائط المحلول لإدخالات CLI |
{{MaxChars}} | الحد الأقصى المحلول لأحرف المخرجات لإدخالات CLI |
{{ChatType}} | "direct" أو "group" |
{{GroupSubject}} | موضوع المجموعة (بأفضل جهد) |
{{GroupMembers}} | معاينة أعضاء المجموعة (بأفضل جهد) |
{{SenderName}} | اسم العرض للمرسل (بأفضل جهد) |
{{SenderE164}} | رقم هاتف المرسل (بأفضل جهد) |
{{Provider}} | تلميح المزوّد (whatsapp أو telegram أو discord، إلخ.) |
تضمينات الإعدادات ($include)
قسّم الإعدادات إلى عدة ملفات:
- ملف واحد: يستبدل الكائن الحاوي.
- مصفوفة ملفات: تُدمَج عميقًا بالترتيب (واللاحق يتجاوز السابق).
- المفاتيح الشقيقة: تُدمَج بعد التضمينات (وتتجاوز القيم المضمَّنة).
- التضمينات المتداخلة: حتى 10 مستويات عمق.
- المسارات: تُحل نسبةً إلى الملف المتضمِّن، لكن يجب أن تبقى داخل دليل الإعدادات ذي المستوى الأعلى (
dirnameالخاص بـopenclaw.json). وتُسمح الصيغ المطلقة/../فقط عندما تظل تُحل داخل ذلك الحد. - الأخطاء: رسائل واضحة للملفات المفقودة، وأخطاء التحليل، والتضمينات الدائرية.
ذو صلة: الإعدادات · أمثلة على الإعدادات · Doctor