AI-Agents: samenspel van model, context en harnas

TLDR:

AI is meer dan wat je in een browser doet. In dit bericht bespreek ik mijn ervaringen met het zelf samenstellen van een AI-stack: OpenCode als harnas, Qwen3.6:35b als open source model, draaiend op de NOLAI Ollama-server. Doel: met één prompt een interactieve webpagina + zelftest genereren vanuit een willekeurige YouTube-video.  Het werkt,  maar niet vanzelf. De kwaliteit hangt sterk af van het samenspel tussen model, context (skills/instructies), harnas en hardware. Qwen3.6 twijfelt regelmatig, wijt fouten soms aan de gebruiker, en volgt instructies minder consequent dan Anthropic-modellen. Zodra ik in dezelfde OpenCode-omgeving overschakelde naar Claude Sonnet, werden dezelfde taken razendsnel en zonder aarzelen uitgevoerd.

Conclusies:

  • Open source modellen zijn nu nog grotendeels een principiële keuze; de praktische resultaten blijven achter bij closed source.
  • Harnas, model én instructies (context) moeten alle drie kloppen — een goed model in een slecht harnas (of andersom) levert suboptimale resultaten.
  • De skills en het eerste werkende voorbeeld kwamen via Claude Code, daarna doorvertaald naar OpenCode/Qwen3.6.
  • Beide skills (interactieve YouTube-pagina én Zotero-samenvattingen) staan op GitHub.

De lange versie (ongeveer 10 minuten leestijd)

Zoals je waarschijnlijk weet als je mijn blog volgt, doe ik nog steeds pogingen om enigszins hands-on de verschillende ontwikkelingen rond (generatieve) AI bij te benen. Daarbij ben ik dan steeds op zoek naar praktische toepassingen, niet alleen de dingen “omdat het kan” (soms ook heel interessant) maar toch ook “wanneer heeft het meerwaarde?”. Twee deelvragen die ik daarbij de afgelopen tijd in wat meer in detail aan het uitzoeken ben geweest hebben te maken met het beheer van de ruim 3.000 bronnen die ik inmiddels in Zotero verzameld heb (3.045 om precies te zijn, waarvan – zo weet Claude Code te vertellen 24% (730) zonder bijlage en 76% (2.315) met bijlage; de oudste bron is Democracy and Education — John Dewey uit 1916 en de meest recente GOOD PRACTICE in AI for EDUCATION: Spotlight on EU case studies and insights uit 2026). Met 233 bronnen met het label AI, 86 voor digitale geletterdheid van studenten (29 voor die van docenten), 76 bronnen gericht op DigComp 3.0, 36 specifiek voor NOLAI docentprofessionalisering is het een goede afspiegeling van waar ik me mee bezig hou.

Dat project kom ik nog wel een andere keer op terug, in deze blogpost wil ik wat langer stilstaan bij het maken van interactieve weergaves van YouTube-video’s. Als je op deze pagina kijkt, dan zie je dat ik daar al langer mee experimenteer. Eerst via AI-Studio van Google. Dat was namelijk de eerste (en tot nu toe enige?) site die de inhoud van YouTube-video’s daadwerkelijk mee kon nemen bij het beoordelen van de inhoud en daarna maken van een ondersteunende navigatiestructuur.

Maar de tijd van ‘alleen’ alles in een browser typen is al lang voorbij. Ik heb hier al vaker over vibecoding geschreven, maar Antigravity is van Google, Claude Code van Anthropic. Zolang als ik al met AI, kijk ik ook steeds naar de open source mogelijkheden (zie bv mijn PizzAI Presentation 22-02-2024),  dus nu ook. Daarom ben ik aan de slag gegaan met de combinatie van OpenCode met Qwen3.6:35b-A3B op de NOLAI Ollama-server.
Uitdaging: op basis van 1 prompt een werkende interactieve pagina met zelftest laten genereren van een willekeurige YouTube-video.

Hoe dat eruit ziet? Nou zo:

De vier voorbeelden doen al vermoeden dat het inmiddels werkt, maar het ging niet vanzelf. En de reden daarvoor is het samenspel van model, context en harnas waar ik in de titel naar verwijs. Dan sla ik “hardware” even over,  maar die is ook relevant.

Terminologie

