Wat is een agent harness voor AI-modellen?
Een agent harness is de softwarelaag rondom een LLM die de loop, tools en sessiestatus beheert. Ontdek het cruciale verschil tussen het model en de aansturende harness.
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 aanroepen daadwerkelijk worden uitgevoerd, de sessiestatus die tussen beurten behouden blijft en de werkmap waarin de taken worden verwerkt. Het model binnen dit geheel is uitwisselbaar.
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, koppelt het resultaat terug en vraagt opnieuw om instructies. Die herhaling is wat men bedoelt wanneer men spreekt over een "agent". Als de omliggende terminologie nog onduidelijk is, verduidelijkt het verschil tussen een AI-agent, een LLM en een assistent de begrippen voordat u een tool kiest.
De harness is niet het model
De 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 lus, een permissiesysteem en tools voor bestanden en de shell. Claude is de modelfamilie die het standaard aanroept. 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 binnen 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 aandachtig door, aangezien bijna elk verschil tussen harnesses voortkomt uit variaties binnen deze vijf stappen.
- Het harness verstuurt het gesprek tot nu toe, inclusief 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 toetst dat verzoek aan de toegangsregels en voert het ofwel uit, of stopt om u om bevestiging 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 om bevestiging vraagt, is veilig maar vermoeiend. Een harness dat nooit vraagt, zal uiteindelijk een destructief commando uitvoeren op een pad dat het model onjuist heeft geïnterpreteerd. Elk serieus harness beschikt tegenwoordig over een tusseninstelling: een allowlist van commando's die zonder vragen worden uitgevoerd, en een prompt voor al het overige.
Stap 1 is waar de overige verschillen zich bevinden. Het harness schrijft ook de system prompt die bij elk van die verzoeken wordt meegestuurd, en Claude Code geeft u direct toegang tot die instelling, omdat een outputstijl de system prompt aanpast die wordt verstuurd en daarmee elk antwoord beïnvloedt. 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. Als deze vijf stappen nog abstract aanvoelen, is de oplossing om zelf een eenvoudige loop te schrijven; dit is precies wat een stapsgewijs pad voor het leren van AI-agents u in een vroeg stadium laat bouwen.
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. Het draaien van MCP-servers op een VPS behandelt dat aspect. Zoeken op het web is meestal de eerste tool die wordt toegevoegd, en het koppelen van de agent aan uw eigen SearXNG-instantie houdt de zoekopdrachten weg bij derden, terwijl het duidelijk maakt dat elke pagina die de agent vervolgens leest, onbetrouwbare input is die de loop binnenkomt.
Agent harness versus agent framework
Deze vraag komt telkens naar voren wanneer er een nieuwe harness verschijnt, en de antwoorden lopen uiteen, mede 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 betwist, 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 correct. Deep Agents is een Python SDK (software development kit) die u importeert, dus de installatietest classificeert het als een bibliotheek, en het bevat voldoende standaardgedrag waardoor mensen het als een harness gebruiken. Microsoft bracht in augustus 2026 een harness en gehoste agents naar general availability, wat aantoont dat de term 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 starten, maar later moeilijker aan te passen.
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 vraag op wiens computer het werk wordt uitgevoerd. In een chatvenster wordt alle code die het model uitvoert, gedraaid binnen de sandbox van de leverancier, op bestanden die u heeft geüpload, en deze verdwijnt zodra de sessie wordt beëindigd. Een harness voert tools uit op de machine waarop u deze heeft gestart, als de gebruiker die deze heeft gestart, op uw werkelijke bestanden en met uw werkelijke 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. Elke plugin die u installeert, draait met de eigen rechten van de agent. Daarom is controleren waar een dsh-plugin bij kan voordat u deze toevoegt hier belangrijker dan bij een harness met een vaste set tools. Op 19 augustus 2026, zes dagen na de publicatie, stond het op ongeveer 166.800 GitHub-stars. - Hermes, van Nous Research, is eerder een algemene autonome agent dan een specifieke programmeertool. Het werd in februari 2026 onder de MIT-licentie uitgebracht en slaat herinneringen en vaardigheden op in een lokale SQLite-database op uw eigen machine. Hermes zelf hosten op een VPS legt dit proces uit.
- 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 beschrijft de voordelen hiervan.
- OneCLI is een harness in een sandbox gericht op teams, gebouwd rond een gateway die echte inloggegevens injecteert in uitgaande verzoeken, zodat de agent zelf alleen tijdelijke placeholders ziet.
Drie van deze opties verschijnen vaak genoeg op dezelfde shortlist dat het de moeite waard is om DeepSeek Harness, Claude Code en Omnigent naast elkaar te lezen over modelkoppeling, licenties, volwassenheid en wat er nodig is om ze op een server te draaien.
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 komen die de compatibiliteit verbreken. Als dat eerste commando direct faalt of een build ophaalt die u niet verwachtte, is een specifieke dsh-versie vastzetten en de npx-cache legen meestal de oplossing om weer verder te kunnen. 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 model-router fungeert als een lokale proxy tussen de harness en de API van de provider. Claude Code Router is hiervan het bekendste 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 door u geconfigureerde provider. De harness merkt hier niets van.
Routers bestaan omdat het model uitwisselbaar is; ze vormen daarmee een goed bewijs voor het kernpunt van dit artikel. Ze concentreren echter ook risico's, omdat de proxy elke prompt ziet en alle API-keys van de provider beheert. Behandel dit als infrastructuur, niet als een gemakkelijke oplossing. Waar een harness zijn API-keys en modelinstellingen bewaart is hetzelfde probleem, maar dan één laag dieper.
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.
Hij blijft draaien als u de laptop dichtklapt. Een langlopende 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 reboot 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 (secure shell)-sessie sluit. De agent sterft dus wanneer u uitlogt en er verschijnt geen foutmelding. Draaien van dsh headless 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. Hierdoor kan de sessie die u vanochtend startte een taak overdragen aan de andere, zonder dat u dit handmatig hoeft te doen.
Hij beheert uw sleutels. De provider-sleutel staat nu in een configuratiebestand op die server. Controleer wie dit bestand 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.
Hij kan uw andere machines bereiken. Een VPS in hetzelfde privénetwerk als uw andere machines geeft de agent een route naar die apparaten. Dat is precies het doel, maar het is ook de omvang van de mogelijke schade bij een inbreuk.
Hij 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 gelijk aan 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 — heeft nu een route naar uw databasehost. Het is vanaf elke locatie bereikbaar, dus een web-UI die gebonden is aan 0.0.0.0 zonder wachtwoord is een shell op het publieke internet.
De oplossing in elk van deze gevallen is 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 om de taak uit te voeren; het buitenhouden van geheimen bij AI-agents gaat hier dieper op in. Voor alles wat draait terwijl u niet meekijkt, is een wegwerp-machine beter dan een zorgvuldig geconfigureerde machine: het draaien van coding-agents in een tijdelijke VM en veilig Claude Code draaien op een VPS kiezen beide voor 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 verdient zichzelf pas terug wanneer een taak uit vele stappen tegen 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 moet worden aangepast. Dat is een reden om uw setup klein en reproduceerbaar te houden, en een reden om op te schrijven wat u heeft gewijzigd. Dezelfde terughoudendheid helpt binnen de lus, waar een vaardigheid die de agent dwingt tot de kleinst mogelijke wijziging die werkt u aan het einde van een onbeheerde run een diff oplevert die u daadwerkelijk kunt lezen. Begin met één harness op één server, geef het één taak en één beperkte sleutel, en breid de toegang pas uit nadat die eerste taak een week lang saai is geweest. De zelfgehoste agents die het waard zijn om vandaag te draaien is een redelijk startpunt om de eerste te kiezen.
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 de twee gescheiden 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 de shell. Claude is de modelfamilie die standaard wordt aangeroepen. Dezelfde scheiding 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 waar u code tegenaan 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. De grens is in de praktijk 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 harness die hier wordt genoemd, 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; deze bindt standaard aan 127.0.0.1:3456. Wees voorzichtig met die proxy, aangezien deze elke prompt ziet en elke sleutel beheert.