Technical reference

استخدام الرموز والتكاليف

يتتبع OpenClaw الرموز، وليس الأحرف. تختلف الرموز حسب النموذج، لكن معظم النماذج على نمط OpenAI يبلغ متوسطها نحو ~4 أحرف لكل رمز في النص الإنجليزي.

كيف تُبنى مطالبة النظام

يجمع OpenClaw مطالبة النظام الخاصة به في كل تشغيل. وهي تتضمن:

  • قائمة الأدوات + أوصافًا قصيرة
  • قائمة Skills (البيانات الوصفية فقط؛ تُحمّل التعليمات عند الطلب باستخدام read). تكون كتلة Skills المدمجة محدودة بواسطة skills.limits.maxSkillsPromptChars، مع تجاوز اختياري لكل وكيل عند agents.list[].skillsLimits.maxSkillsPromptChars.
  • تعليمات التحديث الذاتي
  • مساحة العمل + ملفات التمهيد (AGENTS.md، وSOUL.md، وTOOLS.md، وIDENTITY.md، وUSER.md، وHEARTBEAT.md، وBOOTSTRAP.md عند وجودها حديثًا، بالإضافة إلى MEMORY.md عند وجوده). لا يُحقن ملف الجذر memory.md بالأحرف الصغيرة؛ فهو إدخال إصلاح قديم لـ openclaw doctor --fix عند إقرانه مع MEMORY.md. تُختصر الملفات الكبيرة بواسطة agents.defaults.bootstrapMaxChars (الافتراضي: 12000)، ويُحدّ إجمالي حقن التمهيد بواسطة agents.defaults.bootstrapTotalMaxChars (الافتراضي: 60000). ملفات memory/*.md اليومية ليست جزءًا من مطالبة التمهيد العادية؛ فهي تبقى متاحة عند الطلب عبر أدوات الذاكرة في الأدوار العادية، لكن تشغيلات النموذج عند إعادة الضبط/بدء التشغيل يمكنها إلحاق كتلة سياق بدء تشغيل لمرة واحدة تتضمن ذاكرة يومية حديثة لذلك الدور الأول. تُقر أوامر الدردشة الصرفة /new و/reset دون استدعاء النموذج. تتحكم agents.defaults.startupContext في تمهيد بدء التشغيل.
  • الوقت (UTC + المنطقة الزمنية للمستخدم)
  • وسوم الرد + سلوك Heartbeat
  • بيانات وصفية وقت التشغيل (المضيف/نظام التشغيل/النموذج/التفكير)

راجع التفصيل الكامل في مطالبة النظام.

ما الذي يُحتسب ضمن نافذة السياق

كل ما يتلقاه النموذج يُحتسب ضمن حد السياق:

  • مطالبة النظام (كل الأقسام المذكورة أعلاه)
  • سجل المحادثة (رسائل المستخدم + المساعد)
  • استدعاءات الأدوات ونتائج الأدوات
  • المرفقات/النصوص المنسوخة (الصور، الصوت، الملفات)
  • ملخصات Compaction ومخرجات التشذيب
  • أغلفة المزوّد أو رؤوس السلامة (غير مرئية، لكنها لا تزال محتسبة)

لبعض الأسطح كثيفة الاستخدام وقت التشغيل حدودها الصريحة الخاصة:

  • agents.defaults.contextLimits.memoryGetMaxChars
  • agents.defaults.contextLimits.memoryGetDefaultLines
  • agents.defaults.contextLimits.toolResultMaxChars
  • agents.defaults.contextLimits.postCompactionMaxChars

توجد التجاوزات لكل وكيل تحت agents.list[].contextLimits. هذه المفاتيح مخصصة للمقتطفات المحدودة وقت التشغيل والكتل المحقونة المملوكة لوقت التشغيل. وهي منفصلة عن حدود التمهيد، وحدود سياق بدء التشغيل، وحدود مطالبة Skills.

بالنسبة إلى الصور، يصغّر OpenClaw حمولات صور النصوص المنسوخة/الأدوات قبل استدعاءات المزوّد. استخدم agents.defaults.imageMaxDimensionPx (الافتراضي: 1200) لضبط ذلك:

  • القيم الأقل تقلل عادةً استخدام رموز الرؤية وحجم الحمولة.
  • القيم الأعلى تحفظ تفاصيل مرئية أكثر للقطات الشاشة كثيفة OCR/UI.

للحصول على تفصيل عملي (لكل ملف محقون، والأدوات، وSkills، وحجم مطالبة النظام)، استخدم /context list أو /context detail. راجع السياق.

كيفية عرض استخدام الرموز الحالي

استخدم هذه في الدردشة:

  • /statusبطاقة حالة غنية بالرموز التعبيرية تعرض نموذج الجلسة، واستخدام السياق، ورموز إدخال/إخراج آخر رد، والتكلفة المقدّرة (مفتاح API فقط).
  • /usage off|tokens|full → يضيف تذييل استخدام لكل رد إلى كل رد.
    • يستمر لكل جلسة (مخزن باسم responseUsage).
    • مصادقة OAuth تخفي التكلفة (الرموز فقط).
  • /usage cost → يعرض ملخص تكلفة محليًا من سجلات جلسة OpenClaw.

أسطح أخرى:

  • TUI/Web TUI: يتم دعم /status + /usage.
  • CLI: يعرض openclaw status --usage وopenclaw channels list نوافذ حصة المزوّد الموحّدة (X% left، وليس تكاليف كل رد). مزوّدو نافذة الاستخدام الحاليون: Anthropic، وGitHub Copilot، وGemini CLI، وOpenAI Codex، وMiniMax، وXiaomi، وz.ai.

توحّد أسطح الاستخدام أسماء الحقول الأصلية الشائعة للمزوّد قبل العرض. بالنسبة إلى حركة Responses من عائلة OpenAI، يشمل ذلك كلًا من input_tokens / output_tokens وprompt_tokens / completion_tokens، لذلك لا تغيّر أسماء الحقول الخاصة بالنقل /status أو /usage أو ملخصات الجلسة. يتم توحيد استخدام JSON من Gemini CLI أيضًا: يأتي نص الرد من response، و stats.cached يُطابق cacheRead مع استخدام stats.input_tokens - stats.cached عندما يحذف CLI حقل stats.input صريحًا. بالنسبة إلى حركة Responses الأصلية من عائلة OpenAI، يتم توحيد الأسماء المستعارة لاستخدام WebSocket/SSE بالطريقة نفسها، وتعود الإجماليات إلى الإدخال + الإخراج الموحّدين عندما يكون total_tokens مفقودًا أو 0. عندما تكون لقطة الجلسة الحالية قليلة البيانات، يستطيع /status وsession_status أيضًا استعادة عدادات الرموز/التخزين المؤقت وتسمية نموذج وقت التشغيل النشط من أحدث سجل استخدام في النص المنسوخ. لا تزال القيم الحية غير الصفرية الحالية تأخذ الأولوية على قيم الرجوع إلى النص المنسوخ، ويمكن للإجماليات الأكبر الموجهة للمطالبة في النص المنسوخ أن تفوز عندما تكون الإجماليات المخزنة مفقودة أو أصغر. تأتي مصادقة الاستخدام لنوافذ حصة المزوّد من خطافات خاصة بالمزوّد عندما تكون متاحة؛ وإلا يعود OpenClaw إلى مطابقة بيانات اعتماد OAuth/API-key من ملفات تعريف المصادقة، أو env، أو الإعدادات. تستمر إدخالات النص المنسوخ للمساعد بشكل الاستخدام الموحّد نفسه، بما في ذلك usage.cost عندما تكون أسعار النموذج النشط مهيأة ويعيد المزوّد بيانات وصفية للاستخدام. يمنح هذا /usage cost وحالة الجلسة المدعومة بالنصوص المنسوخة مصدرًا مستقرًا حتى بعد زوال حالة وقت التشغيل الحية.

يبقي OpenClaw محاسبة استخدام المزوّد منفصلة عن لقطة السياق الحالية. يمكن أن يتضمن usage.total للمزوّد إدخالًا مخزنًا مؤقتًا، وإخراجًا، واستدعاءات نموذج متعددة ضمن حلقة الأدوات، لذلك فهو مفيد للتكلفة والقياسات، لكنه قد يبالغ في تقدير نافذة السياق الحية. تستخدم عروض السياق والتشخيصات أحدث لقطة مطالبة (promptTokens، أو آخر استدعاء نموذج عندما لا تتوفر لقطة مطالبة) لـ context.used.

تقدير التكلفة (عند عرضها)

تُقدّر التكاليف من إعدادات تسعير النموذج لديك:

models.providers.<provider>.models[].cost

هذه هي الدولار الأمريكي لكل 1M رمز لـ input وoutput وcacheRead و cacheWrite. إذا كان التسعير مفقودًا، يعرض OpenClaw الرموز فقط. رموز OAuth لا تعرض تكلفة بالدولار أبدًا.

بعد وصول العمليات الجانبية والقنوات إلى مسار جاهزية Gateway، يبدأ OpenClaw تمهيد تسعير اختياريًا في الخلفية لمراجع النماذج المهيأة التي لا تملك تسعيرًا محليًا بالفعل. يجلب هذا التمهيد كتالوجات تسعير OpenRouter وLiteLLM البعيدة. اضبط models.pricing.enabled: false لتخطي جلب تلك الكتالوجات على الشبكات غير المتصلة أو المقيدة؛ وتستمر إدخالات models.providers.*.models[].cost الصريحة في قيادة تقديرات التكلفة المحلية.

TTL التخزين المؤقت وتأثير التشذيب

ينطبق التخزين المؤقت لمطالبات المزوّد فقط ضمن نافذة TTL للتخزين المؤقت. يستطيع OpenClaw اختياريًا تشغيل تشذيب TTL التخزين المؤقت: إذ يشذّب الجلسة بمجرد انتهاء TTL للتخزين المؤقت، ثم يعيد ضبط نافذة التخزين المؤقت بحيث يمكن للطلبات اللاحقة إعادة استخدام السياق المخزن مؤقتًا حديثًا بدلًا من إعادة تخزين السجل الكامل مؤقتًا. يحافظ هذا على انخفاض تكاليف كتابة التخزين المؤقت عندما تبقى الجلسة خاملة بعد TTL.

هيّئ ذلك في إعدادات Gateway وراجع تفاصيل السلوك في تشذيب الجلسات.

يمكن لـ Heartbeat إبقاء التخزين المؤقت دافئًا عبر فجوات الخمول. إذا كان TTL التخزين المؤقت لنموذجك هو 1h، فإن ضبط فترة Heartbeat أدنى من ذلك بقليل (مثلًا، 55m) يمكن أن يتجنب إعادة تخزين المطالبة الكاملة مؤقتًا، مما يقلل تكاليف كتابة التخزين المؤقت.

في إعدادات متعددة الوكلاء، يمكنك الاحتفاظ بإعداد نموذج مشترك واحد وضبط سلوك التخزين المؤقت لكل وكيل باستخدام agents.list[].params.cacheRetention.

للحصول على دليل كامل لكل مفتاح ضبط، راجع التخزين المؤقت للمطالبات.

بالنسبة إلى تسعير Anthropic API، تكون قراءات التخزين المؤقت أرخص بكثير من رموز الإدخال، بينما تُحتسب كتابات التخزين المؤقت بمضاعف أعلى. راجع تسعير التخزين المؤقت للمطالبات لدى Anthropic لأحدث الأسعار ومضاعفات TTL: https://docs.anthropic.com/docs/build-with-claude/prompt-caching

مثال: إبقاء تخزين مؤقت مدته 1h دافئًا باستخدام Heartbeat

agents:
  defaults:
    model:
      primary: "anthropic/claude-opus-4-6"
    models:
      "anthropic/claude-opus-4-6":
        params:
          cacheRetention: "long"
    heartbeat:
      every: "55m"

مثال: حركة مختلطة مع استراتيجية تخزين مؤقت لكل وكيل

agents:
  defaults:
    model:
      primary: "anthropic/claude-opus-4-6"
    models:
      "anthropic/claude-opus-4-6":
        params:
          cacheRetention: "long" # default baseline for most agents
  list:
    - id: "research"
      default: true
      heartbeat:
        every: "55m" # keep long cache warm for deep sessions
    - id: "alerts"
      params:
        cacheRetention: "none" # avoid cache writes for bursty notifications

تُدمج agents.list[].params فوق params الخاصة بالنموذج المحدد، بحيث يمكنك تجاوز cacheRetention فقط ووراثة افتراضيات النموذج الأخرى دون تغيير.

مثال: تمكين رأس Anthropic 1M context beta

نافذة سياق Anthropic البالغة 1M مقيدة حاليًا بإصدار beta. يستطيع OpenClaw حقن قيمة anthropic-beta المطلوبة عندما تمكّن context1m على نماذج Opus أو Sonnet المدعومة.

agents:
  defaults:
    models:
      "anthropic/claude-opus-4-6":
        params:
          context1m: true

يتطابق هذا مع رأس beta من Anthropic: context-1m-2025-08-07.

ينطبق هذا فقط عندما يتم ضبط context1m: true على إدخال ذلك النموذج.

المتطلب: يجب أن تكون بيانات الاعتماد مؤهلة لاستخدام السياق الطويل. إن لم تكن كذلك، يرد Anthropic بخطأ حد معدل من جانب المزوّد لذلك الطلب.

إذا صادقت مع Anthropic باستخدام رموز OAuth/الاشتراك (sk-ant-oat-*)، يتخطى OpenClaw رأس beta من context-1m-* لأن Anthropic يرفض حاليًا هذا الجمع مع HTTP 401.

نصائح لتقليل ضغط الرموز

  • استخدم /compact لتلخيص الجلسات الطويلة.
  • قلّم مخرجات الأدوات الكبيرة في سير عملك.
  • خفّض agents.defaults.imageMaxDimensionPx للجلسات كثيفة لقطات الشاشة.
  • أبقِ أوصاف Skills قصيرة (تُحقن قائمة Skills في المطالبة).
  • فضّل النماذج الأصغر للعمل الاستكشافي المطوّل.

راجع Skills لمعرفة الصيغة الدقيقة لتكلفة قائمة Skills.

ذات صلة