openclaw path
وصول عبر الصدفة إلى مخطط العنونة oc://: صيغة مسار واحدة توجّه حسب النوع
لفحص ملفات مساحة العمل القابلة للعنونة وتحريرها (markdown وjsonc وjsonl
وyaml/yml/lobster). يستخدمها مستضيفو الأنظمة ذاتيًا ومؤلفو الإضافات وامتدادات
المحررات لقراءة موقع ضيق أو العثور عليه أو تحديثه دون إنشاء محلل مخصص
لكل نوع ملف يدويًا.
يوفّر Plugin الاختياري المضمّن oc-path الأمر path. فعّله قبل
الاستخدام الأول:
resolveمحدد ويطابق نتيجة واحدة.findهو فعل المطابقات المتعددة لأحرف البدل والاتحادات والمسندات والتوسيع الموضعي.- لا يقبل
setإلا المسارات المحددة أو علامات الإدراج؛ وتُرفض أنماط أحرف البدل قبل الكتابة. - يحلل
validateمسارًا دون الوصول إلى نظام الملفات. - يمرّر
emitملفًا ذهابًا وإيابًا عبر التحليل + الإصدار (تشخيص تطابق البايتات).
لماذا تستخدمه
تتوزع حالة OpenClaw بين ملفات markdown يحررها البشر، وإعدادات JSONC ذات تعليقات، وسجلات JSONL للإلحاق فقط، وملفات سير العمل/المواصفات بصيغة YAML. غالبًا ما تحتاج النصوص البرمجية والخطافات والوكلاء إلى قيمة صغيرة واحدة من تلك الملفات: مفتاح frontmatter، أو إعداد Plugin، أو حقل سجل، أو خطوة YAML، أو عنصر نقطي تحت قسم مسمى. يمنحopenclaw path هؤلاء المستدعين عنوانًا ثابتًا بدلًا من استخدام
grep أو تعبير نمطي أو محلل مؤقت لكل نوع ملف. يمكن التحقق من مسار oc://
نفسه وحلّه والبحث فيه وتجربته دون كتابة وكتابته من الطرفية، ما يجعل الأتمتة
الضيقة قابلة للمراجعة وإعادة التشغيل. وهو يحافظ على بقية الملف، لذا لا تؤثر
كتابة ورقة طرفية واحدة في تعليقاته أو نهايات أسطره أو تنسيقه القريب.
استخدمه عندما يكون للشيء المطلوب عنوان منطقي، لكن شكل الملف يختلف:
- تقرأ خطافة إعدادًا واحدًا من JSONC ذي تعليقات دون فقدان التعليقات عند كتابة القيمة مجددًا.
- يعثر نص برمجي للصيانة على كل حقل حدث مطابق في سجل JSONL دون تحميل السجل كاملًا في محلل مخصص.
- ينتقل محرر إلى قسم markdown أو عنصر نقطي حسب المعرّف المختصر، ثم يعرض السطر الدقيق الذي حُلّ إليه.
- يجري وكيل تجربة دون كتابة لتعديل صغير في مساحة العمل قبل تطبيقه، مع ظهور البايتات المتغيرة في المراجعة.
openclaw path في تعديلات الملفات الكاملة العادية، أو عمليات ترحيل
الإعدادات الغنية، أو عمليات الكتابة الخاصة بالذاكرة؛ وينبغي أن تستخدم هذه
أمر المالك أو Plugin الخاص به. صُمم path لعمليات الملفات الصغيرة القابلة
للعنونة، حيث يتفوق أمر طرفية قابل للتكرار على إنشاء محلل مخصص آخر.
كيفية استخدامه
اقرأ قيمة واحدة من ملف إعدادات يحرره البشر:--json
عندما يحتاج المستدعي إلى مخرجات منظمة، و--human عندما يفحص شخص
النتيجة.
كيفية عمله
- يحلل عنوان
oc://إلى خانات: الملف والقسم والعنصر والحقل واستعلام جلسة اختياري. - يختار مهايئ نوع الملف من امتداد الهدف (
.mdو.jsoncو.jsonو.jsonlو.ndjsonو.yamlو.ymlو.lobster). - يحل الخانات وفق بنية نوع الملف: عناوين/عناصر markdown، ومفاتيح كائنات JSONC/فهارس مصفوفاته، وسجلات أسطر JSONL، أو عُقد الخرائط/التسلسلات في YAML.
- بالنسبة إلى
set، يُصدر البايتات المعدّلة عبر المهايئ نفسه حتى تحتفظ الأجزاء غير المعدّلة من الملف بتعليقاتها ونهايات أسطرها وتنسيقها القريب حيث يدعم النوع ذلك.
resolve وset هدفًا محددًا واحدًا. أما find فهو الفعل
الاستكشافي: يوسّع أحرف البدل والاتحادات والمسندات والترتيبيات إلى المطابقات
المحددة التي يمكنك فحصها قبل اختيار واحدة للكتابة.
الأوامر الفرعية
العلامات العامة
لا يقبل
validate سوى --json / --human؛ فهو لا يصل إلى نظام الملفات،
لذلك لا ينطبق عليه --cwd و--file.
صيغة oc://
field وجود item، ويتطلب item وجود section.
عبر الخانات الأربع كلها:
- المقاطع المقتبسة — يحافظ
"a/b.c"على فواصل/و.. المحتوى حرفي على مستوى البايتات؛ ولا يُسمح بـ"و\داخل علامات الاقتباس. تراعي خانة الملف أيضًا علامات الاقتباس: يعاملoc://"skills/email-drafter"/Tools/$lastالمسارskills/email-drafterبوصفه مسار ملف واحدًا. - المسندات —
[k=v]و[k!=v]و[k<v]و[k<=v]و[k>v]و[k>=v]. تتطلب المعاملات الرقمية إمكان تحويل كلا الطرفين إلى أرقام منتهية. - الاتحادات — يطابق
{a,b,c}أيًا من البدائل. - أحرف البدل —
*(مقطع فرعي واحد) و**(صفر أو أكثر، تكراري). يقبلهاfind؛ ويرفضهاresolveوsetلكونها ملتبسة. - الموضعية — يُحل
$first/$lastإلى أول / آخر فهرس أو مفتاح معلن. - الترتيبية —
#Nللمطابقة رقم N حسب ترتيب المستند. - علامات الإدراج —
+و+keyو+nnnللإدراج ذي المفتاح / المفهرس (تُستخدم معset). - نطاق الجلسة —
?session=cron-dailyوما شابه. مستقل عن تداخل الخانات. قيم الجلسة خام ولا تُفك منها ترميزات النسبة المئوية؛ ولا يجوز أن تحتوي على محارف تحكم أو محددات الاستعلام المحجوزة (?و&و%).
? و& و%) خارج المقاطع المقتبسة أو مقاطع
المسندات أو الاتحادات. وتُرفض محارف التحكم (U+0000-U+001F وU+007F)
في أي موضع، بما في ذلك قيمة استعلام session.
يُضمن تحقق formatOcPath(parseOcPath(path)) === path للمسارات القياسية.
تُتجاهل معاملات الاستعلام غير القياسية باستثناء أول قيمة غير فارغة
لـsession=.
الحدود القصوى: يقتصر المسار على 4096 بايتات، و4 خانات كحد أقصى (ملف/قسم/عنصر/
حقل)، و64 مقطعًا فرعيًا مفصولًا بنقاط كحد أقصى لكل خانة، و256 مستوى
اجتياز متداخلًا كحد أقصى لمسارات JSON العميقة. وبشكل منفصل، يُرفض أي إدخال
ملف JSONC/JSON يتجاوز 16 MiB مع تشخيص تحليل بدلًا من تحليله،
وذلك لأي فعل يحمّل ذلك الملف.
العنونة حسب نوع الملف
يعيد
resolve مطابقة منظمة: root أو node أو leaf أو
insertion-point، مع رقم سطر يبدأ من 1. تُعرض قيم الأوراق الطرفية كنص
بالإضافة إلى leafType حتى يتمكن مؤلفو Plugin من عرض المعاينات دون
الاعتماد على شكل AST الخاص بكل نوع.
عقد التعديل
يكتبset هدفًا محددًا واحدًا:
- قيم frontmatter في Markdown وحقول عناصر
- key: valueهي أوراق طرفية نصية. تلحق عمليات إدراج Markdown أقسامًا أو مفاتيح frontmatter أو عناصر أقسام، وتعرض شكل markdown قياسيًا للملف المعدّل. لا يمكن كتابة أجسام الأقسام كاملة عبرset. - تحوّل عمليات كتابة أوراق JSONC الطرفية القيمة النصية إلى نوع الورقة
الطرفية الحالية (
stringأوnumberمنتهٍ أوtrue/falseأوnull). استخدم--value-jsonعندما ينبغي تحليل استبدال ورقة طرفية في JSONC/JSON/JSONL للقيمة<value>بوصفها JSON وقد يغيّر الشكل، مثل استبدال اختصار مرجع سر نصي بكائن. تحلل عمليات الإدراج في كائنات ومصفوفات JSONC القيمة<value>بوصفها JSON، وتستخدم مسار تحريرjsonc-parserلعمليات كتابة الأوراق الطرفية العادية، مع الحفاظ على التعليقات والتنسيق القريب. - تحوّل عمليات كتابة أوراق JSONL الطرفية الأنواع كما يفعل JSONC داخل السطر.
يحلل استبدال السطر كاملًا والإلحاق القيمة
<value>بوصفها JSON. يحافظ JSONL المعروض على النمط الغالب لنهايات الأسطر LF/CRLF في الملف (بتصويت الأغلبية عبر أسطر الملف الجديدة، لذا يبقى الملف ذو أغلبية CRLF بصيغة CRLF حتى مع وجود بعض أسطر LF الشاذة). - تحوّل عمليات كتابة أوراق YAML الطرفية القيمة إلى نوع العدد القياسي الحالي
(
stringأوnumberمنتهٍ أوtrue/falseأوnull). تستخدم عمليات إدراج YAML واجهة برمجة المستند في حزمةyamlالمضمّنة لتحديث الخرائط/ التسلسلات. تُرفض مستندات YAML المشوهة التي تحتوي على أخطاء محلل قبل التعديل معparse-error.
--dry-run قبل عمليات الكتابة المرئية للمستخدم عندما تكون البايتات
الدقيقة مهمة. تُرقّع تعديلات JSONC وYAML المستند الحالي (عبر jsonc-parser
أو واجهة برمجة مستند yaml)، لذا تبقى البايتات غير المعدّلة عادةً؛ أما
markdown فيعيد بناء الملف من بنيته المحللة عند أي تعديل، ما قد يوحّد التنسيق
العرضي خارج الورقة الطرفية المعدّلة. أضف --diff عندما تريد المعاينة في شكل
رقعة مركزة قبل/بعد بدلًا من الملف المعروض كاملًا.
أمثلة
وصفات حسب نوع الملف
تعمل الأفعال الخمسة نفسها عبر الأنواع المختلفة؛ ويُوجّه نظام العنونة العملية بناءً على امتداد الملف.Markdown
[frontmatter] كتلة البيانات الوصفية الأمامية في YAML؛ ويطابق tools
العنوان ## Tools عبر الاسم اللطيف، وتحتفظ أوراق العناصر بصيغة الاسم اللطيف الخاصة بها
حتى عندما يستخدم المصدر الشرطات السفلية (تتحول send_email إلى send-email).
JSONC
jsonc-parser، لذا تبقى التعليقات والمسافات البيضاء محفوظة بعد
عملية set. شغّل الأمر أولًا باستخدام --dry-run لفحص البايتات قبل اعتماد التغيير.
تستخدم ملفات .json المهايئ ومسار التعديل نفسيهما المستخدمين لملفات .jsonc.
JSONL
[event=action]) عندما لا تعرف
رقم السطر، أو بمقطع LN القياسي عندما تعرفه.
تستخدم ملفات .ndjson المهايئ نفسه المستخدم لملفات .jsonl.
YAML
Document الخاصة بحزمة yaml بدلًا من محلل
مُنشأ يدويًا، لذا تحافظ دورات التحليل والإخراج العادية على التعليقات
وشكل التأليف، بينما تستخدم المسارات المحلولة نموذج مفتاح الخريطة / فهرس التسلسل نفسه
المستخدم في JSONC. يتولى المهايئ نفسه معالجة ملفات .yaml و.yml و.lobster.
مرجع الأوامر الفرعية
resolve <oc-path>
اقرأ ورقة أو عقدة واحدة. تُرفض أحرف البدل — استخدم find لها.
ينتهي برمز 0 عند وجود تطابق، و1 عند عدم وجود تطابق دون خطأ، و2 عند حدوث خطأ تحليل أو رفض
النمط.
find <pattern>
اسرد كل تطابق لنمط يحتوي على حرف بدل / مسند / اتحاد. ينتهي برمز 0
عند وجود تطابق واحد على الأقل، و1 عند عدم وجود أي تطابق. تُرفض أحرف البدل في خانة الملف بالرمز
OC_PATH_FILE_WILDCARD_UNSUPPORTED — مرّر ملفًا محددًا (مطابقة الأنماط عبر
ملفات متعددة ميزة لاحقة).
set <oc-path> <value>
اكتب ورقة. استخدمه مع --dry-run لمعاينة البايتات التي ستُكتب
من دون المساس بالملف. أضف --diff لمعاينة فرق موحّد.
ينتهي برمز 0 عند نجاح الكتابة، و1 إذا رفضت الركيزة العملية (مثلًا عند
تفعيل حارس العلامة)، و2 عند حدوث أخطاء تحليل.
+key الابن المسمى إن لم يكن موجودًا بالفعل؛ وتعمل +nnn
و+ المجردة للإدراج المفهرس والإلحاق على التوالي.
validate <oc-path>
فحص تحليل فقط. لا وصول إلى نظام الملفات. يفيد عندما تريد التأكد من أن
مسار قالب صحيح الصياغة قبل استبدال المتغيرات، أو عندما تريد
التفصيل البنيوي لتصحيح الأخطاء:
0 عندما يكون صالحًا، و1 عندما يكون غير صالح (مع code
وmessage منظّمين)، و2 عند حدوث أخطاء في الوسائط.
emit <file>
مرّر ملفًا في دورة كاملة عبر المحلل والمُخرِج الخاصين بنوعه. يجب أن يكون الناتج
مطابقًا للمدخل على مستوى البايتات إذا كان الملف سليمًا؛ ويشير الاختلاف إلى
خلل في المحلل أو تفعيل علامة. يفيد لتصحيح سلوك الركيزة على
مدخلات واقعية.
رموز الخروج
وضع الإخراج
يتكيفopenclaw path مع TTY: إخراج مقروء للبشر في الطرفية، وJSON عندما
يُمرر stdout عبر أنبوب أو يُعاد توجيهه. يتجاوز --json و--human
الاكتشاف التلقائي.
ملاحظات
- يكتب
setالبايتات عبر مسار الإخراج الخاص بالركيزة، والذي يطبق حارس علامة التنقيح تلقائيًا. تُرفض أثناء الكتابة أي ورقة تحمل__OPENCLAW_REDACTED__(حرفيًا أو كسلسلة فرعية). - يستخدم تحليل JSONC وتعديل الأوراق اعتمادية
jsonc-parserالمحلية للـ Plugin، لذا تُحفظ التعليقات والتنسيق في عمليات كتابة الأوراق العادية بدلًا من المرور عبر مسار محلل وإعادة تصيير مُنشأ يدويًا. - لا يدرك
pathتتبع إعدادات آخر نسخة صالحة معروفة (LKG) أو الاسترداد؛ فتلك دورة حياة مملوكة في موضع آخر. إذا كان ملف تعدله عبرpathخاضعًا أيضًا لتتبع LKG، فإن قراءة الإعدادات التالية تقرر ما إذا كانت ستعتمده أو تسترده؛ تعامل مع تعديلpathبالطريقة نفسها التي تعامل بها أي كتابة مباشرة أخرى إلى ذلك الملف.