إعداد بيئة الوكيل الخاصة بك

قنوات الاتصال: تيليجرام وديسكورد

4 دقيقة للقراءة

الوكيل بدون قناة اتصال كمساعد عبقري محبوس في غرفة بلا باب. تحتاج طريقة للتحدث مع وكيلك — والأهم من ذلك، طريقة ليصل إليك وكيلك. تيليجرام وديسكورد هما أكثر قناتين عمليتين لاتصال الوكلاء، ولكل منهما نقاط قوة مميزة.

قبل أن تكتب سطراً واحداً: CrewAI ليس لديه طبقة قنوات. لا توجد كتلة channels: في أي ملف إعداد لـ CrewAI، ولا يُشحن أي تكامل مع تيليجرام أو ديسكورد ضمن crewai أو crewai-tools. ما تبنيه في هذا الدرس هو برنامج صغير تملكه أنت يحمل الاتصال بالمنصة ويستدعي crew.kickoff() — نحو 40 سطراً لكل منصة. الدرس الرابع من الوحدة الأولى يشرح لماذا يقع الفصل هنا. كل ما يلي كود حقيقي مقابل مكتبات المنصات نفسها، لذا سيعمل فعلاً.

لماذا هاتان القناتان

تيليجرام مثالي للتفاعل الشخصي الفردي مع الوكيل. يعمل على كل جهاز، ويدعم الوسائط الغنية (الصور، المستندات، الملاحظات الصوتية)، وواجهة Bot API الخاصة به من أسهل الواجهات للتعامل معها. عندما تريد أن يشعر وكيلك كمساعد شخصي في جيبك، تيليجرام هو الخيار الصحيح.

ديسكورد يتفوق في العمل المتوازي متعدد السياقات. كل قناة في ديسكورد توفر سياق محادثة منفصل، مما يعني أنه يمكنك جعل وكيلك يعمل على مهام مختلفة في قنوات مختلفة في وقت واحد — البحث في قناة، ومراجعة الكود في أخرى، وصياغة البريد الإلكتروني في ثالثة. هذا الفصل القائم على القنوات قوي بشكل فريد لتنسيق الوكلاء.

إعداد بوت تيليجرام

بوتات تيليجرام تُنشأ من خلال BotFather، أداة إدارة البوتات الرسمية في تيليجرام.

الخطوة الأولى: إنشاء البوت

  1. افتح تيليجرام وابحث عن @BotFather
  2. أرسل الأمر /newbot
  3. اختر اسماً للعرض (مثل "وكيلي الذكي")
  4. اختر اسم مستخدم ينتهي بـ bot (مثل my_ai_agent_bot)
  5. يرد BotFather بـ رمز البوت — احفظه بشكل آمن

الخطوة الثانية: اكتب المحوّل

pip install python-telegram-bot
export TELEGRAM_BOT_TOKEN="your-bot-token-here"
export TELEGRAM_ALLOWED_USERS="123456789"      # معرّفات رقمية مفصولة بفواصل
# telegram_agent.py
import asyncio, os
from telegram import Update
from telegram.ext import Application, MessageHandler, ContextTypes, filters

from my_crew import build_crew          # الـ Crew خاصتك — انظر مشروع الوحدة الخامسة

ALLOWED = {int(u) for u in os.environ["TELEGRAM_ALLOWED_USERS"].split(",") if u.strip()}


async def on_message(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    if update.effective_user.id not in ALLOWED:
        return                            # تجاهل صامت — لا تؤكد وجود البوت

    await update.message.chat.send_action("typing")

    # crew.kickoff() متزامن وقد يعمل لدقائق. لا تنتظره مباشرةً على حلقة
    # الأحداث — سيجمّد كل تحديث آخر يعالجه البوت.
    crew = build_crew(update.message.text)
    result = await asyncio.to_thread(crew.kickoff)

    await update.message.reply_text(str(result)[:4000])   # تيليجرام يحدّ الرسالة بنحو 4096 حرفاً


app = Application.builder().token(os.environ["TELEGRAM_BOT_TOKEN"]).build()
app.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, on_message))
app.run_polling()

