الانتقال إلى المحتوى الرئيسي

نظرة عامة

مكّن وكلاءك من إدارة المستودعات والمشكلات والإصدارات عبر GitHub. أنشئ المشكلات وحدّثها، وأدر الإصدارات، وتتبع تطور المشاريع، وبسّط سير عمل تطوير البرمجيات باستخدام الأتمتة المدعومة بالذكاء الاصطناعي.

المتطلبات الأساسية

قبل استخدام تكامل GitHub، تأكد من توفر ما يلي:
  • حساب CrewAI AMP مع اشتراك فعّال
  • حساب GitHub بصلاحيات المستودع المناسبة
  • ربط حساب GitHub الخاص بك عبر صفحة التكاملات

إعداد تكامل GitHub

1. ربط حساب GitHub الخاص بك

  1. انتقل إلى تكاملات CrewAI AMP
  2. ابحث عن GitHub في قسم تكاملات المصادقة
  3. انقر على Connect وأكمل عملية OAuth
  4. امنح الصلاحيات اللازمة لإدارة المستودعات والمشكلات
  5. انسخ رمز المؤسسة من إعدادات التكامل

2. تثبيت الحزمة المطلوبة

uv add crewai-tools

3. إعداد متغير البيئة

لاستخدام التكاملات مع Agent(apps=[]), يجب تعيين متغير البيئة CREWAI_PLATFORM_INTEGRATION_TOKEN برمز المؤسسة الخاص بك.
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"
أو أضفه إلى ملف .env:
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token

الإجراءات المتاحة

الوصف: إنشاء مشكلة في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.
  • title (string, مطلوب): عنوان المشكلة - حدد عنوان المشكلة المراد إنشاؤها.
  • body (string, اختياري): محتوى المشكلة - حدد محتوى نص المشكلة المراد إنشاؤها.
  • assignees (string, اختياري): المكلّفون - حدد اسم (أسماء) تسجيل الدخول في GitHub للمكلّفين كمصفوفة من السلاسل النصية لهذه المشكلة. (مثال: ["octocat"]).
