Cloud Sessions
Cloud Sessions 是一项功能,它不使用本地 Copilot CLI 进程,而是在 GitHub 侧的托管环境中运行会话。任务会在 Mission Control 上被预约,云端的copilot-agent 会连接进来推进处理。
普通的 Remote Sessions 是「让本地运行的会话能从 GitHub Web/移动端看到」的功能。如果你想让执行位置本身也位于 GitHub 托管环境,请使用 Cloud Sessions。
前置条件
- 用户拥有可以使用 Cloud Agent 的 Copilot 权限
- 可以通过 GitHub token 或已登录的 Copilot CLI 用户进行认证
- 尽可能关联 GitHub 仓库信息
- 组织策略允许云端执行与远程查看
基本使用方式
在SessionConfig 的 cloud 字段中指定 CloudSessionOptions。仓库信息在 SDK 类型上是可选的,但为了向 Mission Control 和云端代理传递上下文,建议指定。
发送第一个 prompt 的时机
Cloud Session 会分两阶段初始化。session.create 在 Mission Control 上预约任务的时刻返回,但要等到云端 copilot-agent 连接并发出 session.start,会有一小段时间。
为了让第一个 prompt 可靠送达,请先订阅事件,等 producer 确认了 copilot-agent 的 session.start 之后再发送。
session.start 确认后再发送 prompt」的结构,会更容易处理。
与 Remote Sessions 的区别
| 功能 | 执行位置 | 主要用途 |
|---|---|---|
| Remote Sessions | 本地或自建服务器 | 从 Web/移动端查看和操作已有会话 |
| Cloud Sessions | GitHub 托管环境 | 不在用户终端或自建服务器上运行 Copilot CLI,直接进行处理 |
注意事项
- Cloud Sessions 会受到权限与组织策略的影响
- 设置为
streaming: true后,可以接收assistant.message_delta等实时事件 - 权限请求的处理与普通会话相同。通过 Laravel 版 Facade 时默认是 deny-all,因此请根据需要指定
PermissionHandler::approveSafety()等
参考
最新信息请参考 GitHub 仓库。