الأدوات
يعرض OpenClaw أدوات وكيل من الدرجة الأولى للمتصفح، اللوحة القماشية، العقد، والمهام المجدولة. هذه تحل محل مهارات openclaw-* القديمة: الأدوات مكتوبة، لا تتطلب shell، ويجب أن يعتمد الوكيل عليها مباشرة.
تعطيل الأدوات
يمكنك السماح/منع الأدوات عالميًا عبر tools.allow / tools.deny في openclaw.json (المنع يفوز). هذا يمنع إرسال الأدوات غير المسموح بها إلى مقدمي النماذج.
{
tools: { deny: ["browser"] },
}
ملاحظات:
- المطابقة غير حساسة لحالة الأحرف.
- الرموز البديلة
*مدعومة ("*"تعني جميع الأدوات). - إذا كانت
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: لا قيود (نفس عدم التعيين)
مثال (المراسلة فقط افتراضيًا، السماح بأدوات Slack + Discord أيضًا):
{
tools: {
profile: "messaging",
allow: ["slack", "discord"],
},
}
مثال (ملف تعريف البرمجة، ولكن منع exec/process في كل مكان):
{
tools: {
profile: "coding",
deny: ["group:runtime"],
},
}
مثال (ملف تعريف برمجة عالمي، وكيل دعم للمراسلة فقط):
{
tools: { profile: "coding" },
agents: {
list: [
{
id: "support",
tools: { profile: "messaging", allow: ["slack"] },
},
],
},
}
سياسة الأداة الخاصة بمقدم الخدمة
استخدم tools.byProvider لتقييد الأدوات لمقدمي خدمة محددين (أو provider/model واحد) دون تغيير الإعدادات الافتراضية العالمية. تجاوز لكل وكيل: agents.list[].tools.byProvider. يتم تطبيق هذا بعد ملف تعريف الأداة الأساسي وقبل قوائم السماح/المنع، لذا يمكنه فقط تضييق مجموعة الأدوات. تقبل مفاتيح المزود إما provider (مثل google-antigravity) أو provider/model (مثل openai/gpt-5.2). مثال (احتفظ بملف تعريف البرمجة العالمي، ولكن أدوات دنيا لـ Google Antigravity):
{
tools: {
profile: "coding",
byProvider: {
"google-antigravity": { profile: "minimal" },
},
},
}
مثال (قائمة السماح الخاصة بـ provider/model لنقطة نهاية غير مستقرة):
{
tools: {
allow: ["group:fs", "group:runtime", "sessions_list"],
byProvider: {
"openai/gpt-5.2": { allow: ["group:fs", "sessions_list"] },
},
},
}
مثال (تجاوز خاص بالوكيل لمزود واحد):
{
agents: {
list: [
{
id: "support",
tools: {
byProvider: {
"google-antigravity": { allow: ["message", "sessions_list"] },
},
},
},
],
},
}
مجموعات الأدوات (اختصارات)
تدعم سياسات الأدوات (العالمية، الوكيل، 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 المدمجة (تستثني إضافات المزود)
مثال (السماح بأدوات الملفات + المتصفح فقط):
{
tools: {
allow: ["group:fs", "browser"],
},
}
الإضافات + الأدوات
يمكن للإضافات تسجيل أدوات إضافية (وأوامر CLI) تتجاوز المجموعة الأساسية. راجع الإضافات للتثبيت + التكوين، والمهارات لكيفية حقن إرشادات استخدام الأداة في المحفزات. بعض الإضافات تشحن مهاراتها الخاصة جنبًا إلى جنب مع الأدوات (على سبيل المثال، إضافة voice-call). أدوات الإضافات الاختيارية:
- Lobster: وقت تشغيل سير عمل مكتوب مع موافقات قابلة للاستئناف (يتطلب Lobster CLI على مضيف البوابة).
- LLM Task: خطوة LLM بـ JSON فقط لإخراج سير عمل منظم (تحقق اختياري من المخطط).
- Diffs: عارض فروق للقراءة فقط وعارض ملفات PNG أو PDF للنصوص قبل/بعد أو تصحيحات موحدة.
جرد الأدوات
apply_patch
تطبيق تصحيحات منظمة عبر ملف واحد أو أكثر. استخدم للتعديلات متعددة الأجزاء. تجريبي: تمكين عبر tools.exec.applyPatch.enabled (نماذج OpenAI فقط). tools.exec.applyPatch.workspaceOnly الافتراضي هو true (محتوى مساحة العمل). اضبطه على false فقط إذا كنت تريد عمدًا أن يكتب apply_patch/يحذف خارج دليل مساحة العمل.
exec
تشغيل أوامر shell في مساحة العمل. المعلمات الأساسية:
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.
ملاحظات:
- يُرجع
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). - موافقات البوابة/العقدة وقوائم السماح: موافقات التنفيذ.
process
إدارة جلسات exec في الخلفية. الإجراءات الأساسية:
list,poll,log,write,kill,clear,remove
ملاحظات:
- يُرجع
pollمخرجات جديدة وحالة خروج عند الاكتمال. - يدعم
logoffset/limitقائم على الأسطر (احذفoffsetلأخذ آخر N سطر). processمحدد لكل وكيل؛ الجلسات من وكلاء آخرين غير مرئية.
loop-detection (حواجز حماية حلقة استدعاء الأداة)
يتتبع OpenClaw تاريخ استدعاءات الأداة الحديثة ويمنع أو يحذر عند اكتشاف حلقات متكررة بدون تقدم. تمكين بـ tools.loopDetection.enabled: true (الافتراضي هو false).
{
tools: {
loopDetection: {
enabled: true,
warningThreshold: 10,
criticalThreshold: 20,
globalCircuitBreakerThreshold: 30,
historySize: 30,
detectors: {
genericRepeat: true,
knownPollNoProgress: true,
pingPong: true,
},
},
},
}
genericRepeat: نمط استدعاء نفس الأداة + نفس المعلمات المتكرر.knownPollNoProgress: تكرار أدوات شبيهة بـ poll مع مخرجات متطابقة.pingPong: أنماطA/B/A/Bمتناوبة بدون تقدم.- تجاوز لكل وكيل:
agents.list[].tools.loopDetection.
web_search
البحث على الويب باستخدام Perplexity أو Brave أو Gemini أو Grok أو Kimi. المعلمات الأساسية:
query(مطلوب)count(1–10؛ الافتراضي منtools.web.search.maxResults)
ملاحظات:
- يتطلب مفتاح API لمزود الخدمة المختار (موصى به:
openclaw configure --section web). - تمكين عبر
tools.web.search.enabled. - يتم تخزين الردود مؤقتًا (افتراضي 15 دقيقة).
- راجع أدوات الويب للإعداد.
web_fetch
جلب واستخراج محتوى قابل للقراءة من عنوان URL (HTML → markdown/نص). المعلمات الأساسية:
url(مطلوب)extractMode(markdown|text)maxChars(اقتطاع الصفحات الطويلة)
ملاحظات:
- تمكين عبر
tools.web.fetch.enabled. maxCharsمقيد بـtools.web.fetch.maxCharsCap(الافتراضي 50000).- يتم تخزين الردود مؤقتًا (افتراضي 15 دقيقة).
- للمواقع كثيرة الـ JS، يُفضل استخدام أداة المتصفح.
- راجع أدوات الويب للإعداد.
- راجع 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— قتل عملية يتيمة على منفذ الملف الشخصي (محلي فقط)
المعلمات الشائعة:
profile(اختياري؛ الافتراضيbrowser.defaultProfile)target(sandbox|host|node)node(اختياري؛ يختار معرف/اسم عقدة محدد) ملاحظات:- يتطلب
browser.enabled=true(الافتراضي هوtrue؛ اضبطfalseلتعطيل). - جميع الإجراءات تقبل معلمة
profileاختيارية لدعم مثيلات متعددة. - عند حذف
profile، يستخدمbrowser.defaultProfile(الافتراضي "chrome"). - أسماء الملفات الشخصية: أحرف أبجدية رقمية صغيرة + شرطات فقط (بحد أقصى 64 حرفًا).
- نطاق المنفذ: 18800-18899 (~100 ملف تعريف كحد أقصى).
- ملفات التعريف البعيدة هي إرفاق فقط (بدون start/stop/reset).
- إذا كانت عقدة قادرة على المتصفح متصلة، قد تقوم الأداة بتوجيه تلقائي إليها (ما لم تثبت
target). snapshotالافتراضي هوaiعند تثبيت Playwright؛ استخدمariaلشجرة إمكانية الوصول.- يدعم
snapshotأيضًا خيارات لقطة الدور (interactive,compact,depth,selector) والتي تُرجع مراجع مثلe12. - يتطلب
actrefمنsnapshot(12رقمي من لقطات AI، أو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للبوابة تحت الغطاء. - إذا لم يتم توفير
node، تختار الأداة افتراضيًا (عقدة واحدة متصلة أو عقدة mac محلية). - A2UI هو v0.8 فقط (لا
createSurface)؛ يرفض CLI v0.9 JSONL مع أخطاء الأسطر. - اختبار سريع:
openclaw nodes canvas a2ui push --node <id> --text "Hello from A2UI".
nodes
اكتشاف واستهداف العقد المقترنة؛ إرسال إشعارات؛ التقاط الكاميرا/الشاشة. الإجراءات الأساسية:
status,describepending,approve,reject(الاقتران)notify(macOSsystem.notify)run(macOSsystem.run)camera_list,camera_snap,camera_clip,screen_recordlocation_get,notifications_list,notifications_actiondevice_status,device_info,device_permissions,device_health
ملاحظات:
- تتطلب أوامر الكاميرا/الشاشة أن يكون تطبيق العقدة في المقدمة.
- تُرجع الصور كتل صور +
MEDIA:<path>. - تُرجع مقاطع الفيديو
FILE:<path>(mp4). - يُرجع الموقع حمولة JSON (lat/lon/accuracy/timestamp).
- معلمات
run:commandمصفوفة argv؛ اختياريcwd,env(KEY=VAL),commandTimeoutMs,invokeTimeoutMs,needsScreenRecording.
مثال (run):
{
"action": "run",
"node": "office-mac",
"command": ["echo", "Hello"],
"env": ["FOO=bar"],
"commandTimeoutMs": 12000,
"invokeTimeoutMs": 45000,
"needsScreenRecording": false
}
image
تحليل صورة باستخدام نموذج الصورة المُكون. المعلمات الأساسية:
image(مسار أو عنوان URL مطلوب)prompt(اختياري؛ الافتراضي "Describe the image.")model(تجاوز اختياري)maxBytesMb(حد حجم اختياري)
ملاحظات:
- متاح فقط عند تكوين
agents.defaults.imageModel(أولي أو احتياطي)، أو عندما يمكن استنتاج نموذج صورة ضمني من نموذجك الافتراضي + المصادقة المُكونة (اقتران بأفضل جهد). - يستخدم نموذج الصورة مباشرة (مستقل عن نموذج الدردشة الرئيسي).
تحليل مستند PDF واحد أو أكثر. للسلوك الكامل، الحدود، التكوين، والأمثلة، راجع أداة PDF.
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
ملاحظات:
sendيوجه WhatsApp عبر البوابة؛ القنوات الأخرى تذهب مباشرة.- يستخدم
pollالبوابة لـ WhatsApp و MS Teams؛ استطلاعات Discord تذهب مباشرة. - عندما يكون استدعاء أداة الرسالة مرتبطًا بجلسة دردشة نشطة، تكون عمليات الإرسال مقيدة بهدف تلك الجلسة لتجنب تسريبات عبر السياقات.
cron
إدارة وظائف cron المجدولة للبوابة والاستيقاظ. الإجراءات الأساسية:
status,listadd,update,remove,run,runswake(إدراج حدث نظام + نبض قلب فوري اختياري)
ملاحظات:
- يتوقع
addكائن وظيفة cron كامل (نفس مخططcron.addRPC). - يستخدم
update{ jobId, patch }(يُقبلidللتطابق).
gateway
إعادة تشغيل أو تطبيق تحديثات على عملية البوابة قيد التشغيل (في المكان). الإجراءات الأساسية:
restart(يصرح + يرسلSIGUSR1لإعادة التشغيل داخل العملية؛openclaw gatewayrestart في المكان)config.schema.lookup(فحص مسار تكوين واحد في كل مرة دون تحميل المخطط الكامل في سياق المحفز)config.getconfig.apply(التحقق + كتابة التكوين + إعادة التشغيل + استيقاظ)config.patch(دمج تحديث جزئي + إعادة التشغيل + استيقاظ)update.run(تشغيل تحديث + إعادة التشغيل + استيقاظ)
ملاحظات:
- يتوقع
config.schema.lookupمسار تكوين مستهدف مثلgateway.authأوagents.list.*.heartbeat. - قد تتضمن المسارات معرفات إضافات مفصولة بشرطة مائلة عند معالجة
plugins.entries.<id>، على سبيل المثالplugins.entries.pack/one.config. - استخدم
delayMs(الافتراضي 2000) لتجنب مقاطعة رد قيد التنفيذ. - يبقى
config.schemaمتاحًا لتدفقات واجهة التحكم الداخلية ولا يتم كشفه من خلال أداةgatewayللوكيل. restartمفعل افتراضيًا؛ اضبطcommands.restart: falseلتعطيله.
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?,runtime?,agentId?,model?,thinking?,cwd?,runTimeoutSeconds?,thread?,mode?,cleanup?,sandbox?,streamTo?,attachments?,attachAs?session_status:sessionKey?(الافتراضي الحالي؛ يقبلsessionId),model?(defaultيمسح التجاوز)
ملاحظات:
mainهو مفتاح الدردشة المباشرة الأساسي؛ global/unknown مخفية.messageLimit > 0يجلب آخر N رسالة لكل جلسة (يتم تصفية رسائل الأداة).- يتم التحكم في استهداف الجلسة بواسطة
tools.sessions.visibility(الافتراضيtree: الجلسة الحالية + جلسات الوكيل الفرعي المنبثقة). إذا قمت بتشغيل وكيل مشترك لمستخدمين متعددين، ففكر في تعيينtools.sessions.visibility: "self"لمنع التصفح عبر الجلسات. - ينتظر
sessions_sendالاكتمال النهائي عندما يكونtimeoutSeconds > 0. - يحدث التسليم/الإعلان بعد الاكتمال وهو بأفضل جهد؛
status: "ok"تؤكد انتهاء تشغيل الوكيل، وليس تسليم الإعلان. - يدعم
sessions_spawnruntime: "subagent" | "acp"(subagentافتراضي). لسلوك وقت تشغيل ACP، راجع وكلاء ACP. - لوقت تشغيل ACP،
streamTo: "parent"يوجه ملخصات تقدم التشغيل الأولي مرة أخرى إلى جلسة الطالب كأحداث نظام بدلاً من التسليم المباشر للطفل. - يبدأ
sessions_spawnتشغيل وكيل فرعي وينشر رد إعلان مرة أخرى إلى دردشة الطالب.- يدعم وضع اللقطة الواحدة (
mode: "run") والوضع المستمر المرتبط بموضوع (mode: "session"معthread: true). - إذا كان
thread: trueوتم حذفmode، يكون الوضع الافتراضيsession. - يتطلب
mode: "session"thread: true. - إذا تم حذف
runTimeoutSeconds، يستخدم OpenClawagents.defaults.subagents.runTimeoutSecondsعند التعيين؛ وإلا المهلة الافتراضية0(لا مهلة). - تعتمد تدفقات Discord المرتبطة بالموضوع على
session.threadBindings.*وchannels.discord.threadBindings.*. - يتضمن تنسيق الرد
StatusوResultوإحصائيات مضغوطة. Resultهو نص إكمال المساعد؛ إذا كان مفقودًا، يتم استخدام أحدثtoolResultكاحتياطي.
- يدعم وضع اللقطة الواحدة (
- ترسل عمليات الإنشاء ذات وضع الإكمال اليدوي مباشرة أولاً، مع قائمة انتظار احتياطية وإعادة محاولة على حالات الفشل العابرة (
status: "ok"يعني انتهاء التشغيل، وليس تسليم الإعلان). - يدعم
sessions_spawnمرفقات الملفات المضمنة لوقت تشغيل الوكيل الفرعي فقط (يرفضها ACP). لكل مرفقnameوcontentوencodingاختياري (utf8أوbase64) وmimeType. يتم تجسيد الملفات في مساحة عمل الطفل في.openclaw/attachments/<uuid>/مع ملف بيانات وصفية.manifest.json. تُرجع الأداة إيصالاً يحتوي علىcountوtotalBytesوsha256لكل ملف وrelDir. يتم حذف محتوى المرفق تلقائيًا من استمرارية المحادثة.- تكوين الحدود عبر
tools.sessions_spawn.attachments(enabled,maxTotalBytes,maxFiles,maxFileBytes,retainOnSessionKeep). attachAs.mountPathهو تلميح محجوز لتطبيقات التركيب المستقبلية.
- تكوين الحدود عبر
sessions_spawnغير معطل ويُرجعstatus: "accepted"على الفور.- قد تتضمن استجابات ACP
streamTo: "parent"streamLogPath(نطاق الجلسة*.acp-stream.jsonl) لتتبع سجل التقدم. - يقوم
sessions_sendبتشغيل ping‑pong رد‑رجوع (ردREPLY_SKIPللتوقف؛ الحد الأقصى للدورات عبرsession.agentToAgent.maxPingPongTurns, 0–5). - بعد ping‑pong، يقوم الوكيل الهدف بتشغيل خطوة إعلان؛ رد
ANNOUNCE_SKIPلقمع الإعلان. - تقييد sandbox: عندما تكون الجلسة الحالية في sandbox و
agents.defaults.sandbox.sessionToolsVisibility: "spawned"، يحد OpenClawtools.sessions.visibilityإلىtree.
agents_list
سرد معرفات الوكلاء التي قد تستهدفها الجلسة الحالية بـ sessions_spawn. ملاحظات:
- النتيجة مقيدة بقوائم السماح لكل وكيل (
agents.list[].subagents.allowAgents). - عند تكوين
["*"]، تتضمن الأداة جميع الوكلاء المُكونة وتضع علامةallowAny: true.
المعلمات (المشتركة)
أدوات مدعومة بالبوابة (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لضمان الأذونات قبل استدعاء أوامر الوسائط.
كيف يتم تقديم الأدوات للوكيل
يتم عرض الأدوات في قناتين متوازيتين:
- نص المحفز النظامي: قائمة مقروءة للإنسان + إرشادات.
- مخطط الأداة: تعريفات الدوال المنظمة المرسلة إلى واجهة برمجة تطبيقات النموذج.
هذا يعني أن الوكيل يرى كلًا من "ما هي الأدوات الموجودة" و"كيفية استدعائها." إذا لم تظهر أداة في محفز النظام أو المخطط، لا يمكن للنموذج استدعاؤها.