هذه هي طبقة القنوات بالكامل. السطران الجديران بالتوقف عندهما: فحص قائمة السماح (بوت غير مقيّد هو نقطة نهاية عامة على ميزانية API لديك)، وasyncio.to_thread — تشغيل الفريق عمل حاجب، واستدعاؤه مباشرةً داخل معالج غير متزامن يجمّد البوت للجميع حتى ينتهي. هذا الخطأ الثاني هو ما يشحنه الناس فعلاً، لأنه يعمل بلا مشاكل مع مستخدم واحد.

الخطوة الثالثة: تعيين أوامر البوت (اختياري لكن مستحسن)

أرسل هذه إلى BotFather لتحديد قائمة أوامر البوت:

/setcommands
status - التحقق من حالة الوكيل
help - عرض الأوامر المتاحة
task - تعيين مهمة جديدة

الخطوة الرابعة: الحصول على معرّف المستخدم

لتقييد البوت للرد عليك فقط، تحتاج معرّف مستخدم تيليجرام الخاص بك. أرسل رسالة إلى @userinfobot على تيليجرام — سيرد بمعرّفك الرقمي.

إعداد بوت ديسكورد

بوتات ديسكورد تتطلب خطوات إضافية بسبب نظام الصلاحيات والنوايا في ديسكورد.

الخطوة الأولى: إنشاء تطبيق ديسكورد

  1. اذهب إلى بوابة مطوري ديسكورد (discord.com/developers/applications)
  2. انقر "New Application" وأعطه اسماً
  3. انتقل لقسم "Bot" وانقر "Add Bot"
  4. انسخ رمز البوت — احفظه بشكل آمن
  5. تحت "Privileged Gateway Intents"، فعّل Message Content Intent (مطلوب لقراءة الرسائل)

الخطوة الثانية: دعوة البوت لخادمك

  1. في بوابة المطورين، اذهب إلى "OAuth2" ثم "URL Generator"
  2. اختر النطاقات: bot، applications.commands
  3. اختر الصلاحيات: Send Messages، Read Message History، Embed Links، Attach Files
  4. انسخ الرابط المُولّد وافتحه في متصفحك لدعوة البوت

الخطوة الثالثة: اكتب المحوّل

pip install discord.py
export DISCORD_BOT_TOKEN="your-discord-bot-token-here"
# discord_agent.py
import asyncio, os
import discord
from discord.ext import commands

from my_crew import build_crew

# مهام لكل قناة: القناة التي تصل إليها الرسالة تحدد وظيفة الوكيل.
CHANNEL_PURPOSE = {
    "research":     "ابحث في الويب ولخّص النتائج مع المصادر.",
    "code-review":  "راجع الـ diff الملصق وأبلغ عن مخاطر الصحة فقط.",
    "email-drafts": "صُغ رداً لمراجعة بشرية. لا ترسل شيئاً أبداً.",
}
OPERATOR_ROLE = "agent-operator"

intents = discord.Intents.default()
intents.message_content = True          # يجب تفعيله أيضاً في بوابة المطورين
bot = commands.Bot(command_prefix="!", intents=intents)


@bot.event
async def on_message(message: discord.Message) -> None:
    if message.author.bot:
        return                          # وإلا تحدّث بوتان مع بعضهما إلى الأبد
    purpose = CHANNEL_PURPOSE.get(message.channel.name)
    if purpose is None:
        return                          # البوت خامل خارج القنوات التي أدرجتها
    if not any(r.name == OPERATOR_ROLE for r in getattr(message.author, "roles", [])):
        return

    async with message.channel.typing():
        crew = build_crew(f"{purpose}\n\nالطلب: {message.content}")
        result = await asyncio.to_thread(crew.kickoff)

    await message.reply(str(result)[:1900])   # ديسكورد يحدّ الرسالة بـ 2000 حرف


bot.run(os.environ["DISCORD_BOT_TOKEN"])

لاحظ if message.author.bot: return. بدونه، وكيلان يتشاركان خادماً سيجيبان على رسائل بعضهما بلا نهاية — خطأ رخيص يصبح مكلفاً بين ليلة وضحاها.

ميزة السياق المتوازي في ديسكورد

هنا يصبح ديسكورد ذا قيمة خاصة لعمل الوكلاء. تأمل هذا الإعداد:

