Hoe zie je wat je agent vannacht heeft gedaan?
Een agent die 's nachts autonoom taken uitvoert, moet je de ochtend erna kunnen naspelen. Wat je moet loggen, waarom tracing met bijvoorbeeld OpenTelemetry helpt, en hoe je een eenvoudig audit trail en dashboard bouwt.
Als een AI-agent 's nachts zelfstandig taken uitvoert, moet je de volgende ochtend kunnen reconstrueren wat hij heeft gedaan: welke opdracht hij kreeg, welke stappen hij uitvoerde, welke tools hij gebruikte, welke gegevens hij las of wijzigde, welke fouten optraden en wat het uiteindelijke resultaat was. Dat bereik je met een combinatie van gestructureerde logging, tracing en een audit trail.
Alleen een eindmelding als "taak voltooid" is onvoldoende. Een autonome agent is in feite een proces dat zelf tussenstappen kiest. Je wilt daarom niet alleen het resultaat bewaren, maar ook het uitvoeringspad. Bij een fout moet je achteraf kunnen vaststellen waar het misging, en bij een geslaagde taak moet je kunnen controleren of de agent niet onderweg iets heeft gedaan wat niet de bedoeling was.
Wat moet je van iedere agent-run vastleggen?
Begin met iedere geplande uitvoering een uniek run-ID te geven. Alles wat tijdens die uitvoering gebeurt, krijgt hetzelfde ID. Daardoor kun je later alle gebeurtenissen van één nachtelijke taak bij elkaar zoeken.
Leg minimaal vast:
- wanneer de run begon en eindigde;
- welke agent en welke versie van de configuratie actief waren;
- welke opdracht of trigger de run startte;
- welke tools of API's de agent aanriep;
- welke relevante input en output daarbij hoorde;
- welke bestanden, records of systemen werden gelezen of gewijzigd;
- welke fouten ontstonden;
- welke retries of alternatieve routes zijn gebruikt;
- hoeveel tokens of andere compute-eenheden zijn verbruikt;
- eventuele API- of modelkosten;
- het uiteindelijke resultaat en de status van de run.
Dat betekent niet dat je onbeperkt alle ruwe data moet opslaan. Zeker bij persoonsgegevens, klantinformatie of vertrouwelijke documenten kan volledige logging juist een nieuw privacyrisico vormen — dezelfde principes van dataminimalisatie die gelden onder de AVG gelden ook voor je logs. Log daarom wat nodig is om gedrag te reconstrueren, maar maskeer wachtwoorden, tokens, persoonsgegevens en andere gevoelige waarden waar mogelijk.
Waarom is gewone applicatielogging niet genoeg?
Traditionele software volgt meestal een relatief voorspelbare route. Een AI-agent kan tijdens dezelfde opdracht verschillende keuzes maken. Hij kan bijvoorbeeld eerst een database raadplegen, daarna een bestand openen, vervolgens een zoekactie uitvoeren en uiteindelijk besluiten een bericht te genereren.
Een logregel als "Agent completed task" vertelt dan vrijwel niets.
Een bruikbare log bevat context. Bijvoorbeeld dat run 2026-09-14-001 om 02:13 een documentzoekactie uitvoerde, drie resultaten terugkreeg, daarna een bestand opende en vervolgens een schrijfactie uitvoerde.
Daarom is structured logging nuttig. In plaats van alleen vrije tekst
schrijf je gebeurtenissen als vaste velden weg, bijvoorbeeld: run_id,
timestamp, agent, action, tool,
status, duration, error en cost.
Die gegevens kun je later veel eenvoudiger filteren, analyseren en in een dashboard
tonen.
Hoe zie je welke route de agent doorliep?
Voor complexere agents is tracing nuttiger dan alleen logging. Een trace beschrijft één volledige uitvoering, terwijl afzonderlijke spans de stappen daarbinnen representeren.
Een nachtelijke run kan bijvoorbeeld bestaan uit:
- taak ontvangen;
- planning maken;
- database raadplegen;
- document ophalen;
- model aanroepen;
- resultaat controleren;
- bestand bijwerken;
- eindstatus opslaan.
Met tracing zie je niet alleen dát die stappen zijn uitgevoerd, maar ook in welke volgorde en hoe lang iedere stap duurde.
OpenTelemetry is hiervoor een algemeen gebruikte open standaard. Het is oorspronkelijk niet specifiek voor AI-agents ontwikkeld, maar dezelfde principes werken goed voor agent-systemen: traces, metrics en logs krijgen gedeelde identifiers, zodat je vanuit een foutmelding kunt terugzoeken naar de volledige uitvoering.
Moet je ook de beslissingen van een agent loggen?
Ja, maar probeer niet simpelweg alle interne modelredenering op te slaan. Voor operationele controle is dat meestal niet nodig en vaak ook niet wenselijk.
Log liever expliciete beslismomenten op applicatieniveau. Bijvoorbeeld:
- "geen relevante documenten gevonden";
- "primaire API niet beschikbaar, fallback gebruikt";
- "schrijfactie geblokkeerd wegens ontbrekende toestemming";
- "resultaat voldeed niet aan validatieregel, tweede poging gestart";
- "confidence onder ingestelde drempel, menselijke controle vereist".
Zo maak je zichtbaar waarom het systeem een bepaalde route nam, zonder afhankelijk te worden van lange, ongestructureerde modeloutput. Die beslissingen kun je bovendien beter testen: je ziet achteraf hoe vaak een agent een fallback gebruikte of hoeveel taken eindigden in menselijke controle.
Hoe bouw je een eenvoudig audit trail?
Voor een mkb-omgeving hoeft observability niet meteen uit een omvangrijk platform te bestaan. Een centrale database kan al voldoende zijn: één tabel voor runs en een tweede tabel voor events.
Een run bevat zaken als starttijd, eindtijd, agent, status en totaal verbruik. De eventtabel bevat alle individuele acties met hetzelfde run-ID.
Daarboven kun je een eenvoudig dashboard bouwen met bijvoorbeeld:
- aantal geslaagde en mislukte runs;
- openstaande of vastgelopen taken;
- gemiddelde uitvoeringsduur;
- fouten per tool;
- aantal retries;
- token- en API-verbruik;
- uitgevoerde schrijf- of verwijderacties;
- runs die menselijke beoordeling vereisen.
Belangrijker dan een fraai dashboard is dat je vanuit één afwijkende run kunt doorklikken naar de onderliggende gebeurtenissen.
Welke waarschuwingen wil je automatisch krijgen?
Je wilt niet iedere ochtend honderden logregels lezen. Monitoring moet uitzonderingen naar voren halen. Logische alerts zijn bijvoorbeeld:
- een geplande agent is helemaal niet gestart;
- een run duurt ongebruikelijk lang;
- dezelfde tool faalt meerdere keren;
- er ontstaan onverwacht veel retries;
- kosten of tokengebruik lopen sterk op;
- de agent probeert buiten zijn toegestane scope te werken;
- een destructieve actie mislukt of wordt geblokkeerd;
- een taak eindigt zonder geldige output.
Je dashboard gebruik je voor analyse. Alerts gebruik je voor situaties die direct aandacht nodig hebben.
Wat kijk je terug wanneer er iets misgaat?
Stel dat een medewerker 's ochtends ontdekt dat een rapport onjuist is bijgewerkt. Begin dan niet bij het taalmodel, maar bij de run zelf. Zoek op welk proces het bestand heeft gewijzigd en volg vervolgens de trace. Controleer achtereenvolgens:
- Welke opdracht kreeg de agent?
- Welke data heeft hij gelezen?
- Welke tool calls zijn uitgevoerd?
- Welke resultaten kwamen uit die tools?
- Welke beslissingen zijn vervolgens genomen?
- Waren er fouten of retries?
- Welke schrijfactie wijzigde uiteindelijk het bestand?
- Welke configuratie, prompt- of agentversie was actief?
Als deze informatie beschikbaar is, wordt een incident een technisch onderzoek. Zonder die informatie blijft het gissen.
Hoe lang moet je agentlogs bewaren?
Dat hangt af van het doel en het soort gegevens. Operationele logs kunnen een andere bewaartermijn hebben dan een formele audit trail. Maak daarom onderscheid tussen debuggegevens, operationele monitoring en auditinformatie: een foutmelding met technische details hoeft mogelijk niet even lang bewaard te blijven als een registratie dat een agent een financieel of juridisch relevant document heeft aangepast.
Voor privacy-first systemen geldt bovendien dat logging onder dezelfde principes van dataminimalisatie en toegangsbeheer moet vallen als de applicatie zelf. Een beveiligde RAG-omgeving is weinig waard als alle gevoelige prompts vervolgens onbeperkt in een onbeveiligd logbestand terechtkomen.
Conclusie
Een autonome AI-agent moet niet alleen taken kunnen uitvoeren, maar ook achteraf uitlegbaar en controleerbaar zijn. Geef iedere run een uniek ID, log tool calls, inputs, outputs, fouten, retries, verbruik en belangrijke beslissingen, en verbind die informatie via tracing tot één uitvoeringspad. Dan hoef je 's ochtends niet te vragen wat de agent vermoedelijk heeft gedaan — je kunt het daadwerkelijk terugzien.