Umjetna inteligencija (UI)

Code as Context: Design Systems AI Can't Afford to Forget

Kod kao kontekst: sustavi dizajna koje AI ne smije zaboraviti

AI može generirati uvjerljivo sučelje u nekoliko sekundi. Također može izraditi aplikaciju koja izgleda uglađeno, a pritom tiho zanemaruje pravila koja proizvod čine koherentnim: njegovu ljestvicu razmaka, konvencije pristupačnosti, ugovore komponenti, obrasce sadržaja i odluke o brendu.

Ta je razlika važna jer dizajnerski sustav nije galerija gumba. To je akumulirana prosudba o proizvodu, izražena kroz kod, dokumentaciju i funkcionalne primjere. Ako AI asistent ne može pristupiti toj prosudbi i primijeniti je, ne ubrzava sustav tima. Generira mimo njega.

Dizajnerski sustavi operativni su kontekst

Timovi često opisuju dizajnerski sustav vizualnim pojmovima: bojama, tipografijom, ikonama i ponovno upotrebljivim komponentama. To je neophodno, ali učinkovit sustav definira i ponašanje. Dijalog ima očekivanja upravljanja fokusom. Polje obrasca ima stanja pogreške. Tablica podataka ima pravila za stanja učitavanja, praznog sadržaja i ograničenih dozvola. API komponente utvrđuje koja je varijacija namjerna, a koju treba izbjegavati.

Za AI asistenta za kodiranje ove su informacije kontekst. Bez njih, model će se oslanjati na široke obrasce naučene drugdje. To može dovesti do prilagođenog gumba umjesto odobrene komponente Button, tvrdo kodirane boje umjesto semantičkog tokena ili rasporeda koji izgleda ispravno, ali se kvari pri manjoj širini prikaza.

Dobiveni kod može proći brzu vizualnu provjeru, a istodobno povećati dugoročni trošak održavanja. Svaka lokalno razumna iznimka čini sustav manje pouzdanim za sljedećeg developera i sljedeći AI zahtjev.

Što „kod kao kontekst” zapravo znači

Korisni AI kontekst nije golemo lijepljenje svake datoteke u repozitoriju. To je promišljen skup materijala koji modelu omogućuje da donosi iste važne razlike koje bi pažljiv developer donio prije pisanja komponente.

Za dizajnerski sustav to obično uključuje API-je komponenti, definicije tokena, smjernice za upotrebu i primjere postojećih obrazaca aplikacije. Najvrjedniji kontekst odgovara na praktična pitanja:

  • Koje su komponente zadani izbor za uobičajene zadatke sučelja?
  • Koji su propsovi i obrasci kompozicije podržani?
  • Koji dizajnerski tokeni trebaju zamijeniti doslovne vrijednosti boja, veličina i razmaka?
  • Kako se obrađuju stanja validacije, učitavanja, praznog sadržaja, onemogućenosti i pogreške?
  • Koje je ponašanje pristupačnosti već ugrađeno u zajedničke komponente?
  • Gdje su iznimke dopuštene i tko ih pregledava?

Razmotrite zahtjev za dodavanje destruktivne radnje računa. Generički izlaz mogao bi izraditi stilizirani crveni gumb i dijalog za potvrdu preglednika. Izlaz svjestan sustava trebao bi umjesto toga pronaći utvrđenu varijantu destruktivne radnje, koristiti dijalošku komponentu tima, očuvati ponašanje fokusa, pružiti jasan tekst o posljedicama i uskladiti se s postojećim obrascem asinkronog stanja.

AI u tom primjeru nije postao pronicljiviji. Njegovo je radno okruženje postalo bolje specificirano.

Učinite sustav lakim za dohvaćanje strojevima

Dizajnerski sustavi često su dokumentirani za ljudsko pregledavanje, ali loše strukturirani za dohvaćanje. Lijepa stranica s komponentama korisna je, no nije dovoljna ako pojedinosti implementacije žive u raspršenim pričama, tiketima i neformalnom znanju.

Započnite tako da dokumentaciju komponenti tretirate kao sučelje i za ljude i za alate. Svaka važna komponenta trebala bi jasno istaknuti svoju svrhu, podržana stanja, propsove, odgovornosti pristupačnosti i primjere. Kratke, konkretne smjernice često su korisnije od samih širokih načela.

Prednost dajte primjerima koji kodiraju odluke

Minimalan primjer dokazuje da se komponenta prikazuje. Realističan primjer podučava kada i kako je koristiti. Prikažite obrazac s oznakama, porukama validacije i stanjem slanja. Prikažite izbornik s pristupačnim okidačem. Prikažite odjeljak stranice koji zajedno koristi primitive rasporeda i semantičke tokene.

