把 GitHub 仓库挂载到 Session 容器,让 Agent 直接读取、修改代码并提交 Pull Request。
Qoder Cloud Agents 支持把 GitHub 仓库作为 Session 的资源挂载到容器中。Session 启动后,平台会自动 clone 仓库到指定路径,Agent 可以像在本地工作树中一样读取、修改、提交、推送代码,并配合
GitHub 仓库资源使用以下字段;推荐在创建 Session 时一次性传入:
调用 创建 Session 接口,在
下表给出常见 Agent 操作对应的 fine-grained PAT 权限:
Agent 在挂载好的仓库目录中可以直接执行
Q: 仓库太大,克隆很慢怎么办?
A: 当前资源挂载使用完整 clone,对于体积非常大的 monorepo,建议拆分任务范围,或使用 Files API 上传关键子目录/文件作为补充上下文。
Q: PAT 过期或被吊销了怎么办?
A: 后续 git/
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 时一次性传入:
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
type | string | 是 | 固定为 "github_repository" |
url | string | 是 | 仓库 URL,例如 https://github.com/your-org/your-repo |
mount_path | string | 否 | 克隆到容器中的路径。省略时按仓库名自动推断 |
authorization_token | string | 是 | GitHub Personal Access Token,用于克隆与推送仓库 |
authorization_token 仅在创建请求或 token 轮转请求中传入;读取 Session 详情或 Session resources 时不会返回该字段。建议每个 Session 使用最小权限的 PAT,并在用完后吊销。创建 Session 时挂载 GitHub 仓库
调用 创建 Session 接口,在 resources[] 中传入仓库描述:
令牌权限模型
下表给出常见 Agent 操作对应的 fine-grained PAT 权限:
| Agent 操作 | fine-grained PAT 权限(Repository permissions) |
|---|---|
| 克隆/读取私有仓库 | Contents: Read |
| 创建分支并推送 | Contents: Read & Write |
| 创建 / 评论 Pull Request | Pull requests: Read & Write |
| 读取 Issues | Issues: Read |
| 创建 / 评论 Issues | Issues: Read & Write |
| 读取仓库元信息(必备) | Metadata: Read |
创建 Pull Request 工作流
Agent 在挂载好的仓库目录中可以直接执行 git 与 gh 命令。运行镜像已内置 git 与 gh CLI,平台也会用仓库资源的 authorization_token 自动为容器配置 GH_TOKEN,无需手动安装或导出环境变量。
常见问题
Q: 仓库太大,克隆很慢怎么办?
A: 当前资源挂载使用完整 clone,对于体积非常大的 monorepo,建议拆分任务范围,或使用 Files API 上传关键子目录/文件作为补充上下文。
Q: PAT 过期或被吊销了怎么办?
A: 后续 git/gh 操作会返回 401。需要创建新的 Session 并使用新 PAT。
Q: Session 运行中能换仓库吗?
A: 不能。一旦 Session 创建完成且仓库已挂载,挂载关系不可替换。如需切换仓库,请创建新的 Session。
Q: Agent 修改的代码会自动推回 GitHub 吗?
A: 不会。除非 Agent 在任务中显式执行 git push,所有修改只存在于容器临时存储。