跳转到内容

GitHub 集成

让你的代理通过 GitHub 管理仓库、issue 和发布。借助 AI 驱动的自动化,创建和更新 issue、管理版本发布、跟踪项目开发,并简化软件开发工作流。

在使用 GitHub 集成前,请确保你已经具备:

  • 一个拥有有效订阅的 CrewAI AMP 账号
  • 一个具有相应仓库权限的 GitHub 账号
  • 已通过 集成页面 连接你的 GitHub 账号
  1. 进入 CrewAI AMP Integrations
  2. 在身份验证集成部分找到 GitHub
  3. 点击 Connect 并完成 OAuth 流程
  4. 授予仓库和 issue 管理所需的权限
  5. 从 Integration Settings 复制你的 Enterprise Token
Terminal window
uv add crewai-tools
Terminal window
export CREWAI_PLATFORM_INTEGRATION_TOKEN="your_enterprise_token"

或者将其添加到你的 .env 文件中:

CREWAI_PLATFORM_INTEGRATION_TOKEN=your_enterprise_token
github/create_issue

描述: 在 GitHub 中创建 issue。

参数:

  • owner (string, required): 所有者 - 指定与该 Issue 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Issue 相关的仓库名称。
  • title (string, required): Issue 标题 - 指定要创建的 issue 标题。
  • body (string, optional): Issue 内容 - 指定要创建的 issue 内容。
  • assignees (string, optional): 负责人 - 以字符串数组形式指定该 issue 的 GitHub 登录名。(示例:["octocat"])。
github/update_issue

描述: 在 GitHub 中更新 issue。

参数:

  • owner (string, required): 所有者 - 指定与该 Issue 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Issue 相关的仓库名称。
  • issue_number (string, required): Issue 编号 - 指定要更新的 issue 编号。
  • title (string, required): Issue 标题 - 指定要更新的 issue 标题。
  • body (string, optional): Issue 内容 - 指定要更新的 issue 内容。
  • assignees (string, optional): 负责人 - 以字符串数组形式指定该 issue 的 GitHub 登录名。(示例:["octocat"])。
  • state (string, optional): 状态 - 指定该 issue 的更新后状态。
    • 可选项:open, closed
github/get_issue_by_number

描述: 在 GitHub 中通过编号获取 issue。

参数:

  • owner (string, required): 所有者 - 指定与该 Issue 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Issue 相关的仓库名称。
  • issue_number (string, required): Issue 编号 - 指定要获取的 issue 编号。
github/lock_issue

描述: 在 GitHub 中锁定 issue。

参数:

  • owner (string, required): 所有者 - 指定与该 Issue 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Issue 相关的仓库名称。
  • issue_number (string, required): Issue 编号 - 指定要锁定的 issue 编号。
  • lock_reason (string, required): 锁定原因 - 指定锁定该 issue 或 pull request 对话的原因。
    • 可选项:off-topic, too heated, resolved, spam
github/search_issue

描述: 在 GitHub 中搜索 issue。

参数:

  • owner (string, required): 所有者 - 指定与该 Issue 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Issue 相关的仓库名称。
  • filter (object, required): 以析取范式表示的筛选器 - 若干 AND 条件组的 OR。
    {
    "operator": "OR",
    "conditions": [
    {
    "operator": "AND",
    "conditions": [
    {
    "field": "assignee",
    "operator": "$stringExactlyMatches",
    "value": "octocat"
    }
    ]
    }
    ]
    }
    可用字段:assignee, creator, mentioned, labels
github/create_release

描述: 在 GitHub 中创建发布。

参数:

  • owner (string, required): 所有者 - 指定与该 Release 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Release 相关的仓库名称。
  • tag_name (string, required): 名称 - 指定要创建的 release 标签名称。(示例:"v1.0.0")。
  • target_commitish (string, optional): 目标 - 指定 release 的目标。可以是分支名或 commit SHA。默认为主分支。(示例:"master")。
  • body (string, optional): 正文 - 指定该 release 的描述。
  • draft (string, optional): 草稿 - 指定创建的 release 是否应为草稿(未发布)release。
    • 可选项:true, false
  • prerelease (string, optional): 预发布 - 指定创建的 release 是否应为预发布版本。
    • 可选项:true, false
  • discussion_category_name (string, optional): 讨论分类名称 - 如果指定,会创建对应分类的讨论并链接到该 release。该值必须是仓库中已存在的分类。
  • generate_release_notes (string, optional): 发布说明 - 指定创建的 release 是否应使用提供的名称和正文自动生成发布说明。
    • 可选项:true, false
github/update_release

描述: 在 GitHub 中更新 release。

参数:

  • owner (string, required): 所有者 - 指定与该 Release 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Release 相关的仓库名称。
  • id (string, required): Release ID - 指定要更新的 release ID。
  • tag_name (string, optional): 名称 - 指定要更新的 release 标签名称。(示例:"v1.0.0")。
  • target_commitish (string, optional): 目标 - 指定 release 的目标。可以是分支名或 commit SHA。默认为主分支。(示例:"master")。
  • body (string, optional): 正文 - 指定该 release 的描述。
  • draft (string, optional): 草稿 - 指定创建的 release 是否应为草稿(未发布)release。
    • 可选项:true, false
  • prerelease (string, optional): 预发布 - 指定创建的 release 是否应为预发布版本。
    • 可选项:true, false
  • discussion_category_name (string, optional): 讨论分类名称 - 如果指定,会创建对应分类的讨论并链接到该 release。该值必须是仓库中已存在的分类。
  • generate_release_notes (string, optional): 发布说明 - 指定创建的 release 是否应使用提供的名称和正文自动生成发布说明。
    • 可选项:true, false
github/get_release_by_id

描述: 在 GitHub 中通过 ID 获取 release。

参数:

  • owner (string, required): 所有者 - 指定与该 Release 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Release 相关的仓库名称。
  • id (string, required): Release ID - 指定要获取的 release ID。
github/get_release_by_tag_name

描述: 在 GitHub 中通过标签名获取 release。

参数:

  • owner (string, required): 所有者 - 指定与该 Release 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Release 相关的仓库名称。
  • tag_name (string, required): 名称 - 指定要获取的 release 标签。(示例:"v1.0.0")。
github/delete_release

描述: 在 GitHub 中删除 release。

参数:

  • owner (string, required): 所有者 - 指定与该 Release 相关仓库的账户所有者名称。(示例:"abc")。
  • repo (string, required): 仓库 - 指定与该 Release 相关的仓库名称。
  • id (string, required): Release ID - 指定要删除的 release ID。
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()
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 集成设置或故障排查方面的帮助,请联系我们的支持团队。