Under två veckor körde jag drygt 500 Claude Code-sessioner och cirka 700 underagenter, och jag visste inte vilka av dem som väntade på mig. Den här guiden går igenom sex steg till en överblick över dina AI-agenter, med de fel jag hittade i mina egna siffror på vägen.
Steg 1: Bestäm vad överblicken ska visa
Börja med frågan som kostar mest tid: vilka sessioner väntar på mig? En session stannar när en agent vill göra något som kräver ditt tillstånd, till exempel köra ett kommando den inte har klartecken för. I appen är det en rad bland alla andra. För en schemalagd rutin som startar en måndagsmorgon finns ingen som tittar.
När jag jämförde min första version av överblicken med appens sessionslista den 21 oktober hade fem schemalagda rutiner stått stilla i mer än 50 timmar, och min överblick kallade dem klara. Deras sista verktygsanrop hade aldrig fått något svar, och appen markerade dem fortfarande som körande. Senare visade appen själv en Blocked-rad för en av dem. För de övriga är väntan på godkännande min slutsats, jag har inte öppnat var och en.
Skriv upp tre frågor innan du bygger något: vad väntar på mig, vad har fastnat och vad förbrukar tokens. Bygg bara den första först.
Steg 2: Läs data som redan finns på disken
Du behöver ingen databas. Tre källor skrivs redan åt dig:
- Claude Codes sessionsloggar, en fil per session med varje meddelande, verktygsanrop och tokenräkning.
- Appens egna sessionsfiler, som kopplar varje logg till titeln i sidofältet.
- Hooks, små skript som Claude Code kör vid händelser som sessionsstart, notiser och när en tur är klar (Claude Code, hooks).
Mina sju hooks skriver en rad per händelse till en loggfil. Ställ in dem som asynkrona. Mitt hookskript tar cirka 215 millisekunder per körning på min dator (median av tio körningar), och ett tomt Node-skript tar cirka 80. En synkron hook vid varje verktygsanrop hade lagt ungefär en femtedels sekund på varje anrop.
Ett Python-skript läser loggarna, en lokal server samlar läget och en webbsida ritar upp det. Datan stannar på min dator. Pythondelen använder bara standardbiblioteket, och kartan hämtar Three.js och bloom-effekten från ett CDN. Behöver du sätta upp Claude Code först finns en setup-guide för konsulter.
Steg 3: Räkna status ur händelser
Jag räknar status ur händelserna och läser aldrig sessionernas egna sammanfattningar av läget. En notis om tillstånd betyder att sessionen väntar, en avslutad tur betyder att det är din tur, och ett sista verktygsanrop utan svar i en session som varit tyst i mer än tre minuter betyder trolig väntan på tillstånd.
Den sista regeln skrev jag efter att jag sett att appens lista och min överblick inte stämde. Den är alltså en gissning som förklarar de fall jag såg, och du bör kontrollera den mot dina egna sessioner innan du litar på den.
Steg 4: Börja med en lista och bygg sedan kartan
Min första vy var en tidslinje med en rad per session, färgade punkter för verktygsanrop och en kö högst upp med de sessioner som väntar på mig. Den är exakt och tråkig, och den behövs som jämförelse.
Sedan ritade jag samma data som en by. Varje kund är en by med ett slott, varje session en byggnad vars storlek följer antalet tokens och varje underagent en bybo. Rök betyder att sessionen kör, en röd fyr att den väntar på tillstånd och en blå flagga att det är min tur. En banderoll högst upp listar de blockerade sessionerna med en knapp som öppnar dem. I skärmdumparna har kundnamn och titlar bytts mot Kund A och Uppdrag N.
Stilen är hämtad från äldre strategispel som Age of Empires, men grafiken är ritad i kod med Three.js och inga modeller eller bildfiler används. Dygnsrytmen följer min klocka. På natten dyker en skogsrave upp mellan byarna, där antalet dansare följer antalet sessioner som blivit klara under dagen. Ravet är på skoj. Jag har inte mätt om en karta är tydligare än en tabell.
Steg 5: Kontrollera siffrorna mot en källa
Jämför överblicken med något du litar på innan du litar på den. Jag hittade två fel.
Det första gällde tokens. Claude Code skriver samma svar från modellen som flera rader i loggen, en per innehållsblock, och min första version summerade varje rad. Av 91 079 rader med tokenräkning var 56 392 dubbletter, alltså 62 procent. Mätt den 21 oktober visade överblicken ungefär 160 miljoner output-tokens för två veckor när rätt tal var cirka 43 miljoner. En ny kontroll den 26 oktober gav samma proportioner: 61,5 procent dubbletter och faktor 3,7. Nu räknas varje svar en gång. Jag har inte jämfört med något externt verktyg än, så de 43 miljonerna är mitt eget räknesätt på samma loggar.
Det andra gällde status. Jag jämförde 60 sessioner i överblicken med appens lista. I ett slumpurval om 20 var 3 fel: två som appen visade som körande och en som jag visade som aktiv. Efter regeln i steg 3 stämde 20 av 20 den 21 oktober. Regeln skrev jag efter att ha sett resultatet, så det är ingen oberoende bekräftelse. Det visar bara att regeln förklarar just de här fallen.
Steg 6: Låt vyn öppna sessionen och godkänn själv
Jag ville ha en knapp som godkänner väntande sessioner direkt i kartan. När jag började bygga den stoppade Claude Codes automatiska säkerhetskontroll mig. Kod som godkänner verktygsanrop åt andra sessioner går förbi det skydd som gör att du vågar låta agenterna köra själva, så stoppet gjorde det det ska.
I stället öppnar en knapp rätt session i appen, där jag trycker på Allow själv. Webbläsarfönstret i appen verkar inte skicka vidare länkar av typen claude://, så den lokala servern ber Windows öppna länken. Servern svarar bara på anrop från sin egen adress och bara för sessioner den känner till.
Ett bra nästa steg är att ta fram de kommandon som återkommer i dina schemalagda rutiner och lägga in de ofarliga som tillåtna regler, så att rutinerna blockeras mer sällan från början. Om överblicken kortar tiden från att en session blockeras tills du svarar vet jag inte än. Händelserna loggas redan, så det går att mäta.
Claude skriver utkastet ur det jag arbetat med under veckan, och jag läser och godkänner varje inlägg innan det publiceras.