LayerFS: het bestandssysteem voor AI-codeeragenten

Ephemeraliteit: het schalen van multi-agent ontwikkeling voorbij de verbeelding

Kenmerken:

  • Ephemere workspaces.
  • Duurzame gedeelde geschiedenis.
  • Massale parallellisatie.

---

Waarom LayerFS?

LayerFS is gebaseerd op tien ideeën, verdeeld over zes kernconcepten en vier ondersteunende principes.

Zes kernconcepten

1. Ephemeral Computing

Compute bestaat alleen zolang een commando wordt uitgevoerd.

  • Werking: Elke Bash-tool call koppelt een ephemere workspace en commit de resultaten daarna.
  • Proces: mount → execute → commit → unmount.
  • Context: Agenten besteden ongeveer 80% van hun tijd aan nadenken en 10% in Bash. Elke aanroep van een bestandstool is een atomaire Store-operatie.

2. Gedecentraliseerde Agenten

Agenten op verschillende computers delen één serverloze Store.

  • Gedeelde opslag: Elke agent commit naar één Store, zonder dat daar een database-server voor nodig is.
  • Gedistribueerd rekenvermogen: Elke agent draait op zijn eigen computer.

3. Multi-agent Coördinatie

Eén project kan meerdere branches hebben, en één branch kan door meerdere agenten worden gebruikt.

  • Commits: Elke tool-aanroep is een commit op de branch van de agent.
  • Conflict: Een clash in hetzelfde bestand wordt geweigerd met een 'Conflict'-melding.
  • Blame: Elke regel in een bestand vermeldt exact welke stap de regel heeft geschreven.

4. Recursief Bestandssysteem

Elke commit kan recursief worden geforkt op elke gewenste diepte.

  • Nul kosten: Een fork bestaat uit metadata; er worden geen bestanden gekopieerd.
  • Toepassing: Dit is ideaal voor RSI-agenten en recursieve exploratie voor RL-training (Reinforcement Learning).

5. Ultra Opslagoptimalisatie

Tien kopieën kunnen worden gecomprimeerd tot 0,31.

  • Dedup: Elk inhoudsfragment (chunk) wordt slechts één keer opgeslagen.
  • Compressie: De opgeslagen fragmenten worden verder verkleind.
  • Ratio: 10 kopieën → 1,05 na deduplicatie → 0,31 na compressie.

6. Instant Bootstrap

Afhankelijkheden worden meegeleverd bij elke mount, waardoor tijdverlies door herinstallaties wordt voorkomen.

  • Vergelijking met Git/AgentFS: Traditionele systemen negeren vaak bestanden via .gitignore, waardoor modules (zoals node_modules) opnieuw geïnstalleerd moeten worden. Dit kan ongeveer 5 minuten duren.
  • LayerFS aanpak: Genegeerde bestanden blijven behouden in elke commit. Hierdoor is de workspace direct klaar voor gebruik.
  • Snelheid: De mount-tijd bedraagt slechts 0,05 seconden (gemeten tussen 5–20 ms).

---

Vier ondersteunende ideeën

7. Automatische Checkpoints

Elke stap die een agent zet, is een checkpoint waarnaar kan worden teruggekeerd.

  • Elke aanroep: Elke bestandsaanroep is een commit; elke Bash-aanroep commit zodra deze is beëindigd.
  • Geen ruis: Een aanroep die niets verandert, maakt geen commit aan.
  • Rewind: Men kan vanaf elk checkpoint een fork maken en elk bestand lezen zoals het op dat moment was.

8. Append-only Objecten

Opgeslagen objecten worden nooit overschreven; de Store groeit alleen.

  • Content-addressed: Een object wordt benoemd op basis van de hash van de bytes.
  • Sealed: Een geschreven pakket wordt nooit bijgewerkt of verwijderd.
  • Veilig delen: Branches delen objecten; lezers hoeven nooit te wachten op de schrijver.

9. Conflictregels (.lww)

Via een .lww-bestand (Last-Write-Wins) in de root van de boom kunnen bestanden worden aangewezen die nooit mogen conflicteren.

  • Nieuwste wint: Bij een bestand dat aan beide zijden is gewijzigd, wordt de nieuwste bewerking behouden.
  • Toepassing: Dit is nuttig voor lockfiles, build-output en caches.

10. Groot Bestand, Kleine Aanpassing

Een bewerking kost alleen de grootte van de wijziging, niet de grootte van het gehele bestand.

  • Overlay: Een schrijfactie bewaart alleen de bytes die daadwerkelijk zijn geschreven.
  • Commit: Alleen de bewerkte segmenten en hun pad in de boom worden opnieuw opgebouwd.
  • Opslag: De rest van het bestand wordt gedeeld met de vorige versie.

---

Agent tool-aanroepen en historie

De structuur van de historie is als volgt opgebouwd:

  • Main: De centrale lees-alleen lijn.
  • Layer: Een band op de main-lijn; elke publicatie voegt een Layer-band toe.
  • Commit: Een individueel blad (leaf) aan de tak.
  • Branch: Een tak (bough) waaraan commits hangen.
  • Merge: Het terugvoegen van een tak (grafting).
  • Publish: Het toevoegen van een nieuwe band.
  • Stopped: Een kale twijg.

Systeemspecificaties (Voorbeeld)

  • Deduplicatie: 1.5×
  • Compressie: 3.32×
  • Opgeslagen data: 9.4 MB
  • Bestandsgrootte: 10.0 MB
  • Logische grootte: 48.0 MB
  • Canonical grootte: 31.2 MB
  • Metadata: 420 KB