Udaljeni izvršitelji
Dajte agentu pravi računar na kojem će raditi, na Linuxu, macOS-u ili Windowsu.
Šta je udaljeni izvršitelj
Agent u Nessieju nema računar. Može čitati ono što je u Nessieju, razgovarati s ljudima i pozivati povezane alate preko mreže, ali ne može otvoriti datoteku na laptopu, pokrenuti naredbu niti pogledati stranicu koja postoji samo iza nečijeg prijavljivanja. Udaljeni izvršitelj je način da mu dajete računar na kojem može raditi.
Executor je mali daemon koji instalirate na računar kojim upravljate. On se uparuje prema vani s vašom Nessie instancom, dokazuje koji je to računar ključem koji nikada ne napušta taj računar, a zatim nudi fiksan, imenovan skup operacija — ništa više. Poslovi stižu kao pojedinačne potpisane naredbe; rezultati se vraćaju kao ograničene, strukturirane potvrde. Računar nikada ne prihvata dolazne veze od Nessieja.
Važno je precizno reći šta izvršitelj nije, jer je većina alata za daljinski pristup neka od ovih stvari, a izvršitelj namjerno nije nijedna od njih. Nema SSH-a, nema zajedničke udaljene ljuske, nema povezivanja s terminalnim multiplekserom koji već imate otvoren, nema standardnog ulaza u oblaku niti općeg proksija za lokalnu mrežu. Nije MCP server, niti kontejner ili izvršno okruženje u oblaku — Nessie već ima to, i to je nešto drugo. Executor je krajnja tačka koja nosi vlastita ovlaštenja, sa zatvorenim spiskom operacija, a taj spisak je cijela površina.
Kome pripada izvršitelj
Svaki izvršitelj se kreira s tačno jednim opsegom, koji se kasnije ne može mijenjati. Opseg određuje ko ga smije pozivati i ko smije upravljati njegovim pristupom.
| Opseg | Ko ga smije pozivati | Ko upravlja pristupom |
|---|---|---|
| Privatni | Osoba koja traži posao i tačno pozvani agent moraju oba biti navedeni kao dodijeljeni. Nijedan sam po sebi nije dovoljan. | Dodijeljeni ljudski administrator. Agenti mogu koristiti privatni izvršitelj, ali nikada ne mogu njime upravljati. |
| Projekat | Osoba koja ima pravo pristupa tačno tom projektu, i to samo iz posla u tom projektu. | Menadžer organizacije, ili vlasnik ili administrator projekta. |
| Organizacija | Osoba s pravom pristupa organizaciji. | Menadžer organizacije. |
Privatni izvršitelj uvijek mora imati barem jednog aktivnog ljudskog administratora. Direktno uklanjanje posljednjeg ne uspijeva; ako bi se njime neko uklonio iz tima i ostavio izvršitelj bez administratora, izvršitelj prestaje prihvatati novi posao, završava ono što već ima i sam sebe opoziva. Vlasnik organizacije ima put za opoziv u hitnim slučajevima koji zaustavlja izvršitelj kojim inače ne upravlja, bez prikazivanja njegovog privatnog spiska, sesija ili sadržaja. Privatni pristup se nikada tiho ne prenosi na nekog drugog.
Šta agent zaista može raditi s njim
Vokabular operacija je fiksiran u kodu, a ne konfiguriše se po instalaciji. Dijeli se na dva dijela, i ta podjela određuje šta treba instalirati: neke operacije daemon poslužuje iz vlastitog privremenog direktorija bez virtuelne mašine, a ostale zahtijevaju gostujuću VM po sesiji na računaru domaćinu.
| Operacija | Šta radi | VM za gosta |
|---|---|---|
file.list, file.read | Navodi i čita datoteke unutar jednog korijenskog direktorija radnog prostora izabranog pri uparivanju. | Ne |
file.write | Piše u kopiju nacrta tog radnog prostora koja se kopira pri pisanju. Nikada ne otvara pravi korijen za pisanje. | Ne |
workspace.review | Prijavljuje šta je nacrt promijenio — do 100 relativnih putanja s vrstom i veličinom u bajtovima, plus digest manifesta. Ne sadrži sadržaj datoteka. | Ne |
sandbox.stop | Zaustavlja sesiju koju posao posjeduje. | Ne |
command.run | Pokreće jednu naredbu kao vektor argumenata bez ljuske, u gostu bez izlaznog saobraćaja. Na ovom putu nigdje nema stringa ljuske. | Da |
browser.open, browser.observe, browser.act | Upravlja preglednikom unutar gosta prema listi origin-a konfigurisanoj na računaru. Posmatranje vraća ograničeno stablo pristupačnosti i opcionalnu umanjenu sliku; radnje su navigacija, klik, unos, pritisak tipke i pomicanje nad čvorom koji je agent upravo posmatrao — nikada selektor, koordinata ili skripta. | Da |
coding.launch, coding.observe | Pokreće upravljanu Codex sesiju u gostu i vraća tipizirano stanje životnog ciklusa. Nema povezivanja s terminalom i nema kanala za upite: agent saznaje je li sesija pokrenuta, ali ne i šta se prikazuje na njenom ekranu. | Da |
workspace.promote | Primjenjuje pregledani nacrt na pravi radni prostor. Ovo je jedina operacija koja piše na računar domaćin, i namjerno se uopće ne nudi modelima. | Ne |
Operacije koje ne trebaju gosta čine paket radnog prostora. Računar domaćin koji ne može pokrenuti gosta nije neispravan izvršitelj: upari se normalno, prijavljuje svoj sandbox backend kao none i oglašava samo paket radnog prostora, ništa drugo. U tom stanju završava Windows izdanje bez Hyper-V-a ili Linux računar čiji korisnik ne može koristiti /dev/kvm, a sučelje to imenuje umjesto da padne nejasno.
Agent nikada sam od sebe ne pokreće rad s preglednikom. Obična ruta za vezivanje jedne operacije izričito odbija browser.open i browser.observe; pokretanje preglednika radi osoba iz kanala, kao jedan paket od četiri operacije na novom poslu, i nakon toga se tom poslu ne može dodati nijedno vezivanje. Upravljane sesije kodiranja funkcionišu na isti način.
Postoje još dvije grupe operacija u kodu koje su namjerno nedostupne. Operacije za upravljanje Chrome karticom u kojoj ste već prijavljeni imaju potpunu lokalnu implementaciju i proširenje za nativne poruke, ali kontrolna ravan ih odbija oglašavati dok server ne može dokazati da je razgovor koji ih je pokrenuo bio privatan i zabilježiti ko je šta otkrio. Temelj je namjerno neaktivan, a proširenje se ne isporučuje ni u jednom instalateru. A nekoliko operacija kodiranja — attach, prompt, interrupt i close — navedeno je u šemi, ali nema njihove implementacije, pa se ne mogu dodijeliti.
Kako radi
Veza je uvijek odlazna
Daemon uspostavlja odlazne HTTPS i WSS veze prema vašem Nessie API-ju i ni prema čemu drugom. Nessie nikada ne poziva laptop, nikada ne čuva njegovu adresu i nikada ne tretira nijednu krajnju tačku iz kataloga kao transport do računara. Zato izvršitelj radi iz kućne mreže, iza NAT-a, na korporativnom VPN-u, bez prosljeđivanja portova i bez pravila za dolazni saobraćaj na zaštitnom zidu — i zato je zaustavljanje daemona potpuno i trenutno prekidanje veze.
API origin mora biti HTTPS. Jedini izuzetak je loopback adresa za ljude koji pokreću Nessie na vlastitom računaru, uz vlastitu varijablu okruženja; nijedna obična zastavica ne može produkcijski origin pretvoriti u običan HTTP.
Uparivanje dokazuje računar, a osoba potvrđuje
Uparivanje je dvostrani dokaz. Ovlaštena osoba kreira izvršitelj u Nessieju s njegovim opsegom, a Nessie izdaje prijavu: nasumični izazov od 256 bita, od kojeg čuva samo SHA-256 verifikator. Prijava važi deset minuta i može se upotrijebiti jednom.
Na računaru daemon generiše Ed25519 par ključeva, pohranjuje ga u memoriju zaštićenu OS-om koja je dostupna samo vlasniku i na disk upisuje tačan potpisani zahtjev prije bilo kakvog poziva mreži. Tako se izgubljeni odgovor može ponoviti s istim pripremljenim ključem, umjesto da se tiho uparuje dvaput. Zatim šalje identifikator prijave, izazov, svoj javni ključ i potpis dokaza. Nessie pohranjuje javni ključ i njegov otisak. Privatni ključ nikada ne pohranjuje.
Nessie zatim prikazuje taj otisak osobi, koja ga potvrđuje. Dok se to ne potvrdi i ne dokaže posjedovanje ključa, izvršitelj ostaje offline. Uparivanje se nikada ne može završiti iz teksta u chatu ili iz transkripta terminala: potrebna je namjerna ljudska radnja u web ili desktop sučelju.
Računar koji izgubi ključ ne može povratiti svoj zapis izvršitelja. Opoziva se i ponovo prijavljuje kao novi izvršitelj. Rotacija ključa, s druge strane, je jedna transakcija potpisana i starim i novim ključem.
Deskriptor je potpisana tvrdnja računara o samom sebi
Upareni daemon objavljuje deskriptor: potpisanu, monotono revidiranu izjavu isključivo o strukturnim činjenicama — koje šeme operacija podržava, njegova ograničenja resursa i mreže, platformu i digest njegove lokalne politike. Ne sadrži putanje na računaru i ne stvara nikakvo ovlaštenje u oblaku.
Nova revizija se nikada ne aktivira čim stigne. Pohranjuje se kao čekajuća za pregled, a ovlaštena osoba je mora vidjeti i potvrditi prije nego što može uticati na to šta je dostupno. Time se sprječava da osvježavanje mogućnosti tiho dodijeli novu moć: novo oglašena operacija počinje odbijena.
Budite jasni o tome šta potpis dokazuje. Deskriptor potpisan ključem uparenog izvršitelja dokazuje da je taj ključ dao tvrdnju. Ne dokazuje da računar nije kompromitovan, a sučelje to mora reći.
Raspodjela: kandidat, vezivanje, naredba, potvrda
Agent nikada ne imenuje izvršitelj. Prije nego što posao može koristiti jedan, Nessie logičku operaciju pretvara u neprozirnog, kratkotrajnog kandidata za dostupnost. Odgovor ne sadrži ID izvršitelja; baza čuva samo digest oznake zajedno s tim za koga i za šta je razriješena. Modeli i klijenti dobijaju oznaku, a ne računar koji mogu birati.
Dostupnost je jedan resolver, koji identično koriste API, worker, sučelje i 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 operationKorištenje kandidata stvara vezivanje pod zaključavanjem baze koje ponovo provjerava svaku od tih kapija i pomjera monotoni brojač (fence). Raspodjela ih provjerava još jednom. Posljedica je da povučeno odobrenje, sužena politika ili opozvan izvršitelj između dva koraka zaustavljaju posao umjesto da budu primijećeni naknadno — i da se ponovni pokušaj nikada ne može izvršiti na drugom računaru od onog na koji je posao bio vezan.
Sama naredba ide preko Nessiejevog običnog reda poslova i životnog ciklusa poziva alata, a ne preko vlastitog. Daemon traži posao preko svog autentificiranog kontrolnog kanala; nikada mu se ništa ne šalje gurkanjem. Naredba prolazi kroz četiri potvrde i nijednu drugu:
leased → accepted → started → result-acknowledgedSvaki okvir veže ID naredbe, porijeklo posla, brojač vezivanja, reviziju mogućnosti, istek, ključ idempotentnosti i digeste argumenata i sadržaja. Daemon odbija neslaganje, zastarjelu politiku, ponavljanje ili drugi rezultat za naredbu koju je već završio. Argumenti i završni rezultati se šifriraju AES-256-GCM-om u mirovanju; baza čuva ograničeni šifrat i kanonske digeste, ne sadržaj.
Ako se potvrda izgubi, Nessie ne pretpostavlja uspjeh. Naredba se bilježi kao nepoznat ishod, a posao slijedi uobičajenu putanju oporavka; daemon, koji lokalno bilježi svaku isporučenu naredbu prije nego što počne raditi, neće ponoviti nuspojavu. Kasnija potvrda i dalje može iskreno razriješiti nejasnoću.
Granica povjerenja
| Učesnik | Može | Ne može |
|---|---|---|
| Osoba | Upariti izvršitelj, njime upravljati kada ima pravo, potvrđivati pristup i promjene politike. | Proširiti politiku koju sam računar odbija, niti djelovati bez aktuelnog ovlaštenja. |
| Agent, uključujući lični asistent | Pozvati operaciju koja mu je već dostupna; pripremiti predloženu promjenu pristupa za osobu koja ju je zatražila. | Upravljati pristupom, sam sebe odobriti, birati računar, mijenjati lokalnu politiku ili primijeniti promjenu koju je sam pripremio. |
| Kontrolna ravan Nessieja | Razriješiti dostupnost, vezati posao, dodjeljivati naredbe, čuvati redigovane revizijske činjenice. | Pozivati računar, proširiti lokalnu politiku, dosezati vjerodajnice računara domaćina ili tretirati tekst terminala kao ovlaštenje ili ishod. |
| Daemon izvršitelja | Provoditi lokalnu politiku, upariti se prema vani, pokretati gosta i gateway, potvrđivati naredbe. | Proširiti vlastiti opseg, prihvatiti zastarjeli ili ponovljeni posao, direktno izložiti radni prostor ili vjerodajnice računara domaćina ili poslati sirove lokalne podatke u revizijski trag. |
| Gostujuća VM i alati unutar nje | Raditi u sandboxu s kopiranjem pri pisanju, dosežući mrežu samo preko gateway-a. | Dosezati datoteke, vjerodajnice ili izravnu mrežu i DNS računara domaćina, niti primijeniti promjenu na računaru domaćinu. |
Instalacija i uparivanje izvršitelja
Instalirajte Mac CLI putem Homebrew-a, Mac aplikacije putem Homebrew casks-a, Linux CLI putem APT-a ili DNF-a, ili Windows izvršitelj putem WinGet-a. Svaki upareni tim ima odvojene dozvole pohranjene na računaru. Nessie kontroliše pristup unutar tima; ne može mijenjati lokalne resurse.
Vodič za instalaciju i uparivanje sadrži tačne naredbe, dvostrani tok s osmocifrenim kodom, lokalne postavke, pokretanje, ažuriranja i uklanjanje.
Koliko je svaka platforma zaista provjerena
Stanje tri gostujuća sandboxa se razlikuje, i razlika je bitna. macOS je backend s ispravnom, provjerenom gostujućom putanjom. Firecracker backend na Linuxu i Hyper-V backend na Windowsu su implementirani i pokriveni testovima na strani domaćina — sekvenca pokretanja, diskovni image-i, transporti za kontrolu i izlaz, protokol nacrta — ali nijedan gost još nije podignut na stvarnom hardveru u kontinuiranoj integraciji ovog projekta, jer to zahtijeva računar s KVM-om ili Hyper-V-om, a poslovi koji bi to dokazali nikada ga nisu imali. Paket radnog prostora, koji ne treba gosta, u potpunosti je provjeren na Windowsu u stvarnoj kontrolnoj petlji. Operacije s gostom na Linuxu i Windowsu smatrajte neprovjerenima dok ih ne provjerite na vlastitom hardveru. Ekran uparivanja u Nessieju kaže isto, svojim riječima.
Sigurnost i izolacija
Jedan korijen radnog prostora, a njegova putanja ostaje na računaru
Uparivanje bira tačno jedan kanonski korijen radnog prostora: jedan direktorij, ne skup fascikli niti njihov najbliži zajednički roditelj. Nessie dobija naziv tog direktorija (basename), pa osoba može prepoznati granicu u sučelju; puna putanja ostaje u stanju mašine dostupnom samo vlasniku i nikada se ne učitava. Korijen je moguće promijeniti, ali tek nakon što se uklone svi lokalni nacrti i sandboxi, i to stvara novu reviziju deskriptora koja prolazi istu ljudsku provjeru kao i svaka druga promjena politike. Nikada se tiho ne može proširiti na roditeljski direktorij.
Operacije s datotekama prihvataju samo relativne putanje. Odbijaju prelazak između direktorija i svaku komponentu koja je simbolička veza, ponovo provjeravaju da je konfigurisani korijen i dalje običan direktorij i vraćaju ograničene strukturirane rezultate bez putanje na računaru domaćinu.
Pisanja idu u kopiju, a primjenjuje ih samo osoba
Agent nikada ne piše u vaše datoteke. file.write pravi ograničeno stablo s kopiranjem pri pisanju unutar vlastitog direktorija stanja daemona, vezano za posao, a kasnija čitanja i listanja za taj posao vide nacrt. Rad u gostu, uključujući sesije kodiranja, koristi isti privremeni prostor s kopiranjem pri pisanju.
Primjena nacrta na pravi radni prostor je jedna operacija — workspace.promote — i to je jedini upis na računar domaćin u sistemu. Nema nikakvu šemu okrenutu modelu: nijedan agent, asistent ni putanja koju zadaje pozivalac ne može pretvoriti nacrt u upis na računar domaćin. Umjesto toga, osoba otvara Vaši pregledani nacrti, pritisne Pregledaj primjenu i potvrdi svojom trenutnom lozinkom. Server zatim ponovo provjerava potvrđeni digest pregleda, digest manifesta, posao, korisnika i agenta koji su ga pokrenuli, reviziju ovlaštenja, odobrenje operacije i aktivnu lokalnu politiku, prije nego što kreira naredbu. Na računaru daemon sam ponovo gradi manifest i odbija digest koji se promijenio — tako da izmjena napravljena nakon pregleda ne može proći s odobrenjem pregleda.
Sama primjena se oslanja na deskriptore i bilježi se u dnevnik. Nativni pomoćnik prima korijen radnog prostora i nacrt kao već otvorene deskriptore direktorija, nikada kao putanje; provjerava svaku komponentu operacijama bez praćenja simboličkih veza, odbija simboličke veze, tvrde veze, posebne datoteke i prelaske preko montiranih tačaka, i čuva dnevnik koji omogućava ili potpuno dovršavanje provjerenog manifesta ili vraćanje originala prije bilo čega drugog pri padu.
Gost nema mrežu, a izlaz je prisilno usmjeren
Kada operaciji zaista treba gost, to je Linux mikro-VM po sesiji, bez domaćeg početnog direktorija, bez Docker socketa, bez SSH agenta, bez nasljeđenog okruženja i bez montiranja domaćina osim dijeljenja radnog prostora. Izvršna runtime montaža je samo za čitanje; montaža radnog prostora za pisanje zabranjuje izvršavanje, pa sve što se pokreće dolazi iz provjerenog runtime paketa, a ne iz nečega što je agent napisao. Gost se spušta na neprivilegirani identitet prije nego što otvori bilo koji socket, a dijeljenje u vlasništvu root-a prekida pokretanje umjesto da ostavi privilegovano opterećenje da radi.
Najvažnije, gost nema mrežni interfejs. Na Linuxu sekvenca pokretanja namjerno nikada ne konfiguriše jedan i nijedan TAP uređaj se ne kreira; na Windowsu se virtuelni mrežni adapter koji Hyper-V dodaje po defaultu uklanja tokom postavljanja. Jedina ruta gosta prema van je loopback proxy unutar njega, tunelovan preko virtuelnog socketa do mosta na računaru domaćinu, koji bajtove predaje daemonovom vlastitom gatewayu — lokalnom listeneru socketa u vlasništvu vlasnika, bez TCP listenera i bez općeg režima prosljeđivanja. Taj gateway je mjesto gdje se provode HTTP, CONNECT, WebSocket, redirect, origin, preuzimanje i otpremanje, koristeći postojeći mehanizam pinned-fetch Nessieja umjesto druge implementacije istih pravila. Nema NAT mosta i nema direktnog DNS resolvera: alternativni DNS, sirovi TCP, QUIC i zaobilaženje proxyja su svi zabranjeni.
Listu origin-a koju taj gateway provodi konfiguriše na računaru njegov vlasnik i ona se namjerno nikada ne šalje nigdje. Sučelje tu odsutnost imenuje umjesto da se pravi kao da je Nessie uređivač politike origin-a: ako želite znati šta izvršitelj preglednika smije dosezati, pitajte osobu koja posjeduje računar.
Vjerodajnice
Nijedan skup vjerodajnica računara domaćina se nikada ne montira u gosta. Ni keychain, ni ~/.codex, ni ~/.claude, ni globalni CLI token, ni varijabla okruženja s API ključem. Jedina podržana prijava za upravljanu sesiju kodiranja je autentifikaciona datoteka privatna za vlasnika, čiji sadržaj čita isključivo initrd graditelj pod kontrolom vlasnika — nikada Nessie, nikada deskriptor, nikada dnevnik ili argument naredbe — i jednom se prebacuje u privatni početni direktorij unutar gosta, koji se uništava zajedno s VM-om. Taj gost može dosegnuti tačno jedan origin.
Izvršitelj preglednika je još strožiji: svaka sesija dobija novi privatni profil preglednika i odbija onaj koji je pripremio radni prostor, pa počinje bez kolačića, bez proširenja i bez ikakvog nasljeđenog prijavljenog stanja.
Sirovi lokalni podaci mogu doći do pružatelja modela samo unutar eksplicitnog, ograničenog posla. Nessie trajno čuva redigovane manifeste, digeste argumenata i politike, digeste rezultata i strukturirani status. Sadržaj datoteka, izlaz terminala, DOM preglednika, vjerodajnice i faktori autentifikacije su zabranjeni u zapisima baze, revizijskim unosima, dnevnicima, realtime događajima i izvještajima o greškama.
Šta operater dodjeljuje i kako to ponovo oduzima
Dozvola za korištenje izvršitelja nije jedan prekidač. Agent može pozvati operaciju samo kada ima odobrenje za tačan izvršitelj i tačnu operaciju, i obična logička politika alata to dopušta, i opseg posla odgovara, i lokalna politika računara to dopušta. Odobravanje jednog izvršitelja za neku operaciju zato ne ovlašćuje ništa na drugom, a osvježavanje mogućnosti ne može ništa proširiti, jer nove operacije stižu odbijene.
Pristup agenta i dijeljenje stupaju na snagu odmah na samoj stranici, bez nastavka odobrenja, bez upita za lozinku i bez novog koraka provjere identiteta. Na kartici izvršitelja Agenti menadžer direktno uključuje ili isključuje pristup agenta računaru; na kartici Dijeljenje daje osobi pravo Može koristiti ili Administrator, ili proširuje korištenje na projekat ili na sve u trenutnom timu, na isti način. U vašem vlastitom razgovoru s asistentom — samo tamo, nikada u zajedničkom kanalu, zakazanom poslu ili tuđem poslu agenta — asistent može umjesto toga pripremiti promjenu pristupa agenta ili dodjele, što objavljuje karticu potvrde u tom razgovoru. Ništa se ne mijenja dok ne pritisnete Dozvoli pristup na njoj, a tekst u chatu nikada nije potvrda.
Tri promjene i dalje zahtijevaju da ponovo unesete svoju trenutnu lozinku u trenutku potvrde: aktiviranje revizije deskriptora; asistentom pripremljena dodjela koja računar daje osobi, a ne agentu; i stalna politika koja dozvoljava kolegama da pokreću naredbe na njemu kao njegov vlasnik — politika neasistiranog rada na zadacima. Prekid veze ili brisanje računara namjerno ne traže ništa od toga, jer prekidač za hitne slučajeve nikada ne smije biti teži za dosezanje od onoga što zaustavlja. Primjena pregledanog nacrta uvijek to traži. Revizijski trag bilježi osobu koja je djelovala i učešće asistenta odvojeno.
Executor prolazi kroz mali, eksplicitan skup stanja:
pending_pairing → online ↔ offline
│ ↓
└──────────→ draining → revoked
↓
errorMeni Računar u zaglavlju je mjesto gdje menadžer priprema svaku promjenu životnog ciklusa: pauzirati ga, nastaviti kada je pauziran, prekinuti vezu ili obrisati. Pauziranje ostavlja izvršitelj online, ali ga zaustavlja da prima naredbe. Prekid veze poništava njegove klijentske certifikate i sve neizvršene oznake kandidata i ne može se poništiti — prekinuti izvršitelj se ponovo upari kao novi. Brisanje radi isto i uklanja izvršitelj s liste; za razliku od prekida veze, nudi se bez obzira na stanje izvršitelja, uključujući i čekanje uparivanja i već prekinute, jer je to jedini način da napusti listu. Pražnjenje — završavanje posla koji već ima prije nego što prestane primati nove — je stvarno treće stanje u protokolu, a sučelje može prikazati računar u tom stanju, ali ništa ovdje ga ne pokreće: samo direktan poziv API-ju. Svaka potvrđena promjena pristupa, pregled deskriptora i prelaz životnog ciklusa, uključujući pražnjenje, također pomjera epohu veze daemona, pa njegov sljedeći kontrolni upit — najkasnije za sekundu — ne uspijeva na siguran način i zaustavlja svakog živog gosta prije nego što se može ponovo povezati. Opoziv nije zahtjev koji mašina smije ignorisati.
Rad s izvršiteljem
Provjera da radi ispravno
Odgovor koji daje sam Nessie je provjera aktivnosti. Daemon potpisuje heartbeat, a izvršitelj čija je posljednja autentificirana aktivnost starija od šezdeset sekundi trajno se označava kao offline prije nego što se može izlistati, izabrati ili kome se može poslati posao. Executor koji se prikazuje kao online dokazao je sebe u posljednjoj minuti.
Na računaru ne postoji krajnja tačka za zdravlje — daemon namjerno ne sluša nijedan port namijenjen operateru. Na macOS-u i Linuxu pitajte CLI direktno:
nessie-executor status # every paired executor, plus linger state
nessie-executor status <executorId>
systemctl --user status nessie-executor@<executorId>Na macOS-u status prijavljuje launchd agenta svakog tima. Naredba systemctl je samo za Linux. Na Windowsu je ikona u sistemskoj traci brz odgovor, njen meni navodi razlog, a dnevnik servisa sadrži detalje. Na obje platforme kartica Pregled izvršitelja u Nessieju prikazuje njegove odobrene profile, granicu podataka, kada je posljednji put viđen i svaki čekajući prijedlog lokalne politike koji čeka pregled.
Dnevnici
| Platforma | Gdje |
|---|---|
| Linux | journalctl --user -u nessie-executor@<executorId>; daemon ne vodi vlastitu datoteku dnevnika |
| Windows | %ProgramData%\Nessie Executor\logs\service.log, koju otvara stavka Otvori fasciklu dnevnika u sistemskoj traci |
Tu se bilježi svako odbijanje na koje osoba može reagovati: nepotpisano ili izmijenjeno runtime izdanje, direktorij stanja koji se ne bi mogao osigurati, izvršitelj koji se nije pokrenuo pri podizanju sistema. Tu se nikada ne bilježi izazov uparivanja, ključ niti izlaz procesa djeteta. Nema postavke nivoa dnevnika koju treba povećati, jer nema ničega opširnijeg da se uključi.
Mac CLI upisuje dnevnik servisa svakog tima u ~/Library/Logs/NessieExecutor/<executorId>.log.
Nadogradnja
Nadogradite CLI putem Homebrew-a, APT-a ili DNF-a, zatim ponovo pokrenite servis svakog tima naredbama disable pa enable. WinGet nadograđuje Windows izvršitelj. Direktni instalateri Nessie Desktopa nude potpisana ažuriranja unutar aplikacije; MSI i Debian instalacije koriste svoj menadžer paketa. Upareni računari i lokalne dozvole ostaju nakon nadogradnji.
Zaustavljanje i uklanjanje
Zaustavljanje je uredna putanja koju vodi daemon, a ne prekid procesa. Daemon prima signal za završetak, zaustavlja svaku sesiju gosta, oslobađa svoju dodjelu i izlazi. Na Linuxu jedinica čeka petnaest sekundi za budžet čišćenja od deset sekundi i namjerno nikada ne eskalira do neuhvatljivog prekida — jer daemon ubijen usred čišćenja ostavlja mikro-VM i radni overlay bez procesa koji bi ih očistio. Zaustavljanje koje visi zato je vidljivo u systemctl --user status, a ne tiho, a eskalacija je eksplicitna ljudska odluka.
Za uklanjanje Linux paketa:
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 Windowsu, msiexec /x zaustavlja i uklanja servis, njegove unose u registru i stavku za pokretanje u sistemskoj traci. Na obje platforme upareno stanje namjerno ostaje — ~/.local/state/nessie-executor/ na Linuxu i %ProgramData%\Nessie Executor na Windowsu. Uparivanje je ključ mašine i potpisana revizija politike, a deinstalacija programa nije zahtjev da se oni unište; ponovna instalacija ih nalazi tamo gdje su bili. Obrišite direktorij ručno da zaboravite uparivanje, a opozovite izvršitelj u Nessieju da ga okončate i s druge strane.
Windows sistemska traka i desktop pratilac nude Zaboravi uparivanje na ovom računaru kao osnovnu radnju: zaustavlja lokalni daemon, uklanja ključ mašine i izbor fascikle, i trajno briše lokalne kopije nacrta nakon jedne potvrde operativnog sistema — ali ostavlja izvršitelj na serveru i njegovu istoriju revizije vlasniku da ga zadrži ili opozove.
Česti kvarovi
| Simptom | Šta znači |
|---|---|
| Executor se upari, ali nudi samo operacije s datotekama | Računar je prijavio da nema upotrebljiv sandbox backend. Na Linuxu provjerite možete li čitati i pisati u /dev/kvm i jeste li u grupi kvm — nakon dodavanja sebe u grupu odjavite se i ponovo prijavite. Na Windowsu izdanje nema Hyper-V; to je izdanje, a ne postavka. |
| Kontrole izvršitelja uopće nedostaju | Izgradnja nije provjerljivo od očekivanog izdavača. Na Linuxu runtime mora biti u vlasništvu root-a bez prava pisanja za grupu ili sve; na Windowsu i macOS-u potpis mora odgovarati izdavaču ili timu upisanom u izgradnju. Svaki od ovih slučajeva odbija riječima i imenuje rješenje umjesto da skriva kontrole. |
| Servis radi, ali ne pokreće daemon i odbija svaku naredbu | Nešto u instalaciji je zamijenjeno nakon pakovanja. Ovo je namjerno ponašanje: izmijenjena instalacija odgovara navodeći razlog umjesto da nestane, jer bi zaustavljeni servis natjerao traku da imenuje pogrešno rješenje. |
| Posao završava s nepoznatim ishodom | Završna potvrda je izgubljena. Nessie neće prijaviti rezultat koji nije primio: naredba se označava kao nepoznata, posao ide putanjom oporavka, a nuspojava se ne ponavlja. Kasnija potvrda daemona i dalje može to razriješiti. |
| Operacija koja je jučer radila danas se odbija | Neka kapija se promijenila između vezivanja i raspodjele, a provjere se ponavljaju na svakom koraku: povučeno odobrenje, revizija deskriptora koja čeka pregled, sužena lokalna politika, opseg koji se više ne podudara s poslom ili opoziv. Poruka navodi koja. |
| Agent traži preglednik i kaže mu se da ne može | Rad s preglednikom i kodiranjem pokreće osoba iz kanala kao cijeli paket na novom poslu. Obično vezivanje ih odbija po dizajnu, a nijedna operacija preglednika se ne može dodati poslu koji već nešto radi. |