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 način podržava odobrenja, izbore, dorade i ograničeno čekanje; opcionalni udaljeni Worker namjerno je ograničen na jednosmjerne obavijesti i siguran pregled zahtjeva.

Otvori repozitorij
  • Open-source alat za razvoj
  • MCP integracija
  • Tijek s čovjekom u petlji
  • Granica Cloudflare Workera

Lokalne odluke, uži udaljeni uvid

Nofax zadržava ovlast odlučivanja lokalno. Lokalni tijek može tražiti od osobe odobrenje ili odbijanje, izbor među opcijama, doradu zahtjeva i čekati izričit odgovor. Opcionalni udaljeni Worker ima manji ugovor: može poslati jednosmjernu obavijest i izložiti ograničene metapodatke zahtjeva za pregled. Ne može odobriti, odbiti, birati, dorađivati niti čekati odluku.

Granica mogućnosti

Razdvajanje je namjerno: udaljena dostupnost ne daje udaljenu ovlast odlučivanja.

MogućnostLokalni tijekUdaljeni Worker
Jednosmjerna obavijestDaDa
Pregled metapodataka zahtjevaDaDa
Dopusti / odbijDaNe
Izbori / doradaDaNe
Čekanje odlukeDaNe

Čekanje nije odobrenje

Trenutačna dokumentacija i testovi rade fail-closed: stanje pending, timeout, neispravni rezultati, mrežne greške i prekidi veze ne smiju 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 treba li radnja biti dopuštena.

Inženjerska bilješka

Dohvat najnovijeg zahtjeva na čekanju

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

Prije

Nazivi datoteka na čekanju sadrže nasumične ID-jeve zahtjeva. Implementacija ih je sortirala obrnutim redoslijedom i stala čim je dosegnut limit rezultata. Novi zahtjev s leksikografski niskim ID-jem zato je mogao biti izostavljen prije nego što je zapis uopće pročitan.

Poslije

Implementacija učita zapise na čekanju, sortira ih po trajnom createdAt od najnovijeg prema starijima uz ID zahtjeva kao deterministički razrješivač izjednačenja, a tek zatim primjenjuje limit.

Sintetički regresijski primjer

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

Javni dokazi

Povijesni CI 22. rujna 2026. prošao je Node 20, Node 22, Node 24, Worker i CodeQL provjere. To je povijesni GitHub CI dokaz, odvojen od testova portfelja pokrenutih za ovu stranicu.

Trenutačne granice

  • Udaljeni Worker izlaže samo obavijesti i sigurne funkcije pregleda; nije hostana usluga odobravanja.
  • Ovdje nema tvrdnji o timovima koji plaćaju, usvajanju, dostupnosti ili univerzalnoj sigurnosti.
  • Verzije paketa i broj preuzimanja namjerno su izostavljeni jer su promjenjivi i ne dokazuju granicu odobrenja.