Zum Hauptinhalt springen

Remote Sessions

Wenn Sie Remote Sessions aktivieren, können Sie über GitHub Mission Control von Web- oder Mobilgeräten aus auf dieselbe Session zugreifen. Nach der Aktivierung wird jede Session mit Mission Control verbunden, und es wird eine URL generiert, die sich als Link oder QR-Code teilen lässt. Wenn Sie die Session selbst nicht lokal oder auf einem eigenen Server, sondern in einer von GitHub gehosteten Umgebung ausführen möchten, verwenden Sie Cloud Sessions.

Voraussetzungen

  • Der Benutzer ist authentifiziert (GitHub-Token oder angemeldeter Benutzer)
  • workingDirectory liegt in einem GitHub-Repository

Aktivierung auf Client-Ebene (dauerhaft ON)

Wenn Sie remote: true aktivieren, wird für alle Sessions innerhalb des GitHub-Repositorys automatisch eine Remote-URL generiert. Es ist praktikabler, remote: true gezielt in benötigten Verarbeitungen mit useStdio() zu aktivieren, statt es dauerhaft in config/copilot.php einzutragen.
Die remote-Option wirkt nur, wenn das SDK den CLI-Prozess startet. Das heißt: nur im stdio-Modus. Bei Verbindungen zu externen Servern wie useTcp() wird sie ignoriert.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Enums\SessionEventType;
use Revolution\Copilot\Facades\Copilot;
use Revolution\Copilot\Support\PermissionHandler;
use Revolution\Copilot\Types\SessionConfig;
use Revolution\Copilot\Types\SessionEvent;

$config = new SessionConfig(
    workingDirectory: '/path/to/github-repo',
    onPermissionRequest: PermissionHandler::approveAll(),
);

$stdioConfig = config('copilot');
$stdioConfig['remote'] = true;

Copilot::useStdio($stdioConfig)->start(function (CopilotSession $session): void {
    $session->on(SessionEventType::SESSION_INFO, function (SessionEvent $event): void {
        if ($event->data('infoType') === 'remote') {
            echo 'Remote URL: '.$event->data('url').PHP_EOL;
        }
    });
}, config: $config);

Aktivierung pro Session (on-demand)

Um das Remote-Sharing im laufenden Betrieb zu starten, schalten Sie es per RPC um. Das entspricht den CLI-Befehlen /remote on bzw. /remote off.
use Revolution\Copilot\Contracts\CopilotSession;
use Revolution\Copilot\Facades\Copilot;

Copilot::start(function (CopilotSession $session): void {
    $result = $session->rpc()->remote()->enable();

    if ($result->url !== null) {
        echo 'Remote URL: '.$result->url.PHP_EOL;
    }

    // Sharing stoppen
    $session->rpc()->remote()->disable();
});

QR-Code-Generierung

Die erhaltene Remote-URL lässt sich als QR-Code an mobile Geräte weitergeben. Sie können BaconQrCode verwenden, das auch in Laravel Fortify eingesetzt wird.
use BaconQrCode\Renderer\Image\SvgImageBackEnd;
use BaconQrCode\Renderer\ImageRenderer;
use BaconQrCode\Renderer\RendererStyle\RendererStyle;
use BaconQrCode\Writer;

$writer = new Writer(
    new ImageRenderer(
        new RendererStyle(256),
        new SvgImageBackEnd(),
    ),
);

$svg = $writer->writeString($result->url ?? '');

Hinweise

  • Die remote-Option wirkt nur, wenn das SDK den CLI-Prozess startet. Bei Verbindung zu externen Servern (z. B. useTcp()) wird sie ignoriert.
  • Wenn workingDirectory kein GitHub-Repository ist, wird die Remote-Konfiguration im dauerhaft aktivierten Modus übersprungen. Bei On-demand-Aktivierung (remote()->enable()) kann es zu einem Fehler kommen.
  • Konfigurieren Sie die Anmeldedaten (github_token oder use_logged_in_user) korrekt.

Referenzen

Aktuelle Informationen finden Sie im GitHub-Repository.
Zuletzt geändert am 13. Juli 2026