Wat is een agent harness voor AI-modellen?
Een agent harness vormt de essentiële laag rondom een taalmodel. Ontdek hoe deze lus, tools en sessiestatus een statisch model omzetten in een actieve, zelfstandige AI-agent.
Wat een agent harness is
Een agent harness is het programma dat rondom een taalmodel draait en dit omvormt tot een agent. Het bevat de lus die het model herhaaldelijk aanroept, de definities van de tools die het model mag gebruiken, de toegangsregels die bepalen welke van die aanroepen daadwerkelijk worden uitgevoerd, de sessiestatus die tussen beurten behouden blijft, en de werkmap waarin de taken worden verricht. Het model binnen dit geheel is vervangbaar.
Die laatste zin is de belangrijkste. Een model op zichzelf beantwoordt een vraag en vergeet u daarna weer. Een harness vraagt het model wat de volgende stap is, voert het commando uit waar het model om vroeg, voert het resultaat terug en vraagt opnieuw. Die herhaling is wat mensen bedoelen wanneer ze spreken over een "agent". Als de omliggende terminologie nog onduidelijk is, zet het verschil tussen een AI-agent, een LLM en een assistent de begrippen op een rij voordat u een tool kiest.
De harness is niet het model
Deze twee worden vaak verward omdat leveranciers ze onder één merknaam uitbrengen.
dsh en DeepSeek zijn verschillende producten. DeepSeek Harness, gepubliceerd op github.com/deepseek-ai/deepseek-harness op 13 augustus 2026 onder de MIT-licentie, is een Node-programma dat u op een machine installeert. De DeepSeek-modellen zijn gewichten die achter een API (application programming interface) worden aangeboden. Wijs dsh naar een model van een andere leverancier en het blijft werken, omdat de harness alleen iets nodig heeft dat berichten accepteert en tool-aanroepen retourneert.
Claude Code en Claude vormen hetzelfde paar. Claude Code is een harness: een terminalprogramma met een loop, een permissiesysteem en tools voor bestanden en de shell. Claude is de modelfamilie die standaard wordt aangeroepen. Codex en Gemini CLI zijn op dezelfde manier gescheiden.
Dit is de test die uitsluitsel geeft. U installeert een harness. U roept een model aan. Als het ding een versie op uw schijf heeft en een configuratiebestand in uw home-directory, dan is het een harness. Als het een string is in dat configuratiebestand, zoals deepseek-chat, dan is dat het model.
Wat de loop daadwerkelijk doet
Eén ronde van een harness-loop ziet er als volgt uit. Lees dit zorgvuldig, want bijna elk verschil tussen harnesses zit in deze vijf stappen.
- Het harness stuurt het gesprek tot nu toe, plus een lijst met tooldefinities, naar het model.
- Het model antwoordt met tekst, of met een verzoek om een van die tools aan te roepen.
- Het harness controleert dat verzoek aan de hand van zijn toegangsregels en voert het ofwel uit, of stopt om het u te vragen.
- Het harness voert de tool uit, legt de output en de exitcode vast, en kort de output in als deze erg lang is.
- Het harness voegt dat resultaat toe aan het gesprek en keert terug naar stap 1.
Stap 3 is waar harnesses in het dagelijks gebruik het meest van elkaar verschillen. Een harness dat voor elk commando toestemming vraagt, is veilig maar vermoeiend. Een harness dat nooit vraagt, zal uiteindelijk een destructief commando uitvoeren op een pad dat het model verkeerd heeft geïnterpreteerd. Elk serieus harness heeft tegenwoordig een tusseninstelling: een allowlist van commando's die zonder vragen worden uitgevoerd, en een prompt voor al het overige.
Stap 1 is waar de rest van de verschillen zitten. Het gesprek groeit bij elke ronde en een model heeft een vast contextvenster, dus het harness moet beslissen wat wordt verwijderd, wat wordt samengevat, en wat naar een bestand wordt geschreven om later weer in te lezen. Die beslissing is grotendeels de reden waarom twee harnesses die hetzelfde model aansturen, werk van verschillende kwaliteit leveren.
De meeste harnesses koppelen tegenwoordig externe tools via MCP (model context protocol), een standaardmanier om een tool beschikbaar te stellen aan elk harness dat dit protocol ondersteunt, zodat één integratie meerdere harnesses bereikt. MCP-servers draaien op een VPS behandelt die kant van het proces.
Agent-harness versus agent-framework
Deze vraag komt telkens naar voren wanneer er een nieuwe harness verschijnt, en de antwoorden lopen uiteen, deels omdat de leveranciers het er niet over eens zijn. Hier is de versie die standhoudt.
Een framework is een bibliotheek die u importeert. U schrijft de loop, u bepaalt wanneer het model wordt aangeroepen en u verwerkt de resultaten van de tools zelf. LangChain is het bekende voorbeeld: u krijgt bouwstenen en u stelt de agent samen in code.
Een harness is een programma dat u uitvoert. De loop is al geschreven, de tools bestaan al en het permissiemodel heeft al een standaardinstelling. U krijgt een werkende agent bij het eerste commando en configureert deze vanaf dat punt.
De installatietest is meestal doorslaggevend. Als u het installeert en vervolgens code schrijft, is het een framework. Als u het installeert en er vervolgens mee communiceert, is het een harness.
De grens is oprecht omstreden, en het duidelijkste bewijs is de documentatie van LangChain zelf. Sinds augustus 2026 beschrijft het Deep Agents als een "opinionated, batteries-included" framework gebouwd op LangGraph, terwijl de langchain-ai/deepagents repository zichzelf "the batteries-included agent harness" noemt. Beide beschrijvingen zijn terecht. Deep Agents is een Python SDK (software development kit) die u importeert, dus de installatietest classificeert het als een bibliotheek, maar het bevat voldoende standaardgedrag waardoor mensen het als een harness gebruiken. Microsoft bracht in augustus 2026 een harness en gehoste agents uit voor algemene beschikbaarheid, wat aantoont dat het woord nu een productcategorie is in plaats van jargon.
Stel daarom de vraag die uw werklast voorspelt. Als u de loop schrijft, bent u verantwoordelijk voor de loop: de retries, het inkorten van de context, de permissievragen en het logboek van wat er is gebeurd. Als de loop wordt meegeleverd, neemt u iemands anders antwoord op al die zaken over, wat veel sneller is om mee te beginnen, maar later moeilijker aan te passen is.
Het verschil tussen een harness en een chatvenster
Een chatvenster en een harness tonen beide de uitvoer van een model. Het verschil zit in de computer waarop het werk wordt uitgevoerd. In een chatvenster wordt alle code die het model uitvoert, uitgevoerd binnen de sandbox van de leverancier, op bestanden die u heeft geüpload, en deze verdwijnt zodra de sessie eindigt. Een harness voert tools uit op de machine waarop u deze heeft gestart, als de gebruiker die deze heeft gestart, op uw echte bestanden en met uw echte inloggegevens in de omgeving.
Dat is in twee zinnen het volledige voordeel en het volledige risico. De agent kan eindelijk het werk uitvoeren. De agent kan het werk echter ook verwijderen.
De harnesses die daadwerkelijk worden gebruikt
Deze lijst is bewust gedateerd op 19 augustus 2026. De categorie ontwikkelt zich wekelijks en elk overzicht veroudert snel.
- Claude Code en Codex zijn vendor-harnesses. Ze zijn terminal-georiënteerd, standaard gekoppeld aan de modellen van de eigen leverancier en beschikken over de meest verfijnde afhandeling van rechten. Hoe Claude Code, Cursor, Codex en Copilot zich verhouden behandelt deze grondig.
- DeepSeek Harness (
dsh) is MIT-gelicentieerd en gebouwd op één principe: alles is een plugin. Modellen, tools, sessies, sandboxes en de gebruikersinterface zijn daardoor allemaal uitwisselbare onderdelen. Op 19 augustus 2026, zes dagen na de publicatie, stond het op ongeveer 166.800 GitHub-sterren. - Hermes, van Nous Research, is eerder een algemene autonome agent dan een programmeertool. Het werd in februari 2026 onder MIT uitgebracht en slaat herinneringen en vaardigheden op in een lokale SQLite-database op uw eigen machine. Hermes zelf hosten op een VPS doorloopt dit proces.
- Omnigent is een meta-harness: het stuurt andere harnesses aan, waaronder Claude Code en Codex, via één API met gedeelde sessies, uitgavenlimieten en een sandbox op besturingssysteemniveau. Omnigent als multi-agent harness bespreekt de voordelen hiervan.
- OneCLI is een sandbox-harness gericht op teams, gebouwd rond een gateway die echte inloggegevens injecteert in uitgaande verzoeken, zodat de agent zelf alleen tijdelijke placeholder-keys ziet.
De dsh quick start is een enkel commando; dit eenmaal uitvoeren is de snelste manier om te zien wat een harness is. Hiervoor moet Node.js op de machine aanwezig zijn.
npx @deepseek-ai/dsh webDit start de web-UI (gebruikersinterface) op http://127.0.0.1:3080. Lees de README voordat u erop vertrouwt, aangezien dsh zichzelf omschrijft als een developer preview en expliciet vermeldt dat er wijzigingen zullen plaatsvinden die de compatibiliteit verbreken. DeepSeek Harness draaien op een VPS behandelt de serverinstallatie en waarom dat adres begint met 127.0.0.1 legt de standaard loopback-instelling uit.
Routers bevinden zich boven de harness
Een modelrouter fungeert als een lokale proxy tussen de harness en de API van de provider. Claude Code Router is hier het gangbare voorbeeld: deze bindt standaard aan 127.0.0.1:3456, accepteert de verzoeken die Claude Code anders naar zijn eigen leverancier zou hebben gestuurd, en stuurt deze door naar de provider die u heeft geconfigureerd. De harness merkt niet dat er iets is veranderd.
Routers bestaan omdat het model uitwisselbaar is; ze vormen daarmee een goed bewijs voor het hoofdpunt van dit artikel. Ze concentreren echter ook risico's, omdat de proxy elke prompt ziet en elke sleutel van de provider beheert. Behandel dit als infrastructuur, niet als een gemaksproduct. Waar een harness zijn API-sleutels en modelinstellingen bewaart is hetzelfde probleem, maar dan één laag lager.
Wat verandert er wanneer de harness op een VPS draait
Er veranderen vier zaken wanneer de harness van uw laptop naar een gehuurde server verhuist.
Het blijft draaien als u de laptop dichtklapt. Een langdurige taak overleeft uw reistijd en uw batterij. Start deze binnen tmux en koppel los:
tmux new -s agent
# start the harness, then press Ctrl-b and then d to detach
tmux attach -t agentVoor alles wat na een herstart moet terugkeren, is een user service beter dan een terminalsessie:
loginctl enable-linger $USER
systemctl --user status my-agent.serviceloginctl enable-linger is het onderdeel dat mensen vaak vergeten. Zonder deze instelling stopt systemd uw user-services zodra uw laatste SSH-sessie wordt gesloten. Hierdoor sterft de agent bij het uitloggen zonder dat er een foutmelding verschijnt. Dsh headless draaien onder systemd bevat het unit-bestand. Zodra er één sessie op die server actief is, kost een tweede sessie u niets extra's, en twee Claude Code-sessies op dezelfde machine kunnen berichten naar elkaar sturen. Zo kan de sessie die u vanochtend startte een taak overdragen aan de andere, zonder dat u dit handmatig hoeft te doen.
Het bewaart uw sleutels. De provider-sleutel staat nu in een configuratiebestand op die server. Controleer wie dit kan lezen:
ls -l ~/.configElk proces dat onder uw gebruiker draait, kan dat bestand lezen; dit geldt ook voor de agent en alles wat de agent uitvoert.
Het kan uw andere machines bereiken. Een VPS in hetzelfde privénetwerk als uw andere machines geeft de agent een route naar die systemen. Dat is precies het doel, maar het bepaalt ook de omvang van de mogelijke schade (blast radius).
Het is bereikbaar vanaf elke locatie. De meeste harnesses bieden een web-UI aan, en meestal binden ze deze om een goede reden aan loopback. Controleer die van u:
ss -tlnp | grep 3080127.0.0.1:3080 betekent dat alleen de server zelf verbinding kan maken. 0.0.0.0:3080 betekent dat iedereen die het adres vindt, verbinding kan maken. Benader een loopback-UI via een SSH-tunnel in plaats van het bind-adres te wijzigen:
ssh -N -L 3080:127.0.0.1:3080 you@your-serverOpen vervolgens http://127.0.0.1:3080 in de browser op uw laptop. Het verkeer verloopt via de SSH-sessie, waardoor er niets nieuws wordt blootgesteld aan het internet.
Elk van deze punten vormt ook een beveiligingsargument
Bekijk de vier eigenschappen nogmaals vanuit het perspectief van een aanvaller.
Het programma draait onbeheerd, dus niemand ziet het moment waarop het model een pad verkeerd interpreteert. Het beheert uw sleutels, dus één leesbaar configuratiebestand is voldoende om toegang te krijgen tot uw volledige provideraccount. Het kan uw andere machines bereiken, dus een prompt injection – instructies die verborgen zijn in een webpagina of een bestand dat de agent leest – vormt nu een route naar uw databasehost. Het is overal vandaan bereikbaar, dus een web-UI die gebonden is aan 0.0.0.0 zonder wachtwoord is een shell op het openbare internet.
De oplossing is in elk geval saai, en het is telkens dezelfde oplossing. Geef de agent een eigen account met beperkte rechten in plaats van uw eigen account:
sudo adduser --disabled-password --gecos "" agentHoud de web-UI op loopback en benader deze via SSH. Geef de agent de meest beperkte inloggegevens die nog steeds toereikend zijn voor de taak; dit wordt uitgebreid behandeld in geheimen buiten AI-agents houden. Voor alles wat draait terwijl u niet meekijkt, is een wegwerp-machine beter dan een zorgvuldig geconfigureerde machine: coding agents draaien in een tijdelijke VM en Claude Code veilig draaien op een VPS volgen beide die aanpak.
Heeft u een agent-harness nodig?
Als uw werk uit één vraag per keer bestaat, volstaat een chatvenster en voegt een harness alleen een lus toe die u moet controleren. Een harness wordt pas rendabel wanneer een taak uit vele stappen met echte bestanden bestaat, of wanneer het werk moet doorgaan terwijl u slaapt.
Het grootste deel van deze categorie is nog jong. dsh vermeldt in de eigen README van augustus 2026 dat het een developer preview betreft, en de rest ontwikkelt zich zo snel dat een configuratiebestand dat u vandaag schrijft, volgende maand mogelijk al moet worden aangepast. Dit is een reden om uw setup klein en reproduceerbaar te houden, en om wijzigingen te documenteren. Dezelfde terughoudendheid helpt binnen de lus, waar een vaardigheid die de agent dwingt tot de kleinst mogelijke werkende wijziging resulteert in een diff die u aan het einde van een onbeheerde run daadwerkelijk kunt lezen. Begin met één harness op één server, geef deze één taak en één beperkte sleutel, en breid de toegang pas uit nadat die eerste taak een week lang probleemloos is verlopen. De zelfgehoste agents die het waard zijn om vandaag te draaien is een goed startpunt om uw eerste keuze te maken.
FAQ
Wat is een agent harness in eenvoudige bewoordingen?
Het is het programma rondom het model. Het model genereert tekst en verzoeken om tools te gebruiken. De harness voert de lus uit die vragen blijft stellen, voert de door het model gevraagde tools uit, dwingt de regels af over welke tools zonder toestemming mogen draaien, en beheert de sessiestatus en de bestanden tussen de beurten door. Vervang het model en de harness blijft werken; dit is het duidelijkste teken dat beide afzonderlijke entiteiten zijn.
Is Claude Code een model of een harness?
Claude Code is een harness. Het is een terminalprogramma met een lus, een permissiesysteem en ingebouwde tools voor bestanden en shell-toegang. Claude is de modelfamilie die standaard wordt aangeroepen. Hetzelfde onderscheid geldt voor DeepSeek Harness (dsh), wat een Node-programma is dat u installeert, en de DeepSeek-modellen, die via een API worden aangeboden. U installeert een harness op een machine. U roept een model aan via het netwerk.
Wat is het verschil tussen een agent harness en een agent framework?
Een framework is een bibliotheek die u importeert en waarvoor u code schrijft, waardoor u zelf de lus, de retries en de contextafhandeling beheert. Een harness is een programma dat u uitvoert, waardoor al deze zaken worden meegeleverd met standaardinstellingen die u configureert in plaats van schrijft. In de praktijk is de grens vaag: LangChain's Deep Agents is een importeerbare SDK die in de eigen repository wordt aangeduid als een 'batteries-included' agent harness, per augustus 2026. Vraag uzelf af of u de lus zelf gaat schrijven. Dat antwoord bepaalt welke term van toepassing is op uw situatie.
Heb ik een VPS nodig om een agent harness te draaien?
Nee. Elke hier genoemde harness draait op een laptop. Een server verandert vier zaken: de agent blijft draaien wanneer u de laptop dichtklapt, de agent bewaart uw sleutels op een machine die altijd aan staat, de agent kan uw andere servers bereiken, en u kunt vanaf elk apparaat terugkeren naar dezelfde sessie. Elk van deze punten is ook een veiligheidsoverweging; geef de agent daarom een eigen gebruikersaccount en zorg dat een eventuele web-UI gebonden is aan 127.0.0.1.
Kan ik een ander model gebruiken binnen dezelfde harness?
Meestal wel, en dat is de bepalende eigenschap van een harness. De meeste harnesses accepteren een modelnaam en een base URL in hun configuratie, waardoor het aanpassen naar een andere provider een kwestie is van een aanpassing in plaats van een herschrijving. Waar een harness dit niet toestaat, kan een lokale router zoals Claude Code Router tussen de harness en de provider worden geplaatst om de verzoeken te vertalen, waarbij standaard wordt gebonden aan 127.0.0.1:3456. Wees voorzichtig met deze proxy, aangezien deze elke prompt ziet en elke sleutel beheert.