跳转到主要内容

Overview

使您的智能体能够通过GitHub管理仓库、问题和发布。创建和更新问题,管理发布,跟踪项目开发,并通过AI驱动的自动化简化您的软件开发工作流程。

Prerequisites

在使用GitHub集成之前,请确保您已具备:
  • A CrewAI AOP account with an active subscription
  • 一个具有适当仓库权限的GitHub账户
  • 通过集成页面连接您的GitHub账户

设置 GitHub 集成

1. 连接您的 GitHub 账户

  1. Navigate to CrewAI AOP Integrations
  2. 在身份验证集成部分找到 GitHub
  3. Click Connect and complete the OAuth flow
  4. 授予必要的仓库和问题管理权限
  5. Copy your Enterprise Token from Integration Settings

2. Install Required Package

uv add crewai-tools

3. Environment Variable Setup

To use integrations with Agent(apps=[]), you must set the CREWAI_PLATFORM_INTEGRATION_TOKEN environment variable with your Enterprise Token.
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"
Or add it to your .env file:
CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token

Available Actions

描述: 在GitHub中创建一个问题。参数:
  • owner (string, required): 所有者 - 指定与此问题关联的仓库的账户所有者名称。(示例:"abc")。
  • repo (字符串, 必需): 仓库 - 为此问题指定关联仓库的名称。
  • title (string, required): 问题标题 - 指定要创建的问题的标题。
  • body (字符串, 可选): 问题正文 - 指定要创建的问题的正文内容。
  • assignees (string, 可选): 负责人 - 为此问题指定负责人(们)的 GitHub 登录名,以字符串数组形式提供。(示例:["octocat"])。
描述: 在GitHub中更新一个问题。参数:
  • owner (string, required): 所有者 - 指定与此问题关联的仓库的账户所有者名称。(示例:“abc”)。
  • repo (字符串, 必需): 仓库 - 为此问题指定关联仓库的名称。
  • issue_number (string, required): 问题编号 - 指定要更新的问题编号。
  • title (string, required): 问题标题 - 指定要更新的问题的标题。
  • body (字符串, 可选): 问题正文 - 指定要更新的问题正文内容。
  • assignees (string, optional): 负责人 - 为此问题指定负责人(们)的 GitHub 登录名,以字符串数组形式提供。(示例:["octocat"])。
  • state (string, optional): 状态 - 指定问题的更新状态。
    • 选项: open, closed
描述: 通过编号在GitHub中获取一个问题。参数:
  • ownerowner (string, required): 所有者 - 指定与此问题关联的仓库的账户所有者名称。(示例:"abc")。
  • reporepo (字符串, 必需): 仓库 - 为此问题指定关联仓库的名称。
  • issue_number (string, required): 问题编号 - 指定要获取的问题编号。
描述: 在GitHub中锁定一个问题。参数:
  • ownerowner (string, required): 所有者 - 指定与此问题关联的仓库的账户所有者名称。(示例:"abc")。
  • reporepo (字符串, 必需): 仓库 - 为此问题指定关联仓库的名称。
  • issue_number (string, required): 问题编号 - 指定要锁定问题的编号。
  • lock_reason (string, required): 锁定原因 - 指定锁定议题或拉取请求对话的原因。
    • 选项: off-topic, too heated, resolved, spam
描述: 在GitHub中搜索问题。参数:
  • ownerowner (string, required): 所有者 - 指定与此问题关联的仓库的账户所有者名称。(示例:“abc”)。
  • reporepo (字符串, 必需): 仓库 - 为此问题指定关联仓库的名称。
  • filter (object, required): A filter in disjunctive normal form - OR of AND groups of single conditions.
    {
      "operator": "OR",
      "conditions": [
        {
          "operator": "AND",
          "conditions": [
            {
              "field": "assignee",
              "operator": "$stringExactlyMatches",
              "value": "octocat"
            }
          ]
        }
      ]
    }
    
    Available fields: assignee, creator, mentioned, labels
