跳转到主要内容
Qoder Cloud Agents 支持把 GitHub 仓库作为 Session 的资源挂载到容器中。Session 启动后,平台会自动 clone 仓库到指定路径,Agent 可以像在本地工作树中一样读取、修改、提交、推送代码,并配合 gh CLI 创建 Pull Request。 仓库资源的归属与 Session 一致:Session 归档后挂载关系一并失效,Session 期内若需要替换仓库或修改克隆路径,必须创建新的 Session。

核心流程

1

准备 GitHub 令牌

生成 GitHub Personal Access Token(推荐使用 fine-grained PAT),授予仓库读取/写入、Pull Request 等所需权限。该 token 是 GitHub 仓库资源的必填字段。
2

创建 Session 时挂载仓库

在创建 Session 的 resources 数组中加入 type: "github_repository",把仓库 URL 与 PAT 一并传入。
3

Agent 在容器内访问代码

Agent 启动后即可在挂载路径下读取代码,使用 Bash/Read/Write/Edit 等工具修改文件。
4

(可选)创建 Pull Request

Agent 在仓库目录中使用 git push 推送分支,再调用 gh CLI 创建 Pull Request。
仓库资源的克隆与平台容器临时存储共享同一份磁盘空间。容器临时存储 24 小时未活跃后可能被回收,回收后再次唤醒 Session 时平台会重新初始化容器并按需重新克隆,磁盘上未提交的中间产物会丢失。详见 容器参考 - 文件持久化

仓库资源字段

GitHub 仓库资源使用以下字段;推荐在创建 Session 时一次性传入:
authorization_token 仅在创建请求或 token 轮转请求中传入;读取 Session 详情或 Session resources 时不会返回该字段。建议每个 Session 使用最小权限的 PAT,并在用完后吊销。

创建 Session 时挂载 GitHub 仓库

调用 创建 Session 接口,在 resources[] 中传入仓库描述:
成功返回 HTTP 200 OKresources 字段包含归一化后的挂载描述。响应中不会返回 token:
Agent 命令默认 cwd 为 /app。把 mount_path 设为 /app/<repo-name> 后,Agent 在 system prompt 或用户消息里只需引用相对路径 your-repo/...,无需切目录。

挂载多个仓库

一次请求即可挂载多个仓库到不同 mount_path,例如同时挂载前端和后端代码:
也可以与文件、Memory Store、Vault 等其他资源混用,详见 Sessions — 创建时挂载资源

令牌权限模型

GitHub 提供两种 PAT:fine-grained PAT(推荐)和 classic PAT。在 Qoder Cloud Agents 中使用时,按”最小权限原则”申请仅与本次任务相关的权限。

推荐权限对照

下表给出常见 Agent 操作对应的 fine-grained PAT 权限。classic PAT 对应的是仓库范围的 repo scope。
fine-grained PAT 可绑定到具体仓库(甚至特定的 organization 资源),相比 classic PAT 风险更低。建议为每个 Agent 任务申请独立的、短期有效的 PAT。

安全建议

  1. 不要将 Session 创建请求体或包含 resources 的响应写入日志、截图或版本库,其中包含明文 PAT。
  2. 任务完成后及时在 GitHub 设置中吊销 PAT;fine-grained PAT 也支持设置较短的 Expiration
  3. 即使是公开仓库也需要传入 PAT;建议为公开仓库使用只读、短期有效的 token,将权限暴露面降到最低。
  4. 不同环境(开发 / 生产)使用不同的 PAT,便于审计。

创建 Pull Request 工作流

Agent 在挂载好的仓库目录中可以直接执行 gitgh 命令。运行镜像已内置 gitgh CLI,平台也会用仓库资源的 authorization_token 自动为容器配置 GH_TOKEN,无需手动安装或导出环境变量。要让 Agent 完成”修改 -> push -> 创建 PR”全流程,只需:
  1. Agent 配置中启用 agent_toolset_20260401 工具集,至少包含 BashReadWriteEdit,详见 工具
  2. 在 user message 中清晰描述任务、仓库路径与目标分支。
下面是一个端到端示例,假设 Session ID 为 sess_019e5ce0bf9074b69c3481e93771a522、仓库挂载在 /app/your-repo
平台会用仓库资源的 authorization_token 自动为容器配置 GH_TOKENgh pr create 在容器内可直接调用。如果该 PAT 没有 Pull requests: Read & Write 权限,PR 创建会失败;申请 PAT 时请按上文 推荐权限对照 一并授予。

配合 Agent 配置的最佳实践

  • 在 Agent 的 tools 中启用 BashReadWriteEditGlobGrep,覆盖代码搜索与修改场景。
  • 在 Agent 的 system 提示中明确仓库挂载路径,例如:“你的工作目录是 /app/your-repo,所有 git 与 gh 操作都应在该目录下执行。”
  • 对长任务可以在 system prompt 中要求 Agent 在每轮结束时执行 git status 自检,避免漏 commit。
  • 如需跨 Session 复用产物,让 Agent 在每轮结束前用 Files API 上传关键产物(patch 文件、报告);否则容器磁盘 24 小时回收后,未上传的中间文件会丢失。

常见问题

Q: 仓库太大,克隆很慢怎么办? A: 当前资源挂载使用完整 clone,资源字段里没有浅克隆开关。对于体积非常大的 monorepo,建议拆分任务范围,或使用 Files API 上传关键子目录/文件作为补充上下文。 Q: PAT 过期或被吊销了怎么办? A: 后续 git/gh 操作会返回 401。需要创建新的 Session 并使用新 PAT;对于已挂载但尚未推送的修改,可以让 Agent 在 Session 内先 git diff 输出 patch,再用 Files API 上传备份。 Q: 是否支持 fork 私有仓库或访问 organization 内部仓库? A: 支持,只要 PAT 对目标仓库具备 Contents: Read 权限即可。组织开启了 SSO 时,PAT 必须先经过 SSO 授权(Authorize 按钮)才能用于克隆。 Q: 是否支持 git submodule? A: 仓库资源不会额外声明 submodule 字段。需要使用 submodule 时,让 Agent 在仓库目录中执行 git submodule update --init --recursive,并确保 PAT 对所有 submodule 仓库都有读权限。 Q: Session 运行中能换仓库吗? A: 不能。一旦 Session 创建完成且某个仓库已挂载,挂载关系不会因为 update 调用而被替换。如需切换仓库,请创建新的 Session。 Q: Agent 修改的代码会自动推回 GitHub 吗? A: 不会。除非 Agent 在任务中显式执行 git push,所有修改只存在于容器临时存储。请在 user message 中明确要求”push 分支”或”创建 PR”。 Q: GitHub Enterprise Server (GHES) 是否支持? A: GitHub 仓库资源只暴露 urlmount_pathauthorization_token 字段,没有单独的 GHES 配置字段。使用 GitHub Enterprise Server 时,请确认 GHES 端点对外可达,并确认对应 token 可被 gh/git 用于该主机。

下一步