Et Bord Med Ben Det Forkerte Sted
Ugen i Én Sætning
Vi lærte systemet at tale ordentligt med AI-agenter, gav os selv et rigtigt missionskontrol-dashboard, løste "alle taler på én gang"-problemet, og bad en AI om at designe et spisebord. Én af de ting gik dårligt.
En Bedre Måde at Tale Med Agenter
Indtil nu fungerede hver samtale med en AI-agent sådan her: start et program, prop tekst ind i det, vent på tekst tilbage, prøv at finde ud af hvad der skete. Det er software-ækvivalenten til at kommunikere ved at skubbe sedler under en dør.
Agent SDK-broen er opgraderingen: i stedet for at starte et program og håbe på det bedste, taler vi nu direkte med AI'en gennem en ordentlig forbindelse — med streaming (du ser svaret mens det skrives), session-hukommelse (den husker hvad I talte om), og struktureret værktøjsbrug (den kan gøre ting, ikke bare sige ting).
Den er feature-flagget, hvilket betyder vi kan skifte mellem den gamle og den nye måde med et klik. Selve dette blogindlæg blev skrevet gennem den nye bro. Indtil videre, så langt så godt.
Dør-analogien: Forestil dig at du har kommunikeret med din værkstedsassistent ved at skubbe sedler under en lukket dør. De skubber sedler tilbage. Det virker, men du kan ikke se hvad de laver, du kan ikke afbryde dem, og nogle gange sidder sedlerne fast. SDK-broen er som at åbne døren og have en normal samtale i stedet.
Missionskontrol Får Rigtige Kontroller
Vi har et dashboard kaldet Bridge Board der viser hvilke AI-agenter der arbejder på hvad. Indtil denne uge var det basalt set et statusdisplay — brugbart, men passivt. Som et overvågningskamera man kan kigge på men ikke interagere med.
Nu har det rigtige kontroller:
- Per-agent fremskridt: Hver agent-række viser sin aktuelle opgave, en live progress-bar, hvilket trin den er på, og hvor længe den har arbejdet. Ikke mere gætterier.
- Stop/Pause/Genoptag: Man kan stoppe en kørende opgave, pause en agent (den færdiggør sit nuværende arbejde men tager ikke nye opgaver), eller pause et helt projekt.
- Live output-forhåndsvisning: Et lille vindue der viser hvad agenten skriver lige nu, direkte i dashboardet.
Det gik fra "overvågningskamera" til "missionskontrol." Man kan se hvad der sker og gøre noget ved det.
{
"type": "pie",
"title": "Ugens Arbejde",
"labels": ["Bridge & Infrastruktur", "Rate Limiting", "Chat & API", "Review Pipeline", "Outlaw Oaks", "Bug Fixes"],
"data": [5, 3, 1, 1, 2, 1]
}
Den Usynlige Mur
Her er et problem man ikke tænker over før man kører flere AI-agenter samtidigt: rate limits.
Hver AI-tjeneste har dem — "du kan kun lave X forespørgsler per minut." Fair nok. Men når man har flere agenter der arbejder samtidigt, hver med forskellige AI-værktøjer, bliver rate limits et operationelt mareridt. En agent ramte en grænse, fejlede stille, og systemet ville bare... prøve igen. Og fejle igen. Som en snedker der bliver ved med at tage det samme skæve bræt fra bunken uden at tjekke det først.
Vi byggede tre ting for at fixe det:
- Opdagelse: Broen læser nu AI-værktøjets output omhyggeligt nok til at spotte rate limit-beskeder og udløbne login-tokens — i stedet for at behandle dem som mystiske fejl.
- Synlighed: Rate limit-status dukker op overalt — Bridge Board, chat-sessioner, opgave-dispatch. Man kan se hvilket værktøj er begrænset og hvornår det bliver tilgængeligt igen.
- Smart pause: Når et værktøj er rate-limited, holder systemet op med at prøve at bruge det. Ikke flere forsøg mod en mur. Det venter, så genoptager det.
Det er som at sætte et "LUKKET"-skilt på en butiksdør i stedet for at lade kunderne blive ved med at gå ind i den.
Chat Overalt
Hurtig gevinst denne uge: et nyt Chat API der fungerer ens uanset om man bruger web admin-panelet, Windows desktop-appen eller Android-kompagnonen. Samme samtaler, samme historik, samme real-time streaming. Start en samtale på din bærbar, fortsæt den på din telefon.
Ikke glamourøst, men det er den slags VVS der får alting til at føles som ét produkt i stedet for tre.
Ny Server, Fordi Vi Voksede Fra den Gamle
En kort infrastruktur-note: vi skiftede til ny server-hardware i denne uge.
Den gamle server var fin da oUTPOSt var mindre. Men vi har tilføjet features i et tempo hardwaren ikke kunne følge med — en klientportal, mere designarbejde, rigere admin-grænseflader. Harddiskene var den primære flaskehals: alle operationer der læser eller skriver filer (hvilket er de fleste operationer på en webserver) stod i kø bag et aldrende disk-array.
Den nye maskine er bare hurtigere over hele linjen. Deploys, database-forespørgsler, pakke-installation, cache-operationer — alt der involverer I/O fik et boost. Det er ikke spændende, men det er den slags opgradering hvor man pludselig holder op med at lægge mærke til små forsinkelser man havde vænnet sig til.
Som at udskifte en sløv stemmejern. Hvert enkelt snit er ikke dramatisk anderledes, men ved dagens slutning har man lavet dobbelt så meget og armen er ikke øm.
Kimi Går på Møbelindkøb
OK, her er den sjove.
Outlaw Oaks er vores AI-snedkerplatform — den bruger et 3D-modelleringsværktøj kaldet CadQuery til at generere møbler fra naturlige sprog-beskrivelser. Man siger "jeg vil have et spisebord til seks, egetræ, skandinavisk stil" og en AI-agent skriver koden der skaber en 3D-model.
I denne uge fik vi Kimi — en alternativ AI-agent fra Moonshot — til at fungere som design-hjernen. At nå dertil krævede at fixe seks bugs henover tre deploys:
- Skænderiet: To dele af programmet sloges om den samme kommunikationskanal og forårsagede crashes. Som to mennesker der prøver at tale i én telefon.
- Den snakkesalige receptionist: Kimis opstartsbeskedder — "Velkommen!", "Session startet!", "Ny version tilgængelig!" — blev behandlet som møbeldesign-kode. Forestil dig at en snedkers morgenhilsen blev fortolket som byggetegninger.
- Den stædige cache: Systemet huskede hvilket AI-værktøj det skulle bruge ved opstart og ignorerede senere ændringer. Så når en admin skiftede fra Claude til Kimi i indstillingerne, nikkede systemet høfligt og blev ved med at bruge Claude.
- De manglende instruktioner: Kimi blev startet uden de flag der siger "giv mig bare svaret, vær ikke interaktiv." Den sad og ventede på input der aldrig ville komme.
- JSON-muren: Når Kimi ramte en rate limit, i stedet for at vise en venlig "vent venligst 30 sekunder"-besked, dumpede den en mur af maskinlæsbar JSON på brugeren. Teknisk informativt. Praktisk ubrugeligt.
Med alt det fixet bad vi stolt Kimi om at designe et spisebord.
Resultatet var... strukturelt kreativt.
Benene var placeret gennem bordpladen. De stak op fra overfladen som skorstene, igennem præcis det plan hvor man gerne ville sætte sin tallerken. Det var mindre "skandinavisk minimalisme" og mere "surrealistisk kunstværk der tilfældigvis har fire ben."
Hvad vi bad om: Hvad vi fik:
___________ _|__|_
| | | | | |
| | | | | |
|___________| |_|__|_|
| | | | | | | |
| | | | | | | |
| | | | | | | |
AI'en er bemærkelsesværdigt god til at skrive kode. Den er bemærkelsesværdigt dårlig til at forstå at bordben hører under et bord. Den skrev perfekt gyldig CadQuery-kode — geometrien var korrekt, dimensionerne var fornuftige, træåre-parameteren var dejlig — den havde bare intet begreb om hvordan tyngdekraft og tallerkener interagerer.
Lektie: AI-agenter har brug for fagviden, ikke bare kodningsevner. En "CadQuery-skill" der lærer agenten hvordan møbelsamlinger faktisk fungerer er næste punkt på listen. Man ville ikke give en programmør en sav og forvente en reol; man bør heller ikke give en AI et 3D-modelleringsværktøj og forvente den forstår at ben sidder i bunden.
Bordben-episoden til side, både chat-mode og design-mode er nu operationelle. Kimi kan diskutere dit møbelprojekt og generere 3D-modeller i realtid. Modellerne skal bare lære om tyngdekraft.
Hvad Venter
Fire åbne bugs at jage — en session-resume loop, et timing-problem under deploys, en visningsfejl, og en kontekstmenu med hukommelsestab. Ingen er kritiske, alle er irriterende.
Klientportalen får et friskt design. Og et sted i en CadQuery-sandbox venter et spisebord på at få sine ben det rigtige sted.
Tolv features. Seks bug fixes. Tre deploys. Ét bord der tror det er en skorsten.