Nofax: izrecne človeške odločitve za agente UI
Odprtokodni most med programskimi agenti UI in izrecnimi človeškimi odločitvami. Lokalni način podpira odobritve, izbire, dopolnitve in omejeno čakanje; izbirni oddaljeni Worker je namenoma omejen na enosmerna obvestila in varen vpogled v zahteve.
Odpri repozitorijLokalne odločitve, ožji oddaljeni vpogled
Nofax ohranja pristojnost za odločanje lokalno. Lokalni tok lahko človeka vpraša za odobritev ali zavrnitev, izbiro med možnostmi, dopolnitev zahteve in počaka na izrecen odgovor. Izbirni oddaljeni Worker ima manjši pogodbeni vmesnik: pošlje lahko enosmerno obvestilo in za vpogled izpostavi omejene metapodatke zahteve. Ne more odobriti, zavrniti, izbirati, dopolnjevati ali čakati na odločitev.
Meja zmožnosti
Ločitev je namerna: oddaljena dosegljivost ne pomeni oddaljene pristojnosti za odločanje.
| Zmožnost | Lokalni tok | Oddaljeni Worker |
|---|---|---|
| Enosmerno obvestilo | Da | Da |
| Vpogled v metapodatke zahteve | Da | Da |
| Dovoli / zavrni | Da | Ne |
| Izbire / dopolnitev | Da | Ne |
| Čakanje na odločitev | Da | Ne |
Čakanje ni odobritev
Trenutna dokumentacija in testi uporabljajo fail-closed pristop: čakajoče stanje, časovna omejitev, nepravilni rezultati, omrežne napake in prekinitve povezave se ne smejo pretvoriti v odločitev Allow. Če je čakanje še vedno pending, ostane pending in zahteva novo izrecno čakanje. Nofax prenaša človeško odločitev; ni mehanizem politike, ki bi sam odločal, ali je dejanje dovoljeno.
Obnovitev najnovejše čakajoče zahteve
PR #34 »fix: recover newest pending requests« je bil združen 22. septembra 2026 z merge commitom 979df9f5a3a3e52004a398c1b8738dbb80c6ffd2.
Prej
Imena čakajočih datotek vsebujejo naključne ID-je zahtev. Implementacija jih je razvrstila v obratnem vrstnem redu in se ustavila, ko je dosegla omejitev rezultatov. Nova zahteva z leksikografsko nizkim ID-jem je zato lahko izpadla, še preden je bil njen zapis prebran.
Potem
Implementacija prebere čakajoče zapise, jih razvrsti po trajnem createdAt od najnovejšega navzdol z ID-jem zahteve kot determinističnim izenačevalnikom in šele nato uporabi omejitev rezultatov.
Sintetični regresijski primer
Regresijski test ustvari 20 starejših zapisov in en najnovejši zapis, zahteva omejitev 20 ter preveri, da je najnovejši prvi in vključen, najstarejši pa izključen. To so sintetični testni podatki, ne obseg uporabnikov, incident pri stranki ali izmerjen vpliv na stranke.
Javni dokazi
Zgodovinski CI 22. septembra 2026 je uspešno opravil preizkuse Node 20, Node 22, Node 24, Worker in CodeQL. To je zgodovinski dokaz iz GitHub CI, ločen od testov portfelja, izvedenih za to stran.
Trenutne meje
- Oddaljeni Worker izpostavlja samo obvestila in varne funkcije vpogleda; ni gostovana storitev za odobritve.
- Tu ni trditev o plačljivih ekipah, uporabi, razpoložljivosti ali univerzalni varnosti.
- Različice paketov in število prenosov so namenoma izpuščeni, ker so spremenljivi in ne dokazujejo meje odobritve.

