HashAgent legger hele agenten i URL-fragmentet og kjører modellen i nettleseren
Del en KI-agent som en ren lenke: HashAgent legger hele agentdefinisjonen i hash-fragmentet og kjører modellen i nettleseren din.
«Brukerens egen enhet er serveren.» Det er svaret utvikleren bak HashAgent landet på da han spurte seg selv om det går an å kjøre en nyttig KI-agent uten hostingkostnader, skriver han i Show HN-tråden på Hacker News 14. august. Innlegget hadde 43 poeng og åtte kommentarer samme kveld.
Hele agentdefinisjonen, altså navn, systemprompt, åpningshilsen og genereringsinnstillinger, kodes som komprimert base64url-JSON i hash-fragmentet i adressen. Fragmentet sendes aldri til noen server, så det å dele lenken er i praksis det samme som å dele agenten.
Inferensen kjører i nettleseren over WebGPU, med to kjøretider side om side: WebLLM (MLC) for Llama 3.2, Phi, Mistral og Qwen, og Transformers.js for nyere ONNX-modeller som Gemma 4 E2B og LFM2 1.2B. Første last henter ned vektene, deretter ligger de i nettleserens cache og agenten fungerer uten nett.
Verktøyene er delt i to nivåer. Det lokale nivået, altså kalkulator, klokke, Wikipedia og vær, går rett fra nettleseren via CORS og treffer aldri utviklerens egen infrastruktur. Gateway-nivået, nettsøk og sidelesing, går gjennom Cloudflare Pages Functions fordi søkemotorer ikke tillater CORS-kall direkte fra nettleseren. Det nivået kan skrus av i innstillingene, og da går ingenting til servere utvikleren driver.
Mekanismen andre som bygger agenter på små modeller bør se nærmere på, er planleggingen. Hver tur kjører en egen runde på temperatur null som bare kan sende ut et JSON-verktøykall som matcher et skjema fra en allowlist, og den runden er skilt fra selve svarrunden. Poenget er å hindre at modeller i 1B-klassen finner på verktøykall midt inne i en setning.
Bakgrunn
Utvikleren er uvanlig åpen om taket. Modellene stopper rundt 8B kvantisert på stasjonære maskiner med 16 GB eller mer, mens telefoner realistisk sett er i 1B-klassen med LFM2 1.2B eller Llama 3.2 1B. Første nedlasting er på 700 MB til 2 GB avhengig av modell. Prosjektet er MIT-lisensiert, og GitHub oppgir at repoet ble opprettet 8. august.
iOS er den harde veggen. WebKit begrenser én fane til rundt 1,5 GB uansett hvor mye RAM iPhonen har, så iPhoner er låst til de minste modellene. En Android-telefon i mellomklassen slår ofte den nyeste iPhonen på akkurat dette punktet.
«Jeg gjorde dette selv for noen måneder siden, og det er egentlig ikke så vanskelig å kjøre en LLM i nettleseren. Problemet er at modellene som får plass der inne, er ganske små.» — voodooEntity, kommentar i Show HN-tråden
Innvendingen står seg, og utvikleren avviser den ikke: dette er agenter for én oppgave, ikke erstatninger for en stor modell bak et API. Det HashAgent løser er distribusjonen. Du får en agent uten hosting, uten konto og uten at systemprompten din ligger lagret hos noen.
Én advarsel fra prosjektets README bør tas bokstavelig: legg aldri hemmeligheter inn i en agentdefinisjon. Den ligger i klartekst i lenken, og velger du den valgfrie kortlenken, lagres hele definisjonen permanent i prosjektets KV-lager.
Hva bør du gjøre?
- Test på maskinvaren målgruppen din faktisk sitter med. Avstanden mellom en stasjonær maskin med 16 GB og en iPhone er avstanden mellom 8B og 1B.
- Kopier mønsteret med en skjemabundet planleggingsrunde på temperatur null hvis små modeller hallusinerer verktøykall i ditt eget oppsett.
- Skru av gateway-nivået i agentinnstillingene hvis alt skal bli på maskinen. Du mister nettsøk og sidelesing, men ingen forespørsel går videre.
KI-kuratert — innholdet er generert av KI-agenter basert på originalkilden.