Hybrid AI-kodgranskning: Claude Opus 4.8 + Codex i en loop
Tech
AI
Claude Opus 4.8
Codex
GPT-5.5

Hybrid AI-kodgranskning: Claude Opus 4.8 + Codex i en loop

Två frontier-modeller i en loop: Claude Opus 4.8 skriver varje fix, Codex granskar den via min AI-brygga, och en riktig byggnation röstar. 39 produktionsfixar, inga manuellt skrivna.

Uygar DuzgunUUygar Duzgun
Jun 20, 2026
Uppdaterad 24 juni 2026
7 min read

Det finns en kategori av arbete där en enskild AI-agent tyst misslyckas: stora, flerstegsrensningar där ett enda felaktigt antagande ackumuleras över dussintals ändringar. Mitt svar är hybrid AI-kodgranskning — två olika frontier-modeller i en loop, där en bygger och en granskar — och förra veckan tog det en rörig SwiftUI-prototyp till noll App Store-blockerare på en eftermiddag, utan att jag skrev en enda rad kod.

De två modellerna var Claude Opus 4.8 som ingenjör och Codex (GPT-5.5) som granskare, där varje uppgift studsade genom min AI-brygga tills den klarade en riktig byggnation. Enligt min erfarenhet slår denna setup för hybrid AI-kodgranskning konsekvent varje modell som arbetar ensam, och denna körning var det tydligaste beviset hittills. Här är exakt hur det fungerade.

Börja med en plan, inte en känsla

Du ger inte en agent instruktionen "gör detta produktionsredo." Så får du självsäker nonsens.

Så jag började med en plan. Jag lät Claude klona repot (en baby-minne iOS-app som heter Kiddays), läsa *hela* kodbasen med parallella underagenter och producera en revisionsrapport för produktionsberedskap: 39 konkreta punkter — 9 hårda App Store-blockerare, resten hög och medel svårighetsgrad. Varje punkt hade en fil, en rad, en uppskattning av insatsen och en föreslagen fix.

Den revisionen blev `PRODUCTION_READINESS.md` — en markdown-checklista med `- [ ]`-rutor, sorterade med blockerare först. En fil, den enda sanningskällan. Varje uppgift i den var liten, specifik och *kontrollerbar*. Det sista ordet är viktigt: om du inte kan bocka i en ruta och bevisa det, är det inte en uppgift, det är en önskan.

Loopen för hybrid AI-kodgranskning, steg för steg

Jag körde hela saker i en självgående loop (Claude Codes /loop-läge). Varje iteration hanterade en uppgift, eller ett tight kluster av relaterade sådana, och följde alltid samma rytm.

Den femstegsrytmen

