Tovább a tartalomhoz

Távoli vezérlés és mobil

A Control Center asztali alkalmazás, de a munka, amelyet nyomon követ, nem áll meg, amikor feláll az íróasztalától. A távoli vezérlés a Remote társalkalmazással párosítja a telefonját a cc_server példányával — a Remote a remote.usectrl.dev címen érhető el —, így onnan is követheti a flottát: elolvassa az üzeneteket és a jegyeket, válaszol egy ügynöknek, triázsolja a hírfolyamát, anélkül hogy a szerveren tárolt hanganyag, átirat, forráskód vagy hitelesítő adatok valaha elhagynák a szervert.

Gondoljon rá úgy, mint a munkaasztal túlnyomórészt olvasásra szánt társára. Nem a teljes asztali kliens kiváltására készült.

A telefon WebSocketen keresztül éri el a cc_server-t: vagy közvetlen kapcsolaton (loopback, LAN, tailnet vagy wss://), vagy egy jelzőközvetítőn lévő, meghívóval védett szobán keresztül, amely lezárt kereteket továbbít. Peer-to-peer adatcsatorna nincs.

A párosított telefon a szerver felületének egy szűk, szándékosan kijelölt szeletét éri el:

  • Olvasás: jegyek, ügynökök, terek és azok üzenetei, valamint a hírfolyama
  • Válasz: üzenet küldése egy térben, jegy frissítése vagy hozzárendelése, cikk olvasottként vagy mentettként jelölése
  • Playbook futtatása: egy mentett tervsablon példányosítása a paramétereivel. Ez csak javasol egy tervet; semmi nem fut le és semmi nem kerül elköltésre, amíg egy kezelő jóvá nem hagyja a Plan Studióban, teljes klienst használva
  • Munkaterület-váltás, a telefon saját választójából

Ez már majdnem mindent lefed. A telefon alacsonyabb jogosultságú szereplő, mint egy teljes kliens. Nem tud folyamatokat indítani, LLM-keretet elkölteni, a GitHubra pusholni vagy munkaterületet létrehozni. Hogy mindez nem puszta szándék, hanem kikényszerített szabály, arról a hozzáférési modell alatt olvashat.

A kapcsolat egy közvetített relén halad át: a szerver tulajdonosként belép egy meghívóval védett szobába egy wss:// közvetítőn, és minden párosított kliens — asztali, webes, telefonos — ugyanabba a szobába lép be egy időben korlátozott belépési tokennel. Három elem áll össze:

Elem Szerep
Remote (telefonos alkalmazás) A társ-webalkalmazás, amely alapértelmezés szerint a remote.usectrl.dev címen fut, de saját szerveren is hosztolható. Böngészőben töltődik be, és a párosítási rekordot IndexedDB-ben tárolja.
Relé-közvetítő Egy állapotmentes wss:// relé (cc_signaling_server), amely N irányú szobákat szolgál ki. Csak átlátszatlan kereteket szállít: minden hasznos teher végpontok között le van zárva a telefon és a szerver között, így a közvetítő soha nem lát alkalmazásadatot vagy párosítási titkot, és soha nem értelmezi azt, amit továbbít.
cc_server A szoba tulajdonosa. A telefon hívásaira ugyanazon a diszpécseren keresztül válaszol, amelyet minden más kliens is használ.

A párosítási ajánlat egy kapcsolatleírót szállít, amely felsorolja a szerverhez vezető összes útvonalat (LAN, tailnet, nyilvános wss://, relé), valamint az identitás-ujjlenyomatát. A telefon feloldója a legjobban elérhető útvonalat választja, és az első csatlakozáskor rögzíti az ujjlenyomatot (TOFU); a relé akkor is garantálja a kapcsolatot, ha egyetlen közvetlen útvonal sem létezik, miközben soha nem képes elolvasni a forgalmat.

A párosítás az alkalmazásból indul ki, és deep linkként jut el a telefonra; az eljárást lásd az Eszköz párosítása oldalon. Itt az összetétel a lényeg.

https://<pwa-host>/#<payload>

A hasznos teher az URL töredékében utazik — a # utáni részben, amelyet a böngészők soha nem küldenek el a szervernek —, így a PWA HTTPS-gazdagépe soha nem látja. Mindent tartalmaz, amire a telefonnak szüksége van ahhoz, hogy elérje a szervert és igazolja, ki ő: a kapcsolatleírót (minden útvonalat és az identitás-ujjlenyomatot), egy frissen kiállított eszközazonosítót, egy 32 bájtos előre megosztott kulcsot és egy lejárati időbélyeget. A telefon dekódolja, helyben tárol egy párosítási rekordot, majd eltávolítja a töredéket, hogy a titok kikerüljön az URL-ből.

Két csomagforma létezik, és ezek nem felcserélhetők. Az alkalmazáson belüli párosítási panelen kiállított telefonos QR a fenti v2 PairingPayload, amely a Remote PWA gazdagépére mutat. A cc_server pair --client-url egy másik, régebbi v1 hivatkozást bocsát ki ({s, i, k} — szerver URL, eszközazonosító, kulcs), amelyet kizárólag a webes klienshez szántak.

Az élettartamukban is különböznek, amit könnyű eltéveszteni:

Kiállítója A hitelesítő adat lejárata
Alkalmazáson belüli párosítási panel (pairing.mint) 30 nap, mindig
cc_server pair a parancssorból Nincs — a hitelesítő adat nem jár le

A párosított eszköz hitelesített, de nem megbízható. Több egymástól független kapu gondoskodik róla, hogy egy jóváhagyott (vagy kiszivárgott) párosítás ne váljon a szerver teljes irányításává.

1. A határvonal a tagság, nem a párosítás

Szekció neve “1. A határvonal a tagság, nem a párosítás”

Egy érvényes párosítási kulcs azt bizonyítja, melyik eszköz Ön. Azt, hogy mit olvashat vagy módosíthat, a munkaterület-szerepköre dönti el, amely minden egyes híváskor újra feloldódik, valamint a repó tartalmát felfedő dolgoknál a repónkénti jogosultságok. Egy eszközt, amely tökéletesen érvényes kulccsal rendelkezik, de olyan felhasználóhoz tartozik, aki nem tagja a megnevezett munkaterületnek, a rendszer „Not a member of this workspace” üzenettel utasítja el.

A szerepminimum a művelet fajtájából következik, hacsak a művelet nem deklarál sajátot: az olvasáshoz guest, a módosításokhoz member, a destruktív műveletekhez admin szükséges.

2. A telefon alacsonyabb szintű munkamenet

Szekció neve “2. A telefon alacsonyabb szintű munkamenet”

A szerepkör-ellenőrzésen túl a telefonos munkamenet alacsonyabb képességekkel bír, mint egy asztali vagy webes munkamenet. A kizárólag teljes kliensen elérhetőnek deklarált műveleteket a telefon számára már a kezelő lefutása előtt elutasítja a rendszer, függetlenül attól, hogy a mögötte álló felhasználó milyen jogosultsággal rendelkezik: eszközpárosítások kiállítása, listázása, átnevezése és visszavonása; az alagútkapcsolat olvasása és beállítása; szervermentés, valamint munkaterület exportálása/importálása; folyamatok felderítése és leállítása; adapterpróbák; szerverbeállítások; SSO-adminisztráció; flottairányítás; továbbá egy futó ügynök átvétele vagy visszaadása.

3. Alapértelmezés szerint tiltó eszköz-engedélylista

Szekció neve “3. Alapértelmezés szerint tiltó eszköz-engedélylista”

Kifejezetten az MCP eszközfelületre (tools/call) egy alapértelmezés szerint tiltó engedélylista szabályozza, mely eszközöket hívhatja meg a telefon. Minden, ami nem szerepel a listán, már a lefutása előtt elutasításra kerül. A lista túlnyomórészt olvasó és megfigyelő jellegű, plusz néhány csak helyben végrehajtható írás — üzenet, jegyfrissítés, cikk megjelölése —, amelyek nem költenek LLM-keretet, nem indítanak folyamatot és nem nyúlnak külső rendszerhez.

Tiltott például: ügynök megkérdezése, MI-átnézés indítása, ügynök leállítása, átnézés közzététele a GitHubon, ügynökök felvétele vagy elbocsátása, munkaterület létrehozása.

4. Hívásonkénti munkaterület-hatókör

Szekció neve “4. Hívásonkénti munkaterület-hatókör”

A szerver nem tart nyilván „aktuális munkaterületet”. Tervezéséből adódóan állapotmentes: minden munkaterület-hatókörű hívásnak meg kell neveznie a cél workspace_id-t az argumentumaiban, és a diszpécser azonnal elutasítja a hívást, ha az hiányzik, vagy ha olyan munkaterületet nevez meg, amelyet a szerver nem tart nyilván — mindezt még azelőtt, hogy bármi adatbázist nyitna. A telefon ezért soha nem örökölheti és nem is csúszhat át egy másik kliens hatókörébe, és egy idegen munkaterület megnevezése sem segít, mert az 1. kapuban lévő tagságellenőrzés továbbra is érvényes. Ez ugyanaz a munkaterület-elszigetelés invariáns, amelyet a termék többi része is érvényesít.

5. Az előre megosztott kulccsal lezárt, végpontok közötti keretek

Szekció neve “5. Az előre megosztott kulccsal lezárt, végpontok közötti keretek”

A telefon és a szerver közötti minden keret a párosítási kulccsal van lezárva; a belépési token csak bejuttatja a klienst a szobába, semmit nem fejt vissza. A közvetítő titkosított szöveget továbbít, és soha nem látja a kulcsot. Egy visszavont eszköz azt tapasztalja, hogy a hitelesítő adata már eltűnt, így újracsatlakozáskor zártan hibázik.

Az alkalmazás által kiállított hitelesítő adat 30 napra szól; ezen túl a csatlakozási kapu elutasítja, és a telefont újra kell párosítani. A visszavonás azonnali: a szerver figyeli az eszköztáblát, és egy visszavont eszköz nyitott munkameneteit másodperceken belül bontja, ahelyett hogy a következő csatlakozására várna.

6. Szereplőnkénti sebességkorlátozás

Szekció neve “6. Szereplőnkénti sebességkorlátozás”

Egy csúszóablakos korlátozó a távoli eszközforgalmat percenként 120 hívásra korlátozza, a módosító műveletekre pedig szigorúbb, percenként 30 hívásos alkorlát vonatkozik. A keret a szereplőt illeti meg, nem a munkamenetet: az Ön három eszköze egyetlen keretből gazdálkodik, így egy eltérített kliens nem tud több mozgásteret vásárolni magának további munkamenetek megnyitásával, és egy zajos tag sem tudja kizárni a többieket.

7. Egy közvetítő, amely semmit nem tud meg

Szekció neve “7. Egy közvetítő, amely semmit nem tud meg”

A relé-közvetítő szándékosan buta: szobákat üzemeltet, lezárt kereteket továbbít, és nem tart nyilván fiókokat, alkalmazásadatokat vagy kulcsokat. A szobák meghívóval védettek és átmenetiek. Az alkalmazásadatok, a hanganyag, az átirat, a forráskód és a hitelesítő adatok mind a szerveren maradnak.

A párosítás után a telefon élő frissítéseket kap értesítési keretek formájában — új ügynöküzenetek, önhöz rendelt jegyek, állapotváltozások —, tükrözve az asztali kliens saját értesítéseit. A szerver ezeket a kereteket minden csatlakozott munkamenetnek szétküldi, a munkaterület-szűrést pedig a kliens alkalmazza, így az, amit lát, arra a munkaterületre korlátozódik, amelyet éppen néz.

Felület Mit mutat
Beállítások → Ön → Az Ön eszközei (/workspaces/:workspaceId/settings/you/devices) Párosított kliensek élő állapottal, valamint Új kliens párosítása (webböngésző, asztali alkalmazás vagy telefon) és a visszavonás

Ugyanez a panel párosításokat állít ki egy második böngésző vagy asztali alkalmazás számára is, nem csak telefonokhoz — a folyamat ugyanaz, csak a deep link tér el.