يمكن لـ OpenClaw تشغيل واجهات CLI محلية للذكاء الاصطناعي بوصفها خطة احتياطية نصية فقط عندما تكون موفّرات API متوقفة، أو محدودة المعدّل، أو تتصرف على نحو غير سليم مؤقتًا. هذا محافظ عمدًا:Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
- لا تُحقن أدوات OpenClaw مباشرةً، لكن الخلفيات التي تستخدم
bundleMcp: trueيمكنها تلقي أدوات Gateway عبر جسر MCP بنمط local loopback. - تدفق JSONL لواجهات CLI التي تدعمه.
- الجلسات مدعومة (لذلك تظل أدوار المتابعة مترابطة).
- يمكن تمرير الصور عبرها إذا كانت واجهة CLI تقبل مسارات الصور.
بدء سريع مناسب للمبتدئين
يمكنك استخدام Codex CLI دون أي إعدادات (يسجل Plugin OpenAI المضمن خلفية افتراضية):agents.defaults.cliBackends.
استخدامها كخطة احتياطية
أضف خلفية CLI إلى قائمة الاحتياط لديك حتى تعمل فقط عندما تفشل النماذج الأساسية:- إذا كنت تستخدم
agents.defaults.models(قائمة سماح)، فيجب أن تضمّن نماذج خلفية CLI لديك هناك أيضًا. - إذا فشل الموفّر الأساسي (مصادقة، حدود معدّل، مُهل)، فسيجرّب OpenClaw خلفية CLI بعد ذلك.
نظرة عامة على الإعداد
توجد جميع خلفيات CLI ضمن:codex-cli، my-cli).
ويصبح معرّف الموفّر الجانب الأيسر من مرجع النموذج لديك:
مثال إعداد
كيف يعمل
- يختار خلفية بناءً على بادئة الموفّر (
codex-cli/...). - يبني موجه نظام باستخدام موجه OpenClaw نفسه + سياق مساحة العمل.
- ينفّذ واجهة CLI مع معرّف جلسة (إذا كان مدعومًا) حتى يبقى السجل متسقًا.
تحافظ خلفية
claude-cliالمضمنة على عملية Claude stdio نشطة لكل جلسة OpenClaw وترسل أدوار المتابعة عبر stream-json stdin. - يحلل المخرجات (JSON أو نص عادي) ويعيد النص النهائي.
- يحتفظ بمعرّفات الجلسات لكل خلفية، حتى تعيد أدوار المتابعة استخدام جلسة CLI نفسها.
خلفية Anthropic
claude-cli المضمنة مدعومة مجددًا. أخبرنا موظفو Anthropic
أن استخدام Claude CLI بأسلوب OpenClaw مسموح مجددًا، لذلك يتعامل OpenClaw مع
استخدام claude -p على أنه مصرّح به لهذا التكامل ما لم تنشر Anthropic
سياسة جديدة.codex-cli المضمنة موجه نظام OpenClaw عبر
تجاوز إعداد model_instructions_file في Codex (-c model_instructions_file="..."). لا يوفّر Codex علمًا بأسلوب Claude مثل
--append-system-prompt، لذلك يكتب OpenClaw الموجه المجمّع إلى
ملف مؤقت لكل جلسة Codex CLI جديدة.
تتلقى خلفية Anthropic claude-cli المضمنة لقطة Skills الخاصة بـ OpenClaw
بطريقتين: كتالوج Skills المختصر الخاص بـ OpenClaw في موجه النظام الملحق، و
Plugin مؤقت لـ Claude Code يُمرر باستخدام --plugin-dir. يحتوي Plugin على
Skills المؤهلة لذلك الوكيل/الجلسة فقط، لذلك يرى محلل Skills الأصلي في Claude Code
نفس المجموعة المصفاة التي كان OpenClaw سيعلن عنها بخلاف ذلك في
الموجه. لا تزال تجاوزات Skill env/API key تُطبّق بواسطة OpenClaw على
بيئة العملية الفرعية للتشغيل.
يحتوي Claude CLI أيضًا على وضع أذونات غير تفاعلي خاص به. يربط OpenClaw ذلك
بسياسة exec الحالية بدلًا من إضافة إعدادات خاصة بـ Claude: عندما تكون
سياسة exec المطلوبة الفعالة هي YOLO (tools.exec.security: "full" و
tools.exec.ask: "off")، يضيف OpenClaw --permission-mode bypassPermissions.
تتجاوز إعدادات agents.list[].tools.exec لكل وكيل إعدادات tools.exec العامة لذلك
الوكيل. لفرض وضع Claude مختلف، عيّن وسائط خلفية خام صريحة
مثل --permission-mode default أو --permission-mode acceptEdits ضمن
agents.defaults.cliBackends.claude-cli.args وresumeArgs المطابقة.
تربط خلفية Anthropic claude-cli المضمنة أيضًا مستويات OpenClaw /think
بعلم Claude Code الأصلي --effort للمستويات غير المتوقفة. يُربط minimal و
low بـ low، ويُربط adaptive وmedium بـ medium، وhigh،
وxhigh، وmax تُربط مباشرةً. تحتاج خلفيات CLI الأخرى إلى أن
يعلن Plugin المالك لها مخطط argv مكافئًا قبل أن يتمكن /think من التأثير في واجهة CLI المُنشأة.
قبل أن يتمكن OpenClaw من استخدام خلفية claude-cli المضمنة، يجب أن يكون Claude Code نفسه
قد سجّل الدخول مسبقًا على المضيف نفسه:
agents.defaults.cliBackends.claude-cli.command فقط عندما لا يكون الملف التنفيذي claude
موجودًا مسبقًا على PATH.
الجلسات
- إذا كانت واجهة CLI تدعم الجلسات، فعيّن
sessionArg(مثل--session-id) أوsessionArgs(العنصر النائب{sessionId}) عندما يلزم إدراج المعرّف في أعلام متعددة. - إذا كانت واجهة CLI تستخدم أمرًا فرعيًا للاستئناف مع أعلام مختلفة، فعيّن
resumeArgs(يستبدلargsعند الاستئناف) واختياريًاresumeOutput(للاستئنافات غير JSON). sessionMode:always: أرسل دائمًا معرّف جلسة (UUID جديد إذا لم يكن هناك معرّف مخزن).existing: أرسل معرّف جلسة فقط إذا كان واحد قد خُزن من قبل.none: لا ترسل معرّف جلسة أبدًا.
- يضبط
claude-cliافتراضيًاliveSession: "claude-stdio"، وoutput: "jsonl"، وinput: "stdin"حتى تعيد أدوار المتابعة استخدام عملية Claude الحية أثناء نشاطها. أصبح stdio الدافئ هو الافتراضي الآن، بما في ذلك للإعدادات المخصصة التي تحذف حقول النقل. إذا أُعيد تشغيل Gateway أو خرجت العملية الخاملة، يستأنف OpenClaw من معرّف جلسة Claude المخزن. تُتحقق معرّفات الجلسات المخزنة مقابل نص مشروع قائم قابل للقراءة قبل الاستئناف، لذلك تُمسح الارتباطات الوهمية باستخدامreason=transcript-missingبدلًا من بدء جلسة Claude CLI جديدة بصمت تحت--resume. - تحتفظ جلسات Claude الحية بحراس محدودين لمخرجات JSONL. تسمح الإعدادات الافتراضية بما يصل إلى
8 MiB و20,000 سطر JSONL خام لكل دور. يمكن لأدوار Claude كثيفة الأدوات رفعها
لكل خلفية باستخدام
agents.defaults.cliBackends.claude-cli.reliability.outputLimits.maxTurnRawCharsوmaxTurnLines؛ يقيّد OpenClaw هذه الإعدادات إلى 64 MiB و100,000 سطر. - جلسات CLI المخزنة هي استمرارية يملكها الموفّر. لا يقطعها إعادة تعيين الجلسة
اليومية الضمنية؛ أما
/resetوسياساتsession.resetالصريحة فما زالت تقطعها. - عادةً ما تعيد جلسات CLI الجديدة البذر فقط من ملخص Compaction في OpenClaw
إضافة إلى ذيل ما بعد Compaction. لاستعادة الجلسات القصيرة التي تُبطل
قبل Compaction، يمكن لخلفية الاشتراك باستخدام
reseedFromRawTranscriptWhenUncompacted: true. لا يزال OpenClaw يبقي إعادة بذر النص الخام محدودة ويقصرها على الإبطالات الآمنة مثل فقدان نصوص CLI، أو تغييرات موجه النظام/MCP، أو إعادة المحاولة بسبب session-expired؛ ولا تعيد تغييرات ملف تعريف المصادقة أو credential-epoch بذر سجل النص الخام أبدًا.
- يحافظ
serialize: trueعلى ترتيب التشغيلات في المسار نفسه. - معظم واجهات CLI تُسلسل على مسار موفّر واحد.
- يسقط OpenClaw إعادة استخدام جلسة CLI المخزنة عندما تتغير هوية المصادقة المحددة، بما في ذلك تغيّر معرّف ملف تعريف المصادقة، أو مفتاح API ثابت، أو رمز ثابت، أو هوية حساب OAuth عندما تعرضها واجهة CLI. لا تقطع دورة رموز وصول OAuth وتحديثها جلسة CLI المخزنة. إذا لم تعرض واجهة CLI معرّف حساب OAuth مستقرًا، يترك OpenClaw لتلك الواجهة فرض أذونات الاستئناف.
تمهيد احتياطي من جلسات claude-cli
عندما تفشل محاولةclaude-cli وتنتقل إلى مرشح غير CLI في
agents.defaults.model.fallbacks، يبذر OpenClaw
المحاولة التالية بتمهيد سياق مستخرج من نص JSONL المحلي الخاص بـ Claude Code
في ~/.claude/projects/. دون هذا البذر، سيبدأ الموفّر الاحتياطي باردًا لأن
نص جلسة OpenClaw نفسه يكون فارغًا لتشغيلات claude-cli.
- يفضل التمهيد أحدث ملخص
/compactأو علامةcompact_boundary، ثم يضيف أحدث أدوار ما بعد الحد حتى ميزانية أحرف محددة. تُسقط أدوار ما قبل الحد لأن الملخص يمثلها بالفعل. - تُدمج كتل الأدوات في تلميحات مختصرة مثل
(tool call: name)و(tool result: …)للحفاظ على ميزانية الموجه منضبطة. يُوسم الملخص بـ(truncated)إذا تجاوز الحد. - تعتمد انتقالات الاحتياط من
claude-cliإلىclaude-cliللموفّر نفسه على--resumeالخاص بـ Claude وتتخطى التمهيد. - يعيد البذر استخدام التحقق الحالي من مسار ملف جلسة Claude، لذلك لا يمكن قراءة مسارات عشوائية.
الصور (تمرير عبر)
إذا كانت واجهة CLI لديك تقبل مسارات الصور، فعيّنimageArg:
imageArg مضبوطًا، فستُمرر تلك
المسارات كوسائط CLI. إذا كان imageArg مفقودًا، يلحق OpenClaw
مسارات الملفات بالموجه (حقن المسار)، وهذا يكفي لواجهات CLI التي تحمّل
الملفات المحلية تلقائيًا من مسارات عادية.
المدخلات / المخرجات
- يحاول
output: "json"(الافتراضي) تحليل JSON واستخراج النص + معرّف الجلسة. - لمخرجات Gemini CLI بصيغة JSON، يقرأ OpenClaw نص الرد من
responseو الاستخدام منstatsعندما يكونusageمفقودًا أو فارغًا. - يحلل
output: "jsonl"تدفقات JSONL (مثل Codex CLI--json) ويستخرج رسالة الوكيل النهائية بالإضافة إلى معرّفات الجلسة عند وجودها. - يتعامل
output: "text"مع stdout بوصفه الاستجابة النهائية.
- يمرر
input: "arg"(الافتراضي) الموجه بوصفه آخر وسيطة CLI. - يرسل
input: "stdin"الموجه عبر stdin. - إذا كان الموجه طويلًا جدًا وكان
maxPromptArgCharsمضبوطًا، فسيُستخدم stdin.
الإعدادات الافتراضية (مملوكة لـ Plugin)
يسجل Plugin OpenAI المضمن أيضًا إعدادًا افتراضيًا لـcodex-cli:
command: "codex"args: ["exec","--json","--color","never","--sandbox","workspace-write","--skip-git-repo-check"]resumeArgs: ["exec","resume","{sessionId}","-c","sandbox_mode=\"workspace-write\"","--skip-git-repo-check"]output: "jsonl"resumeOutput: "text"modelArg: "--model"imageArg: "--image"sessionMode: "existing"
google-gemini-cli:
command: "gemini"args: ["--output-format", "json", "--prompt", "{prompt}"]resumeArgs: ["--resume", "{sessionId}", "--output-format", "json", "--prompt", "{prompt}"]imageArg: "@"imagePathScope: "workspace"modelArg: "--model"sessionMode: "existing"sessionIdFields: ["session_id", "sessionId"]
gemini ضمن PATH (brew install gemini-cli أو
npm install -g @google/gemini-cli).
ملاحظات JSON الخاصة بـ Gemini CLI:
- تتم قراءة نص الرد من حقل JSON
response. - يعود استخدام الموارد إلى
statsعندما يكونusageغائبًا أو فارغًا. - يتم تطبيع
stats.cachedإلىcacheReadفي OpenClaw. - إذا كان
stats.inputمفقودًا، يستنتج OpenClaw رموز الإدخال منstats.input_tokens - stats.cached.
command مطلق).
الإعدادات الافتراضية المملوكة لـ Plugin
أصبحت إعدادات واجهة CLI الخلفية الافتراضية الآن جزءًا من سطح Plugin:- تسجلها Plugins باستخدام
api.registerCliBackend(...). - يصبح
idالخاص بالواجهة الخلفية بادئة المزوّد في مراجع النماذج. - لا يزال إعداد المستخدم في
agents.defaults.cliBackends.<id>يتجاوز الإعداد الافتراضي الخاص بـ Plugin. - يظل تنظيف الإعدادات الخاصة بالواجهة الخلفية مملوكًا لـ Plugin عبر خطاف
normalizeConfigالاختياري.
input كتابة مطالبة النظام ومطالبة المستخدم الممررتين إلى CLI. يعيد output
كتابة فروقات المساعد المتدفقة والنص النهائي المحلل قبل أن يعالج OpenClaw
علامات التحكم الخاصة به وتسليم القناة.
بالنسبة إلى واجهات CLI التي تصدر JSONL متوافقًا مع Claude Code stream-json، عيّن
jsonlDialect: "claude-stream-json" في إعدادات تلك الواجهة الخلفية.
تراكبات MCP المجمّعة
لا تتلقى واجهات CLI الخلفية استدعاءات أدوات OpenClaw مباشرة، لكن يمكن لواجهة خلفية أن تختار استخدام تراكب إعداد MCP مولّد عبرbundleMcp: true.
السلوك المضمّن الحالي:
claude-cli: ملف إعداد MCP صارم مولّدcodex-cli: تجاوزات إعداد مضمنة لـmcp_servers؛ يتم تمييز خادم OpenClaw loopback المولّد بوضع موافقة أدوات خاص بكل خادم في Codex حتى لا تتوقف استدعاءات MCP بسبب مطالبات الموافقة المحليةgoogle-gemini-cli: ملف إعدادات نظام Gemini مولّد
- ينشئ خادم MCP عبر HTTP بنمط loopback يعرّض أدوات Gateway لعملية CLI
- يصادق الجسر باستخدام رمز لكل جلسة (
OPENCLAW_MCP_TOKEN) - يقيّد الوصول إلى الأدوات بسياق الجلسة والحساب والقناة الحالية
- يحمّل خوادم bundle-MCP الممكّنة لمساحة العمل الحالية
- يدمجها مع أي شكل موجود لإعدادات/ضبط MCP للواجهة الخلفية
- يعيد كتابة إعداد التشغيل باستخدام وضع التكامل المملوك للواجهة الخلفية من الامتداد المالك
mcp.sessionIdleTtlMs مللي ثانية من وقت الخمول (الافتراضي 10
دقائق؛ عيّن 0 للتعطيل). تطلب عمليات التشغيل المضمنة لمرة واحدة مثل فحوصات المصادقة،
وتوليد slug، واستدعاء Active Memory التنظيف عند نهاية التشغيل حتى لا تبقى
عمليات stdio الفرعية وتدفقات Streamable HTTP/SSE بعد انتهاء التشغيل.
القيود
- لا توجد استدعاءات مباشرة لأدوات OpenClaw. لا يحقن OpenClaw استدعاءات أدوات في
بروتوكول واجهة CLI الخلفية. لا ترى الواجهات الخلفية أدوات Gateway إلا عندما تختار
bundleMcp: true. - البث خاص بكل واجهة خلفية. تبث بعض الواجهات الخلفية JSONL؛ وتنتظر أخرى حتى الخروج.
- المخرجات المنظمة تعتمد على تنسيق JSON الخاص بـ CLI.
- جلسات Codex CLI تستأنف عبر إخراج نصي (بدون JSONL)، وهو أقل
تنظيمًا من تشغيل
--jsonالأولي. لا تزال جلسات OpenClaw تعمل بشكل طبيعي.
استكشاف الأخطاء وإصلاحها
- CLI غير موجودة: عيّن
commandإلى مسار كامل. - اسم نموذج خاطئ: استخدم
modelAliasesلتعيينprovider/model→ نموذج CLI. - لا توجد استمرارية للجلسة: تأكد من ضبط
sessionArgوأنsessionModeليسnone(لا يمكن لـ Codex CLI حاليًا الاستئناف مع إخراج JSON). - يتم تجاهل الصور: عيّن
imageArg(وتحقق من أن CLI تدعم مسارات الملفات).