Skip to main content

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 repozitorij
  • Odprtokodno razvijalsko orodje
  • Integracija MCP
  • Delovni tok s človekom v zanki
  • Meja Cloudflare Workerja

Lokalne 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žnostLokalni tokOddaljeni Worker
Enosmerno obvestiloDaDa
Vpogled v metapodatke zahteveDaDa
Dovoli / zavrniDaNe
Izbire / dopolnitevDaNe
Čakanje na odločitevDaNe

Č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.

Inženirski zapis

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.