Далечински извршители
Дајте му на агентот вистински компјутер на кој да работи — на Linux, macOS или Windows.
Што е далечински извршител
Агентот во Nessie нема компјутер. Може да ја чита содржината во Nessie, да разговара со луѓе и да повикува поврзани алатки преку мрежата, но не може да отвори датотека на лаптоп, да изврши команда или да погледне страница што постои само зад туѓа најава. Далечинскиот извршител е начинот да му дадете машина на која може да работи.
Извршителот е мал демон што го инсталирате на компјутер под ваша контрола. Се спарува кон надвор со вашата инстанца на Nessie, докажува која машина е со клуч што никогаш не ја напушта домаќинот, а потоа нуди фиксен, именуван збир на операции — ништо друго. Работата пристигнува како поединечни потпишани команди; резултатите се враќаат како ограничени, структурирани потврди. Машината никогаш не прифаќа дојдовна врска од Nessie.
Вреди да бидеме прецизни во тоа што извршителот не е, бидејќи повеќето алатки за далечински пристап се некоја од овие работи, а извршителот намерно не е ниедна од нив. Нема SSH, нема општа далечинска школка, нема приклучување на терминален мултиплексер што веќе го имате отворено, нема стандарден влез од облакот и нема општ мрежен прокси. Не е MCP сервер и не е контејнер или извршна средина во облакот — тоа Nessie веќе ги има, и тоа е нешто друго. Извршителот е крајна точка со способности и затворен список на операции, а тој список е целата површина.
Кому припаѓа извршителот
Секој извршител се создава со точно еден опсег, а тој опсег не може да се менува подоцна. Опсегот определува кој може да го повика извршителот и кој може да го администрира.
| Опсег | Кој може да го повика | Кој управува со пристапот |
|---|---|---|
| Приватен | Лицето што бара и точниот повикан агент мора и двајцата да бидат именувани доделени. Ниедно од нив поединечно не е доволно. | Доделен човечки администратор. Агентите можат само да користат приватен извршител, никогаш да го администрираат. |
| Проектен | Лице со право на точно тој проект, и само од извршување во тој проект. | Менаџер на организацијата, или сопственик или администратор на проектот. |
| Организација | Лице со овластување за организацијата. | Менаџер на организацијата. |
Приватниот извршител секогаш мора да има барем еден активен човечки администратор. Отстранувањето на последниот директно не успева; ако трансакција за отпуштање на некој би оставила ниеден, извршителот престанува да прима нова работа, ја празни работата што ја има и сам се укинува. Сопственикот на организацијата има итна патека само за укинување, која завршува извршител што инаку не го управува, без да му ја прикаже неговата приватна листа, неговите сесии или неговата содржина — приватниот пристап никогаш нетајно не се префрла на друг.
Што навистина може да направи агент со него
Вокабуларот на операции е фиксиран во кодот, а не е конфигуриран по инсталација. Се дели на два дела, а поделбата определува што треба да инсталирате: некои операции демонот ги служи од сопствениот привремен директориум, без никаква виртуелна машина, а останатите бараат гостин VM по сесија на домаќинот.
| Операција | Што прави | Гостин VM |
|---|---|---|
file.list, file.read | Ги наведува и чита датотеките под единствениот корен на работниот простор избран при спарувањето. | Не |
file.write | Пишува во копија при промена (copy-on-write) на нацртот на тој работен простор. Никогаш не го отвора вистинскиот корен за запишување. | Не |
workspace.review | Го известува она што нацртот го променил — до 100 релативни патеки со вид и број бајти, плус дигест на манифестот. Не содржи содржина на датотеки. | Не |
sandbox.stop | Ја прекинува сесијата што ја поседува тоа извршување. | Не |
command.run | Извршува една команда како вектор на аргументи без школка, во гостин VM без излез. На оваа патека нигде нема низа за школка. | Да |
browser.open, browser.observe, browser.act | Управува со прелистувач во гостот според листата на извори конфигурирана на машината. Набљудувањето враќа ограничено дрво за пристапност и незадолжителна намалена слика; дејствата се навигација, клик, внес, притисок и лизгање над јазол што агентот штотуку го набљудувал — никогаш селектор, координата или скрипта. | Да |
coding.launch, coding.observe | Стартува управувана Codex сесија во гостот и враќа типизирана состојба на животниот циклус. Нема приклучување на терминал и нема канал за промптови: агентот дознава дали сесијата работи, но не и што е прикажано на нејзиниот екран. | Да |
workspace.promote | Применува прегледан нацрт на вистинскиот работен простор. Ова е единствената операција што пишува на домаќинот и намерно не се нуди на моделите воопшто. | Не |
Операциите што не бараат гост се работниот пакет. Домаќин што не може да стартува гост не е расипан извршител: се спарува нормално, ја пријавува својата sandbox-позадина како none и нуди само работен пакет и ништо друго. Тоа е состојбата во која завршуваат Windows издание без Hyper-V или Linux машина чиј корисник не може да го користи /dev/kvm, а интерфејсот ја именува наместо да падне нејасно.
Агент никогаш сам по своја иницијатива не започнува работа со прелистувач. Обичната рута за врзување на една операција го одбива browser.open и browser.observe без исклучок; извршување во прелистувач го стартува лице од канал, како еден пакет од четири операции на свежо извршување, и на таквото извршување подоцна не може да се додаде ниедно понатамошно врзување. Управуваните сесии за кодирање се однесуваат на ист начин.
Во кодот постојат уште две групи, и намерно не се достапни. Операциите за управување со Chrome картичка на која сте веќе најавени имаат целосна локална имплементација и native-messaging проширување, но контролната рамнина одбива да ги рекламира додека серверот не може да докаже дека разговорот од кој потекнуваат бил приватен и да запише кој што открил. Основата е намерно неактивна, а проширувањето не се испорачува во ниту еден инсталер. Освен тоа, неколку операции за кодирање — прикачување, промпт, прекин и затворање — се именувани во шемата, но немаат имплементација, па не можат да се доделат.
Како функционира
Врската е секогаш надворешна
Демонот воспоставува надворешни HTTPS и WSS врски само кон вашиот Nessie API и кон ништо друго. Nessie никогаш не се јавува на лаптоп, никогаш не чува адреса за него и никогаш не смета ниедна крајна точка во каталогот за машински транспорт. Затоа извршителот работи од домашна мрежа, зад NAT, на корпоративен VPN, без пренасочување на порта и без правило за дојдовен заштитен ѕид — и затоа запирањето на демонот е целосно и моментално исклучување.
Изворот (origin) на API-то мора да биде HTTPS. Единствениот исклучок е локалната loopback адреса за луѓе што го користат Nessie на сопствена машина, преку сопствена променлива на околината; ниедно обично знаме не претвора производствен извор во обичен HTTP.
Спарувањето докажува машина, а лице ја потврдува
Спарувањето е двострано докажување. Овластено лице го создава извршителот во Nessie со неговиот опсег, а Nessie издава регистрација: случаен предизвик од 256 бита, од кој ја чува само SHA-256 проверка, важи десет минути и се користи еднаш.
На машината, демонот генерира пар клучеви Ed25519, го чува во складиште заштитено од оперативниот систем и достапно само за сопственикот, и го запишува точното потпишано барање на диск пред да направи какво било мрежно повикување — така изгубен одговор може да се повтори со истиот подготвен клуч, наместо тајно двапати да се спари. Потоа ги испраќа идентификаторот на регистрацијата, предизвикот, својот јавен клуч и доказот за потпис. Nessie го чува јавниот клуч и неговиот отпечаток. Приватниот клуч никогаш не го чува.
Потоа Nessie тој отпечаток му го прикажува на лице, кое го потврдува. Додека не се направи таа потврда и последователниот доказ за поседување, извршителот останува офлајн. Спарувањето никогаш не може да се заврши од текст во разговор или од терминален запис: бара намерно човечко дејство во веб или десктоп интерфејсот.
Машина што го изгубила својот клуч не може да го поврати својот запис за извршител. Тој се укинува и повторно се регистрира како нов извршител. Ротацијата на клучот, пак, е една трансакција потпишана и со стариот и со новиот клуч.
Дескрипторот е потпишаната изјава на машината за самата себе
Спарен демон објавува дескриптор: потпишана, монотоно ревидирана изјава само за структурни факти — кои шеми на операции ги поддржува, нејзините ресурсни и мрежни ограничувања, платформата и дигестот на нејзината локална политика. Тој не содржи патеки на домаќинот и не создава никакво овластување во облакот.
Нова ревизија никогаш не се активира при пристигнувањето. Се чува како чекање за преглед, а овластено лице мора да ја види и да ја потврди пред да може да влијае на тоа што е достапно. Тоа го спречува освежувањето на способностите тивко да додели нова моќ: новорекламирана операција започнува одбиена.
Бидете јасни за она што потписот го докажува. Дескриптор потпишан со клучот на спарениот извршител докажува дека тој клуч ја направил изјавата. Не докажува дека домаќинот е неизмешан, а интерфејсот е должен тоа да го каже.
Испраќање: кандидат, врзување, команда, потврда
Агентот никогаш не именува извршител. Пред извршувањето да може да го користи, Nessie логичката операција ја претвора во непрозирен, краткотраен кандидат за достапност. Одговорот не содржи идентификатор на извршител; базата чува само дигест на рачката заедно со тоа кој и за што била решена. Моделите и клиентите добиваат рачка, а не машина што може да се избира.
Достапноста е еден решавач, користен идентично од API-то, работникот, интерфејсот и асистентот:
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 operationТрошењето на кандидатот создава врзување под заклучување во базата, кое повторно ги проверува сите тие порти и напредува монотона бариера. Испраќањето ги проверува повторно. Последица е дека повлечено овластување, стеснета политика или укинат извршител помеѓу два чекора ја запираат работата, наместо подоцна да бидат забележани — а обид за повторување никогаш не може да слета на различна машина од онаа за која извршувањето било врзано.
Самата команда се вози преку обичната редица на задачи на Nessie и животниот циклус на повикот на алатка, а не преку своја втора. Демонот ја проверува работата преку својот проверен контролен канал; никогаш не добива push. Команда минува низ четири потврди и никакви други:
leased → accepted → started → result-acknowledgedСекоја рамка ги врзува идентификаторот на командата, произходот на извршувањето, бариерата на врзувањето, ревизијата на способноста, рокот, клучот за идемпотентност и дигестите и на аргументите и на товарот. Демонот одбива несовпаѓање, застарена политика, повторување или втор резултат за команда што веќе ја завршил. Аргументите и крајните резултати се шифрирани со AES-256-GCM во мирување; базата чува ограничен шифротекст и канонски дигести, а не содржина.
Ако потврдата за примање се изгуби, Nessie не претпоставува успех. Командата се бележи како непознат исход и извршувањето оди по обичната патека за опоравување; демонот, кој секоја испратена команда ја бележи локално во дневник пред да почне да работи, нема да го повтори страничниот ефект. Задоцнета потврда сепак може да ја разреши двосмисленоста искрено.
Граница на доверба
| Учесник | Може | Не може |
|---|---|---|
| Лице | Да спари извршител, да го управува кога е овластено, да потврдува пристап и промени на политика. | Да прошири политика што самата машина ја одбива, или да дејствува без тековно овластување. |
| Агент, вклучително и персоналниот асистент | Да повика операција што веќе ѝ е достапна; да подготви предложена промена на пристапот за лицето што побарало. | Да администрира пристап, да се одобри себеси, да избере машина, да ја промени локалната политика или да примени промена што ја подготвила. |
| Контролна рамнина на Nessie | Да решава достапност, да врзува извршување, да доделува команди, да чува редактирани аудит-факти. | Да ја повикува машината, да ја прошири локалната политика, да дојде до акредитивите на домаќинот или да третира текст од терминал како овластување или исход. |
| Демон на извршителот | Да ја спроведува локалната политика, да се спарува надвор, да ги извршува гостот и портата, да ги потврдува командите. | Да го прошири својот опсег, да прифаќа застарена или повторена работа, директно да ја изложи работната папка или акредитивите на домаќинот или да испраќа сирови локални податоци во аудит-трагата. |
| Гостин VM и алатките во него | Да работи во сандбокс со копија при промена (copy-on-write), а до мрежата да стигнува само преку портата. | Да стигнува до датотеки на домаќинот, акредитиви на домаќинот, директна мрежа или DNS, или да унапредува промена на домаќинот. |
Инсталирање и спарување извршител
Инсталирајте го Mac CLI со Homebrew, Mac апликациите со Homebrew casks, Linux CLI преку APT или DNF, или Windows извршителот преку WinGet. Секој спарен тим има посебни дозволи, складирани на компјутерот. Nessie ги управува пристапите во тимот; не може да ги менува локалните ресурси.
Водичот за инсталација и спарување ги содржи точните команди, двостраниот тек со осумцифрен код, локалните поставки, стартувањето, ажурирањата и отстранувањето.
Колку далеку е навистина докажана секоја платформа
Состојбата на трите гостински sandbox-и се разликува, а разликата е суштинска. macOS е позадината со работечка, испробана гостинска патека. Firecracker позадината на Linux и Hyper-V позадината на Windows се имплементирани и покриени со тестови на страна на домаќинот — секвенцата за стартување, дисковите слики, транспортите за контрола и излез, протоколот за нацрти — но ниеден гост уште не се подигнал на вистински хардвер во континуираната интеграција на овој проект, бидејќи тоа бара машина со KVM или Hyper-V, а задачите што би го докажале тоа никогаш немале таква машина. Работниот пакет, кој не бара гост, е целосно испробан на Windows со вистинска контролна јамка. Третирајте ги операциите со гост на Linux и Windows како недокажани додека не ги докажете на сопствен хардвер. Екранот за спарување во Nessie го кажува истото со свои зборови.
Безбедност и содржење
Еден корен на работниот простор, а неговата патека останува на машината
Спарувањето избира точно еден канонски корен на работниот простор: една папка, не збир папки и никогаш нивниот најблизок заеднички родител. Nessie го добива основното име на коренот, за да може лицето да ја препознае границата во интерфејсот; целата патека останува во состојбата на машината, достапна само за сопственикот, и никогаш не се прикачува. Коренот може да се промени, но само откако ќе се отстранат сите локални нацрти и сандбокс-и, а тоа создава нова ревизија на дескрипторот што минува низ истото човечко прегледување како секоја друга промена на политиката. Никогаш тивко не може да се прошири до родителска папка.
Операциите со датотеки прифаќаат само релативни патеки. Ги одбиваат патеките со ../ и секоја компонента што е симболичка врска, повторно проверуваат дека конфигурираниот корен е уште обичен директориум и враќаат ограничени структурирани резултати што не содржат патека на домаќинот.
Промените одат во копија, а само лице ги унапредува
Агентот никогаш не пишува во вашите датотеки. file.write создава ограничено дрво со копија при промена (copy-on-write) под сопствениот директориум за состојба на демонот, врзано за извршувањето, а следните читања и листања за тоа извршување го гледаат нацртот. Работата во гостот, вклучително и сесиите за кодирање, го користи истиот привремен простор со копија при промена.
Примената на нацрт на вистинскиот работен простор е една операција — workspace.promote — и единствениот запис на домаќинот во системот. Нема шема наменета за модел: ниеден агент, ниеден асистент и ниедна патека што ја дава повикувачот не може нацрт да го претвори во запис на домаќинот. Наместо тоа, лице го отвора Вашите прегледани нацрти, притиска Прегледај ја примената и потврдува со својата тековна лозинка. Серверот потоа ги проверува потврдениот дигест на прегледот, дигестот на манифестот, извршувањето, корисникот и агентот, ревизијата на овластувањето, овластувањето за операцијата и активната локална политика, пред да ја создаде командата. На машината, демонот самиот го обновува манифестот и одбива дигест што се променил — така уредување направено по прегледот не може да се прикрадне во одобрувањето на прегледот.
Самата примена е базирана на дескриптори и е дневничка. Native помошната алатка ги добива коренот на работниот простор и нацртот како веќе отворени директориумски дескриптори, никогаш како патеки; секоја компонента ја валидира без следење на симболички врски, одбива симболички врски, тврди врски, специјални датотеки и преминувања на монтирања, и има дневник од типот сè-или-опоравување, така што падот или ќе го доврши валидираниот манифест или ќе го врати оригиналот пред да се изврши било што друго.
Гостот нема мрежа, а излезот е наметнат
Кога некоја операција навистина бара гост, тоа е микро-VM на Linux по сесија, без домашен директориум на домаќинот, без Docker socket, без SSH агент, без наследена околина и без монтирање на домаќинот освен споделувањето на работниот простор. Монтирањето на извршивата средина е само за читање; монтирањето на работниот простор за запишување забранува извршување, така што сè што се извршува доаѓа од проверен извршен пакет, а не од нешто што агент го напишал. Гостот се спушта на непривилегиран идентитет пред да отвори било кој сокет, а споделување во сопственост на root го прекинува подигањето, наместо да остави привилегиран товар да работи.
Најважно, гостот нема мрежен интерфејс. На Linux секвенцата за стартување намерно никогаш не конфигурира таков и не се создава TAP уред; на Windows виртуелниот мрежен адаптер што Hyper-V го додава стандардно се отстранува при поставувањето. Единствениот излез на гостот од машината е loopback прокси внатре во него, тунелиран преку виртуелен сокет до мост на домаќинот, кој ги предава бајтите на сопствената порта на демонот — локален слушател на сокет достапен само за сопственикот, без TCP слушател и без општ режим на пренасочување. Таа порта е местото каде се спроведуваат HTTP, CONNECT, WebSocket, пренасочување, извор (origin), преземање и поставување политика, со користење на постојната pinned-fetch машинерија на Nessie наместо втора имплементација на истите правила. Нема NAT мост и нема директен DNS резолвер: алтернативниот DNS, сировиот TCP, QUIC и заобиколувањето на прокси се сите одбиени.
Списокот на извори што ја спроведува таа порта е конфигуриран на машината, од нејзиниот сопственик, и намерно никогаш не се прикачува. Интерфејсот тоа отсуство го именува, наместо да се преправа дека Nessie е уредувач на политика за извори: за да дознаете до што може да пристапи извршителот со прелистувач, прашајте го лицето што ја поседува машината.
Акредитиви
Ниедно акредитивно складиште на домаќинот никогаш не се монтира во гост. Ни синџирот клучеви, ни ~/.codex или ~/.claude, ни глобален CLI токен, ни променлива на околината што носи API клуч. Единствената поддржана најава за управувана сесија за кодирање е датотека за автентикација во сопственост само на сопственикот, чија содржина ја чита единствено градителот на initrd под контрола на сопственикот — никогаш Nessie, никогаш дескрипторот, никогаш дневник или аргумент на команда — и еднаш се префрла во приватен дом внатре во гостот, кој се уништува заедно со VM-от. Тој гост може да стигне до точно еден извор.
Извршителот на прелистувач е уште построг: секоја сесија добива свеж приватен профил на прелистувач и одбива профил подготвен од работниот простор, така што започнува без колачиња, без додатоци и без каква било поврзана состојба на најава.
Сировите локални податоци можат да стигнат до давател на модели само внатре во експлицитно, ограничено извршување. Она што Nessie го чува се редактирани манифести, дигести на аргументи и политики, дигести на резултати и структуриран статус. Содржината на датотеки, излезот од терминал, DOM на прелистувачот, акредитивите и факторите за автентикација се забранети во записи во базата, аудит-записи, дневници, настани во реално време и извештаи за грешки.
Што дава операторот и како го повлекува
Дозволата за користење на извршител не е еден прекинувач. Агент може да повика операција само кога има овластување за точниот извршител и точната операција, и обичната логичка политика за алатки ја дозволува, и опсегот на извршувањето се совпаѓа, и самата локална политика на машината ја дозволува. Доделувањето на една операција на еден извршител затоа ништо не овластува на друг, а освежувањето на способностите не може ништо да проширува, бидејќи нови операции пристигнуваат одбиени.
Пристапот на агентите и споделувањето стапуваат во сила одеднаш на самата страница, без продолжение на одобрување, барање лозинка или чекор за повторна автентикација. На картичката Агенти на извршителот менаџерот директно го вклучува или исклучува пристапот на агентот до машината; на Споделување му даваат на лице Може да користи или Администратор, или го прошируваат користењето на проект или на сите на тековниот тим, на ист начин. Во вашиот личен разговор со асистентот — само таму, никогаш во споделен канал, закажана работа или извршување на друг агент — асистентот може да подготви промена на пристапот на агент или на доделување, која објавува картичка за потврда во тој разговор; ништо не се менува додека не притиснете „Дозволи пристап“ на неа, а текстот во разговор никогаш не е потврда.
Три промени сè уште бараат повторно да ја внесете тековната лозинка во моментот на потврдувањето: активирање на ревизија на дескриптор; промена на доделување подготвена од асистентот што му ја дава машината на лице, а не на агент; и трајна политика што им дозволува на колегите да стартуваат команди на неа како нејзин сопственик, односно политиката за работа на задачи без надзор. Исклучувањето или бришењето на машина намерно не бара ниедно од двете, бидејќи прекинувачот за итно исклучување никогаш не смее да биде потежок за достигнување од она што го запира. Промоцијата на прегледан нацрт секогаш бара лозинка. Аудит-трагата го бележи дејствувачкото лице и учеството на асистентот одделно.
Извршителот минува низ мал, експлицитен збир на состојби:
pending_pairing → online ↔ offline
│ ↓
└──────────→ draining → revoked
↓
errorМенито Компјутер во заглавието е местото каде менаџерот ја подготвува секоја промена на животниот циклус: да го паузира, да го продолжи откако е паузиран, да го исклучи или да го избрише. Паузирањето го држи извршителот на линија, но го спира од прифаќање команди. Исклучувањето ги поништува неговите клиентски сертификати и секој неискористен кандидат за достапност и не може да се врати — исклучен извршител повторно се спарува како нов. Бришењето прави исто и уште го отстранува извршителот од списокот; за разлика од исклучувањето, се нуди без оглед на состојбата на извршителот, вклучително и спарувањето на чекање и веќе исклучените, бидејќи е единствениот начин да се напушти списокот. Празнењето — завршување на работата што ја има пред да престане да прима нова — е вистинска трета состојба во протоколот, а интерфејсот може да покаже компјутер во неа, но ништо тука не ја започнува: само директен повик до API-то. Секоја потврдена промена на пристап, преглед на дескриптор и премин на животен циклус, вклучително и празнењето, исто така ја унапредува епохата на врската на демонот, така што неговата следна контролна проверка — најмногу секунда подоцна — паѓа затворено и ги запира сите живи гостински VM-ови пред да може да се поврзе повторно. Укинувањето е барање што машината не смее да го игнорира.
Работење со извршител
Проверка дека е исправен
Одговорот на Nessie е живост. Демонот потпишува heartbeat, а извршител чија последна проверена активност е постара од шеесет секунди трајно се означува како офлајн, пред да може да се наведе, избере или да му се испрати работа. Извршител што се прикажува како онлајн се докажал во последната минута.
На машината нема крајна точка за здравје — демонот намерно не слуша на ниедна порта наменета за оператор. На macOS и Linux, прашајте го CLI-то директно:
nessie-executor status # every paired executor, plus linger state
nessie-executor status <executorId>
systemctl --user status nessie-executor@<executorId>На macOS, статусот го известува launchd агентот на секој тим. Командата systemctl е само за Linux. На Windows иконата во областа за известувања е брзиот одговор, нејзиното мени ја именува причината, а дневникот на услугата ги содржи деталите. На која било платформа, картичката Преглед на извршителот во Nessie ги прикажува неговите одобрени профили, неговата граница на податоци, кога последен пат е видена и секој предлог за локална политика што чека преглед.
Дневници
| Платформа | Каде |
|---|---|
| Linux | journalctl --user -u nessie-executor@<executorId>; демонот нема сопствена датотека со дневник |
| Windows | %ProgramData%\Nessie Executor\logs\service.log, што го отвора Отвори ја папката со дневници од иконата во областа за известувања |
Секое одбивање на кое лице може да дејствува оди таму: неподписано или изменето извршно време, директориум за состојба што не може да се заштити, извршител што не се стартувал при подигнување. Таму никогаш не се запишува ни предизвикот за спарување, ни клучот, ни излезот од дете-процес. Нема поставка за ниво на дневник што треба да се подигне, бидејќи нема поопширно нешто за вклучување.
Mac CLI-то ја запишува дневничката услуга на секој тим во ~/Library/Logs/NessieExecutor/<executorId>.log.
Ажурирање
Ажурирајте го CLI-то преку Homebrew, APT или DNF, потоа повторно стартувајте ја услугата на секој тим со disable, а потоа enable. WinGet го ажурира Windows извршителот. Директните инсталери на Nessie Desktop нудат потпишани ажурирања во апликацијата; MSI и Debian инсталациите користат свој менаџер на пакети. Спарувањата и локалните дозволи ги преживуваат ажурирањата.
Запирање и отстранување
Запирањето е уреден тек што го поседува демонот, а не убивање. Тој добива сигнал за прекин, ги запира сите гостински сесии, ја ослободува својата закупнина на командите и излегува. На Linux единицата чека петнаесет секунди за буџет за чистење од десет секунди и намерно никогаш не ескалира до непресретлив прекин — затоа што демон убиен усред чистење остава микро-VM и преклопен работен простор без процес што би ги исчистил. Запирање што се закачува затоа е видливо во systemctl --user status, наместо да е тихо, а ескалацијата е експлицитна човечка одлука.
За да го отстраните 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 tooНа Windows, msiexec /x ја запира и отстранува услугата, нејзините записи во регистарот и ставката за стартување на иконата. На двете платформи спарената состојба намерно се остава — ~/.local/state/nessie-executor/ на Linux и %ProgramData%\Nessie Executor на Windows. Спарувањето е клуч на машината и потпишана ревизија на политика, а деинсталирањето на програма не е барање да се уништат. Повторната инсталација ги наоѓа таму каде што биле. Избришете го директориумот рачно за да заборавите спарување, а извршителот во Nessie укинете го за да го завршите и од другата страна.
Windows иконата во областа за известувања и десктоп придружникот и двајцата нудат Заборави го спарувањето на овој компјутер како основно дејство: ја запира локалната услуга, ги отстранува клучот на машината и изборот на папка, и трајно ги брише локалните копии на нацрти по едно native потврдување — додека го оставаат извршителот на серверот и неговата аудит-историја за сопственикот да ги задржи или укине.
Чести грешки
| Симптом | Што значи |
|---|---|
| Извршителот се спарува, но нуди само операции со датотеки | Домаќинот не пријавил употреблива sandbox-позадина. На Linux, проверете дали можете да читате и запишувате во /dev/kvm и дали сте во групата kvm — одјавете се и повторно најавете се откако ќе се додадете. На Windows, изданието нема Hyper-V; тоа е издание, а не поставка. |
| Контролите на извршителот целосно недостасуваат | Изградбата не е проверена од очекуваниот издавач. На Linux извршното време мора да биде во сопственост на root, без бит за запишување за групата или за сите; на Windows и macOS потписот мора да се совпаѓа со издавачот или тимот закачен во изградбата. Секое од овие одбива со зборови и го именува решението, наместо да ги крие контролите. |
| Услугата работи, но не стартува демон и одбива секоја команда | Нешто во инсталацијата било заменето по пакувањето. Тоа е наменето однесување: изменетата инсталација одговара со причината наместо да исчезне, затоа што запрена услуга би ја направила иконата во областа за известувања да именува погрешно решение. |
| Извршувањето завршува со непознат исход | Загубена е терминалната потврда. Nessie нема да пријави резултат што не го примил: командата се обележува како непозната, извршувањето оди по патеката за опоравување, а страничниот ефект не се повторува. Задоцнета потврда од демонот сепак може да го разреши. |
| Операција што вчера работела денес е одбиена | Порта се променила помеѓу врзувањето и испраќањето, а проверките се повторуваат на секој чекор: повлечено овластување, ревизија на дескриптор што чека преглед, стеснета локална политика, опсег што веќе не се совпаѓа со извршувањето или укинување. Одбивањето именува која. |
| Агентот бара прелистувач и му се вели дека не може | Работата со прелистувач и кодирањето ја стартува лице од канал како целосен пакет на свежо извршување. Обичната рута за врзување ги одбива по дизајн, а ниедна операција со прелистувач не може да се додаде на извршување што веќе прави нешто друго. |