Vzdialené executory
Dajte agentovi skutočný počítač, na ktorom bude pracovať, či už na Linuxe, macOS alebo Windows.
Čo je vzdialený executor
Agent v Nessie nemá počítač. Dokáže čítať, čo je v Nessie, rozprávať sa s ľuďmi a volať pripojené nástroje cez sieť, no nedokáže otvoriť súbor na notebooku, spustiť príkaz ani si pozrieť stránku, ktorá existuje len za prihlásením niekoho iného. Vzdialený executor je spôsob, ako mu dať počítač, na ktorom môže pracovať.
Executor je malý daemon, ktorý nainštalujete na počítač, ktorý ovládate. Pripája sa k vašej inštancii Nessie odchádzajúcim spojením, dokazuje, o ktorý počítač ide, pomocou kľúča, ktorý nikdy neopustí daný počítač, a potom ponúka pevne danú, pomenovanú sadu operácií — nič iné. Práca prichádza ako jednotlivé podpísané príkazy; výsledky sa vracajú ako ohraničené, štruktúrované potvrdenia. Počítač nikdy neprijme prichádzajúce spojenie z Nessie.
Stojí za to byť presný v tom, čím executor nie je, pretože väčšina nástrojov na vzdialený prístup je jedna z týchto vecí a executor je úmyselne žiadna z nich. Nie je to SSH, žiadny všeobecný vzdialený shell, žiadne pripájanie k terminálovému multiplexeru, ktorý máte už otvorený, žiadny štandardný vstup z cloudu ani všeobecný sieťový proxy server. Nie je to MCP server a nie je to kontajner ani cloudové vykonávacie prostredie — Nessie také už má a sú to iné veci. Executor je koncový bod s vlastnými oprávneniami a uzavretým zoznamom operácií, a tento zoznam je celý jeho povrch.
Komu executor patrí
Každý executor sa vytvára s presne jedným rozsahom, ktorý sa neskôr nedá zmeniť. Určuje, kto ho smie použiť a kto ho smie spravovať.
| Rozsah | Kto ho smie použiť | Kto spravuje prístup |
|---|---|---|
| Súkromný | Žiadajúca osoba a presne vyvolaný agent musia byť obaja uvedení ako určení priradení. Samotný jeden z nich nestačí. | Priradený ľudský administrátor. Agenti môžu súkromný executor iba používať, nikdy ho nemôžu spravovať. |
| Projekt | Osoba s oprávnením na presne ten projekt, a to iba z behu v tomto projekte. | Správca organizácie alebo vlastník či administrátor projektu. |
| Organizácia | Osoba s oprávnením v rámci organizácie. | Správca organizácie. |
Súkromný executor musí mať vždy aspoň jedného aktívneho ľudského administrátora. Priame odstránenie posledného zlyhá; ak by offboardingová transakcia nechala žiadneho, executor prestane prijímať novú prácu, dokončí to, čo už má rozpracované, a sám sa odvolá. Vlastník organizácie má núdzovú cestu, ktorá môže iba odvolať executor, ktorý inak nespravuje, bez toho, aby videl jeho súkromný zoznam, relácie alebo obsah. Súkromný prístup sa nikdy potichu neprenesie na niekoho iného.
Čo s ním môže agent naozaj urobiť
Slovník operácií je pevne daný v kóde, nie nastavovaný pre jednotlivé nasadenia. Delí sa na dve časti a toto delenie rozhoduje o tom, čo treba nainštalovať: niektoré operácie daemon obsluhuje z vlastného dočasného adresára bez akéhokoľvek virtuálneho počítača, zvyšné potrebujú virtuálny počítač (guest VM) pre jednotlivú reláciu na hostiteľovi.
| Operácia | Čo robí | Virtuálny počítač (guest VM) |
|---|---|---|
file.list, file.read | Vypisuje a číta súbory pod jedným koreňom pracovného priečinka, zvoleným pri párovaní. | Nie |
file.write | Zapisuje do kópie (konceptu) pracovného priečinka typu copy-on-write. Skutočný koreň nikdy neotvára na zápis. | Nie |
workspace.review | Hlási, čo koncept zmenil — až 100 relatívnych ciest s typom a veľkosťou v bajtoch plus digest manifestu. Neobsahuje obsah súborov. | Nie |
sandbox.stop | Ukončí reláciu, ktorú beh vlastní. | Nie |
command.run | Spustí jeden príkaz ako vektor argumentov bez shellu vo virtuálnom počítači bez prístupu na sieť. Na tejto ceste nie je nikde žiadny reťazec shellu. | Áno |
browser.open, browser.observe, browser.act | Ovláda prehliadač vo virtuálnom počítači podľa zoznamu zdrojov nakonfigurovaného na stroji. Pozorovanie vracia ohraničený strom prístupnosti a voliteľný zmenšený obrázok; akcie sú navigate, click, type, press a scroll voči uzlu, ktorý agent práve pozoroval — nikdy nie voči selektoru, súradniciam ani skriptu. | Áno |
coding.launch, coding.observe | Spustí riadenú reláciu Codexu vo virtuálnom počítači a vracia typizovaný stav životného cyklu. Nie je tu pripojenie k terminálu ani kanál na zadávanie promptov: agent zistí, či relácia beží, nie čo je na jej obrazovke. | Áno |
workspace.promote | Aplikuje schválený koncept na skutočný pracovný priečinok. Je to jediná operácia, ktorá zapisuje na hostiteľa, a úmyselne sa modelom vôbec neponúka. | Nie |
Operácie, ktoré nepotrebujú virtuálny počítač, tvoria balík pre pracovný priečinok. Hostiteľ, ktorý nedokáže spustiť virtuálny počítač, nie je pokazený executor: spáruje sa bežne, nahlási svoj sandbox backend ako none a ponúka len balík pre pracovný priečinok a nič iné. Do tohto stavu sa dostane edícia Windows bez Hyper-V alebo Linux, kde používateľ nemôže používať /dev/kvm, a rozhranie to pomenuje, namiesto toho aby zlyhalo nejasne.
Práca s prehliadačom nikdy nezačína agentom z vlastnej iniciatívy. Bežná cesta na väzbu jednej operácie odmietne browser.open a browser.observe bez výnimky; beh prehliadača spúšťa osoba z kanála ako jeden balík štyroch operácií na novom behu a k nemu sa už nedá pridať žiadna ďalšia väzba. Riadené relácie kódovania fungujú rovnako.
V kóde existujú ešte dve skupiny operácií, ktoré sú úmyselne nedostupné. Operácie na ovládanie karty Chrome, do ktorej ste už prihlásení, majú úplnú lokálnu implementáciu a rozšírenie pre natívne posielanie správ, no riadiaca rovina ich odmieta inzerovať, kým server nevie dokázať, že pôvodná konverzácia bola súkromná, a nezaznamená, kto čo sprístupnil. Základ je zámerne neaktívny a rozšírenie nie je súčasťou žiadneho inštalátora. A niekoľko operácií kódovania — pripojenie, prompt, prerušenie a zatvorenie — je v schéme pomenovaných, ale nemajú implementáciu, takže ich nie je možné udeliť.
Ako to funguje
Spojenie je vždy odchádzajúce
Daemon otvára odchádzajúce spojenia HTTPS a WSS len k vášmu API Nessie a nikam inam. Nessie sa nikdy nepripája k notebooku, nedrží adresu pre žiadny notebook a nikdy nepovažuje žiadny katalógový endpoint za prenosový kanál k počítaču. Preto executor funguje z domáceho pripojenia, za NAT, vo firemnej VPN, bez presmerovania portov a bez pravidla pre prichádzajúcu prevádzku vo firewalle — a preto je zastavenie daemona úplným a okamžitým odpojením.
Pôvod API musí byť HTTPS. Jedinou výnimkou je loopback adresa pre ľudí, ktorí spúšťajú Nessie na vlastnom počítači, a to cez vlastnú premennú prostredia. Žiadny bežný prepínač nepremení produkčný pôvod na obyčajné HTTP.
Párovanie overí počítač a osoba ho potvrdí
Párovanie je dvojstranný dôkaz. Oprávnená osoba vytvorí executor v Nessie s jeho rozsahom a Nessie vydá registráciu (enrolment): 256-bitovú náhodnú výzvu, z ktorej ukladá iba overovací hash SHA-256. Výzva platí desať minút a dá sa použiť iba raz.
Na počítači daemon vygeneruje pár kľúčov Ed25519, uloží ho do súkromného úložiska chráneného operačným systémom a zapíše presne podpísanú požiadavku na disk predtým, než urobí akékoľvek sieťové volanie. Vďaka tomu sa stratená odpoveď dá zopakovať s tým istým pripraveným kľúčom a počítač sa nespáruje dvakrát bez vedomia. Potom odošle ID registrácie, výzvu, svoj verejný kľúč a podpis dôkazu. Nessie ukladá verejný kľúč a jeho odtlačok. Súkromný kľúč nikdy neukladá.
Nessie potom ukáže odtlačok osobe, ktorá ho potvrdí. Dokiaľ toto potvrdenie a následný dôkaz vlastníctva kľúča nie sú hotové, executor zostáva offline. Párovanie sa nedá dokončiť z textu v chate ani z prepisu terminálu; vyžaduje zámerný ľudský krok vo webovom alebo desktopovom rozhraní.
Počítač, ktorý stratí svoj kľúč, nemôže obnoviť svoj záznam executora. Executor sa odvolá a registruje znova ako nový. Naproti tomu rotácia kľúča je jedna transakcia podpísaná starým aj novým kľúčom.
Deskriptor je podpísané tvrdenie počítača o sebe
Spárovaný daemon zverejňuje deskriptor: podpísané, monotónne revidované vyhlásenie len o štruktúrnych faktoch — ktoré schémy operácií podporuje, svoje limity zdrojov a siete, platformu a digest svojej lokálnej politiky. Neobsahuje žiadne cesty na hostiteľovi a v cloude nevytvára žiadne oprávnenie.
Nová revízia sa nikdy neaktivuje hneď po príchode. Uloží sa ako čakajúca na kontrolu a oprávnená osoba ju musí vidieť a potvrdiť, kým môže ovplyvniť, čo je dostupné. Práve to bráni tomu, aby obnovenie schopností potichu udelilo novú moc: novo oznámená operácia začína zamietnutá.
Buďte jasní v tom, čo podpis dokazuje. Deskriptor podpísaný kľúčom spárovaného executora dokazuje, že ten kľúč tvrdenie urobil. Nedokazuje, že hostiteľ nie je kompromitovaný, a rozhranie to musí povedať.
Odoslanie: kandidát, väzba, príkaz, potvrdenie
Agent nikdy nevyberá executor. Predtým, než môže beh niečo použiť, Nessie preloží logickú operáciu na nepriehľadný, krátkodobý kandidát dostupnosti. Odpoveď neobsahuje ID executora; databáza ukladá len digest handle spolu s tým, kto a pre čo bol vyriešený. Modely a klienti dostávajú handle, nie vybrateľný počítač.
Dostupnosť je jeden resolver, ktorý rovnako používa API, worker, rozhranie aj asistent:
available(operation, human, agent, immutableRunContext) =
human may discover executor
∩ exact executor-agent-operation grant allows operation
∩ stable logical tool grant allows operation
∩ scope matches immutable run context
∩ executor is online and descriptor is approved
∩ local policy permits operationSpotrebovanie kandidáta vytvorí väzbu pod zámkom databázy, ktorý znova overí každú z týchto brán, a posunie monotónny fence. Odoslanie ich overí ešte raz. Dôsledok je, že odobratý grant, zúžená politika alebo odvolaný executor medzi dvoma krokmi prácu zastavia, namiesto toho aby sa to zistilo až dodatočne — a opakovaný pokus nikdy nemôže dopadnúť na iný počítač, než na ten, ku ktorému bol beh viazaný.
Samotný príkaz ide cez bežnú frontu úloh Nessie a životný cyklus volania nástrojov, nie cez vlastnú druhú frontu. Daemon si prácu vyžiada cez svoj overený riadiaci kanál; nikdy sa mu nič nezasiela. Príkaz prechádza štyrmi potvrdeniami a žiadnymi ďalšími:
leased → accepted → started → result-acknowledgedKaždý rámec viaže ID príkazu, pôvod behu, fence väzby, revíziu schopností, expiráciu, idempotentný kľúč a digesty argumentov aj užitočného obsahu. Daemon odmietne nesúlad, zastaranú politiku, zopakovanie alebo druhý výsledok pre príkaz, ktorý už dokončil. Argumenty a koncové výsledky sú v pokoji šifrované cez AES-256-GCM; databáza uchováva ohraničený šifrovaný text a kanonické digesty, nie obsah.
Ak sa potvrdenie stratí, Nessie nepredpokladá úspech. Príkaz sa zapíše ako neznámy výsledok a beh pokračuje bežnou cestou obnovy. Daemon, ktorý každý doručený príkaz lokálne zapíše do žurnálu skôr, než začne prácu, vedľajší efekt nezopakuje. Neskorý príjem potvrdenia môže nejasnosť čestne vyriešiť.
Hranica dôvery
| Účastník | Môže | Nemôže |
|---|---|---|
| Osoba | Spárovať executor, spravovať ho, ak na to má oprávnenie, a potvrdzovať prístup a zmeny politiky. | Rozšíriť politiku, ktorú počítač sám zakazuje, ani konať bez aktuálneho oprávnenia. |
| Agent vrátane osobného asistenta | Vyvolať operáciu, ktorú už má k dispozícii; pripraviť navrhovanú zmenu prístupu pre osobu, ktorá o ňu požiadala. | Spravovať prístup, schváliť samého seba, vybrať počítač, meniť lokálnu politiku ani aplikovať zmenu, ktorú pripravil. |
| Riadiaca rovina Nessie | Vyriešiť dostupnosť, previazať beh, prenajať príkazy a uchovávať auditné údaje bez citlivého obsahu. | Oslovovať počítač, rozširovať lokálnu politiku, dostať sa k poverovacím údajom hostiteľa ani považovať text terminálu za autorizáciu alebo výsledok. |
| Daemon executora | Vynucovať lokálnu politiku, párovať sa smerom von, spúšťať guest a bránu, potvrdzovať príkazy. | Rozširovať vlastný rozsah, prijímať zastarané alebo zopakované úlohy, priamo vystaviť pracovný priečinok hostiteľa alebo poverovacie údaje ani posielať surové lokálne dáta do auditnej stopy. |
| Guest VM a nástroje v ňom | Pracovať v sandboxe typu copy-on-write a k sieti sa dostávať len cez bránu. | Dostať sa k súborom hostiteľa, jeho poverovacím údajom, priamej sieti alebo DNS ani zverejniť zmenu hostiteľa. |
Inštalácia a párovanie executora
CLI pre Mac nainštalujte cez Homebrew, aplikácie pre Mac cez Homebrew casks, CLI pre Linux cez APT alebo DNF a executor pre Windows cez WinGet. Každý spárovaný tím má oprávnenia uložené na počítači osobitne. Nessie riadi prístup v rámci tímu; lokálne zdroje zmeniť nemôže.
Návod na inštaláciu a párovanie obsahuje presné príkazy, dvojstranný postup s osemmiestnym kódom, lokálne nastavenia, spúšťanie, aktualizácie a odinštalovanie.
Ako ďaleko je každá platforma skutočne overená
Stav troch guest sandboxov sa líši a rozdiel je podstatný. macOS je backend s funkčnou a odskúšanou cestou guesta. Backend Firecracker na Linuxe a backend Hyper-V na Windows sú implementované a pokryté testami na strane hostiteľa — spúšťacia sekvencia, diskové obrazy, riadiace a výstupné prenosy, protokol konceptov. V kontinuálnej integrácii tohto projektu ešte nenabootoval žiadny guest na skutočnom hardvéri, pretože to vyžaduje počítač s KVM alebo Hyper-V a úlohy, ktoré by to dokázali, ho nikdy nemali. Balík pre pracovný priečinok, ktorý guest nepotrebuje, je overený od začiatku do konca na Windows proti skutočnej riadiacej slučke. Operácie s guestom na Linuxe a Windows považujte za neoverené, kým ich neoveríte na vlastnom hardvéri. Obrazovka párovania v Nessie hovorí to isté vlastnými slovami.
Bezpečnosť a izolácia
Jeden koreň pracovného priečinka a jeho cesta zostáva na počítači
Párovanie vyberá presne jeden kanonický koreň pracovného priečinka: jeden adresár, nie množinu priečinkov a nikdy ich najbližší spoločný nadradený adresár. Nessie dostane názov koreňa, aby osoba v rozhraní spoznala hranicu; úplná cesta zostáva v stavových údajoch stroja, prístupných len vlastníkovi, a nikdy sa nenahráva. Koreň sa dá zmeniť, ale až po odstránení všetkých lokálnych konceptov a sandboxov, a zmena vytvorí novú revíziu deskriptora, ktorá prejde rovnakou ľudskou kontrolou ako každá iná zmena politiky. Nikdy sa potichu nemôže rozšíriť na nadradený adresár.
Operácie so súbormi prijímajú iba relatívne cesty. Odmietajú prechádzanie adresárov a každú zložku, ktorá je symbolický odkaz. Znova overujú, že nakonfigurovaný koreň je stále bežný adresár, a vracajú ohraničené štruktúrované výsledky bez cesty na hostiteľovi.
Zápisy idú do kópie a iba osoba ich môže aplikovať
Agent nikdy nezapisuje do vašich súborov. file.write vytvorí ohraničený strom typu copy-on-write v stavovom adresári daemona, viazaný na beh, a neskoršie čítania a výpisy pre tento beh vidia koncept. Práca vo virtuálnom počítači vrátane riadených relácií kódovania používa rovnaký copy-on-write scratch.
Aplikovanie konceptu na skutočný pracovný priečinok je jedna operácia — workspace.promote — a je to jediný zápis na hostiteľa v celom systéme. Nemá vôbec žiadnu schému pre modely: žiadny agent, asistent ani cesta zadaná volajúcim nemôže premeniť koncept na zápis na hostiteľa. Namiesto toho osoba otvorí Your reviewed drafts, stlačí Review promotion a potvrdí svojím aktuálnym heslom. Server potom znova overí potvrdený digest kontroly, digest manifestu, beh, používateľa a agenta, ktoré ho vytvorili, revíziu autorizácie, grant operácie a aktívnu lokálnu politiku, až potom vytvorí príkaz. Na počítači daemon sám znova zostaví manifest a odmietne digest, ktorý sa zmenil. Úprava urobená po kontrole sa tak nedostane dnu na základe schválenia kontroly.
Samotné aplikovanie je založené na deskriptoroch a zapisuje sa do žurnála. Natívny pomocník dostane koreň pracovného priečinka a koncept ako už otvorené adresárové deskriptory, nikdy nie ako cesty. Každú zložku overí operáciami bez nasledovania odkazov, odmietne symbolické odkazy, pevné odkazy, špeciálne súbory a prechody cez prípojné body a má žurnál typu všetko alebo nič, takže pád buď dokončí overený manifest, alebo pred čímkoľvek iným obnoví pôvodný stav.
Guest nemá sieť a výstup je vynútený
Keď operácia potrebuje guest, je to Linuxová mikro-VM pre jednu reláciu bez domovského adresára hostiteľa, bez socketu Dockeru, bez agenta SSH, bez zdedeného prostredia a bez prípojného bodu na hostiteľa okrem zdieľania pracovného priečinka. Spustiteľný runtime prípojný bod je len na čítanie; zapisovateľný pracovný priečinok zakazuje spúšťanie, takže všetko, čo sa spúšťa, pochádza z overeného runtime balíka, a nie z niečoho, čo agent zapísal. Guest sa pred otvorením akéhokoľvek socketu zníži na neprivilegovanú identitu a zdieľanie vo vlastníctve root zlyhá pri štarte, namiesto toho aby nechalo bežať privilegovanú záťaž.
Najdôležitejšie je, že guest nemá žiadne sieťové rozhranie. Na Linuxe spúšťacia sekvencia úmyselne nikdy žiadne nekonfiguruje a nevytvára sa zariadenie TAP; na Windows sa virtuálny sieťový adaptér, ktorý Hyper-V štandardne pridá, pri inštalácii odstráni. Jediná cesta guesta zo stroja je loopback proxy vnútri neho, tunelovaná cez virtuálny socket k mostu na hostiteľovi, ktorý bajty odovzdá vlastnej bráne daemona — lokálnemu socketovému listeneru patriacemu vlastníkovi, bez TCP listenera a bez všeobecného režimu presmerovania. Práve brána vynucuje politiku HTTP, CONNECT, WebSocket, presmerovaní, pôvodu, sťahovania a nahrávania a používa existujúci pinned-fetch mechanizmus Nessie namiesto druhej implementácie tých istých pravidiel. Nie je tu žiadny NAT most ani priamy DNS resolver: alternatívne DNS, surové TCP, QUIC a obchádzanie proxy sú všetky zamietnuté.
Zoznam pôvodov, ktoré brána vynucuje, je nakonfigurovaný na počítači jeho vlastníkom a úmyselne sa nikdy nenahráva. Rozhranie túto absenciu pomenúva namiesto toho, aby sa tvárilo, že Nessie je editor politiky pôvodov. Ak chcete vedieť, čo môže prehliadačový executor otvoriť, opýtajte sa osoby, ktorá počítač vlastní.
Poverovacie údaje
Žiadne úložisko poverovacích údajov hostiteľa sa nikdy nepripája do guesta. Ani kľúčenka, ani ~/.codex či ~/.claude, ani globálny token CLI, ani premenná prostredia s API kľúčom. Jediné podporované prihlásenie pre riadenú reláciu kódovania je autentizačný súbor patriaci vlastníkovi, ktorého obsah číta výhradne initrd builder pod kontrolou vlastníka — nikdy Nessie, nikdy deskriptor, nikdy log ani argument príkazu — a jednorazovo sa presunie do súkromného domovského adresára v guestovi, ktorý zanikne spolu s VM. Tento guest sa dostane práve na jeden pôvod.
Prehliadačový executor je ešte prísnejší: každá relácia dostane nový súkromný profil prehliadača a odmietne profil pripravený pracovným priečinkom, takže začína bez cookies, bez rozšírení a bez akéhokoľvek prihláseného stavu z okolia.
Surové lokálne dáta sa môžu dostať k poskytovateľovi modelu iba vnútri explicitného, ohraničeného behu. Nessie trvalo ukladá anonymizované manifesty, digesty argumentov a politík, digesty výsledkov a štruktúrovaný stav. Obsah súborov, výstup terminálu, DOM prehliadača, poverovacie údaje a autentizačné faktory sú zakázané v databázových záznamoch, auditných položkách, logoch, realtime udalostiach aj hláseniach o chybách.
Čo operátor udeľuje a ako to zase berie späť
Oprávnenie na použitie executora nie je jeden prepínač. Agent môže vyvolať operáciu, iba ak má grant pre presne tento executor a presne túto operáciu, a zároveň ju bežná logická politika nástroja povoľuje, a zároveň rozsah behu sedí, a zároveň ju povoľuje vlastná lokálna politika počítača. Udelenie jednej operácie jednému executoru preto nič neoprávňuje na inom a obnovenie schopností nemôže nič rozšíriť, lebo nové operácie prichádzajú zamietnuté.
Prístup agenta aj zdieľanie sa prejavia okamžite priamo na stránke, bez kroku schválenia, výzvy na heslo či nového overenia. Na záložke Agents executora správca zapína alebo vypína prístup agenta k počítaču priamo; na záložke Sharing dáva osobe oprávnenie Can use alebo Admin, alebo rozširuje používanie na projekt či na všetkých v aktuálnom tíme rovnakým spôsobom. Vo vašej vlastnej konverzácii s asistentom — iba tam, nikdy v zdieľanom kanáli, naplánovanej úlohe ani behu iného agenta — môže asistent namiesto toho pripraviť zmenu prístupu agenta alebo priradenia. Tá zobrazí potvrdzovaciu kartu v tej konverzácii a nič sa nezmení, kým na nej nestlačíte Allow access. Text v chate nikdy nie je potvrdením.
Tri zmeny stále vyžadujú, aby ste pri potvrdení znova zadali svoje aktuálne heslo: aktivovanie revízie deskriptora; priradenie pripravené asistentom, ktoré dáva počítač osobe, a nie agentovi; a trvalá politika, ktorá kolegom umožňuje spúšťať príkazy na počítači ako jeho vlastníkovi, teda politika bez dozoru pre prácu na tiketoch. Odpojenie alebo odstránenie počítača úmyselne nevyžaduje ani jedno, pretože núdzový vypínač nesmie byť ťažšie dostupný než to, čo zastavuje. Aplikovanie schváleného konceptu to vždy vyžaduje. Auditná stopa zaznamenáva konajúcu osobu a zásah asistenta oddelene.
Executor prechádza malou, výslovnou sadou stavov:
pending_pairing → online ↔ offline
│ ↓
└──────────→ draining → revoked
↓
errorPonuka Computer v hlavičke je miesto, kde správca pripraví každú zmenu životného cyklu: pozastaviť, po pozastavení obnoviť, odpojiť alebo odstrániť. Pozastavenie nechá executor online, ale prestane prijímať príkazy. Odpojenie zneplatní jeho klientske certifikáty a každý čakajúci handle kandidáta a nedá sa vrátiť späť — odpojený executor sa páruje znova ako nový. Odstránenie robí to isté a navyše ho zo zoznamu vyradí. Na rozdiel od odpojenia je ponúkané bez ohľadu na stav executora, vrátane čakajúceho párovania a už odpojeného, pretože je to jediný spôsob, ako zo zoznamu odísť. Vyprázdňovanie — dokončenie práce, ktorú už executor má, pred tým, než prestane brať ďalšiu — je v protokole skutočný tretí stav a rozhranie ho dokáže zobraziť, no nič tu ho nespúšťa: iba priame volanie API. Každá potvrdená zmena prístupu, kontrola deskriptora a prechod životným cyklom vrátane vyprázdňovania tiež posunie epochu pripojenia daemona, takže jeho ďalší riadiaci dotaz — najneskôr o sekundu — zlyhá v bezpečnom režime (fail closed) a zastaví každý živý guest skôr, než sa môže znova pripojiť. Odvolanie nie je žiadosť, ktorú môže počítač ignorovať.
Prevádzka executora
Kontrola, že je v poriadku
Odpoveďou Nessie je liveness. Daemon podpisuje heartbeat a executor, ktorého posledná overená aktivita je staršia ako šesťdesiat sekúnd, sa trvalo označí ako offline skôr, než sa môže zobraziť, vybrať alebo dostať prácu. Executor, ktorý sa zobrazuje ako online, sa overil v poslednej minúte.
Na počítači neexistuje žiadny health endpoint — daemon z návrhu nepočúva na žiadnom porte určenom pre operátora. Na macOS a Linuxe sa stav zisťuje priamo cez CLI:
nessie-executor status # every paired executor, plus linger state
nessie-executor status <executorId>
systemctl --user status nessie-executor@<executorId>Na macOS status ukazuje launchd agenta každého tímu. Príkaz systemctl je len pre Linux. Na Windows je ikona v systémovej lište rýchla odpoveď, jej ponuka uvedie dôvod a servisný log obsahuje podrobnosti. Na oboch platformách záložka Overview executora v Nessie ukazuje jeho schválené profily, dátovú hranicu, kedy ho naposledy videli a každý čakajúci návrh lokálnej politiky, ktorý čaká na kontrolu.
Logy
| Platforma | Kde |
|---|---|
| Linux | journalctl --user -u nessie-executor@<executorId>; daemon nevedie vlastný log súbor |
| Windows | %ProgramData%\Nessie Executor\logs\service.log, ktorý otvorí položka Open logs folder v ikone na lište |
Sem sa zapisuje každé odmietnutie, ktoré môže osoba riešiť: nepodpísaný alebo zmenený runtime, stavový adresár, ktorý sa nedá zabezpečiť, alebo executor, ktorý sa nespustil pri štarte. Nezapisuje sa sem výzva párovania, kľúč ani výstup potomka procesu. Neexistuje nastavenie úrovne logovania, ktoré by sa dalo zvýšiť, pretože nie je čo podrobnejšie zapnúť.
Mac CLI zapisuje servisný log každého tímu do ~/Library/Logs/NessieExecutor/<executorId>.log.
Aktualizácia
CLI aktualizujte cez Homebrew, APT alebo DNF a potom reštartujte servis každého tímu príkazmi disable a potom enable. WinGet aktualizuje executor pre Windows. Inštalátory Nessie Desktop priamo na stiahnutie ponúkajú podpísané aktualizácie v aplikácii; inštalácie MSI a Debian používajú svojho správcu balíkov. Párovanie a lokálne oprávnenia pri aktualizáciách zostávajú zachované.
Zastavenie a odstránenie
Zastavenie je riadená cesta, ktorú vlastní daemon, nie násilné ukončenie. Daemon dostane signál na ukončenie, zastaví každú reláciu guesta, uvoľní svoj lease a skončí. Na Linuxe jednotka čaká pätnásť sekúnd na desaťsekundový rozpočet na ukončenie a úmyselne nikdy neeskaluje na nezachytiteľné zabitie (kill). Daemon zabitý uprostred ukončovania by totiž nechal osirelú mikro-VM a prekrytie pracovného priečinka bez procesu, ktorý by ich vyčistil. Zastavenie, ktoré visí, sa preto zobrazí v systemctl --user status namiesto mlčania, a eskalácia je výslovné ľudské rozhodnutie.
Na odstránenie balíka pre Linux:
nessie-executor disable <executorId> # stops and disables the service
sudo apt remove nessie-executor
loginctl disable-linger # only if your user manager should stop running at boot tooNa Windows msiexec /x zastaví a odstráni službu, jej záznamy v registri a položku na spúšťanie v lište. Na oboch platformách sa spárovaný stav úmyselne nechá na mieste — ~/.local/state/nessie-executor/ na Linuxe a %ProgramData%\Nessie Executor na Windows. Párovanie je kľúč počítača a podpísaná revízia politiky a odinštalovanie programu nie je žiadosť o ich zničenie; pri opätovnej inštalácii sa nájdu tam, kde boli. Ak chcete párovanie zabudnúť, odstráňte adresár ručne a executor zrušte v Nessie, aby sa ukončil aj z druhej strany.
Ikona na lište Windows aj desktopový spoločník ponúkajú položku Forget pairing on this computer ako plnohodnotnú akciu: zastaví lokálny daemon, odstráni kľúč počítača a výber priečinka a po jedinom natívnom potvrdení natrvalo odstráni lokálne kópie konceptov. Server-side executor a jeho auditnú históriu ponechá vlastníkovi na zachovanie alebo zrušenie.
Časté chyby
| Príznak | Čo to znamená |
|---|---|
| Executor sa spáruje, ale ponúka len operácie so súbormi | Hostiteľ nenahlásil použiteľný sandbox backend. Na Linuxe skontrolujte, či môžete čítať a zapisovať /dev/kvm a či ste v skupine kvm — po pridaní seba do skupiny sa odhláste a znova prihláste. Na Windows edícia nemá Hyper-V; je to vlastnosť edície, nie nastavenie. |
| Ovládacie prvky executora úplne chýbajú | Zostavenie nie je overiteľne od očakávaného vydavateľa. Na Linuxe musí byť runtime vo vlastníctve root bez zápisu pre skupinu alebo pre všetkých; na Windows a macOS musí podpis zodpovedať vydavateľovi alebo tímu pripnutému do zostavenia. Každá z týchto situácií odmietne slovami a pomenuje nápravu, namiesto toho aby skryla ovládacie prvky. |
| Služba beží, ale nespustí daemon a odmietne každý príkaz | Niečo v inštalácii bolo nahradené po zabalení. Je to zamýšľané správanie: zmenená inštalácia odpovie dôvodom namiesto toho, aby zmizla, pretože zastavená služba by spôsobila, že ikona na lište pomenuje nesprávnu nápravu. |
| Beh skončí s neznámym výsledkom | Terminálne potvrdenie sa stratilo. Nessie nenahlási výsledok, ktorý neprijala: príkaz sa označí ako neznámy, beh prejde cestou obnovy a vedľajší efekt sa nezopakuje. Neskorý príjem potvrdenia z daemona môže nejasnosť ešte vyriešiť. |
| Operácia, ktorá fungovala včera, je dnes zamietnutá | Brána sa zmenila medzi väzbou a odoslaním a kontroly sa opakujú v každom kroku: odobratý grant, revízia deskriptora čakajúca na kontrolu, zúžená lokálna politika, rozsah, ktorý už nesedí s behom, alebo odvolanie. Odmietnutie uvedie, ktoré. |
| Agent požiada o prehliadač a dostane odpoveď, že to nejde | Prácu s prehliadačom a kódovaním spúšťa osoba z kanála ako celý balík na novom behu. Bežná cesta väzby ich zámerne odmietne a do behu, ktorý už niečo robí, sa žiadna operácia prehliadača nedá pridať. |