يطبّق OpenClaw إصلاحات خاصة بالمزوّد على النصوص النصية قبل التشغيل (أثناء بناء سياق النموذج). معظم هذه الإصلاحات هي تعديلات داخل الذاكرة تُستخدم لتلبية متطلبات المزوّدين الصارمة. وقد تمر أيضًا مرحلة إصلاح منفصلة لملف الجلسة تعيد كتابة JSONL المخزّن قبل تحميل الجلسة، لكن ذلك يحدث فقط مع الأسطر المشوّهة أو الأدوار المحفوظة التي لا تصلح كسجلات دائمة. يتم الحفاظ على ردود المساعد التي تم تسليمها على القرص؛ أما إزالة التمهيد المسبق الخاص بالمساعد وفقًا للمزوّد فتحدث فقط أثناء إنشاء الحمولات الصادرة. عند حدوث إصلاح، يتم نسخ الملف الأصلي احتياطيًا بجانب ملف الجلسة. يشمل النطاق: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.
- إبقاء سياق المطالبة المخصّص لوقت التشغيل خارج أدوار النص النصي المرئية للمستخدم
- تنقية معرّف استدعاء الأداة
- التحقق من صحة مدخلات استدعاء الأداة
- إصلاح إقران نتيجة الأداة
- التحقق من الأدوار / ترتيبها
- تنظيف توقيع الفكرة
- تنظيف توقيع التفكير
- تنقية حمولة الصور
- تنظيف كتل النص الفارغة قبل إعادة التشغيل لدى المزوّد
- وسم مصدر مدخلات المستخدم (للمطالبات الموجّهة بين الجلسات)
- إصلاح أدوار خطأ المساعد الفارغة لإعادة تشغيل Bedrock Converse
القاعدة العامة: سياق وقت التشغيل ليس نصًا نصيًا للمستخدم
يمكن إضافة سياق وقت التشغيل/النظام إلى مطالبة النموذج لدور معيّن، لكنه ليس محتوى ألّفه المستخدم النهائي. يحتفظ OpenClaw بنص مطالبة منفصل مخصّصًا لواجهة النص النصي لردود Gateway والمتابعات الموضوعة في قائمة الانتظار وACP وCLI وتشغيلات Pi المضمّنة. تستخدم أدوار المستخدم المرئية المخزّنة نص واجهة النص النصي هذا بدلًا من المطالبة المعزّزة بسياق وقت التشغيل. بالنسبة إلى الجلسات القديمة التي حفظت بالفعل أغلفة وقت التشغيل، تطبّق أسطح سجل Gateway إسقاطًا للعرض قبل إرجاع الرسائل إلى عملاء WebChat أو TUI أو REST أو SSE.أين يعمل هذا
تتم مركزة جميع إجراءات نظافة النصوص النصية في المشغّل المضمّن:- اختيار السياسة:
src/agents/transcript-policy.ts - تطبيق التنقية/الإصلاح:
sanitizeSessionHistoryفيsrc/agents/pi-embedded-runner/replay-history.ts
provider وmodelApi وmodelId لتحديد ما يجب تطبيقه.
وبشكل منفصل عن نظافة النصوص النصية، يتم إصلاح ملفات الجلسة (عند الحاجة) قبل التحميل:
repairSessionFileIfNeededفيsrc/agents/session-file-repair.ts- يُستدعى من
run/attempt.tsوcompact.ts(المشغّل المضمّن)
القاعدة العامة: تنقية الصور
تتم تنقية حمولات الصور دائمًا لمنع رفضها من جهة المزوّد بسبب حدود الحجم (تصغير/إعادة ضغط صور base64 كبيرة الحجم). يساعد هذا أيضًا في ضبط ضغط الرموز الناتج عن الصور للنماذج القادرة على الرؤية. الأبعاد القصوى الأقل تقلل عمومًا استخدام الرموز؛ والأبعاد الأعلى تحافظ على التفاصيل. التنفيذ:sanitizeSessionMessagesImagesفيsrc/agents/pi-embedded-helpers/images.tssanitizeContentBlocksImagesفيsrc/agents/tool-images.ts- الحد الأقصى لضلع الصورة قابل للضبط عبر
agents.defaults.imageMaxDimensionPx(الافتراضي:1200). - تتم إزالة كتل النص الفارغة أثناء مرور هذه المرحلة على محتوى إعادة التشغيل. أدوار المساعد التي تصبح فارغة تُحذف من نسخة إعادة التشغيل؛ أما أدوار المستخدم ونتائج الأدوات التي تصبح فارغة فتتلقى عنصرًا نائبًا غير فارغ للمحتوى المحذوف.
القاعدة العامة: استدعاءات الأدوات المشوّهة
تُحذف كتل استدعاء الأدوات الخاصة بالمساعد التي تفتقد كلًا منinput وarguments
قبل بناء سياق النموذج. يمنع هذا رفض المزوّد لاستدعاءات الأدوات المحفوظة جزئيًا
(على سبيل المثال، بعد فشل بسبب حد المعدل).
التنفيذ:
sanitizeToolCallInputsفيsrc/agents/session-transcript-repair.ts- يُطبّق في
sanitizeSessionHistoryفيsrc/agents/pi-embedded-runner/replay-history.ts
القاعدة العامة: مصدر المدخلات بين الجلسات
عندما يرسل وكيل مطالبة إلى جلسة أخرى عبرsessions_send (بما في ذلك
خطوات الرد/الإعلان بين الوكلاء)، يحفظ OpenClaw دور المستخدم الذي تم إنشاؤه مع:
message.provenance.kind = "inter_session"
[Inter-session message ... isUser=false] في بداية الدور نفسه
قبل نص المطالبة الموجّه، حتى تتمكن استدعاءة النموذج النشطة من تمييز
مخرجات الجلسة الأجنبية عن تعليمات المستخدم النهائي الخارجية. تتضمن هذه العلامة
الجلسة المصدر والقناة والأداة عند توفرها. لا يزال النص النصي يستخدم
role: "user" لتوافق المزوّد، لكن النص المرئي وبيانات المصدر الوصفية
يشيران معًا إلى أن الدور بيانات بين الجلسات.
أثناء إعادة بناء السياق، يطبّق OpenClaw العلامة نفسها على أدوار المستخدم القديمة المحفوظة
بين الجلسات التي لا تحتوي إلا على بيانات المصدر الوصفية.
مصفوفة المزوّدين (السلوك الحالي)
OpenAI / OpenAI Codex- تنقية الصور فقط.
- حذف توقيعات الاستدلال اليتيمة (عناصر الاستدلال المستقلة من دون كتلة محتوى لاحقة) لنصوص OpenAI Responses/Codex، وحذف استدلال OpenAI القابل لإعادة التشغيل بعد تبديل مسار النموذج.
- الحفاظ على حمولات عناصر استدلال OpenAI Responses القابلة لإعادة التشغيل، بما في ذلك عناصر الملخص الفارغ المشفّرة، حتى تحافظ إعادة التشغيل اليدوية/WebSocket على حالة
rs_*المطلوبة مقترنة بعناصر مخرجات المساعد. - تتبع Native ChatGPT Codex Responses تكافؤ سلك Codex عبر إعادة تشغيل حمولات الاستدلال/الرسائل/الدوال السابقة من Responses من دون معرّفات عناصر سابقة، مع الحفاظ على
prompt_cache_keyللجلسة. - لا توجد تنقية لمعرّفات استدعاء الأدوات.
- قد ينقل إصلاح إقران نتائج الأدوات المخرجات الحقيقية المطابقة ويُنشئ مخرجات
abortedبأسلوب Codex لاستدعاءات الأدوات المفقودة. - لا يوجد تحقق من الأدوار أو إعادة ترتيبها.
- تُنشأ مخرجات الأدوات المفقودة لعائلة OpenAI Responses على أنها
abortedلمطابقة تطبيع إعادة تشغيل Codex. - لا توجد إزالة لتوقيع الفكرة.
- تُزال كتل تفكير/استدلال المساعد التاريخية قبل إعادة التشغيل حتى لا
تتلقى الخوادم المحلية والخوادم الوكيلة المتوافقة مع OpenAI حقول استدلال
من أدوار سابقة مثل
reasoningأوreasoning_content. - تحافظ امتدادات استدعاء الأداة في الدور الحالي نفسه على كتلة استدلال المساعد مرتبطة باستدعاء الأداة إلى أن تتم إعادة تشغيل نتيجة الأداة.
- يمكن للاستثناءات المملوكة للمزوّد الانسحاب عندما يتطلب بروتوكولها السلكي إعادة تشغيل بيانات الاستدلال الوصفية.
- تنقية معرّف استدعاء الأداة: أبجدي رقمي صارم.
- إصلاح إقران نتائج الأدوات ونتائج أدوات اصطناعية.
- التحقق من الأدوار (تناوب الأدوار بأسلوب Gemini).
- إصلاح ترتيب أدوار Google (إضافة تمهيد مستخدم صغير في البداية إذا بدأ السجل بالمساعد).
- Antigravity Claude: تطبيع توقيعات التفكير؛ حذف كتل التفكير غير الموقعة.
- إصلاح إقران نتائج الأدوات ونتائج أدوات اصطناعية.
- التحقق من الأدوار (دمج أدوار المستخدم المتتالية لتلبية التناوب الصارم).
- تُزال أدوار التمهيد المسبق اللاحقة للمساعد من حمولات Anthropic Messages الصادرة عند تفعيل التفكير، بما في ذلك مسارات Cloudflare AI Gateway.
- تُزال كتل التفكير ذات توقيعات إعادة التشغيل المفقودة أو الفارغة أو البيضاء قبل تحويل المزوّد. إذا جعل ذلك دور المساعد فارغًا، يحافظ OpenClaw على شكل الدور بنص غير فارغ للاستدلال المحذوف.
- تُستبدل أدوار المساعد الأقدم التي تحتوي على التفكير فقط والتي يجب حذفها بنص غير فارغ للاستدلال المحذوف حتى لا تحذف محولات المزوّد دور إعادة التشغيل.
- تُصلح أدوار خطأ تدفق المساعد الفارغة إلى كتلة نصية احتياطية غير فارغة
قبل إعادة التشغيل. يرفض Bedrock Converse رسائل المساعد ذات
content: []، لذلك تُصلح أيضًا على القرص قبل التحميل أدوار المساعد المحفوظة ذاتstopReason: "error"والمحتوى الفارغ. - تُحذف أدوار خطأ تدفق المساعد التي تحتوي فقط على كتل نصية فارغة من نسخة إعادة التشغيل داخل الذاكرة بدلًا من إعادة تشغيل كتلة فارغة غير صالحة.
- تُزال كتل تفكير Claude ذات توقيعات إعادة التشغيل المفقودة أو الفارغة أو البيضاء قبل إعادة تشغيل Converse. إذا جعل ذلك دور المساعد فارغًا، يحافظ OpenClaw على شكل الدور بنص غير فارغ للاستدلال المحذوف.
- تُستبدل أدوار المساعد الأقدم التي تحتوي على التفكير فقط والتي يجب حذفها بنص غير فارغ للاستدلال المحذوف حتى تحافظ إعادة تشغيل Converse على شكل الأدوار الصارم.
- ترشّح إعادة التشغيل أدوار المساعد الخاصة بمرآة التسليم في OpenClaw والمحقونة من Gateway.
- تنطبق تنقية الصور عبر القاعدة العامة.
- تنقية معرّف استدعاء الأداة: strict9 (أبجدي رقمي بطول 9).
- تنظيف توقيع الفكرة: إزالة قيم
thought_signatureغير base64 (والإبقاء على base64).
- تُزال أدوار التمهيد المسبق اللاحقة للمساعد من حمولات نماذج Anthropic المتحقَّق منها والمتوافقة مع OpenAI في OpenRouter عند تفعيل الاستدلال، بما يطابق سلوك إعادة تشغيل Anthropic المباشر وCloudflare Anthropic.
- تنقية الصور فقط.
السلوك التاريخي (قبل 2026.1.22)
قبل إصدار 2026.1.22، طبّق OpenClaw عدة طبقات من نظافة النصوص النصية:- كان امتداد تنقية النص النصي يعمل عند كل بناء للسياق وكان بإمكانه:
- إصلاح إقران استخدام الأداة/نتيجتها.
- تنقية معرّفات استدعاء الأدوات (بما في ذلك وضع غير صارم كان يحافظ على
_/-).
- أجرى المشغّل أيضًا تنقية خاصة بالمزوّد، مما كرر العمل.
- حدثت طفرات إضافية خارج سياسة المزوّد، بما في ذلك:
- إزالة وسوم
<final>من نص المساعد قبل الحفظ. - حذف أدوار خطأ المساعد الفارغة.
- قص محتوى المساعد بعد استدعاءات الأدوات.
- إزالة وسوم
call_id|fc_id
في openai-responses). أزال تنظيف 2026.1.22 الامتداد، وركّز
المنطق في المشغّل، وجعل OpenAI بلا تعديل فيما يتجاوز تنقية الصور.