Remote Sessions
启用 Remote Sessions 后,你可以通过 GitHub 的 Mission Control 从 Web 或移动端访问同一个会话。 启用后,会话会连接到 Mission Control,并发出可以作为链接或 QR 码分享的 URL。 如果想让会话本身在 GitHub 托管环境(而非本地或自建服务器)中运行,请使用 Cloud Sessions。前置条件
- 用户已经认证(GitHub token 或已登录用户)
workingDirectory是一个 GitHub 仓库
已移除的配置选项
官方 SDK 1.0.26 移除了客户端的remote 选项、会话的 remoteSession 选项以及 CLI 启动参数 --remote。要共享会话,请使用 $session->rpc()->remote()->enable() 按需启用。现有的远程会话 RPC 仍可继续使用。
按会话启用(按需)
如果想共享会话,可以通过 RPC 切换远程访问。 它与 CLI 的/remote on 及 /remote off 命令等价。
连接到现有的远程会话(服务器作用域)
要让 CLI 服务器连接到现有的远程会话,请调用$client->rpc()->sessions()->connect()。在 ConnectRemoteSessionParams 中传入远程 sessionId。返回结果包含 SDK 侧的 sessionId 以及远程会话的元数据。
运行时级 Remote Control(TCP 模式)
RemoteControlConfig 的 remote 属性用于配置运行时级 Remote Control。它与已移除的客户端 remote 启动选项无关。
在 TCP 模式下,可以通过 $client->rpc()->sessions() 管理整个运行时唯一的 Remote Control。与按会话的 remote()->enable() 不同,这些方法可以启动、停止 Remote Control,在会话之间转移,并获取当前状态。
off、connecting、active 或 error 之一。处于 active 时,还可以读取 frontendUrl 和 isSteerable。
生成 QR 码
获取到的远程 URL 可以做成 QR 码交给移动端。 可以使用 Laravel Fortify 也在使用的 BaconQrCode。注意事项
- 当
workingDirectory不是 GitHub 仓库时,remote()->enable()可能会报错。 - 请适当设置认证信息(
github_token或use_logged_in_user)。
参考
最新信息请参考 GitHub 仓库。