القناةالغرضسلوك الوكيل
#researchمهام البحث على الويبالوكيل يبحث ويلخص ويحفظ النتائج
#code-reviewتحليل الكودالوكيل يراجع طلبات الدمج ويقدم ملاحظات
#email-draftsكتابة البريد الإلكترونيالوكيل يصيغ رسائل لمراجعتك
#daily-briefingالتقارير الصباحيةالوكيل ينشر ملخصات يومية حسب الجدول
#logsسجلات نشاط الوكيلالوكيل يسجل جميع الإجراءات للمراجعة

كل قناة تحافظ على سياق محادثة خاص بها. عندما تراسل الوكيل في #research، لا يخلط ذلك مع المحادثة الجارية في #code-review. هذا العزل الطبيعي يعني أنه يمكنك تشغيل سير عمل متعددة بالتوازي دون تلوث السياق.

هذا العزل ليس شيئاً تمنحه لك المنصة مجاناً — إنه قاموس CHANNEL_PURPOSE في المحوّل أعلاه. اسم القناة يختار أي تعليمات تُضاف قبل الطلب، فتصل رسالة في #code-review ورسالة في #research إلى الفريق بتعليمات مختلفة. إضافة سير عمل = إدخال واحد في القاموس وقناة واحدة في ديسكورد.

شكل كل محوّل قناة

كلا البوتين أعلاه هما الخطوات الأربع نفسها. متى رأيت الشكل، تصبح إضافة Slack أو رسائل SMS أو نموذج ويب هي العمل نفسه بمكتبة مختلفة:

رسالة تدخل، إجابة تخرج — ما يملكه محوّلك

مسموحغير مسموحوصول رسالةتحديث تيليجرام / on_message في …التفويضقائمة سماح بالمعرّف أو الدور — …أضف التعليماتالقناة أو الأمر يختار التعليماتcrew.kickoff() خارج الخيطاستدعاء حاجب — asyncio.to_threa…رد مقتطعاحترم حد طول الرسالة في المنصةتجاهلبلا رسالة خطأ — لا تؤكد وجود ال…

الإطار يملك صندوقاً واحداً بالضبط في هذا المخطط. كل ما عداه لك، وهذا أيضاً سبب أن استبدال CrewAI بمُنسّق آخر لاحقاً يكلفك سطراً واحداً في هذا الملف.

اعتبارات أمنية

قنوات المراسلة هي واجهة مباشرة لقدرات وكيلك. تأمينها أمر بالغ الأهمية.

قوائم السماح: قيّد دائماً البوت للمستخدمين المعروفين (تيليجرام) أو خوادم وأدوار محددة (ديسكورد). البوت غير المقيد ثغرة أمنية — أي شخص يجده يمكنه إصدار أوامر.

التحقق من الرسائل: تحقق من الرسائل الواردة قبل معالجتها. تأكد أن المرسل مصرّح له، وتنسيق الرسالة متوقع، والإجراء المطلوب ضمن الحدود المسموحة.

أمان الرموز: رموز البوت تعادل كلمات المرور. لا تضعها أبداً في أنظمة التحكم بالإصدارات. استخدم متغيرات البيئة أو مدير أسرار.

# خطأ: الرمز مكتوب مباشرة في الإعدادات
bot_token: "7234567890:AAF..."

# صحيح: الرمز يُحمّل من متغير البيئة
bot_token: ${TELEGRAM_BOT_TOKEN}

تحديد المعدل: طبّق حدوداً للمعدل لمنع فيضان الرسائل العرضي أو الخبيث من تشغيل استدعاءات API مفرطة ورفع التكاليف.

تسجيل المراجعة: سجّل جميع الأوامر المستلمة والإجراءات المتخذة. إذا حدث خطأ ما، تحتاج مساراً واضحاً لما حدث ومن أطلقه.

النقطة الرئيسية: تيليجرام يمنحك مساعداً شخصياً في جيبك. ديسكورد يمنحك مركز تحكم متعدد القنوات. استخدم تيليجرام للتفاعل المباشر وديسكورد لسير العمل المتوازية — وأمّن كليهما دائماً بقوائم السماح وإدارة الرموز السليمة.

التالي: توسيع قدرات وكيلك بتكامل الذاكرة والصوت والبريد الإلكتروني. :::

اختبار

اختبار الوحدة 2: إعداد بيئة الوكيل

خذ الاختبار
هل كان هذا الدرس مفيدًا؟

سجّل الدخول للتقييم