Эксперименты с использованием AI для улучшения кода BIND 9 и переработки Next.js

Ondřej Surý, chef för DNS-engineering på ISC och tidigare skapare av projektet CZ.NIC Labs som utvecklar DNS-servern Knot, sammanfattade sina experiment med stora språkliga modeller för att analysera, rätta till och modernisera kodbasen för DNS-servern BIND 9, skapa prototyper av nya projekt och förbereda material för undervisning. Intrycken från användningen av AI ledde till att stora språkliga modeller är bra för snabb prototyptillverkning, förståelse av okänd kod och automatisering av enklare rutinuppgifter, men det är tveksamt att de sparar tid för större uppgifter eftersom mycket tid går åt till att formulera uppgiften, studera och verifiera resultatet, samt genomföra efterbearbetning.

I det första experimentet fick AI-assistenten Claude Code i uppdrag att upptäcka problem i kodbasen för DNS-servern BIND 9, med fokus på säkerhetsproblem och kodmodernisering. Ingen av de föreslagna korrigeringarna accepterades i kodbasen, eftersom Claude genererade tekniskt korrekt men praktiskt taget värdelös kod. Till exempel noterades problem med reserverade identifikatorer och potentiella heltalsöverflöden, som förhindrades av kompileraren och inte krävde justeringar. Experimentet bedömdes som en meningslös tidsförlust.

I det andra experimentet bad Ondřej Claude att skriva ett telemetrisystem som kan integreras med olika paket och minimera läckage av metadata. Claude Code förberedde prototyper av klienten och servern, men utan tillräcklig förståelse för miljön och de problem som uppstod under testningen. Dessutom involverades Google Gemini och ChatGPT för att kontrollera resultatet, där varje AI-modell upptäckte fel i andra modellers resultat.

För snabb prototypframställning visade metoden sig vara användbar, men Ondřej noterade att han kände sig som en robotöversta sekreterare under arbetet. I början gav den snabba prototypframställningen en känsla av optimism, men i slutet kändes det som om hela AI-drivna utvecklingsprocessen tog mer tid än att skriva koden manuellt från grunden. Mycket tid spenderades på att förstå lösningen som föreslogs av AI, kontrollera förekomsten av meningslösa förändringar och omarbeta — prototypen fick göras om eftersom kvaliteten på koden efter AI visade sig vara medioker och koden innehöll ett stort antal upprepade konstruktioner.

Det tredje experimentet handlade om att generera en lastbalanserare på språk som Rust med hjälp av crate-paketen Domain och Tokio. Claude Code lyckades generera den begärda fungerande prototypen, men Ondřej är inte tillräckligt bekant med Rust och de involverade biblioteken för att kunna bedöma kvaliteten på det utförda arbetet.

Det fjärde experimentet involverade förberedelser av hjälpmaterial, tester och frågor för kursen som Ondřej undervisar i vid universitetet, som gjordes med Google Gemini. Detta experiment ansågs vara det mest framgångsrika, även om det inte kom utan problem — AI hittade på ett icke-existerande tjeckiskt ord för en term inom kryptografi. Det noterades också att han fick ett överflöd av studentarbeten genererade av stora språkliga modeller, som måste skickas tillbaka för omarbetning på grund av att de inte uppfyller universitetsnivån och innehåller referenser till felaktiga källor.

Ytterligare kan vi nämna ett annat experiment som genomfördes av ingenjörschefen på Cloudflare. Med hjälp av modellen Claude Code, efter att ha spenderat ungefär en vecka och 1100 dollar på tokens, lyckades han förbereda en alternativ implementering av API-ramverket Next.js, presenterad som en plugin till verktygslådan Vite. Projektet fick namnet vinext och publicerades på GitHub. Den nya implementeringen är fyra gånger snabbare än Next.js-samlingen med Turbopack och skapar paket för frontend som upptar 57% mindre utrymme.

Projektet implementerar 94 % av de sexton grundläggande API:erna för Next.js och kan användas som en transparent ersättning för Next.js och för att distribuera projekt på Cloudflare Workers utan att behöva några ytterligare lager, såsom OpenNext, och utan koppling till Node.js. Vinext:s huvudsakliga syfte är att möjliggöra användning av Next.js API:er på plattformar som inte är Vercel och utan att behöva distribuera en egen server. I sin nuvarande form stöder det endast Cloudflare Workers och har en prototyp för Vercel, men i framtiden förväntas stöd för andra plattformar för serverlös beräkning som Vite kan arbeta med, inklusive Netlify och AWS Lambda.

Källa: opennet.ru

Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar 🔥 Köp pålitlig webbhotell med DDoS-skydd, VPS VDS-servrar | ProHoster