import { Button, Stack, TextField } from "@acme/design-system";

export function ProfileForm() {
  return (
    <Stack gap="md">
      <TextField
        label="Display name"
        name="displayName"
        required
      />
      <Button type="submit" variant="primary">
        Save changes
      </Button>
    </Stack>
  );
}

Ovaj mali primjer prenosi više od stiliziranja. Developeru ili agentu govori da polja dobivaju oznake putem zajedničke komponente, da razmak dolazi iz imenovane ljestvice i da primarna radnja koristi definiranu varijantu umjesto prilagođene klase.

Dokumentirajte granice, a ne samo idealni scenarij

AI sustavima trebaju negativne smjernice jednako kao i pozitivne. Navedite kada komponentu ne treba koristiti, koji su propsovi zastarjeli i koji su obrasci zabranjeni. Ako je token rezerviran za određeno semantičko značenje, navedite to. Ako su izravna CSS nadjačavanja prihvatljiva samo u lokalnom omotaču rasporeda, jasno navedite to pravilo.

Dvosmislenost je skupa jer je modeli obično popunjavaju uvjerljivim alternativama. Jasne granice pretvaraju mnoge subjektivne preglede u jednostavne provjere.

Izgradite AI tijek rada oko provjere

Čak ni izvrstan kontekst ne uklanja pogreške. Generirani kod i dalje treba iste zaštitne mjere kao kod koji su napisali ljudi, osobito kada mijenja zajednička sučelja ili ustaljene tijekove rada.

Praktičan tijek rada odvaja generiranje od prihvaćanja:

  1. Dajte agentu relevantne smjernice za komponente i tokene zajedno sa zadatkom.
  2. Zatražite da utvrdi postojeće komponente i obrasce koje namjerava ponovno upotrijebiti.
  3. Zahtijevajte najmanju implementaciju koja ispunjava zahtjev.
  4. Pokrenite postojeće provjere tipova, testove, lintiranje te vizualne ili provjere pristupačnosti projekta gdje su dostupne.
  5. Pregledajte diff radi zaobilaženja sustava: doslovnih vrijednosti, dupliciranih primitiva, nepotrebnih omotača i novih API-ja.

Ključno pitanje pri pregledu nije samo „Radi li ovo?” Ono je: „Proširuje li ovo jezik proizvoda ili stvara konkurentski dijalekt?” Značajka može biti funkcionalno ispravna, a ipak loš dodatak zrelom kodnom repozitoriju.

Upotrijebite dizajnerske sustave za ograničavanje, a ne gušenje AI-ja

Postoji iskušenje da se ograničenja promatraju kao trenje. U praksi, ona automatizaciju čine pouzdanom. Sustav sa stabilnim tokenima, sastavljivim primitivima i eksplicitnim ugovorima komponenti AI-ju daje manji i smisleniji prostor rješenja. To smanjuje varijacije ondje gdje one nemaju vrijednost za korisnika.

Također otkriva gdje je dizajnerski sustav nepotpun. Ako developeri neprestano traže od agenta da zaobiđe komponentu, to može ukazivati na nedostajuću mogućnost, a ne na loše upute. Pratite te iznimke. Ponavljane iznimke vrijedne su povratne informacije za proizvod i platformu.

Ne bi svaki zahtjev trebao postati nova komponenta sustava, niti svako generirano sučelje treba promjenu dizajnerskog sustava. Disciplina se sastoji u razlikovanju doista ponovno upotrebljivog obrasca od jednokratne kompozicije. AI može pomoći otkriti obrazac; ljudi i dalje trebaju odlučiti pripada li zajedničkom vokabularu.

Trajna prednost je koherentnost

Najvrjednija upotreba AI-ja u razvoju softvera nije izolirano stvaranje više koda. Ona pomaže timovima da svoje najbolje odluke dosljedno primjenjuju većom brzinom. Dobro održavan dizajnerski sustav tim odlukama daje trajan oblik. Dobar AI kontekst čini ih dostupnima u trenutku pisanja koda.

Kada kod prenosi jezik proizvoda naprijed, AI postaje koristan suradnik umjesto izvora privlačnog odstupanja. To je standard za koji vrijedi dizajnirati: ne samo brži izlaz, već softver koji prepoznatljivo i pouzdano ostaje svoj.

Portret autora bloga

Mihajlo

Ja sam Mihajlo — programer vođen znatiželjom, disciplinom i stalnom željom da stvorim nešto smisleno. Dijelim uvide, tutorijale i besplatne usluge kako bih pomogao drugima da pojednostave svoj rad i rastu u svijetu softvera i umjetne inteligencije koji se neprestano razvija.