GitHub
索引内容
GitHub 连接器会索引一个 GitHub 用户或组织名下仓库中的内容。可以填写逗号分隔的仓库列表,也可以选择全部按 owner 列举。Owner 为组织时,全部可以列举 token 可见的组织仓库。Owner 为用户时,它调用 /users/{user}/repos,只列举公开仓库;用户 owner 下的私有仓库必须明确填写 repository name。
必须至少选择 pull request、issue 或文档中的一项。连接器不会为仓库概览单独创建可搜索文档。
前置条件
- 创建专用 GitHub access token,使其能读取每个选定仓库及已启用的 PR、issue 与 contents API。
- 当前连接器凭据只有一个 access-token 字段,不包含 GitHub App ID、installation ID、client secret 或 private-key 字段;不要把 App private key 粘贴到 token 字段。
- 对于受 SAML SSO 保护的组织仓库,应为该组织授权 token。
- 记录准确的仓库 owner;使用明确范围时,还应记录每个不带 owner 前缀的仓库名。如果 owner 是用户,请记录每个所需私有仓库并明确填写,因为全部不会列举这些仓库。
- 对于 GitHub Enterprise,由部署运维人员把部署级
GITHUB_CONNECTOR_BASE_URL设置为实例 API base URL。未设置时,客户端使用 GitHub.com。管理表单不能为单个连接器设置主机。 - 允许 OpenCore worker 访问所选 GitHub API 主机,并允许用户浏览器访问对应 Web 主机上的结果链接。
- 如果使用自动同步权限,token 还必须能够读取仓库可见性、collaborator、outside collaborator、team、组织成员,以及把 GitHub 身份匹配到 OpenCore 用户所需的邮箱值。
凭据
GitHub.com 与 GitHub Enterprise 由部署配置选择,不由凭据值选择。当前连接器 schema 没有独立的 GitHub App 凭据流程。不同 token 类型与服务器使用的 scope 名称可能不同;应验证实际目标仓库,并在适用时验证权限端点,而不能只依赖名义上的 scope 标签。
在 OpenCore 中配置
- 在管理后台打开连接器,选择 GitHub,并创建 access-token 凭据。
- 在仓库 Owner 中填写一个准确的 GitHub 用户或组织。
- 选择指定仓库并填写一个或多个逗号分隔的仓库名,或选择全部按 owner 列举。Owner 为组织时,它会请求 token 可见的组织仓库。Owner 为用户时,它使用
/users/{user}/repos且只返回公开仓库;用户私有仓库应在指定仓库中填写。全部并非账号级全范围:配置的 owner 仍然是边界。 - 至少选择一种内容:pull request、issue 或文档。仅当默认分支文档文件策略符合预期内容时才选择文档。
- 选择文档访问方式。仅在自动同步权限可用且仓库级映射已完成测试时使用它。否则,受限仓库应使用 OpenCore 私有群组;仅当每个 OpenCore 账号都可以搜索全部选定内容时才使用公开。
- 设置刷新与清理选项,创建连接器并启动索引。
首次 checkpoint 调用会解析已配置仓库,保存其 ID 与首个仓库,然后在不产生内容的情况下返回。后续调用会逐个仓库推进 PR、issue 与文件分页。
增量运行时,PR 与 issue 按更新时间排序。OpenCore 会先把轮询起点向前移动三小时、终点向后移动一天,再进行筛选。对于文件,会把调整后的起点与仓库 pushed_at 比较;仓库足够新时会重新列举当前默认分支文档集。因此,向任何分支推送都可能触发默认分支文档的重新处理。
权限
Access token 决定 OpenCore 可以摄取什么。自动同步权限可用且已选择时,当前 Enterprise 实现会把一条仓库级访问记录应用到该仓库内的每个 PR、issue 与文件文档:
- 公开仓库映射为 OpenCore 公开访问。
- 私有仓库映射为仓库 collaborator、outside collaborator 与仓库 team 对应的群组。
- Internal 仓库映射为组织成员群组。
这是仓库级同步,不是分支、issue 或 PR 级授权,也不会复现粒度更细的源规则。群组成员根据 GitHub 邮箱值构建;如果 collaborator、team 成员或组织成员没有可用邮箱,他们可能不会出现在同步后的 OpenCore 群组中。依赖自动同步前,应同时测试允许与拒绝用户。
未使用自动同步时,用户搜索时不会检查 GitHub 访问权限。私有使用分配给连接器的 OpenCore 群组;公开会让每个 OpenCore 账号都能搜索全部已索引文档。如果 OpenCore 访问模式比源端更宽,用户可能可以搜索自己无法在 GitHub 打开的 PR、issue 或文件。
验证
- 验证连接器并检查实际解析出的仓库列表。组织使用全部时,确认每个预期的 token 可见组织仓库都存在。用户使用全部时,应预期只返回公开仓库,并确认每个所需私有仓库均已明确配置。
- 持续执行 checkpoint 调用直到运行完成,然后针对每个已启用内容类型,搜索一个选定 PR 正文、一个 issue 正文,以及一个默认分支 README 或文档文件。
- 确认 PR 评论、review、diff、issue 评论、源码文件、超大文档,以及只存在于非默认分支的文档均不存在。
- 打开结果链接,确认它们指向预期 GitHub.com 或 GitHub Enterprise 主机;对于文件,还应确认链接使用当前默认分支。
- 对 PR 或 issue 做一次增量修改,确认它能在连接器三小时起点重叠范围内出现。推送一个选定文档,并确认默认分支文件已更新。
- 如果使用自动同步,请测试公开仓库,以及有代表性的私有或 Internal 仓库用户,包括源端邮箱不可用的成员。未使用自动同步时,应测试每个已分配 OpenCore 群组和一个群组外用户。