Om te voorkomen van 90% nu afhaakt, heel kort even wat terminologie. Zoals je wellicht weet is generatieve AI niet 1 ding. Als jij bv naar chatgpt.com gaat of naar gemini.google.com dan maak je gebruik van een combinatie van componenten. Je logt in bij de webapplicatie (het harnas) die gebruik maakt van een bepaald LLM-model (bv GPT 5.5 of Claude Sonnet 4.7 of Gemini 3.1 Pro) om bepaalde functionaliteit te bieden. OpenCode is een voorbeeld van een ander harnas, net zoals Claude Desktop, Claude CLI, OpenClaw etc.
Die modellen zijn closed source (zoals die van OpenAI, Anthropic, Google) of open source (zoals bijvoorbeeld Qwen3.6) en kunnen ergens in de cloud draaien op een combinatie van stevige hardware, thuis op een hardwerkende desktop met 1 GPU of zoals bij NOLAI op een cluster dat krachtiger is dan wat ik thuis heb staan, maar verbleekt bij de infrastructuur die bedrijven als Google en Anthropic hebben.

Vaak zul je ‘gewoon’ gebruiker zijn en een door één leverancier aangeboden combinatie van lagen gebruiken (de lijntjes in de afbeelding hiernaast kloppen overigens niet allemaal, maar het ging om de illustratie van de lagen). In andere gevallen, zoals ik gedaan heb afgelopen week, kies je je combinatie van lagen bewust.

Laatste term die handig is om te kennen is Agent Skills. Bedacht door Anthropic, inmiddels door veel partijen geadopteerd. Zijn eigenlijk gewoon tekstbestandjes in Markdown formaat die de agent vertellen hoe een bepaalde taak aan te pakken. Bijvoorbeeld “hoe maak je een interactieve pagina op basis van de url van een YouTube video?”

Waarom kiezen?

Een belangrijke reden om bewust te willen kiezen voor een eigen combinatie van lagen is privacy. Als ik een document in ChatGPT upload dan deel ik dat met OpenAI, het bedrijf achter ChatGPT. Afhankelijk van de inhoud van het document kan zijn dat ik dat niet wil (bv omdat het privé-informatie is ) of dat ik dat niet mag (omdat het interne informatie van de HAN of NOLAI is of omdat het studentinformatie bevat). Dan helpt het als het LLM-model op hardware draait die lokaal is (dus gewoon bij mij thuis) of bij de organisatie zelf (zoals bij NOLAI die haar eigen testserver heeft). Dan weet je 100% zeker dat de data niet ergens in de cloud terecht komt.
Keerzijde is, zo heb ik ook deze week geconstateerd dat die modellen en hardware ook nu nog lang niet altijd er in slaagt om opdrachten uit te voeren waarvoor met name de modellen van Anthropic glansrijk slagen.
De keuze voor een ‘harnas’ (de toepassing waar het model in draait) heeft weer gevolgen voor wat een model daadwerkelijk kan doen of niet. Als ik in de browser bij AI-Studio vraag om een HTML-pagina te maken dan krijg ik de HTML-code die ik dan in een bestand moet opslaan om te kunnen openen. Kan best met 1 bestand. Maar in het voorbeeld van Zotero wil ik dat informatie ín Zotero zelf wordt aangepast. Ook dat kan vanuit de browser, maar is soms wat omslachtiger. Met bv Claude CLI open ik een projectmap en start daar de client en voer opdrachten uit. Dat maakt het geheel enerzijds krachtig, maar ook eenvoudiger te overzien als het gaat om de vraag waar de AI toegang toe heeft.
En als het overzichtelijkheid gaat, dan laat Claude Desktop op dit moment wel zien dat je als bedrijf perfecte LLM-modellen kunt maken, maar toch een zooitje kunt maken van het harnas dat je aan je gebruikers aanbiedt. De afbeelding van een Raspberry Pi in de infographic is er omdat Gemini dacht dat ik het daar over had, maar ik het het over het Pi Harness. Als je meer wilt weten over OpenClaw kijk dan zeker even naar de video van Hanna Fry. Maar dat is iets voor een andere keer.

Samenvattend

Dus toen ik zei: “de combinatie van OpenCode met Qwen3.6:35b-A3B op de NOLAI Ollama-server”, had ik het qua hardware over de Ollama-server van NOLAI (okay, dat is hardware + software – maar de ‘onderste’ laag dus),  qua model over het open source Qwen3.6:35b-A3B model dat daarop draait en over OpenCode als harnas van de agent.

