En designassistent som kjører på enheten din — ingen konto, ingen server
PinePaper 's on-device AI assistent gjør en spørsmål til en ekte scene ved hjelp av en språkmodell som kjører helt i nettleseren din. Her er arkitekturen - begrensede verktøysamtaler, to leverandører, og en ærlig konto om hva en liten modell kan og ikke kan gjøre.
Forutsetningen
De fleste AI-designverktøy sender en melding til en server, kjører en stor modell og sender koden tilbake. Det trenger en konto, en nettverksrundtur og tillit til at arbeidet ditt passerer andres infrastruktur.
Vi ønsket å vite hvor langt den andre ekstremen går: ** En designassistent der modellen kjører på din egen maskin.** Ingen konto. Ingen opplasting. Speeden forlater aldri nettleseren. Dette bor nå i PinePapers redaktør som en eksperimentell AI / Code → Assistant-fanen, og dette innlegget er en ærlig konto om hvordan det fungerer og hvor det blir kort.
Hvorfor ikke bare spørre modellen for kode?
Den åpenbare tilnærmingen er å be on-device-modellen om å skrive JavaScript mot PinePapers API og kjøre den. Vi prøvde det. Det mislykkes.
Små modeller — de som passer på en bærbar datamaskin — har ** ingen kunnskap om en bestemt apps API.** Spør en 0.5-2B-modell for å ringe PinePaper.create() og den improviserer: en nøkkel metoden ikke leser (en SVG-stil fill hvor API forventer color), en metode den forestillet seg, argumenter i feil form. Utgangen * ser ut som kode og stille gjør feil ting.
Så vi ber ikke om kode. Vi ber om en begrenset liste over verktøysamtaler:
[
{ "name": "pinepaper_set_background_color", "arguments": { "color": "#0F0F1A" } },
{ "name": "pinepaper_create_item", "arguments": { "itemType": "star", "x": 400, "y": 300, "radius": 90, "color": "#E74C3C", "animationType": "pulse" } }
]
Den samme ordforråd PinePapers MCP-server eksponerer for eksterne agenter — men sendes ut av en modell som kjører lokalt, og utføres på lerretet gjennom en liten avsender.
Gjør ugyldig utdata umulig
Nøkkeltrekket er begrenset dekoding. I stedet for å håpe at modellen produserer en gyldig form, begrenser vi * hvilke tegn det til og med har lov til å utstede: *
- På Chromes innebygde Prompt API (Gemini Nano) passerer vi et JSON skjema som en responsbegrensning. Modellen kan bare produsere objekter skjemaet tillater - med
additionalProperties: false, ethvert argument skjemaet ikke definerer er bokstavelig talt urepresenterbar. - På WebLLM (en åpen modell som kjører på WebGPU), vi *EBNF grammatikk via XGrammar. Gramatikken dikterer strukturen; modellen fyller bare i verdiene.
Begge produserer samme verktøy-kall form. Et lite reparasjonspass berger så nær-manglene en liten modell fremdeles gjør - en droppet name, argumenter uten deres wrapper - ved å referere verktøyet fra argumentformen. Resultatet er at " trekk en grønn pentagon" blir en ekte create_item-samtale i stedet for en feil.
To leverandører, én kontrakt
På-device AI er ikke en ting - det avhenger av nettleseren:
- Browser AI — Chrome innebygd Gemini Nano (
window.LanguageModel). Modellen leveres med nettleseren; det er ingenting å laste ned fra oss. Dette er den mest pålitelige on-device bane i dag, fordi JSON-schema begrensning er billig og godt støttet. - PinePaper AI — WebLLM kjører en Qwen2.5 modell i en WebGPU-nettleser. Den laster ned en modell en gang (cached deretter), og kjører deretter frakoblet.
- ** Språk** — ikke-engelske spørsmål oversettes til engelsk on-device først (via nettleserens innebygde oversetter), fordi de små kodeorienterte modellene er engelsk-sentriske. Den genererte scenen er den samme uansett hurtigspråk.
Brukeren velger motoren; alt nedstrøms - begrensningen, executoren, lerretet - er identisk.
Redigerer, ikke bare genererer
En one-shot generator er ikke en assistent. For å støtte " gjør stjernen rød" må modellen vite hva som allerede er på lerretet. Så hver tur vi mate det et kompakt øyeblikksbilde av de aktuelle elementene - deres ids, typer og farger - akkurat som en server-side chat ville. " Gjør stjernen rød" deretter løser til en ekte modify_item-samtale mot elementets id. (Og fordi en liten modell noen ganger refererer til "the circle" når det betyr stjernen, løser eksekutoren uklare referanser mot live lerret.)
Samtaleloggen holdes på enheten i lokal lagring. Ingenting om det sendes hvor som helst - med mindre du eksplisitt velger å dele mislykkede spørsmål, noe som hjelper oss å forbedre spørsmål og grammatikk.
Når den lille modellen ikke er nok - eskalere
Her er den ærlige delen: a 0,5–2B-modellen er det svakeste nivået. Begrenset dekodingsgaranti * gyldig struktur*, men modellen må fortsatt velge riktig verktøy og fornuftige verdier, og det vil ikke alltid. Be om en pentagon og en under-spesifisert modell gir deg en heksagon; spør to ganger etter - rød - og det kan kjøre en generator i stedet.
Så arkitekturen behandler on-device som det * første * nivå, ikke den eneste. Etter noen mislykkede forsøk assistenten tilbyr å hand hele samtalen opp til Cloud-modellen - samme intensjon, samme lerret, en langt mer dyktig modell - og du fortsetter nøyaktig hvor du slapp. Lav troskap, gratis og privat, med en ett-klikk sti til høy troskap når du trenger det.
Hva vi har lært
- Begrenser beat questing. En bakket systemprompt hjelper; en grammatikk / skjema som gjør ugyldig utgang umulig hjelper mye mer. Den største pålitelighetshopp kom fra begrenset dekoding, ikke fra en bedre rask.
- Modelstørrelsen dominerer fortsatt. Går fra en 0,5B til en 1,5B-modell merkbart forbedret hvor ofte assistenten plukker riktig verktøy. Det er ikke noe som gjør en liten modell til en smart.
- Den fulle grammatikken kan være for stor. Vår første grammatikk kodet * alle * mulige operasjoner - inkludert en avgrenset-lengde flukt lucke for vilkårlig tegning kode. Det var så stort at dekodet sto på siden. En kompakt grammatikk som dekker felles operasjoner er riktig standard; full overflate er opt-in.
- ** Kjør det av hovedtråden.** En modell som gjør forskjell på UI-tråden fryser siden. WebLLM kjører i en Web Worker slik at redaktøren forblir responsiv mens en modell laster og genererer.
Det neste
Dette er eksperimentelt og bedre. På veikartet:
- Wider verktøydekning i den begrensede banen — mer av PinePapers operasjoner uttrykkelig uten freeform escape luke.
- Større on-device modeller som WebGPU modell kataloger vokser, handel nedlastingsstørrelse for pålitelighet.
- ** En strammere eval loop** - ved hjelp av opted-in feilrapporter å måle som ber om å reise on-device modeller og herde grammatikk mot dem.
- ** En jevnere on-device → Cloud håndoff**, så eskalering føles som å slå opp kvalitet dial i stedet for å bytte verktøy.
Gjennomsnittet: samme deklarative verktøy vokabular driver en modell på hver side av nettlesergrensen. En ekstern agent kaller disse verktøyene over MCP; en on-device-modell kaller de samme formene lokalt. En kontrakt, agenter der de kjører.
Prøv det i redaktøren - åpen AI / Kode → Assistant. Det er gratis, kjører på enheten og trenger ingen konto.
Ready to create?
Start making animated GIFs, videos, and graphics — free, no signup.
Open PinePaper Editor