Skip to main content

ابنِ قناة من الصفر

تربط القناة وولفيش بمنصة اتصال خارجية. واجهة سطح المكتب، Telegram، و WhatsApp كلها قنوات - تستقبل الرسائل من مصادر مختلفة لكنها توجهها عبر نفس خط أنابيب الدماغ. يرشدك هذا الدليل خطوة بخطوة لتنفيذ قناة جديدة من الصفر.

ما هي القناة؟

القناة هي تنفيذ لواجهة TurnSink. تستقبل الأجزاء (النص المتدفق، استدعاءات الأدوات، النتائج) وتعرضها للمستخدم بأي تنسيق تدعمه المنصة. يتعامل TurnRunner مع خط أنابيب الوكيل - قناتك تحتاج فقط إلى:
  1. قبول الرسائل الواردة من منصتك
  2. إرسالها إلى خط أنابيب الوكيل
  3. عرض استجابة الوكيل للمستخدم
  4. التعامل مع طلبات الموافقة (لاستدعاءات الأدوات الخطرة)

واجهة 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 بطابورٍ واحد لكل محادثة (الأدوار بلا معرّف محادثة تحصل على مسارٍ خاصّ مفتاحه معرّف الدور). الرسالة الثانية في المحادثة نفسها تنتظر انتهاء دور تلك المحادثة الجاري — حفظًا لترتيب النصّ ومنعًا للتعارضات في ذاكرتها وتجميع سياقها — بينما رسالةٌ لمحادثة مختلفة تعمل فورًا وبالتوازي.
الدور طويل التشغيل يحجب فقط الرسالة التالية لمحادثته هو — لا المحادثات الأخرى ولا القنوات الأخرى. وتستطيع القناة أن تستبق دور محادثتها الجاري بإجهاض المتحكّم السابق قبل إرسال دور جديد.

ربط المحادثات

قناتك تقرر كيف تُربط الخيوط الخارجية بمحادثات وولفيش:
تستخدم قناة Telegram الخيار C - محادثة نشطة واحدة تستمر حتى يرسل المستخدم /new.

مرجع: نمط قناة Telegram

توضح قناة Telegram النمط الكامل:

قائمة التحقق للقنوات الجديدة

قبل نشر قناتك:
  • تنفذ جميع دوال TurnSink
  • تتعامل مع طلبات الموافقة بواجهة مستخدم واضحة
  • تربط الخيوط الخارجية بالمحادثات بشكل متسق
  • تنظف responseBuffer عند onDone و onError
  • تتعامل مع onCredentialBlocked برسالة مفيدة
  • مسجلة في بدء تشغيل العملية الرئيسية
  • مُختبرة مع محادثات متعددة الأدوار
  • مُختبرة مع استدعاءات الأدوات (بما في ذلك الفشل والإلغاء)
  • مُختبرة مع رسائل متزامنة من قنوات متعددة