Snilld

Byg selv‑evolverende agenter med OpenSpace: Fra sparse clone til MCP og lineage‑lager

OpenSpace‑tutorialen viser et fuldt, kørende flow: fra miljøopsætning og sparse git‑clone til asynkrone live‑kørsler, MCP‑server og et SQLite‑lineage‑lager, der gemmer evolved skills med versionering. Det er hurtigt at få op at stå, men drift kræver stram styring af credentials, reproducerbarhed og overvågning, hvis det skal bruges seriøst.

25. juli 2026 Peter Munkholm

Lad os være ærlige: de fleste agent‑guides stopper, når chatten siger noget fornuftigt. Her bliver der rent faktisk bygget, kørt og kigget i data bagefter. OpenSpace‑tutorialen går hele vejen fra første clone til en opgave, der udvikler nye skills, som kan findes igen i en lille, læsbar SQLite‑database. Det er derfor den er værd at bruge en eftermiddag på, hvis målet er mere end en demo.

Hovedpointer

Tutorialen dokumenterer et konkret udviklingsflow: tjek af Python 3.12, git sparse‑clone med filter, editable pip‑install, .env‑konfiguration med model og workspace samt live‑kørsel af en asynkron opgave, når LLM‑nøgler er sat. Den forbinder host‑agent skills, opretter en SKILL.md, starter en streambar HTTP MCP‑server og slutter med at inspicere en SQLite‑database, hvor evolved capabilities ligger med versionering og lineage‑metadata, inklusiv skill‑typerne FIX, DERIVED og CAPTURED [kilde: MarkTechPost‑tutorialen].

Rammen er lav‑kost genbrug: når en opgave er “varm”, kan dele af adfærden genbruges i stedet for at betale for hele kæden igen. Der er ingen benchmark i materialet, men workflowet og databasevisningen gør ideen konkret.

Tæt makrofoto af en slidt metalmærkat på en lille lagringsenhed, cyan refleks og indigo skygger — et taktilt spor af pilotens lineage‑lager.

Hvad der faktisk udføres

Det starter med et versions‑check på Python 3.12+. Repoet hentes som sparse clone: “git clone –filter=blob:none –sparse https://github.com/HKUDS/OpenSpace.git”, efterfulgt af “git sparse‑checkout set –no‑cone \/* !\/assets\/”, så kun det nødvendige lander lokalt. Pakken installeres i editable mode via “pip install -e”, så ændringer slår igennem uden genbyg [kilde: MarkTechPost‑tutorialen].

Miljøet sættes via .env med blandt andet OPENSPACE_MODEL, OPENSPACE_WORKSPACE, OPENSPACE_HOST_SKILL_DIRS og eventuelle ANTHROPIC_API_KEY, OPENAI_API_KEY og OPENSPACE_API_KEY. Uden LLM‑nøgler springes live‑kørslen over, og det markeres tydeligt i tutorialen [kilde: MarkTechPost‑tutorialen].

Banner

MCP, host‑skills og asynkron kørsel

Den asynkrone API bruges med “from openspace import OpenSpace” og “await cs.execute(query)”. Resultatet indeholder både svaret og en liste over evolved_skills med navn og origin. Host‑agent skills kobles på, og en SKILL.md beskriver formål og brug. CLI‑værktøjet “openspace‑mcp” kan starte en streambar HTTP MCP‑server til lokal udvikling og debugging. I drift skal der ligge adgangskontrol, rate‑begrænsning og logning over det. Punktum.

Lineage og lav‑kost genbrug

Til sidst åbnes et SQLite‑lager med versionering og lineage‑metadata, så man kan se, hvordan en skill er blevet til, og hvad den er afledt af. Tre typer er i spil: FIX (rettelse), DERIVED (afledt forbedring) og CAPTURED (opsamlet adfærd). Samspillet gør historik og genbrug synligt og er kernen i at sænke pris og tid på gentagne opgaver [kilde: MarkTechPost‑tutorialen].

SQLite er fint som sandkasse. I større opsætninger rammer man hurtigt grænser for multi‑user og revision. Migration er ikke dækket i tutorialen; det hul bør lukkes i et pilotarbejde.

Tekniker bærer en gennemsigtig boks med farvede tabber gennem et lille testkorridor, indigo stemning og cyan highlights — et øjeblik fra pilotens proces.

Implementering uden unødige overraskelser

Editable installs kontra reproducerbarhed: “pip install -e” giver tempo, men er skrøbeligt i drift, hvis versionskæder ikke låses. Minimum: frys afhængigheder, byg i et container‑image, og kør smoke‑tests der bekræfter, at en given warm‑task faktisk bliver genbrugt efter deploy. Ellers bliver rollback gætteri.

