Worker und Intelligence Layer

Arc OS nutzt ein Worker-System, um Aufgaben auf spezialisierte KI-Agenten zu verteilen. Der Intelligence Layer sichert die Antwortqualität durch vier Module: Binary Evals, Context Router, Learnings und Karpathy Loop.


Das Worker-System

Jeder Worker ist ein eigenständiger KI-Agent mit definierter Rolle, Modell und Werkzeugset. Worker arbeiten innerhalb eines Projekts und sind über die Workspace UI oder Telegram-Befehle (/c, /d, /w:worker_id) erreichbar.

Eingebaute Worker

Worker ID Modell Typ Max Turns Werkzeuge Zweck
Consultant consultant Sonnet 4.5 chat 10 Read, Glob, Grep, WebSearch, WebFetch, Bash Strategischer Berater, Analyse, Q&A
Developer developer Opus 4.6 terminal 20 Alle Aufgabenumsetzung, Code, Deployment
UI/UX Designer ui-designer Sonnet 4.5 chat 8 Read, Glob, Grep, WebFetch Design, UX-Audit
Knowledge Archivist archivist Sonnet 4.5 terminal 15 Read, Glob, Grep, Write, Edit Dokumentation, Wiki
Sentinel sentinel Sonnet 4.5 chat 5 Read, Glob, Grep, WebSearch, WebFetch Sicherheit, Audit
Product Owner product-owner Sonnet 4.5 chat 5 Read, Glob, Grep, WebSearch, WebFetch Roadmap, Priorisierung

Worker-Typen

Eigenen Worker erstellen

Benutzerdefinierte Worker werden in der Datei config/workers_registry.json beschrieben. Jeder Eintrag definiert das Verhalten des Agenten:

{
  "id": "my-worker",
  "label": "My Worker",
  "icon": "🔧",
  "type": "chat",
  "model": "claude-sonnet-4-5",
  "max_turns": 10,
  "tools": ["Read", "Glob", "Grep"],
  "system_prompt": "You are...",
  "focus_dirs": ["src/"],
  "builtin": false
}

Konfigurationsfelder

Feld Typ Beschreibung
id string Eindeutiger Worker-Bezeichner, wird in Befehlen verwendet (/w:id)
label string Anzeigename in der UI
icon string Emoji-Icon für den Avatar
type "chat" | "terminal" Betriebsmodus (siehe oben)
model string Claude-Modell (claude-sonnet-4-5, claude-opus-4-6, claude-haiku-3-5)
max_turns number Maximale Anzahl Tool-Use-Zyklen pro Antwort
tools "all" | string[] Verfügbare Werkzeuge. "all" gibt den vollen Satz frei
system_prompt string Inline-System-Prompt
system_prompt_skill string Pfad zur Datei mit dem System-Prompt (Alternative zu inline)
prompt_style "history" | "gsd" Prompting-Stil: history behält den Kontext, gsd ist aufgabenorientiert
output_format "text" | "stream-json" Ausgabeformat
focus_dirs string[] Verzeichnisse, auf die der Worker fokussiert ist
log_category string Kategorie für das Logging
builtin boolean true für eingebaute Worker (können nicht über die UI gelöscht werden)

Binary Evals — Antwortvalidierung

Was ist das?

Deklarative Regeln zur Qualitätsprüfung von Worker-Antworten. Jede Regel ist deterministisch (ohne KI), läuft sofort durch und blockiert die Antwort nicht. Ergebnisse haben den Schweregrad warning oder info — sie informieren, stoppen aber nicht.

6 Regeltypen

Typ Beschreibung Beispiel
string_contains Antwort enthält einen Teilstring "verdict" in einem Code-Review
string_not_contains Antwort enthält den Teilstring NICHT Kein --force im Output
regex_match Antwort entspricht einem Regex Enthält eine Metrik (disk|RAM|CPU)
regex_not_match Antwort entspricht dem Regex NICHT Keine Credentials im Output
max_length Länge <= Wert Antwort bis 5000 Zeichen
min_length Länge >= Wert Antwort mindestens 1000 Zeichen

