# 将 Copilot 云代理与 Slack 集成

在 Slack 工作区内，向 Copilot 云智能体提供上下文并打开拉取请求。

> \[!NOTE]
>
> * 此功能目前处于公开预览，可能会发生更改。
> *

GitHub Copilot 使用 AI。 检查是否有错误 请参阅“[应用卡片：GitHub Copilot 智能体](/zh/enterprise-cloud@latest/copilot/responsible-use/agents)”。

## 介绍

Slack 中的 Copilot cloud agent 集成让你能够直接在 Slack 工作区中与 Copilot cloud agent 交互，并包含在适用于 Slack 的 GitHub 应用中。 在 Slack 消息、线程或直接消息中，可以使用对话的上下文启动 cloud agent 会话来调查、规划、编写代码以及创建问题和拉取请求。 团队的协作决策与代码保持联系，弥合讨论发生位置与实现所在位置之间的差距。

有关其他 Copilot 集成的信息，请参阅 [关于 Copilot 集成](/zh/enterprise-cloud@latest/copilot/concepts/tools/about-copilot-integrations)。

## 安全注意事项

在 Slack 中 @mentionGitHub 之前，请考虑 Copilot cloud agent 会将整个线程捕获为你的请求的上下文，并根据讨论理解和实施解决方案。 此上下文存储在代理生成的项目中。 如果要限制上下文，可以改为向 Slack 应用发送直接消息 GitHub 。

## 了解协作会话、权限、代码通道和沙盒

Copilot 使用的标识取决于你是在直接消息还是共享上下文中与它交互。

* 在直接消息中使用 Copilot 时，它可以为你采取措施，例如创建拉取请求或问题，以及回答问题。 它会使用你已关联的GitHub个人账户的权限来执行这些操作。

