الأدوات (OpenClaw)
يُوفّر OpenClaw أدوات وكيل من الدرجة الأولى للمتصفح واللوحة والعُقد وcron. تحلّ هذه الأدوات محل مهاراتopenclaw-* القديمة: فهي مُنمذجة Typed، ولا تعتمد على تنفيذ الأوامر عبر الصدفة،
ويجب على الوكيل الاعتماد عليها مباشرةً.
تعطيل الأدوات
يمكنك السماح/المنع للأدوات على مستوى عام عبرtools.allow / tools.deny في openclaw.json
(الأولوية للمنع). يمنع ذلك إرسال الأدوات غير المسموح بها إلى موفّري النماذج.
- المطابقة غير حسّاسة لحالة الأحرف.
- تدعم بدائل
*("*"تعني جميع الأدوات). - إذا كانت
tools.allowتشير فقط إلى أسماء أدوات إضافات غير معروفة أو غير مُحمّلة، يسجّل OpenClaw تحذيرًا ويتجاهل قائمة السماح بحيث تبقى الأدوات الأساسية متاحة.
ملفات تعريف الأدوات (قائمة السماح الأساسية)
يضبطtools.profile قائمة سماح أساسية للأدوات قبل tools.allow/tools.deny.
تجاوز لكل وكيل: agents.list[].tools.profile.
الملفات التعريفية:
minimal:session_statusفقطcoding:group:fs,group:runtime,group:sessions,group:memory,imagemessaging:group:messaging,sessions_list,sessions_history,sessions_send,session_statusfull: بلا قيود (مماثل لعدم الضبط)
سياسة أدوات خاصة بالموفّر
استخدمtools.byProvider لتقييد الأدوات بشكلٍ إضافي لموفّرين محددين
(أو provider/model واحد) دون تغيير الإعدادات الافتراضية العامة.
تجاوز لكل وكيل: agents.list[].tools.byProvider.
يُطبَّق هذا بعد ملف تعريف الأدوات الأساسي وقبل قوائم السماح/المنع،
لذا يمكنه فقط تضييق مجموعة الأدوات.
تقبل مفاتيح الموفّر إما provider (مثل google-antigravity) أو
provider/model (مثل openai/gpt-5.2).
مثال (الإبقاء على ملف تعريف البرمجة العام، لكن أدوات حدّية لـ Google Antigravity):
مجموعات الأدوات (اختصارات)
تدعم سياسات الأدوات (العامة، الوكيل، sandbox) إدخالاتgroup:* التي تتوسّع إلى عدة أدوات.
استخدمها في tools.allow / tools.deny.
المجموعات المتاحة:
group:runtime:exec,bash,processgroup:fs:read,write,edit,apply_patchgroup:sessions:sessions_list,sessions_history,sessions_send,sessions_spawn,session_statusgroup:memory:memory_search,memory_getgroup:web:web_search,web_fetchgroup:ui:browser,canvasgroup:automation:cron,gatewaygroup:messaging:messagegroup:nodes:nodesgroup:openclaw: جميع أدوات OpenClaw المضمّنة (يستثني إضافات الموفّرين)
الإضافات + الأدوات
يمكن للإضافات تسجيل أدوات إضافية (وأوامر CLI) تتجاوز المجموعة الأساسية. انظر Plugins للتثبيت + التهيئة، وSkills لكيفية حقن إرشادات استخدام الأدوات في المطالبات. تشحن بعض الإضافات مهاراتها الخاصة جنبًا إلى جنب مع الأدوات (على سبيل المثال، إضافة المكالمات الصوتية). أدوات إضافات اختيارية:- Lobster: وقت تشغيل لسير العمل مُنمذج Typed مع موافقات قابلة للاستئناف (يتطلّب Lobster CLI على مضيف Gateway).
- LLM Task: خطوة LLM بمدخلات/مخرجات JSON فقط لإخراج منظّم لسير العمل (تحقق مخطط اختياري).
جرد الأدوات
apply_patch
تطبيق تصحيحات منظّمة عبر ملف واحد أو أكثر. يُستخدم لتحريرات متعددة المقاطع.
تجريبي: فعّل عبر tools.exec.applyPatch.enabled (نماذج OpenAI فقط).
tools.exec.applyPatch.workspaceOnly القيمة الافتراضية لها هي true (ضمن مساحة العمل). عيّنها إلى false فقط إذا كنت تريد عمدًا أن يقوم apply_patch بالكتابة/الحذف خارج دليل مساحة العمل.
exec
تشغيل أوامر الصدفة في مساحة العمل.
المعلمات الأساسية:
command(مطلوب)yieldMs(التحويل التلقائي إلى الخلفية بعد مهلة، الافتراضي 10000)background(خلفية فورية)timeout(بالثواني؛ يقتل العملية إذا تجاوزت، الافتراضي 1800)elevated(منطقي؛ التشغيل على المضيف إذا كان وضع الرفع مُمكّنًا/مسموحًا؛ لا يغيّر السلوك إلا عندما يكون الوكيل في sandbox)host(sandbox | gateway | node)security(deny | allowlist | full)ask(off | on-miss | always)node(معرّف/اسم العُقدة لـhost=node)- هل تحتاج TTY حقيقيًا؟ اضبط
pty: true. تعيينpty: true.
- يعيد
status: "running"معsessionIdعند التشغيل في الخلفية. - استخدم
processللاستطلاع/التسجيل/الكتابة/الإيقاف/المسح لجلسات الخلفية. - إذا كان
processغير مسموح، يعملexecتزامنيًا ويتجاهلyieldMs/background. elevatedمقيّد عبرtools.elevatedبالإضافة إلى أي تجاوزagents.list[].tools.elevated(يجب أن يسمح الاثنان) وهو اسم مستعار لـhost=gateway+security=full.elevatedلا يغيّر السلوك إلا عندما يكون الوكيل في sandbox (وإلا فلا تأثير).- يمكن لـ
host=nodeالاستهداف لتطبيق مرافق على macOS أو لمضيف عُقدة بلا واجهة (openclaw node run). - موافقات Gateway/العُقد وقوائم السماح: Exec approvals.
process
إدارة جلسات exec في الخلفية.
الإجراءات الأساسية:
list,poll,log,write,kill,clear,remove
- يعيد
pollناتجًا جديدًا وحالة الخروج عند الاكتمال. - يدعم
logoffset/limitعلى أساس الأسطر (احذفoffsetلالتقاط آخر N أسطر). processبنطاق كل وكيل؛ جلسات الوكلاء الآخرين غير مرئية.
web_search
البحث على الويب باستخدام Brave Search API.
المعلمات الأساسية:
query(مطلوب)count(1–10؛ الافتراضي منtools.web.search.maxResults)
- يتطلب مفتاح Brave API (مستحسن:
openclaw configure --section web، أو اضبطBRAVE_API_KEY). - فعّل عبر
tools.web.search.enabled. - يتم تخزين الردود مؤقتًا (الافتراضي 15 دقيقة).
- راجع Web tools للإعداد.
web_fetch
جلب واستخراج محتوى مقروء من عنوان URL (HTML → markdown/text).
المعلمات الأساسية:
url(مطلوب)extractMode(markdown|text)maxChars(اقتطاع الصفحات الطويلة)
- فعّل عبر
tools.web.fetch.enabled. - يتم تقييد
maxCharsبواسطةtools.web.fetch.maxCharsCap(الافتراضي 50000). - يتم تخزين الردود مؤقتًا (الافتراضي 15 دقيقة).
- للمواقع الثقيلة بالـ JS، يُفضّل أداة المتصفح.
- راجع Web tools للإعداد.
- راجع Firecrawl كبديل اختياري لمكافحة الروبوتات.
browser
التحكم في المتصفح المُدار من OpenClaw والمخصّص.
الإجراءات الأساسية:
status,start,stop,tabs,open,focus,closesnapshot(aria/ai)screenshot(يعيد كتلة صورة +MEDIA:<path>)act(إجراءات واجهة المستخدم: click/type/press/hover/drag/select/fill/resize/wait/evaluate)navigate,console,pdf,upload,dialog
profiles— سرد جميع ملفات تعريف المتصفح مع الحالةcreate-profile— إنشاء ملف تعريف جديد مع منفذ مُخصّص تلقائيًا (أوcdpUrl)delete-profile— إيقاف المتصفح، حذف بيانات المستخدم، الإزالة من التهيئة (محلي فقط)reset-profile— قتل عملية孤 orphan على منفذ الملف التعريفي (محلي فقط)
profile(اختياري؛ الافتراضيbrowser.defaultProfile)target(sandbox|host|node)node(اختياري؛ اختيار معرّف/اسم عُقدة محدد) ملاحظات:- يتطلب
browser.enabled=true(الافتراضيtrue؛ اضبطfalseللتعطيل). - تقبل جميع الإجراءات معلمة
profileالاختيارية لدعم تعدد النسخ. - عند حذف
profile، يُستخدمbrowser.defaultProfile(الافتراضي “chrome”). - أسماء الملفات التعريفية: أحرف وأرقام صغيرة + شرطات فقط (حد أقصى 64 حرفًا).
- نطاق المنافذ: 18800-18899 (~100 ملف تعريف كحد أقصى).
- الملفات التعريفية البعيدة للاتصال فقط (لا بدء/إيقاف/إعادة ضبط).
- إذا كانت هناك عُقدة قادرة على المتصفح متصلة، قد تُوجّه الأداة تلقائيًا إليها (ما لم تثبّت
target). snapshotافتراضيًاaiعند تثبيت Playwright؛ استخدمariaلشجرة إمكانية الوصول.- يدعم
snapshotأيضًا خيارات لقطة الدور (interactive,compact,depth,selector) التي تُعيد مراجع مثلe12. - يتطلب
actrefمنsnapshot(قيمة عددية12من لقطات الذكاء الاصطناعي، أوe12من لقطات الدور)؛ استخدمevaluateلاحتياجات محدودة لمحددات CSS. - تجنّب
act→waitافتراضيًا؛ استخدمه فقط في الحالات الاستثنائية (عدم وجود حالة واجهة موثوقة للانتظار). - يمكن لـ
uploadتمريرrefاختياريًا للنقر التلقائي بعد التجهيز. - يدعم
uploadأيضًاinputRef(مرجع aria) أوelement(محدد CSS) لضبط<input type="file">مباشرةً.
canvas
قيادة لوحة Canvas للعُقدة (present, eval, snapshot, A2UI).
الإجراءات الأساسية:
present,hide,navigate,evalsnapshot(يعيد كتلة صورة +MEDIA:<path>)a2ui_push,a2ui_reset
- يستخدم
node.invokeالخاص بـ Gateway داخليًا. - إذا لم يتم توفير
node، تختار الأداة افتراضيًا (عُقدة واحدة متصلة أو عُقدة mac محلية). - A2UI متاح لإصدار v0.8 فقط (لا
createSurface)؛ يرفض CLI JSONL لإصدار v0.9 مع أخطاء سطرية. - فحص سريع:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
اكتشاف واستهداف العُقد المقترنة؛ إرسال الإشعارات؛ التقاط الكاميرا/الشاشة.
الإجراءات الأساسية:
status,describepending,approve,reject(الاقتران)notify(macOSsystem.notify)run(macOSsystem.run)camera_snap,camera_clip,screen_recordlocation_get
- تتطلب أوامر الكاميرا/الشاشة أن يكون تطبيق العُقدة في الواجهة الأمامية.
- تُعيد الصور كتل صور +
MEDIA:<path>. - تُعيد الفيديوهات
FILE:<path>(mp4). - يُعيد الموقع حمولة JSON (lat/lon/accuracy/timestamp).
- معلمات
run: مصفوفة argv لـcommand؛ اختياريًاcwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
run):
image
تحليل صورة باستخدام نموذج الصور المُهيّأ.
المعلمات الأساسية:
image(مسار أو URL مطلوب)prompt(اختياري؛ الافتراضي “Describe the image.”)model(تجاوز اختياري)maxBytesMb(حدّ حجم اختياري)
- متاح فقط عند تهيئة
agents.defaults.imageModel(أساسي أو بدائل)، أو عند إمكانية استنتاج نموذج صور ضمنيًا من نموذجك الافتراضي + اعتماد مُهيّأ (محاولة أفضل). - يستخدم نموذج الصور مباشرةً (مستقل عن نموذج الدردشة الرئيسي).
message
إرسال الرسائل وإجراءات القنوات عبر Discord/Google Chat/Slack/Telegram/WhatsApp/Signal/iMessage/MS Teams.
الإجراءات الأساسية:
send(نص + وسائط اختيارية؛ يدعم MS Teams أيضًاcardلبطاقات Adaptive)poll(استطلاعات WhatsApp/Discord/MS Teams)react/reactions/read/edit/deletepin/unpin/list-pinspermissionsthread-create/thread-list/thread-replysearchstickermember-info/role-infoemoji-list/emoji-upload/sticker-uploadrole-add/role-removechannel-info/channel-listvoice-statusevent-list/event-createtimeout/kick/ban
- يوجّه
sendWhatsApp عبر Gateway؛ القنوات الأخرى مباشرة. - يستخدم
pollGateway لـ WhatsApp وMS Teams؛ بينما تذهب استطلاعات Discord مباشرة. - عند ربط استدعاء أداة الرسائل بجلسة دردشة نشطة، تُقيَّد الإرسالات بهدف تلك الجلسة لتجنّب تسريبات السياق المتقاطعة.
cron
إدارة مهام cron والتنبيهات في Gateway.
الإجراءات الأساسية:
status,listadd,update,remove,run,runswake(إدراج حدث نظام + نبضة فورية اختيارية)
- يتوقع
addكائن مهمة cron كامل (نفس مخطط استدعاء RPC لـcron.add). - يستخدم
update{ jobId, patch }(يُقبلidللتوافق).
gateway
إعادة تشغيل أو تطبيق تحديثات على عملية Gateway الجارية (في المكان).
الإجراءات الأساسية:
restart(تفويض + إرسالSIGUSR1لإعادة تشغيل داخل العملية؛ إعادة تشغيلopenclaw gatewayفي المكان)config.get/config.schemaconfig.apply(تحقق + كتابة التهيئة + إعادة تشغيل + إيقاظ)config.patch(دمج تحديث جزئي + إعادة تشغيل + إيقاظ)update.run(تشغيل التحديث + إعادة تشغيل + إيقاظ)
- استخدم
delayMs(الافتراضي 2000) لتجنّب مقاطعة رد جارٍ. restartمعطّل افتراضيًا؛ فعّله عبرcommands.restart: true.
sessions_list / sessions_history / sessions_send / sessions_spawn / session_status
سرد الجلسات، فحص سجل المحادثة، أو الإرسال إلى جلسة أخرى.
المعلمات الأساسية:
sessions_list:kinds?,limit?,activeMinutes?,messageLimit?(0 = لا شيء)sessions_history:sessionKey(أوsessionId),limit?,includeTools?sessions_send:sessionKey(أوsessionId),message,timeoutSeconds?(0 = إرسال دون انتظار)sessions_spawn:task,label?,agentId?,model?,runTimeoutSeconds?,cleanup?session_status:sessionKey?(الافتراضي الحالي؛ يقبلsessionId),model?(defaultيمسح التجاوز)
mainهو مفتاح الدردشة المباشرة القياسي؛ يتم إخفاء العام/غير المعروف.- يجلب
messageLimit > 0آخر N رسائل لكل جلسة (مع تصفية رسائل الأدوات). - ينتظر
sessions_sendالاكتمال النهائي عندما يكونtimeoutSeconds > 0. - يتم التسليم/الإعلان بعد الاكتمال وبأفضل جهد؛ يؤكد
status: "ok"انتهاء تشغيل الوكيل، وليس تسليم الإعلان. - يبدأ
sessions_spawnتشغيل وكيل فرعي وينشر رد إعلان إلى دردشة الطالب. sessions_spawnغير حاجز ويعيدstatus: "accepted"فورًا.- يُشغّل
sessions_sendتبادل ping‑pong للرد (أرسلREPLY_SKIPللإيقاف؛ الحد الأقصى للدورات عبرsession.agentToAgent.maxPingPongTurns، 0–5). - بعد ping‑pong، ينفّذ الوكيل الهدف خطوة إعلان؛ أرسل
ANNOUNCE_SKIPلكتم الإعلان.
agents_list
سرد معرّفات الوكلاء التي يمكن للجلسة الحالية استهدافها عبر sessions_spawn.
ملاحظات:
- النتيجة مقيّدة بقوائم السماح لكل وكيل (
agents.list[].subagents.allowAgents). - عند تهيئة
["*"]، تتضمن الأداة جميع الوكلاء المُهيّئين وتُعلِّمallowAny: true.
المعلمات (شائعة)
الأدوات المدعومة من Gateway (canvas, nodes, cron):
gatewayUrl(الافتراضيws://127.0.0.1:18789)gatewayToken(إذا كان التحقق مُفعّلًا)timeoutMs
gatewayUrl، ضمّن gatewayToken صراحةً. لا ترث الأدوات التهيئة
أو بيانات اعتماد البيئة للتجاوزات، ويُعد غياب بيانات الاعتماد الصريحة خطأً.
أداة المتصفح:
profile(اختياري؛ الافتراضيbrowser.defaultProfile)target(sandbox|host|node)node(اختياري؛ تثبيت معرّف/اسم عُقدة محدد)
تدفقات الوكيل الموصى بها
أتمتة المتصفح:browser→status/startsnapshot(ai أو aria)act(click/type/press)screenshotإذا احتجت تأكيدًا بصريًا
canvas→presenta2ui_push(اختياري)snapshot
nodes→statusdescribeعلى العُقدة المختارةnotify/run/camera_snap/screen_record
السلامة
- تجنّب
system.runالمباشر؛ استخدمnodes→runفقط بموافقة صريحة من المستخدم. - احترم موافقة المستخدم لالتقاط الكاميرا/الشاشة.
- استخدم
status/describeلضمان الأذونات قبل استدعاء أوامر الوسائط.
كيفية عرض الأدوات للوكيل
تُعرَض الأدوات عبر قناتين متوازيتين:- نص موجه النظام: قائمة قابلة للقراءة البشرية + إرشادات.
- مخطط الأداة: تعريفات الدوال المنظّمة المُرسلة إلى واجهة برمجة تطبيقات النموذج.