الوصف: تحديث مشكلة في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.
  • issue_number (string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد تحديثها.
  • title (string, مطلوب): عنوان المشكلة - حدد عنوان المشكلة المراد تحديثها.
  • body (string, اختياري): محتوى المشكلة - حدد محتوى نص المشكلة المراد تحديثها.
  • assignees (string, اختياري): المكلّفون - حدد اسم (أسماء) تسجيل الدخول في GitHub للمكلّفين كمصفوفة من السلاسل النصية لهذه المشكلة. (مثال: ["octocat"]).
  • state (string, اختياري): الحالة - حدد الحالة المحدّثة للمشكلة.
    • الخيارات: open, closed
الوصف: الحصول على مشكلة بواسطة الرقم في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.
  • issue_number (string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد جلبها.
الوصف: قفل مشكلة في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.
  • issue_number (string, مطلوب): رقم المشكلة - حدد رقم المشكلة المراد قفلها.
  • lock_reason (string, مطلوب): سبب القفل - حدد سبب قفل محادثة المشكلة أو طلب السحب.
    • الخيارات: off-topic, too heated, resolved, spam
الوصف: البحث عن المشكلات في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذه المشكلة. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذه المشكلة.
  • filter (object, مطلوب): فلتر بصيغة التعبير العادي المنفصل - OR لمجموعات AND من شروط فردية.
    {
      "operator": "OR",
      "conditions": [
        {
          "operator": "AND",
          "conditions": [
            {
              "field": "assignee",
              "operator": "$stringExactlyMatches",
              "value": "octocat"
            }
          ]
        }
      ]
    }
    
    الحقول المتاحة: assignee, creator, mentioned, labels
الوصف: إنشاء إصدار في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.
  • tag_name (string, مطلوب): الاسم - حدد اسم وسم الإصدار المراد إنشاؤه. (مثال: “v1.0.0”).
  • target_commitish (string, اختياري): الهدف - حدد هدف الإصدار. يمكن أن يكون اسم فرع أو SHA لعملية إيداع. الافتراضي هو الفرع الرئيسي. (مثال: “master”).
  • body (string, اختياري): المحتوى - حدد وصفاً لهذا الإصدار.
  • draft (string, اختياري): مسودة - حدد ما إذا كان الإصدار المُنشأ يجب أن يكون مسودة (غير منشور).
    • الخيارات: true, false
  • prerelease (string, اختياري): إصدار تجريبي - حدد ما إذا كان الإصدار المُنشأ يجب أن يكون إصداراً تجريبياً.
    • الخيارات: true, false
  • discussion_category_name (string, اختياري): اسم فئة المناقشة - إذا حُدد، يتم إنشاء مناقشة من الفئة المحددة وربطها بالإصدار.
  • generate_release_notes (string, اختياري): ملاحظات الإصدار - حدد ما إذا كان يجب إنشاء ملاحظات الإصدار تلقائياً.
    • الخيارات: true, false
الوصف: تحديث إصدار في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.
  • id (string, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد تحديثه.
  • tag_name (string, اختياري): الاسم - حدد اسم وسم الإصدار المراد تحديثه. (مثال: “v1.0.0”).
  • target_commitish (string, اختياري): الهدف - حدد هدف الإصدار. يمكن أن يكون اسم فرع أو SHA لعملية إيداع. الافتراضي هو الفرع الرئيسي. (مثال: “master”).
  • body (string, اختياري): المحتوى - حدد وصفاً لهذا الإصدار.
  • draft (string, اختياري): مسودة - حدد ما إذا كان الإصدار يجب أن يكون مسودة (غير منشور).
    • الخيارات: true, false
  • prerelease (string, اختياري): إصدار تجريبي - حدد ما إذا كان الإصدار يجب أن يكون إصداراً تجريبياً.
    • الخيارات: true, false
  • discussion_category_name (string, اختياري): اسم فئة المناقشة - إذا حُدد، يتم إنشاء مناقشة من الفئة المحددة وربطها بالإصدار.
  • generate_release_notes (string, اختياري): ملاحظات الإصدار - حدد ما إذا كان يجب إنشاء ملاحظات الإصدار تلقائياً.
    • الخيارات: true, false
الوصف: الحصول على إصدار بواسطة المعرّف في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.
  • id (string, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد جلبه.
الوصف: الحصول على إصدار بواسطة اسم الوسم في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.
  • tag_name (string, مطلوب): الاسم - حدد وسم الإصدار المراد جلبه. (مثال: “v1.0.0”).
الوصف: حذف إصدار في GitHub.المعاملات:
  • owner (string, مطلوب): المالك - حدد اسم مالك الحساب للمستودع المرتبط بهذا الإصدار. (مثال: “abc”).
  • repo (string, مطلوب): المستودع - حدد اسم المستودع المرتبط بهذا الإصدار.
  • id (string, مطلوب): معرّف الإصدار - حدد معرّف الإصدار المراد حذفه.

أمثلة الاستخدام

إعداد Agent أساسي لـ GitHub

from crewai import Agent, Task, Crew
from crewai import Agent, Task, Crew

# Create an agent with Github capabilities
github_agent = Agent(
    role="Repository Manager",
    goal="Manage GitHub repositories, issues, and releases efficiently",
    backstory="An AI assistant specialized in repository management and issue tracking.",
    apps=['github']  # All Github actions will be available
)

# Task to create a new issue
create_issue_task = Task(
    description="Create a bug report issue for the login functionality in the main repository",
    agent=github_agent,
    expected_output="Issue created successfully with issue number"
)

# Run the task
crew = Crew(
    agents=[github_agent],
    tasks=[create_issue_task]
)

crew.kickoff()

تصفية أدوات GitHub محددة


issue_manager = Agent(
    role="Issue Manager",
    goal="Create and manage GitHub issues efficiently",
    backstory="An AI assistant that focuses on issue tracking and management.",
    apps=['github/create_issue']
)

# Task to manage issue workflow
issue_workflow = Task(
    description="Create a feature request issue and assign it to the development team",
    agent=issue_manager,
    expected_output="Feature request issue created and assigned successfully"
)

crew = Crew(
    agents=[issue_manager],
    tasks=[issue_workflow]
)

crew.kickoff()

إدارة الإصدارات

from crewai import Agent, Task, Crew

release_manager = Agent(
    role="Release Manager",
    goal="Manage software releases and versioning",
    backstory="An experienced release manager who handles version control and release processes.",
    apps=['github']
)

# Task to create a new release
release_task = Task(
    description="""
    Create a new release v2.1.0 for the project with:
    - Auto-generated release notes
    - Target the main branch
    - Include a description of new features and bug fixes
    """,
    agent=release_manager,
    expected_output="Release v2.1.0 created successfully with release notes"
)

crew = Crew(
    agents=[release_manager],
    tasks=[release_task]
)

crew.kickoff()

تتبع المشكلات وإدارتها

from crewai import Agent, Task, Crew

project_coordinator = Agent(
    role="Project Coordinator",
    goal="Track and coordinate project issues and development progress",
    backstory="An AI assistant that helps coordinate development work and track project progress.",
    apps=['github']
)

# Complex task involving multiple GitHub operations
coordination_task = Task(
    description="""
    1. Search for all open issues assigned to the current milestone
    2. Identify overdue issues and update their priority labels
    3. Create a weekly progress report issue
    4. Lock resolved issues that have been inactive for 30 days
    """,
    agent=project_coordinator,
    expected_output="Project coordination completed with progress report and issue management"
)

crew = Crew(
    agents=[project_coordinator],
    tasks=[coordination_task]
)

crew.kickoff()

الحصول على المساعدة

تحتاج مساعدة؟

تواصل مع فريق الدعم للحصول على المساعدة في إعداد تكامل GitHub أو استكشاف الأخطاء وإصلاحها.