…om het toch nog even ingewikkeld te maken….OpenCode is een harnas dat een versie voor de Mac, Linux en Windows heeft. Op Windows kun je het gewoon op Windows installeren, als webserver zodat je in de browser kunt werken én op WSL2 (het Linux subsystem op Windows) draaien. Dat laatste wordt geadviseerd op de OpenCode website, maar blijkt in de praktijk voor heel wat uitdagingen te kunnen zorgen. Zo ‘spraken’ de client op WSL2 en Zotero op Windows initieel niet met elkaar. Daar stond tegenover dat het installeren en gebruiken van een aantal van de ondersteunende toepassingen op WSL2 een stuk gemakkelijker was dan op Windows. Kortom, beide oplossingen hadden zo hun voordelen en nadelen.

Een aantal ervaringen in de vorm van voorbeelden

Ik zal het toelichten aan de hand van een aantal screenshots, die op mijn verzoek door Qwen3.6 zelf ook van toelichting voorzien zijn (de cursieve omschrijving). Klik even op de afbeelding​ voor een grotere versie.

Qwen3.6 aarzelt tussen meerdere benaderingen voor het genereren van VTT-ondertitelfiles in plaats van direct te handelen.

Qwen 3.6 twijfelt veel en vaak. En dat is soms best onhandig als je wilt dat hij een bepaalde serie van stappen achter elkaar zet en dat dan altijd op dezelfde manier doet. Dat is heel complex. Andere modellen (zoals die van Anthropic) zijn daar veel beter in, maar niet allemaal. Google Gemini 3 Flash bijvoorbeeld is wat dat betreft een ramp. Die doet vaak maar wat.

Gebruiker reageert boos op AI die de fout afschuift op een Chrome-extensie; AI onderkent later dat het een YT Player API-probleem was.

Haha, mooie beschrijving. Ja, dat kwam ook wel voor met Qwen 3.6 tijdens de eerdere versies van het ontwikkelen van de Skill. In dit geval werd de video niet getoond. Als ik dan een screenshot van de foutmeldingen in de browser toonde, dan zat daar ook een melding tussen van de plugin die reclames in de YouTube video’s probeert te skippen. De oplossing (versie van de pagina) die door Claude Code gemaakt werd had daar geen problemen mee. Dus ik wist dat het wel kon ook zonder de plugin te de-activeren. De versie die Qwen 3.6 maakte had er in het begin wel problemen. Maar Qwen wilde dan nog wel eens het probleem bij mij neerleggen. Zelfs terwijl ik het model in de projectmap 2 voorbeelden van uitwerkingen had gegeven met de juiste code.

AI merkt op dat de NL-vertaling per ongeluk is gewist tijdens het opruimen van temp-bestanden, zodat NL VTT nu dezelfde Engelse tekst bevat.

Soms vroeg ik me af wat het model gedronken had, want dan sloegen antwoorden echt nergens op. Zoals hier waar de blije conclusie was dat het probleem opgelost was, en oh ja, de agent had de tijdelijke bestanden van de vertaling naar het Nederlands verwijderd voordat de vertaling af was en nu maar gewoon de Engelse ondertiteling over de Nederlandse heen geschreven. Was niet erg toch?

Qwen3.6 twijfelt of het 3 of 4 subagents parallel mag starten, neigt toch naar 4 ondanks de richtlijn om max 3 te gebruiken.

Soms was het model juist weer heel streng voor zichzelf. In de instructies stond dat er niet meer dan 3 subagents tegelijkertijd opgestart mochten worden. Ik had gevraagd om de volgende 4 items te verwerken. Maar mocht dat wel?

Subagent verwerkt Zotero-item BM8WQLLVH succesvol: titel, samenvatting van scoping review over AI in medische studie, tag toegevoegd.

Hier zie je hoe dat dan in de main agent eruit kon zien. Bovenin bij “General Task….” de aanroep voor de subagent, dan de terugrapportage en omdat ik gevraagd had 1 item te verwerken, stopte de verwerking daarna.

AI bevestigt dat de pipeline volledig werkt op Windows zonder WSL2, met notitie dat subagent efficiënter was dan verwacht (~54 seconden).

