أدوات المحادثة
يمكن لـ Chat السماح للنموذج باستدعاء الأدوات. تنفذ الجولة مع تفعيل الأدوات حلقة أصلية متعددة المراحل: يطلب النموذج أداة، وينفذها Libre WebUI بهوية المستخدم المستدعي وصلاحياته، وتعود النتيجة إلى النموذج، وتستمر الحلقة حتى يجيب النموذج — حتى ثماني جولات لكل دور، وبحد أقصى ثمانية استدعاءات في الجولة. يلغي زر الإيقاف استدعاء النموذج وأي أداة قيد التنفيذ وأي انتظار اعتماد.
تُسجل استدعاءات الأدوات كأحداث موحدة (chat.tool-call.v1 وchat.tool-result.v1 وchat.approval.v1) تمر بالطريقة نفسها عبر مسار WebSocket الخاص وتدفق الأحداث الدائم، ولذلك تعيد إعادة التحميل أو الاتصال تشغيل الحالة نفسها. وتخزن الجولة المكتملة استدعاءاتها مع معاينات محدودة للنتائج على رسالة المساعد.
تفعيل الأدوات
الأدوات معطلة افتراضيًا. يفتحها المسؤول من الإعدادات ← إدارة المستخدمين (للمسؤولين فقط أو للجميع)، ثم تختار كل جولة تفعيلها من رمز المفتاح في محرر الرسالة. يفتح ذلك محددًا فيه مفتاح رئيسي وخانة لكل أداة مدمجة وخادم مسجل، فتعمل الجولة بالأدوات التي تختارها بالضبط. يستطيع المحدد تضييق ما يربطه الملف الشخصي، لا توسيعه. ولا تعرض المحادثات الخاصة (المتخفية) أدوات أبدًا؛ فاستدعاء الأداة إجراء خارجي قد يترك اعتمادات وسجلات تدقيق.
يمكن لملف المساعد (الشخصية) تقييد الأدوات المعروضة: تحد خوادم الأدوات المرتبطة ومجموعة فرعية من الأدوات المدمجة والمهارات ومجموعات المعرفة المرتبطة ما يراه النموذج في جلسات ذلك الملف.
الأدوات المدمجة
تأتي ثلاثة عشر أداة أصلية مع Chat (كلها للقراءة فقط باستثناء أدوات تعديل الملاحظات والتقويم، التي تمر بمسار اعتماد الآثار الجانبية):
web_search— محرك البحث الذي هيأه المسؤول، مع احترام وضع الوصول إلى بحث الويب.search_documents— بحث هجين في المستندات المرفوعة ومجموعات المعرفة، بما فيها المشتركة مع المستخدم (يمكن لروابط الملف تقييد المجموعات)؛ ويُستشهد بكل مقطع مع رقمه وموقع مصدره.list_documents— يسرد مستندات نطاق المحادثة بمعرفاتها وأنواعها وأحجامها ليقرر النموذج ما يقرأه.read_document— يقرأ نافذة محدودة من مستند متاح حسب المعرف والإزاحة، مع تسمية موقع المصدر، للتنقل في ملف لا يكفي الاسترجاع وحده للإجابة منه.load_skill— يحمّل تعليمات مهارة كاملة حسب slug؛ ويحمل وصف الأداة بيان مهارات المستخدم المفعّلة، فتظل كسولة حتى يحتاجها النموذج. وإذا ضمت المهارة ملفات مصاحبة، تنتهي التعليمات بجردها.read_skill_file— يقرأ ملفًا مصاحبًا في مهارة حسب slug والمسار النسبي، فلا يستهلك مستند مرجعي كبير السياق حتى يفتحه النموذج فعلًا.list_notes— يسرد ملاحظات المستخدم الشخصية والمشتركة مع معرفاتها.read_note— يقرأ محتوى ملاحظة كاملًا حسب المعرف.create_note— ينشئ ملاحظة (له أثر جانبي ويتطلب الاعتماد).update_note— يستبدل محتوى ملاحظة مع حفظ الحالة السابقة كمراجعة قابلة للاستعادة، ولذلك يبقى تعديل النموذج قابلًا للعكس (له أثر جانبي ويتطلب الاعتماد).list_calendar_events— يسرد أحداث تقويم المستخدم الشخصية والمشتركة في نطاق بالمللي ثانية منذ الحقبة.create_calendar_event— ينشئ حدث تقويم (له أثر جانبي ويتطلب الاعتماد).delete_calendar_event— يحذف حدثًا حسب المعرف (له أثر جانبي ويتطلب الاعتماد).
خوادم الأدوات
يسجل المسؤولون الخوادم الخارجية تحت الإعدادات ← الأدوات (وتملأ قوالب البدء الاستمارة، ومنها API عرض عام آمن):
- OpenAPI: تُجلب مواصفة JSON من OpenAPI 3.x مرة وتُثبت ببصمة SHA-256. تصبح كل عملية أداة؛ وتُصنف عمليات
GETللقراءة فقط وكل ما عداها أثرًا جانبيًا حتى يتجاوز المسؤول التصنيف لكل أداة. يعيد التنفيذ بناء الاستدعاء من العملية المثبتة؛ ولا تختار معاملات النموذج الوجهة. - MCP (Streamable HTTP): تُجلب قائمة أدوات الخادم عبر JSON-RPC وتُثبت بالطريقة نفسها. وتعلّم
annotations.readOnlyHintالأداة للقراءة فقط. لا تُدعم خوادم MCP عبر stdio عمدًا؛ فلا تعمل عمليات خارجية داخل عملية الويب.
لا يسري جرد متغير إلا عندما يحدّث المسؤول الخادم، فيتقدم الإصدار المثبت وتبقى التجاوزات الخاصة بكل أداة. ويكون توفر الخادم للمسؤولين فقط أو للجميع أو قائمًا على المنح عبر نموذج منح الموارد المشترك (منح مستخدمين ومجموعات على الخادم).
بيانات الاعتماد
تستخدم الخوادم التي تتطلب مصادقة بيانات اعتماد خاصة بكل مستخدم (رمز Bearer أو ترويسة مسماة). يُشفّر كل سر ببيانات موثقة إضافية تربطه بالمستخدم والخادم المحددين، ويدخله كل مستخدم تحت الإعدادات ← الأدوات، ولا يُشارك بين الحسابات.
سياسة الخروج الشبكي
يحل كل طلب أداة وجهته بنفسه، ويرفض نطاقات العناوين الخاصة والالتفافية والبيانات الوصفية، ويثبت الاتصال على العنوان المحلول حتى لا تعيد إعادة ربط DNS توجيهه. وتُرفض استجابات إعادة التوجيه. تُحدد أحجام الاستجابة ولكل استدعاء مهلة صارمة. ويمكن السماح بأسماء مضيفين داخلية دقيقة عبر TOOLS_PRIVATE_NETWORK_ALLOWLIST (مفصولة بفواصل)؛ وتظل مثبتة ومحدودة. وتعود مخرجات الأداة إلى النموذج كنص غير موثوق.
الاعتمادات
تعمل أدوات القراءة بلا سؤال. توقف الأداة ذات الأثر الجولة وتسأل المستخدم: السماح مرة، أو لهذه المحادثة، أو دائمًا لهذه الأداة على الخادم، أو الرفض. القرارات دائمة؛ تبقى منحة «دائمًا» بعد إعادة التشغيل ويمكن إلغاؤها من الإعدادات ← الأدوات. وينتهي الطلب المعلق بعد دقيقتين، فيراه النموذج رفضًا. لا ينفذ الرفض أو انتهاء المهلة الاستدعاء. ويترك كل قرار واستدعاء حدث تدقيق أمني منقحًا.
أمثلة
فعّل رمز المفتاح في محرر الرسالة أولًا؛ كل مثال أدناه رسالة محادثة عادية.
web_search — البحث عن معلومة
ما الذي تغير في أحدث إصدار من SQLite؟ ابحث في الويب قبل الإجابة.
يستدعي النموذج web_search باستعلام مثل {"query": "SQLite latest release changelog"}، وتعرض بطاقة الاستدعاء مقتطفات النتائج التي استلمها، ويستشهد الرد بما وجده. يتطلب ذلك تهيئة بحث الويب والسماح به لحسابك.
search_documents — سؤال ملفاتك
ارفع PDF أو أضف مستندات إلى مجموعة معرفة، ثم:
ابحث في مستنداتي عن بند الإنهاء واقتبسه حرفيًا.
يستدعي النموذج search_documents مع {"query": "termination clause"} ويتلقى المقاطع المطابقة مع تسمية مستند المصدر، ليقتبسها وينسبها.
load_skill — تطبيق مهارة محفوظة
أنشئ مهارة تحت الإعدادات ← المهارات (مثل $release-notes التي تحدد أسلوب ملاحظات الإصدار)، ثم:
اكتب ملاحظات إصدار لهذا الفرق باستخدام $release-notes.
يرى النموذج المهارة في بيانه، ويستدعي load_skill {"slug": "release-notes"} لجلب التعليمات الكاملة ثم يتبعها. يؤدي إدخال $ في محرر الرسالة إلى إكمال slugs المهارات تلقائيًا.
خادم OpenAPI — مثل API للطقس
-
الإعدادات ← الأدوات ← تسجيل خادم: الاسم
Weather، النوعOpenAPI، عنوان الأساسhttps://api.example-weather.dev، عنوان المواصفةhttps://api.example-weather.dev/openapi.json، ووضع المصادقةbearer. -
تُثبت المواصفة وتظهر عملياتها كأدوات، مثل
getForecast(GET، قراءة فقط) وcreateAlert(POST، أثر جانبي). -
يحفظ كل مستخدم يريدها مفتاح API الخاص به على بطاقة الخادم.
-
في المحادثة:
ما توقعات الطقس في مونتريال نهاية هذا الأسبوع؟
يستدعي النموذج
weather__getForecast {"city": "Montreal"}وتعمل فورًا؛ أدوات القراءة لا تسأل.نبهني إذا انخفضت الحرارة عن -20 الليلة.
لـ
weather__createAlertأثر جانبي، فتتوقف الجولة ببطاقة اعتماد: السماح مرة أو لهذه المحادثة أو السماح دائمًا أو الرفض. لا يُرسل شيء حتى تختار.
خادم MCP — مثل متتبع مشكلات
-
الإعدادات ← الأدوات ← تسجيل خادم: الاسم
Issues، النوعMCP، عنوان الأساسhttps://mcp.example-tracker.dev/mcp، وضع المصادقةheaderواسم الترويسةX-Api-Key. -
تُثبت قائمة أدواته؛ وتعمل الأدوات التي يعلّمها الخادم للقراءة فقط (مثل
search_issues) بحرية، ويسأل كل ما عداها (مثلcreate_issue) أولًا. -
في المحادثة:
اعثر على المشكلات المفتوحة التي تذكر "database lock" وأنشئ واحدة تلخص النمط.
تعمل
issues__search_issuesفورًا، وتعرضissues__create_issueالمعاملات الدقيقة في بطاقة الاعتماد لتقرأ ما سيُرسل قبل السماح.
متغيرات البيئة
| المتغير | الأثر |
|---|---|
TOOLS_ACCESS_MODE | يثبت ميزة الأدوات على admins أو all-users ويقفل مفتاح المسؤول. |
TOOLS_PRIVATE_NETWORK_ALLOWLIST | أسماء المضيفين الدقيقة التي يمكن لخوادم الأدوات حلها إلى عناوين خاصة (قائمة مفصولة بفواصل). |
الحدود
- تعمل استدعاءات الأدوات على مسار WebSocket (يُستبعد نقل الجلسة الخاصة عمدًا) ومسار التوليد الدائم للمحادثات المحفوظة. ولا تشغل نقطة REST القديمة المتدفقة حلقة الأدوات.
- تستدعي وكلاء Work الخوادم نفسها عبر البوابة نفسها: في التشغيلات التي تملك وصولًا إلى الشبكة فقط، مع استبعاد الخوادم التي تنقصها بيانات الاعتماد عند العرض، وإخضاع الأدوات ذات الأثر لموافقات Work.
- لا تتلقى نماذج Gemini ونماذج CLI الوكيل أدوات؛ بينما يدعمها Ollama والمزوّدون المتوافقون مع OpenAI وResponses API وAnthropic.
- تصادق خوادم MCP ببيانات اعتماد ثابتة خاصة بالمستخدم؛ ولا يمكن بعد تسجيل خادم MCP لا يدعم إلا OAuth التفاعلي.