Skip to main content
管理 Session

访问 GitHub

把 GitHub 仓库挂载到 Session 容器,让 Agent 直接读取、修改代码并提交 Pull Request。

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 时一次性传入:
字段类型必填说明
typestring固定为 "github_repository"
urlstring仓库 URL,例如 https://github.com/your-org/your-repo
mount_pathstring克隆到容器中的路径。省略时按仓库名自动推断
authorization_tokenstringGitHub Personal Access Token,用于克隆与推送仓库
authorization_token 仅在创建请求或 token 轮转请求中传入;读取 Session 详情或 Session resources 时不会返回该字段。建议每个 Session 使用最小权限的 PAT,并在用完后吊销。

创建 Session 时挂载 GitHub 仓库

调用 创建 Session 接口,在 resources[] 中传入仓库描述:
curl -s -X POST https://api.qoder.com.cn/api/v1/cloud/sessions \
  -H "Authorization: Bearer $QODER_PAT" \
  -H "Content-Type: application/json" \
  -d '{
    "agent": {"id": "agent_019e5ce0bf307a1a8f952eb814aea3d5", "type": "agent", "version": 2},
    "environment_id": "env_019e44eb66bb748cabcd1489f6fa4428",
    "title": "为 your-repo 修复 bug",
    "resources": [
      {
        "type": "github_repository",
        "url": "https://github.com/your-org/your-repo",
        "mount_path": "/app/your-repo",
        "authorization_token": "ghp_xxxxxxxxxxxxxxxxxxxxxxxxxxxx"
      }
    ]
  }' | jq .

令牌权限模型

下表给出常见 Agent 操作对应的 fine-grained PAT 权限:
Agent 操作fine-grained PAT 权限(Repository permissions)
克隆/读取私有仓库Contents: Read
创建分支并推送Contents: Read & Write
创建 / 评论 Pull RequestPull requests: Read & Write
读取 IssuesIssues: Read
创建 / 评论 IssuesIssues: Read & Write
读取仓库元信息(必备)Metadata: Read

创建 Pull Request 工作流

Agent 在挂载好的仓库目录中可以直接执行 gitgh 命令。运行镜像已内置 gitgh 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,所有修改只存在于容器临时存储。