Skip to main content

Remote Sessions

啟用 Remote Sessions 後,可透過 GitHub 的 Mission Control 從網頁或行動裝置存取相同 Session。 啟用後每個 Session 都會連線到 Mission Control,並發行可以透過連結或 QR Code 分享的 URL。 若希望 Session 本身在 GitHub 主機環境上執行,而非在本機或自建伺服器,請使用 Cloud Sessions。

前置條件

  • 使用者已通過驗證(GitHub Token 或已登入的使用者)
  • workingDirectory 是 GitHub 儲存庫

在 Client 層級啟用(常時 ON)

啟用 remote: true 後,GitHub 儲存庫內的所有 Session 都會自動發行遠端 URL。 比起固定寫入 config/copilot.php,只在需要的處理中透過 useStdio() 啟用 remote: true 會更好用。
remote 選項僅在 SDK 啟動 CLI 程序時有效,也就是 僅限 stdio 模式。連線至外部伺服器(例如 useTcp())時會被忽略。

在每個 Session 啟用(隨選)

若想在中途開始遠端共享,可透過 RPC 切換。 這等同於 CLI 的 /remote on 與 /remote off 指令。

執行階段層級的 Remote Control(TCP 模式)

remote: true 選項在 SDK 啟動 CLI 程序時生效,因此僅適用於 stdio 模式。在 TCP 模式下連線到現有 CLI 伺服器時,此選項會被忽略。 在 TCP 模式下,可以透過 $client->rpc()->sessions() 管理整個執行階段唯一的 Remote Control。與每個 Session 的 remote()->enable() 不同,這些方法可以啟動、停止 Remote Control,在 Session 之間移轉,並取得目前狀態。
狀態為 off、connecting、active 或 error 其中之一。處於 active 時,也可以讀取 frontendUrl 與 isSteerable。
若要通知執行階段某個 Session 的遠端操控能力已變更,請使用 Session 層級的 RPC。

產生 QR Code

取得的遠端 URL 可以做成 QR Code 傳給行動裝置。 可以使用 Laravel Fortify 也採用的 BaconQrCode。

注意事項

  • remote 選項僅在 SDK 啟動 CLI 程序時有效。連線至外部伺服器(例如 useTcp())時會被忽略。
  • 若 workingDirectory 不是 GitHub 儲存庫,在常時 ON 模式下遠端設定會被略過。在隨選啟用(remote()->enable())時可能會產生錯誤。
  • 請正確設定認證資訊(github_token 或 use_logged_in_user)。

參考

最新資訊請參閱 GitHub 儲存庫。
最後修改於 2026年10月19日