De oorspronkelijke pipeline was ontwikkeld op WSL2, dan zijn de paden naar bestanden en mappen anders én heb je andere Python modules. Het proces was er daarnaast best traag, dus was ook het taalmodel positief verrast toen het op Windows een stuk sneller ging.

Gebruiker schrijft in hoofdletters dat AI een subagent had moeten gebruiken in plaats van de commando’s direct uit te voeren.

Gevalletje van “AI probeert zelf na te denken” waarbij OpenCode besloten had dat hij helemaal geen subagent nodig had voor 1 item terwijl ik dat juist deed om te testen of hij ook bij 50 items subagents zou gebruiken.

Subagent verwerkt T2RPAA75 in 10 minuten 56 seconden met 6 toolcalls; AI merkt op dat hij had moeten stoppen na één item, zoals gevraagd.

Dit was er eentje die ik niet helemaal opgelost kreeg. De subagent was zelf 4,5 minuut bezig, maar het complete proces was ruim 6 minuten langer bezig. Veel overhead dus.

AI beschrijft de juiste subagent-workflow voor het verwerken van Zotero-items: –dry run, markdown lezen, samenvatting schrijven, volledige pipeline.

Als OpenCode gebruikt maakte van subagents, dan was het cruciaal dat de juiste instructies werden doorgestuurd. Zo’n subagent had namelijk de rest van de context niet. Alles kwam van die opstartinstructie. Als dat goed ging dan was dat eigenlijk heel erg mooi.

Claude Sonnet 4.5 plant het kopiëren van README.md, VTT-files en een PDF naar de pakketstructuur, met 27.236 tokens verbruikt.

Zoals gezegd zit je bij OpenCode niet vast aan 1 provider. Hier had ik het project voor de YouTube-video’s geopend in OpenCode, via Github Copilot gekoppeld, daar Claude Sonnet 4.5 gekozen en de opdrachten die voor Qwen 3.6 een uitdaging waren, werden razendsnel en zonder aarzelen uitgevoerd. Gewoon met 1 opdracht een interactieve webpagina, met quiz en (uitbreiding) een pdf met een samenvatting. Mooi voorbeeld van hoe harnas, model, context en infrastructuur goed samenwerken.

VS Code met create_summary.py script en Claude Code-chat die plant 3 Zotero-items parallel te verwerken volgens de les uit de vorige sessie.

Je kunt OpenCode (wat je ziet is anders dan het taalmodel dacht namelijk niet Claude Code) ook in Visual Studio Code (VSCode) draaien. Dan heb je dus het ene harnas in het andere. Handig als je bijvoorbeeld werkt aan tekstdocumenten of als je gemakkelijk ook visueel overzicht wilt houden over de code. Dat werkt in zoiets als VSCode dan toch net weer wat prettiger. Zeker ook als je een combinatie wilt houden van dingen die jij zelf doet en waar je de agent bij inzet.

Conclusies

Ha, je bent tot hieronder gekomen. Super. Dat toch wat conclusies (n=1, tijdperiode=2 weken) op een rij voor de ervaringen tot nu toe:

AI is meer dan wat je in de browser kunt doen

Als je beeld van AI nog is ChatGPT of zelfs “Custom GPTs” in de browser, realiseer je dan dat een deel van de wereld inmiddels al een paar stappen verder is. De manier waarop ik hier nu agents gebruik is nog heel braaf. Claude Desktop biedt een onderdeel Cowork met de mogelijkheid om scheduled tasks te gebruiken. Dus dat bepaalde opdrachten voor je agent (die in het geval van Claude Cowork, als jij daar toestemming voor geeft, ook je mails, je agenda en de documenten die je in de cloud hebt staan kan benaderen) ook uitgevoerd kunnen worden als jij niet achter je computer zit. Open source alternatieven zoals OpenClaw en Agent Zero kunnen dat ook.

Optimalisatie van alle onderdelen is noodzakelijk

