ابنِ قناة من الصفر
تربط القناة وولفيش بمنصة اتصال خارجية. واجهة سطح المكتب، Telegram، و WhatsApp كلها قنوات - تستقبل الرسائل من مصادر مختلفة لكنها توجهها عبر نفس خط أنابيب الدماغ. يرشدك هذا الدليل خطوة بخطوة لتنفيذ قناة جديدة من الصفر.ما هي القناة؟
القناة هي تنفيذ لواجهة TurnSink. تستقبل الأجزاء (النص المتدفق، استدعاءات الأدوات، النتائج) وتعرضها للمستخدم بأي تنسيق تدعمه المنصة. يتعامل TurnRunner مع خط أنابيب الوكيل - قناتك تحتاج فقط إلى:- قبول الرسائل الواردة من منصتك
- إرسالها إلى خط أنابيب الوكيل
- عرض استجابة الوكيل للمستخدم
- التعامل مع طلبات الموافقة (لاستدعاءات الأدوات الخطرة)
واجهة TurnSink
شرح الدوال
أنواع الأجزاء
- text: أجزاء متدفقة - اجمعها لبناء الاستجابة الكاملة
- tool_call: الوكيل يستدعي أداة (اعرض مؤشر حالة)
- tool_result: الأداة انتهت (اعرض المخرجات أو ملخصًا)
- turn_end: الدور اكتمل مع سبب التوقف (
end_turn،tool_use،max_tokens)
التنفيذ خطوة بخطوة
الخطوة 1: إنشاء ملف القناة
الخطوة 2: تنفيذ TurnSink
الخطوة 3: التعامل مع الرسائل الواردة
عندما تستقبل منصتك رسالة، حمّل أو أنشئ محادثة وأرسلها عبر TurnRunner:الخطوة 4: تسجيل القناة
أضف قناتك إلى تدفق بدء التشغيل فيsrc/main/index.ts:
يُشارك TurnRunner عبر جميع القنوات. يقوم بتسلسل الأدوار لكل محادثة على حدة — أدوار المحادثة الواحدة تصطف خلف بعضها، لكنّ المحادثات المختلفة تعمل بالتوازي بغض النظر عن القناة التي بدأتها.
التسلسل لكل محادثة
يحتفظ TurnRunner بطابورٍ واحد لكل محادثة (الأدوار بلا معرّف محادثة تحصل على مسارٍ خاصّ مفتاحه معرّف الدور). الرسالة الثانية في المحادثة نفسها تنتظر انتهاء دور تلك المحادثة الجاري — حفظًا لترتيب النصّ ومنعًا للتعارضات في ذاكرتها وتجميع سياقها — بينما رسالةٌ لمحادثة مختلفة تعمل فورًا وبالتوازي.ربط المحادثات
قناتك تقرر كيف تُربط الخيوط الخارجية بمحادثات وولفيش:/new.
مرجع: نمط قناة Telegram
توضح قناة Telegram النمط الكامل:قائمة التحقق للقنوات الجديدة
قبل نشر قناتك:- تنفذ جميع دوال TurnSink
- تتعامل مع طلبات الموافقة بواجهة مستخدم واضحة
- تربط الخيوط الخارجية بالمحادثات بشكل متسق
- تنظف
responseBufferعندonDoneوonError - تتعامل مع
onCredentialBlockedبرسالة مفيدة - مسجلة في بدء تشغيل العملية الرئيسية
- مُختبرة مع محادثات متعددة الأدوار
- مُختبرة مع استدعاءات الأدوات (بما في ذلك الفشل والإلغاء)
- مُختبرة مع رسائل متزامنة من قنوات متعددة