描述: 在GitHub中创建一个发布。参数:
  • owner (string, required): 所有者 - 指定与此发布相关联的仓库的账户所有者名称。(示例:“abc”)。
  • repo (字符串, 必需): 仓库 - 为此版本指定关联仓库的名称。
  • tag_name (string, required): 名称 - 指定要创建的发布标签的名称。(例如:“v1.0.0”)。
  • target_commitish (string, 可选): 目标 - 指定发布的目标。这可以是分支名称或提交 SHA。默认为主分支。(例如:"master")。
  • body (字符串, 可选): 正文 - 为此版本指定描述。
  • draft (string, 可选): 草稿 - 指定创建的发布是否应为草稿(未发布)版本。
    • 选项: true, false
  • prerelease (string, 可选): 预发布 - 指定创建的版本是否应为预发布版本。
    • 选项: true, false
  • discussion_category_name (string, 可选): 讨论类别名称 - 如果指定,将创建指定类别的讨论并链接到该发布版本。该值必须是仓库中已存在的类别。
  • generate_release_notes (字符串, 可选): 发布说明 - 指定是否应使用提供的名称和正文自动为创建的发布生成发布说明。
    • 选项: true, false
描述: 在GitHub中更新一个发布版本。参数:
  • ownerowner (string, required): 所有者 - 指定与此发布相关联的仓库的账户所有者名称。(示例:“abc”)。
  • reporepo (字符串, 必需): 仓库 - 为此版本指定关联仓库的名称。
  • id (string, required): 发布ID - 指定要更新的发布ID。
  • tag_name (string, 可选): 名称 - 指定要更新的发布标签的名称。(例如:"v1.0.0")。
  • target_commitishtarget_commitish (string, 可选): 目标 - 指定发布的目标。这可以是分支名称或提交 SHA。默认为主分支。(例如:"master")。
  • body (字符串, 可选): 正文 - 为此版本指定描述。
  • draft (字符串, 可选): 草稿 - 指定创建的发布是否应为草稿(未发布)版本。
    • 选项: true, false
  • prerelease (string, 可选): 预发布 - 指定创建的发布是否为预发布版本。
    • 选项: true, false
  • discussion_category_name (string, optional): 讨论类别名称 - 如果指定,将创建指定类别的讨论并链接到该发布版本。该值必须是仓库中已存在的类别。
  • generate_release_notes (string, 可选): 发布说明 - 指定是否应使用提供的名称和正文自动为创建的发布生成发布说明。
    • 选项: true, false
描述: 在GitHub中通过ID获取一个发布版本。参数:
  • ownerowner (string, required): 所有者 - 指定与此发布相关联的仓库的账户所有者名称。(示例:“abc”)。
  • reporepo (字符串, 必需): 仓库 - 为此版本指定关联仓库的名称。
  • id (字符串, 必需): 发布ID - 指定要获取的发布的发布ID。
描述: 在GitHub中通过标签名称获取一个发布版本。参数:
  • ownerowner (string, required): 所有者 - 指定与此发布相关联的仓库的账户所有者名称。(示例:“abc”)。
  • reporepo (字符串, 必需): 仓库 - 为此版本指定关联仓库的名称。
  • tag_name (string, required): 名称 - 指定要获取的发布标签。(示例:“v1.0.0”)。
描述: 在GitHub中删除一个发布版本。参数:
  • ownerowner (string, required): 所有者 - 指定与此发布相关联的仓库的账户所有者名称。(示例:“abc”)。
  • reporepo (字符串, 必需): 仓库 - 为此版本指定关联仓库的名称。
  • id (字符串, 必需): 发布ID - 指定要删除的发布ID。

Usage Examples

基础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()

Getting Help

需要帮助吗?

如需GitHub集成设置或故障排除方面的帮助,请联系我们的支持团队。