{"id":914,"date":"2026-03-24T07:37:24","date_gmt":"2026-03-24T05:37:24","guid":{"rendered":"https:\/\/vittrup-graversen.dk\/?p=914"},"modified":"2026-03-28T12:10:04","modified_gmt":"2026-03-28T10:10:04","slug":"gitagent-et-git-repo-en-agent-koer-den-paa-claude-code-langchain-eller-crewai-uden-at-omskrive-en-linje","status":"publish","type":"post","link":"https:\/\/vittrup-graversen.dk\/index.php\/2026\/03\/24\/gitagent-et-git-repo-en-agent-koer-den-paa-claude-code-langchain-eller-crewai-uden-at-omskrive-en-linje\/","title":{"rendered":"GitAgent: \u00c9t Git-repo, \u00e9n agent \u2014 k\u00f8r den p\u00e5 Claude Code, LangChain eller CrewAI uden at omskrive en linje"},"content":{"rendered":"\n<p>Hvis du har bygget AI-agenter i det seneste \u00e5r, kender du frustrationen: du starter et projekt i LangChain, opdager at CrewAI passer bedre til multi-agent workflows, og pludselig sidder du med en komplet omskrivning. Hvert framework har sin egen m\u00e5de at definere agentlogik, hukommelse og tool-integration \u2014 og der er ingen f\u00e6lles standard. Indtil nu.<\/p>\n\n\n\n<p><a href=\"https:\/\/github.com\/open-gitagent\/gitagent\" target=\"_blank\" rel=\"noopener\">GitAgent<\/a> er et nyt open source-projekt fra Lyzr, lanceret den 20. marts 2026, der tager en radikalt anderledes tilgang: din agent <em>er<\/em> dit Git-repository. Ikke en metafor \u2014 bogstaveligt talt. Drop nogle specifikke filer i et repo, og du har en portabel agent-definition der kan eksporteres til Claude Code, OpenAI Assistants, LangChain, CrewAI eller AutoGen med en enkelt kommando.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Agentens anatomi: Filer i stedet for framework-boilerplate<\/h2>\n\n\n\n<p>GitAgent definerer en agent via en mappestruktur i Git. Kun to filer er p\u00e5kr\u00e6vede: <code>agent.yaml<\/code> (manifestet med model-provider, version og dependencies) og <code>SOUL.md<\/code> (agentens identitet, personlighed og kommunikationsstil). Derudover kan du tilf\u00f8je valgfrie mapper som <code>skills\/<\/code> for genbrugelige kapabiliteter, <code>tools\/<\/code> for MCP-kompatible tool-definitioner, <code>rules\/<\/code> for guardrails, og <code>memory\/<\/code> for persistent tilstand p\u00e5 tv\u00e6rs af sessioner.<\/p>\n\n\n\n<p>Det interessante er at hukommelsen gemmes som l\u00e6sbare Markdown-filer \u2014 <code>dailylog.md<\/code>, <code>context.md<\/code> og lignende. Ingen obskure vector-databaser eller propriet\u00e6re formater. Alt er versionskontrolleret og kan inspiceres med et simpelt <code>git diff<\/code>. Kender du konventionen med <a href=\"https:\/\/vittrup-graversen.dk\/index.php\/2026\/03\/18\/agents-md-en-fil-der-faar-alle-dine-ai-kodningsagenter-til-at-forstaa-dit-projekt\/\">AGENTS.md-filer<\/a> til kodningsagenter? GitAgent tager id\u00e9en flere skridt videre og standardiserer hele agent-definitionen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Eksport\u00e9r til hvad som helst med \u00e9n kommando<\/h2>\n\n\n\n<p>Kernev\u00e6rdien i GitAgent ligger i CLI-v\u00e6rkt\u00f8jet og dets eksport-mekanisme. N\u00e5r din agent er defineret i det universelle format, kan du portere den med <code>gitagent export -f [framework]<\/code>. Frameworket mapper automatisk din <code>SOUL.md<\/code>, skills og tools til det format som m\u00e5lplatformen kr\u00e6ver \u2014 hvad enten det er OpenAI Assistants API, Anthropics Claude Code-milj\u00f8, LangChains graf-baserede arkitektur, CrewAIs rolle-baserede agenter, eller AutoGens multi-agent dialoger.<\/p>\n\n\n\n<p>I praksis betyder det, at du kan eksperimentere med <a href=\"https:\/\/vittrup-graversen.dk\/index.php\/2026\/03\/16\/langchain-deep-agents-open-source-svar-paa-claude-code-med-planlaegning-hukommelse-og-subagenter\/\">LangChain Deep Agents<\/a> til et RAG-workflow og derefter skifte til CrewAI for multi-agent-samarbejde \u2014 uden at r\u00f8re den underliggende agentlogik. Vendor lock-in er et af de mest frustrerende problemer i AI-agent-\u00f8kosystemet, og GitAgent adresserer det direkte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Git som supervisionsv\u00e6rkt\u00f8j \u2014 ikke kun versionskontrol<\/h2>\n\n\n\n<p>Den mest elegante del af GitAgent er brugen af Git som human-in-the-loop mekanisme. N\u00e5r en agent opdaterer sin hukommelse, l\u00e6rer en ny skill eller \u00e6ndrer sin <code>SOUL.md<\/code>, kan systemet konfigureres til at oprette en branch og et pull request. Det betyder, at du kan reviewe en agents adf\u00e6rds\u00e6ndringer pr\u00e6cis som du reviewer kode\u00e6ndringer \u2014 med diff, kommentarer og godkendelsesflow.<\/p>\n\n\n\n<p>Begynder din agent at hallucinere eller drifte fra sin tilt\u00e6nkte persona? Et simpelt <code>git revert<\/code> bringer den tilbage til en stabil tilstand. Det er en markant forbedring sammenlignet med traditionelle agenter, hvor adf\u00e6rds\u00e6ndringer er en sort boks gemt i en database, du aldrig kigger i.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Hvad betyder det i praksis?<\/h2>\n\n\n\n<p>For udviklere der arbejder med AI-agenter til daglig \u2014 hvad enten det er agentic coding tools, automatiserede workflows eller enterprise-systemer \u2014 l\u00f8ser GitAgent et reelt problem. Fragmenteringen mellem frameworks er enorm. Jeg har selv oplevet at migrere agentlogik mellem platforme, og det er som at overs\u00e6tte mellem programmeringssprog: teknisk muligt, men utroligt tidskr\u00e6vende.<\/p>\n\n\n\n<p>GitAgent inkluderer desuden et compliance-lag med Segregation of Duties (SOD). Du kan definere roller som <em>maker<\/em>, <em>checker<\/em> og <em>executor<\/em> med en konfliktmatrix, der sikrer at ingen enkelt agent har for meget autoritet. Kommandoen <code>gitagent validate<\/code> verificerer konfigurationen inden deployment. Det er relevant for regulerede brancher som finans og sundhed, men det er ogs\u00e5 god praksis generelt \u2014 vi b\u00f8r t\u00e6nke i guardrails allerede nu, mens agenterne stadig er under udvikling.<\/p>\n\n\n\n<p>GitAgent er tilg\u00e6ngeligt som npm-pakke (<code>@shreyaskapale\/gitagent<\/code>) og kr\u00e6ver Node.js 18+. Projektet er MIT-licenseret og under aktiv udvikling. Det er stadig tidligt \u2014 og om det opn\u00e5r bred adoption afh\u00e6nger af om de store framework-udviklere adopterer eller modarbejder standarden. Men id\u00e9en om at behandle agenter som portable, versionskontrollerede enheder er sund. Det er pr\u00e6cis den type infrastruktur-t\u00e6nkning, AI-agent-\u00f8kosystemet mangler.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kilder<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/github.com\/open-gitagent\/gitagent\" target=\"_blank\" rel=\"noopener\">GitAgent p\u00e5 GitHub<\/a> \u2014 open-gitagent\/gitagent<\/li>\n\n\n\n<li><a href=\"https:\/\/www.marktechpost.com\/2026\/03\/22\/meet-gitagent-the-docker-for-ai-agents-that-is-finally-solving-the-fragmentation-between-langchain-autogen-and-claude-code\/\" target=\"_blank\" rel=\"noopener\">Meet GitAgent: The Docker for AI Agents<\/a> \u2014 MarkTechPost, 22. marts 2026<\/li>\n\n\n\n<li><a href=\"https:\/\/www.producthunt.com\/products\/gitagent-2\" target=\"_blank\" rel=\"noopener\">GitAgent p\u00e5 Product Hunt<\/a> \u2014 Lyzr, marts 2026<\/li>\n<\/ul>\n\n\n\n<p><em>Denne artikel er skrevet i samarbejde med AI, og efterf\u00f8lgende redigeret af et rigtigt menneske \ud83d\ude42<\/em><\/p>\n\n\n\n<p><\/p>\n","protected":false},"excerpt":{"rendered":"<p>GitAgent lader dig k\u00f8re \u00e9n AI-agent p\u00e5 tv\u00e6rs af Claude Code, LangChain og CrewAI uden at omskrive kode. \u00c9t repo, \u00e9n agent.<\/p>\n","protected":false},"author":1,"featured_media":913,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[24,8],"tags":[70,31],"class_list":["post-914","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-agentic-engineering","category-ai","tag-ai-agents","tag-language-models"],"acf":[],"_links":{"self":[{"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/posts\/914","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/comments?post=914"}],"version-history":[{"count":3,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/posts\/914\/revisions"}],"predecessor-version":[{"id":971,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/posts\/914\/revisions\/971"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/media\/913"}],"wp:attachment":[{"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/media?parent=914"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/categories?post=914"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/vittrup-graversen.dk\/index.php\/wp-json\/wp\/v2\/tags?post=914"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}