* 当您在共享环境中使用 Copilot 时，例如在群组讨论串或频道中，Copilot 会以其应用身份而非您的个人帐户创建内容，例如拉取请求。

  > \[!NOTE]
  > 由 Copilot 在共享上下文中创建的拉取请求会使用应用的身份。 如果您使用存储库规则集，由于这些拉取请求不会归属于某个个人，因此在合并前还需要额外一次批准，前提是该存储库本身已要求至少一次批准。 此项已默认启用。 请参阅“[规则集的可用规则](/zh/enterprise-cloud@latest/repositories/configuring-branches-and-merges-in-your-repository/managing-rulesets/available-rules-for-rulesets#additional-approval-for-unattributed-copilot-pull-requests)”。

只有对存储库具有 **写入** 访问权限的用户才能触发 Copilot 进行更改，但任何对话参与者都可以提供输入。 工作区的来宾成员以及仓库的外部协作者无法在 Slack 中通过 Copilot 发起或主导会话。

Copilot 会参考对话中的所有消息来开展工作。 整个线程成为该工件的决策上下文。

### Slack 代码

当要求 Copilot 执行任务时， Copilot cloud agent 将创建一个名为 **Slack Code** 的专用代码通道。 你可以在这里与 Copilot 协作完成任务，也可以根据需要邀请队友一起参与。 建立代码通道后，以独占方式引导会话通过该通道。

Copilot 管理代码通道并显示有关会话的详细信息，例如工作存储库、分支、问题或拉取请求链接、状态和正在使用的模型。 代码通道旨在同一时间仅用于一个会话：每个任务一个通道。 会话结束后，系统会询问您是否要将该频道存档。 存档后，通道及其历史记录仍可查看且可搜索，如果需要，可以重新打开通道。

### 保护云沙盒

当 Copilot cloud agent 开始处理来自 Slack 的任务时，Copilot 会继续在 **安全云沙盒**中异步运行，并在结果准备就绪后发布结果。 你可以继续通过 Slack 进行指导，也可以在 GitHub、终端或你偏好的代码编辑器中继续处理代理生成的成果物。

## 先决条件

* 你必须拥有一个 GitHub 帐户，通过 Copilot 付费计划才能访问 Copilot。
* 你必须拥有 Slack 帐户，并且是工作区的成员。
* 您必须已安装适用于 Slack 的 GitHub 集成。 请参阅“[将 GitHub 与 Slack 集成](/zh/enterprise-cloud@latest/integrations/how-tos/slack/integrate-github-with-slack)”。
* 若要使用 Copilot cloud agent，必须为 Copilot 计划启用云沙盒。 请参阅 [GitHub Copilot 的云沙盒](/zh/enterprise-cloud@latest/copilot/concepts/about-cloud-and-local-sandboxes#cloud-sandboxing)。

  > \[!NOTE]
  > 云沙盒策略与Copilot cloud agent策略共享相同的配置。 组织或企业的成员（包括 具有托管用户的企业）可能需要其所有者先启用云沙盒和 Copilot cloud agent，然后才能在 Slack 中使用 Copilot。 请参阅“[为组织或企业启用或禁用云沙盒](/zh/enterprise-cloud@latest/copilot/how-tos/cloud-and-local-sandboxes/enabling-or-disabling-cloud-sandboxes-for-your-organization)”。

## 将GitHub应用连接到帐户GitHub

首次在 Slack 中使用 GitHub 集成时，应用会提示你将其连接到帐户 GitHub 。 然后，如果出现提示，请设置默认存储库。

默认仓库会提供 Copilot 在响应提示时使用的上下文；此外，除非您在提示中指定了仓库，否则由 Copilot cloud agent 会话创建的问题和拉取请求也会在该默认仓库中打开。

首先，请执行以下操作：

1. 在 Slack 中，通过键入 `@GitHub` 打开与 GitHub 应用的直接消息，或在线程中 @mention GitHub 应用。
2. 按照提示连接 GitHub 帐户，如果出现提示，可以选择设置默认存储库。
3. 要查看你还可以做什么，请在线程中通过键入 `@GitHub help` 来 @mention 应用。

## 在 Slack 中使用 GitHub 应用

你可以向 GitHub 应用发送直接消息，或在线程中 @mention 它。 机器人将响应消息，并根据请求执行任务。

必须对默认存储库或提示中指定的存储库具有写入访问权限，才能触发 Copilot cloud agent 工作。 如果您没有对相关存储库的写入权限，仍然可以在 Slack 线程中提供输入，以便指导 Copilot。这些输入将在 Copilot cloud agent 做出拉取请求更改时用作上下文。

用户可以在拥有Copilot cloud agent访问权限的任何存储库上调用`write`。 对于企业拥有的存储库，管理员必须安装和配置 Slack 应用，并指定 [Slack GitHub](https://github.com/marketplace/slack-github?ref_product=copilot\&ref_type=engagement\&ref_style=text\&ref_plan=enterprise) 应用可以访问的存储库。 有关配置 GitHub Apps的详细信息，请参阅 [通过 GitHub 市场安装 GitHub App 以用于组织](/zh/enterprise-cloud@latest/apps/using-github-apps/installing-a-github-app-from-github-marketplace-for-your-organizations)。

1. 在 Slack 中，通过键入 `@GitHub` 打开与 GitHub 应用的直接消息，或在线程中 @mention 应用。

2. 键入提示，然后发送。 您可以在请求中用自然语言描述存储库和分支。 例如：

   `@GitHub Add "Hello World" to the README in octo-org/octo-repo on the develop branch`

3. Copilot cloud agent 将发起一个 cloud agent 会话，并在 cloud agent 完成后，返回其计划进行的更改摘要，以及指向其在指定存储库中创建的产物的链接。

### 使用 Copilot 创建议题

你可以要求 Copilot 直接从 Slack 创建 GitHub 问题，将对话转换为可操作的任务。 只需用自然语言描述你的需求，Copilot 就会为你创建问题单。

你可以创建单个议题，也可以一次性创建多个具有父子关系的议题。

当你对应用执行 @mention 操作时，应用会使用完整的线程历史记录作为其所创建问题的上下文信息。 若要保持上下文的焦点，请考虑启动新线程或发送直接消息。

1. 在 Slack 中，要求 Copilot 创建一个或多个问题，并指定目标存储库。

   若要创建单个问题，请执行以下操作：

   ```text
   @GitHub In octo-org/octo-repo, create a feature request to add fuzzy matching to search.
   ```

   一次性创建多个议题：

   ```text
   @GitHub In octo-org/octo-repo, open separate issues for adding fuzzy matching to search, paginating the results list, and caching search queries.
   ```

   要创建具有父子关系的议题：

   ```text
   @GitHub In octo-org/octo-repo, create an epic to redesign search, with child issues for fuzzy matching, pagination, and query caching.
   ```

   > \[!NOTE] 只能在您已拥有权限创建问题的存储库中使用 Copilot 来创建问题。 此功能不会更改您的访问权限或绕过存储库权限。

2. Copilot 创建问题并回复，并附上每一项的链接。 每个问题都包含标题和说明，并且根据提示 Copilot 还可以添加标签、分配者和问题类型等元数据。

### 为通道设置默认存储库

可以为每个专用或公共频道设置默认存储库。 不能使用 Copilot 为直接消息设置默认存储库。

如果通道没有默认存储库， Copilot 请将在该通道的第一个会话中使用的存储库设置为通道的默认存储库。

1. 在通道中，键入 `@GitHub settings` 并发送消息。
2. 选择要用作默认值的存储库，然后保存所做的更改。

如果未指定存储库或分支， Copilot 请使用通道的默认存储库和该存储库的默认分支。

> \[!NOTE] 默认存储库跨通道共享，因此任何更改都适用于使用该通道的每个人 Copilot 。

## 延伸阅读

* [关于 GitHub Copilot 云代理](/zh/enterprise-cloud@latest/copilot/concepts/agents/cloud-agent/about-cloud-agent) - 了解更多关于Copilot cloud agent以及它如何支持你。