Er wordt best veel op Anthropic gemopperd online. Voornamelijk omdat veel mensen steeds weer tegen de grenzen van wat ze mogen met hun abonnement van €23,- per maand. En ook mensen die tegen de grenzen van het 100 of 200 dollar account aanlopen. Deels moet het bedrijf wel, ik schreef al eerder over het piepen en kraken van het onderliggende businessmodel. En dat ging zeker niet alleen over Anthropic. Maar een belangrijke reden om toch te blijven voor veel mensen is dat het bedrijf veel van de onderdelen aanbiedt in een best okay combinatie. De manier waarop de modellen instructies opvolgen of antwoorden geven is gewoon prettiger en beter. Probeer maar eens bronnen te zoeken met een APA7-verwijzing erbij op claude.ai versus ChatGPT of Gemini. De kans is groot dat je daar wél bestaande literatuur retour krijgt terwijl de anderen nog steeds heftig hallucineren op zo’n vraag. Het bedrijf probeert als een gek om sneller de gewenste features op de markt te krijgen dan concurrenten OpenAI (die ze qua theoretische marktwaarde ingehaald lijken te hebben) en Google (die ze uiteraard nog lang niet ingehaald hebben).

Ervaren gebruikers willen niet zo’n “gericht op de gemiddelde gebruiker” oplossing en stellen hun eigen combinatie van onderdelen samen. Dat zal ongetwijfeld een minderheid blijven die dat doet. Simpelweg al omdat het complex is en de meeste mensen daar gewoon geen trek in hebben. Of ook gewoon de kennis niet.

Open Source modellen zijn nu nog een principiële keuze

Een open source harness zoals OpenCode gebruiken is gemakkelijk. Open source modellen zijn nog wat meer een principiële keuze. In de meeste gevallen is de hardware waar die modellen op draaien dusdanig minder krachtig dat ook als het model zelf heel erg goed is, de resultaten simpelweg nog lang niet.

Gelukkig is het ook niet persé een kwestie van of het ene of het andere. Tenminste, in een ideale situatie niet. Zo heb ik meer dan eens Claude Code om hulp gevraagd bij het verbeteren van de setup voor OpenCode. Als het ging om optimalisatie van de skills en prompts. Het eerste werkende voorbeeld van de interactieve YouTube-pagina kwam van Claude Code en is daarna doorvertaald naar OpenCode die er in combinatie met Qwen3.6 meestal prima mee overweg kon (mits de video niet té lang was).

This not the end

Dit bericht is een “stand van zaken op 5 mei 2026”. Afhankelijk van hoe ver in de toekomst je dit leest (weken, maanden) zal de werkelijke situatie weer gewijzigd zijn. Helaas zitten we nog wel even in de periode dat grafische kaarten en geheugen belachelijk duur zijn omdat de hele wereld datacentra voor AI aan het bouwen is. Maar de ontwikkelingen rond open source modellen is stevig ondanks al dat geweld. De Asian Boss-video legt uit waarom we daar deels ook China voor te danken hebben. Maar Gemma 4 van Google is een voorbeeld van hoe ook een groot bedrijf meerdere lijnen volgt als het gaat om haar strategie op dit vlak. Zie bijvoorbeeld deze video van Ali Salam waarin dat haarfijn uitgelegd wordt.

Je kunt ook wel concluderen dat op dit moment de interactive video skill in OpenCode er eentje is die ik zelf in ieder geval een absolute toevoeging vindt als het gaat om de hulpmiddelen die ik ter beschikking heb om iets uit te leggen. En zoals het hoort (vind ik) staat die skill natuurlijk ook netjes ingepakt op Github zodat jij er ook gebruik van kunt maken als je wilt. De skill voor het maken van samenvattingen met Zotero is daar ook aan toegevoegd. Ontworpen initieel in OpenCode, verbeterd met behulp van Claude Code (maar nog steeds voor OpenCode), daarna toegevoegd aan de repository met behulp van Google Antigravity.

Cognitive offloading is niet altijd een slecht ding. Ja, als je je werkstuk door ChatGPT laat maken is dat onverstandig. Maar in toenemende mate merk ik dat ik met behulp van AI dingen aan het doen ben die ik zónder helemaal nooit gedaan zou hebben. Omdat het te complex was, te veel werk, te veel stappen. En dan is cognitive offloading heel nuttig. Nou dit bericht plaatsen en er een samenvatting van laten maken. Voor iedereen die geen tijd heeft om dit helemaal te lezen.

 

0 0 stemmen
Bericht waardering
Abonneer
Abonneren op

Deze site gebruikt Akismet om spam te verminderen. Bekijk hoe je reactie gegevens worden verwerkt.

0 Reacties
Inline Feedback
Bekijk alle reacties
0
Tips, opmerkingen, aanvullingen, ideeën naar aanleiding van dit bericht?x