Claude Opus 4.8 läser de verkliga filerna och designar fixen. Inte från minnet — den öppnar den faktiska koden först.
Den överlämnar designen till [Codex](https://github.com/openai/codex) för en oberoende åsikt genom min AI-peer-review-brygga — den open-source ai-collab-bridge-färdigheten — via en CLI-överlämning:

bash codex exec --sandbox read-only -o /tmp/answer.txt <<'PROMPT' Pair-reviewing a fix for this SwiftUI app. Here are the files... Recommend the idiomatic iOS 17 approach, flag pitfalls, validate the diff. PROMPT

De studsar. Codex föreslår det idiomatiska tillvägagångssättet, pekar på vad som kommer att gå sönder, och validerar (eller motbevisar) planen. Claude implementerar, anpassar sig till feedbacken och pushar tillbaka där den inte håller med.
En riktig byggnation är domaren. Varje uppgift slutar med `xcodebuild` grönt, annars är den inte klar. Inget "borde kompileras."
Bocka i rutan, uppdatera checklistan, gå vidare till nästa.

Sedan startar loopen igen, och igen, i timmar, utan övervakning. Hela poängen med hybrid AI-kodgranskning är att denna cykel körs utan att jag behöver barnvakta den — byggnationen, inte min uppmärksamhet, är det som styr varje steg.

Varför två modeller slår en

Rekommenderat läsning

Magin ligger inte i någon av modellerna individuellt — båda är utmärkta, och jag har tidigare skrivit om hur Claude Opus 4.8 slog Codex på min egen kodbas. Magin är att de har olika blindfläckar, och en granskare som inte skrivit koden har inget ego investerat i diffen.

De fångster som betalade för setupen

Några verkliga ögonblick från denna körning:

Keychain-migrering. Att flytta auth-token ut från plaintext `UserDefaults` ser trivialt ut. Codex flaggade att ett naivt byte tyst skulle bryta SwiftUI-reaktivitet, och pushade för en `@Observable`-store injicerad genom miljön. Claude byggde det istället. Ingen trasig utloggnings-UI.
Felhantering. Jag hade ~20 platser som svalde databasfel med `try?`. Claudes första instinkt var varningar per vy. Codex argumenterade för en enda rot-felpresentatör — en alert-yta, varje save routad genom den. Renare, och det är versionen som skeppades.
StoreKit 2, SwiftData-schemaversionering och filskyddskontroller på disk. Alla iOS-17-specifika minfält där den andra åsikten räddade ett subtilt misstag — exakt den typ av sak som klarar en snabb läsning men misslyckas i det vilda.
Rekommenderat läsning

Detta är skillnaden mellan en gummistämpel och en granskning. Codex motbevisade saker; Claude integrerade de bra motbevisen och försvarade resten. Diffen blev bättre vid gränsen mellan två modeller som inte delar en hjärna — vilket är hela pitchen bakom styrda agentarbetsflöden: strukturerade överlämningar slår en modell som pratar med sig själv.

Den ärliga delen: agenter hänger sig, så bygg en vakthund

Två gånger hängde sig Codex CLI för mig — inte på tänkandet, utan vid avstängning, när dess bakgrunds-MCP-servrar misslyckades stängas rent. Jag spårade den första låsningen till MCP-bootstrap själv, efter att processen suttit död i minuter. I en oövervakad loop stoppar en hängning allt.

Fixen var en hård vakthund: en dödstimer runt varje konsultation, plus att inaktivera MCP för anropet helt (`-c mcp_servers={}`) så att det inte fanns något att hänga sig på. Loopen detekterade låsningen, dödade zombie-processen, grep svaret som redan var skrivet, och fortsatte. "Inget fastnar" är inte en trevlig-att-ha-funktion i autonomt arbete — det är hela spelet.

Resultatet

39 av 39 punkter klara. Alla 9 App Store-blockerare rensade.
Ren byggnation från grunden (`xcodebuild clean build`, exit 0) på slutet — inte bara inkrementellt grönt.
13 nya filer. Verklig Keychain-lagring, verkliga StoreKit 2-köp, verklig röstinspelning, verkliga lokala notifieringar, en GDPR-K-föräldrasamtyckespost, schemaversionering, en kraschrapporterings-söm.
Falskt blev verkligt, eller ärligt borttaget. Den falska "premium"-växlaren blev ett verkligt prenumerationsflöde. Den falska Google-knappen och de falska familjeinbjudningarna — som genererade falsk data — drogs tillbaka, och den juridiska texten skrevs om för att sluta lova en backend som inte finns än.

Det som återstår är endast det arbete ingen modell kan göra åt dig: skapa in-app-köpsprodukter i App Store Connect, sätt upp den verkliga backenden, få en advokat att signera integritetspolicyn. Var och en är flaggad i checklistan med exakt vad som behövs.

Metod och källor

Detta är en förstahandsredogörelse för en verklig körning på min egen Kiddays-kodbas. Granskaren var Codex CLI (GPT-5.5); modell-till-modell-överlämningen använde min open-source ai-collab-bridge-färdighet. De iOS-specifika besluten kontrollerades mot Apples egen StoreKit-, SwiftData- och filskyddsdokumentation — och, viktigare, varje enskild ändring bekräftades av en ren `xcodebuild` från grunden innan jag kallade den klar. Jag rapporterar inte vad modellerna hävdade; jag rapporterar vad som kompilerades.

Slutsatsen: ett team, inte en assistent

I de projekt där jag lutat mig mot hybrid AI-kodgranskning var upplåsningen aldrig "hitta den ena modell som gör allt." Det var en stack:

en plan omvandlad till en checklista du kan bocka i,
Claude Opus 4.8 för att bygga varje uppgift,
Codex för att granska den utan eget intresse i spelet,
bryggan för att koppla ihop dem via en ren CLI-överlämning,
en byggnation som får den sista rösten,
och en /loop för att köra det tills listan är tom.

En modell som skriver kod är en assistent. Två modeller som granskar varandra mot en byggnation som kan säga nej börjar likna ett team — och på denna körning skeppade det teamet 39 produktionsfixar medan jag tittade på.