Skip to main content

Nofax: izričite ljudske odluke za AI agente

Open-source most između AI programerskih agenata i izričitih ljudskih odluka. Lokalni režim podržava odobrenja, izbore, dorade i ograničeno čekanje; opcioni udaljeni Worker namerno je ograničen na jednosmerna obaveštenja i bezbedan pregled zahteva.

Otvori repozitorijum
  • Open-source alat za razvoj
  • MCP integracija
  • Tok sa čovekom u petlji
  • Granica Cloudflare Workera

Lokalne odluke, uži udaljeni uvid

Nofax zadržava ovlašćenje za odlučivanje lokalno. Lokalni tok može tražiti od osobe odobrenje ili odbijanje, izbor među opcijama, doradu zahteva i čekati izričit odgovor. Opcioni udaljeni Worker ima manji ugovor: može poslati jednosmerno obaveštenje i izložiti ograničene metapodatke zahteva za pregled. Ne može odobriti, odbiti, birati, dorađivati niti čekati odluku.

Granica mogućnosti

Razdvajanje je namerno: udaljena dostupnost ne daje udaljeno ovlašćenje za odlučivanje.

MogućnostLokalni tokUdaljeni Worker
Jednosmerno obaveštenjeDaDa
Pregled metapodataka zahtevaDaDa
Dozvoli / odbijDaNe
Izbori / doradaDaNe
Čekanje odlukeDaNe

Čekanje nije odobrenje

Trenutna dokumentacija i testovi rade fail-closed: stanje pending, timeout, neispravni rezultati, mrežne greške i prekidi veze ne smeju se pretvoriti u odluku Allow. Ako je čekanje i dalje pending, ostaje pending i traži novo izričito čekanje. Nofax prenosi ljudsku odluku; nije policy engine koji sam odlučuje da li radnja treba da bude dozvoljena.

Inženjerska beleška

Dohvat najnovijeg zahteva na čekanju

PR #34 „fix: recover newest pending requests” spojen je 22. septembra 2026. merge commitom 979df9f5a3a3e52004a398c1b8738dbb80c6ffd2.

Pre

Nazivi datoteka na čekanju sadrže nasumične ID-jeve zahteva. Implementacija ih je sortirala obrnutim redosledom i stala čim je dostignut limit rezultata. Novi zahtev sa leksikografski niskim ID-jem zato je mogao biti izostavljen pre nego što je zapis uopšte pročitan.

Posle

Implementacija učita zapise na čekanju, sortira ih po trajnom createdAt od najnovijeg ka starijima uz ID zahteva kao deterministički razrešivač izjednačenja, pa tek onda primenjuje limit.

Sintetički regresijski primer

Regresijski test stvara 20 starijih zapisa i jedan najnoviji, traži limit 20 i proverava da je najnoviji prvi i uključen, a najstariji isključen. To su sintetički testni podaci, a ne volumen korisnika, incident klijenta ili izmeren uticaj na korisnike.

Javni dokazi

Istorijski CI 22. septembra 2026. prošao je Node 20, Node 22, Node 24, Worker i CodeQL provere. To je istorijski GitHub CI dokaz, odvojen od testova portfolija pokrenutih za ovu stranicu.

Trenutne granice

  • Udaljeni Worker izlaže samo obaveštenja i bezbedne funkcije pregleda; nije hostovana usluga odobravanja.
  • Ovde nema tvrdnji o timovima koji plaćaju, usvajanju, dostupnosti ili univerzalnoj bezbednosti.
  • Verzije paketa i broj preuzimanja namerno su izostavljeni jer su promenljivi i ne dokazuju granicu odobrenja.