Credentials: .env er fint i udvikling. I produktion skal hemmeligheder ligge i et egentligt secrets‑lag med kortlivede tokens og audit‑spor. Rotér nøgler og undgå delte servicekonti uden scopes. Det stopper regninger, der løber løbsk klokken 03:12.

CI/CD, evaluering og overvågning

Agentiske systemer skifter i to lag: kode og adfærd. Byg pipelines, der tester begge. Unit‑tests på værktøjer og parser‑funktioner. Evals på agent‑adfærd mod faste scenarier med tolerancer. Gem resultater sammen med lineage‑versionen, der frigives. Hvis DERIVED v2.3 performer dårligere end v2.2, skal det fanges, før brugerne gør.

Banner

Overvågning bør spore warm‑reuse hit rate, cost per task, p90/p95‑latenstid, fejlrater pr. værktøjskald og hvor ofte systemet falder tilbage til kolde tasks. Rollback skal kunne slukke en specifik lineage‑gren uden at rulle hele platformen tilbage. Den forskel kan mærkes på driftsro.

Risiko og governance

VentureBeat Research konkluderer, at mange virksomheder rullede agenter ud før de nødvendige kontroller var på plads og nu eftermonterer dem. I hver af fem kontroller målt planlægger 57–68 procent at skifte eller tilføje leverandører inden for 12 måneder, og omtrent en tredjedel vil flytte allerede i dette kvartal [kilde: VentureBeat Research]. Det lugter af efterslæb, ikke mangel på vilje.

De fem lag, der måles, matcher OpenSpace‑flowet: identity, evaluation, cost telemetry, context og orchestration. Tutorialens flow er et stærkt laboratorium; de fem lag er minimum, før noget bør køre uden opsyn.

Tæt makrofoto af en slidt metalmærkat på en lille lagringsenhed, cyan refleks og indigo skygger — et taktilt spor af pilotens lineage‑lager.

Tradeoffs og kendte begrænsninger

Styrkerne: hurtig vej fra clone til kørende agent, gennemsigtighed via SQLite og en håndterbar måde at indkapsle adfærd som skills. Ulemperne: editable installs kan divergere, ansvarsgrænsen mellem kode og adfærd bliver uklar, og et lokalt lineage‑lager er ikke bygget til multi‑tenant revision i skala. Migrerer man, mister man også noget af enkelheden, der gør tutorialen let at kopiere. Sådan er det.

Quick checklist til et pilot‑MVP

  • Identity: Brug servicekonti med scopes. Log hvem der brugte hvad, hvornår.
  • Evaluation: Definér scenarier og tolerancer per skill‑type (FIX, DERIVED, CAPTURED). Kør evals i CI.
  • Cost telemetry: Mål cost per task og sæt alerts ved loft.
  • Context: Versionér datakilder og begreber, agenten læser fra.
  • Orchestration: Hav en stopknap på lineage‑niveau og en klar rollback‑vej.
  • Repro: Lås dependencies, brug containers, dokumentér miljøet for et givent lineage‑ID.
  • Observabilitet: Track warm‑reuse hit rate, p90‑latens og fejl per værktøj.

Tilbage til koden et øjeblik

Nogle jordnære detaljer, der gør reproducering mulig:

  • Repo‑kilde: https://github.com/HKUDS/OpenSpace.git klones med “–filter=blob:none” og “–sparse”.
  • Sparse‑checkout: “git sparse‑checkout set –no‑cone \/* !\/assets\/”.
  • CLI‑værktøjer som “openspace‑mcp” og “openspace‑dashboard” verificeres med which‑tjek og –help.
  • .env sætter OPENSPACE_MODEL, OPENSPACE_WORKSPACE, OPENSPACE_HOST_SKILL_DIRS samt relevante API‑nøgler.
  • Async‑brug: “async with OpenSpace() as cs: result = await cs.execute(query)”, hvorefter response og evolved_skills kan læses ud.
  • SQLite‑showcase med versionering og lineage‑metadata viser FIX, DERIVED og CAPTURED i praksis [kilde: MarkTechPost‑tutorialen].

Små ting, men de skiller en løs demo fra et flow, der kan gentages på en ren maskine i morgen.

Konklusion

OpenSpace‑tutorialen viser en reel vej til selv‑evolverende agenter: skills, MCP, lineage i SQLite og et asynkront API, der virker i hænderne. Skal det i produktion, kræver det kontroller for identitet, evaluering, omkostninger, kontekst og orkestrering — præcis de lag, som mange nu er i gang med at eftermontere ifølge VentureBeat. Næste skridt er jordnært: sæt et lille, kontrolleret pilotflow op, mål hårdt, og få styr på rollback før første bruger ser noget. Man mærker først forskellen, når det kører rigtigt.

Kilder

    Gør brugeroplevelsen bedre.
    Hvilket firma arbejder du for?