Skylight, Allen-instituttets team for maritim overvåking, har lagt ut en gjennomgang av hvordan de bygde Shippy, en KI-agent som svarer på sanntidsspørsmål om skipstrafikk for analytikere i over 70 land. Poenget de vender tilbake til: det egentlige arbeidet lå ikke i modellen, men i systemet rundt.
«Det virkelige arbeidet var ikke modellen. Det var å bygge et system vi kunne stole på var korrekt, holdt seg innenfor sine grenser og tålte et bredt spekter av oppgaver.» — Skylight-teamet
Teamet deler agenten i tre: en «sjel» (systemprompten som setter persona og grenser), «skills» (markdown-filer med frontmatter, samme spec som Claude Code og Codex bruker) og «config» (hvilket agent-rammeverk og hvilken modell som kjøres). Sjel og skills bakes inn i et Docker-image, mens modell og rammeverk er config. Shippy kjører på det åpne rammeverket OpenClaw med Claude Opus, og å bytte modell er en configendring, ikke en ombygging.
Grensene ligger i sjelen, ikke i finjustering. «Den vil ikke gjøre juridiske vurderinger av om et fartøy bryter loven; det er en avgjørelse for mennesker, ikke for en agent», heter det i gjennomgangen, som et eksempel på at teamet skriver reglene eksplisitt i systemprompten for å holde dem etterprøvbare.
Den skarpeste tekniske innsikten handler om verktøyene. En agent er ikke-deterministisk, men verktøyene den griper etter kan gjøres forutsigbare. I tidlige prototyper lot teamet Shippy bygge API-kall selv, og resultatet var en jevn strøm av subtile feil: ødelagt paginering som stille droppet resultater, og korrekt-utseende spørringer som returnerte feil data. Løsningen ble en dedikert CLI som samler kompleksiteten bak en typet, selvdokumenterende kommando, med utdata skrevet til fil i stedet for gjennom shell-en.
Isolasjon var den andre store jobben. Skylight betjener hundrevis av offentlige etater og NGO-er, så hver bruker snakker med Shippy i sin egen kortlevde, isolerte økt. Teamet bygde en hostingplattform, Mothership, som setter opp en dedikert Kubernetes-utrulling per samtale, med brukerens tilgangstoken injisert ved oppstart slik at agentens API-kall bare ser den brukerens data.
Hvert lag snevrer inn hva det neste laget kan gjøre feil: typet API, deterministisk CLI, og skills som refererer CLI-kommandoene. For deg som bygger egne agenter er dette en konkret oppskrift på å flytte påliteligheten ut av modellen og inn i arkitekturen rundt den.