Dateiformat für Evals

Die Datei liegt neben dem Skill: skills/{skill_name}/{skill_name}.evals.json

{
  "version": 1,
  "skill": "code-review",
  "rules": [
    {
      "id": "cr-001",
      "name": "Must return JSON verdict",
      "type": "string_contains",
      "value": "\"verdict\"",
      "severity": "warning"
    }
  ]
}

Jede Regel hat eine eindeutige id, einen menschenlesbaren name, einen der 6 Typen, einen value für den Vergleich und einen severity-Wert (warning oder info).


Context Router — Automatische Skill-Auswahl

Wie funktioniert das?

Bei jeder Nachricht bewertet der Context Router alle Skills aus skills/_registry.json und wählt automatisch die relevantesten aus:

  1. Trigger-Treffer (+2 Punkte) — direktes Vorkommen eines Trigger-Worts aus der Nachricht
  2. Keyword-Treffer (+1 Punkt) — semantische Nähe anhand von Schlüsselwörtern
  3. Top-5 nach Punktzahl werden als SKILLS_HINT in den Worker-Prompt injiziert

Beispiel

Nachricht: "review the git commit for security"

Format des Skill-Registers

{
  "name": "code-review",
  "triggers": ["review", "audit", "security"],
  "keywords": ["vulnerability", "OWASP", "XSS"],
  "agents": ["summer"],
  "category": ["complex"]
}

Learnings — Korrektur-Gedächtnis

Wie entstehen Learnings?

Learnings sind akkumulierte Regeln, die aus Feedback entstehen:

  1. Thumbs-down (👎) — es wird automatisch ein Learning mit der Quelle "negative" auf Basis der problematischen Antwort erstellt
  2. Fix It — ein erneuter Durchlauf der Aufgabe erzeugt ein Learning mit der Quelle "fixit"
  3. Manuell — Architekturentscheidungen und Regeln, Quelle "manual" oder "architecture"

Dateiformat

Datei learnings.md im Projektstamm:

# Learnings
> Auto-generated. Injected into GSD prompt at session start.

## Rules
- [2026-04-03T20:00:00Z] [architecture] Rule text here...
- [2026-04-04T10:00:00Z] [security] Another rule...

Wie werden sie verwendet?


Karpathy Loop — Nächtliche Selbstoptimierung

Ein automatischer Skill-Verbesserungszyklus, inspiriert von Andrej Karpathys Ideen zum iterativen Self-Improvement.

Wie funktioniert das?

Jede Nacht um 3:00 UTC startet eine automatische Pipeline:

  1. Metriken sammeln — liest quality-metrics.json jedes Projekts
  2. Problematische Skills finden — filtert Skills mit einer Erfolgsrate < 80 % oder mehr negativem als positivem Feedback
  3. Sage-Analyse — Haiku generiert eine verbesserte Skill-Version auf Basis der gesammelten Fehler
  4. Blinder A/B-Test — 3 Szenarien, randomisierte Reihenfolge, duales Scoring:
    • Eval-Regeln (60 % Gewicht) + LLM-Judge (40 % Gewicht)
  5. PR erstellen — gewinnt die neue Version (new_wins > old_wins), wird ein Pull Request erstellt
  6. CEO-Bericht — Ergebnisse werden per Telegram für die finale Entscheidung zugestellt

Qualitätsmetriken

Jedes Projekt akkumuliert Statistiken in quality-metrics.json:

{
  "total_invocations": 42,
  "total_successes": 40,
  "total_feedback_positive": 35,
  "total_feedback_negative": 2,
  "avg_duration_ms": 15000,
  "skills": [
    {
      "name": "code-review",
      "applied_count": 5,
      "success_count": 4
    }
  ]
}

Diese Metriken ermöglichen es dem System, objektiv zu bestimmen, welche Skills verbessert werden müssen, und den Fortschritt nach Updates zu verfolgen.