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.

Kanonische Preset-Bibliothek (12)

Alle Presets leben in config/workers_registry.json und sind über GET /api/crm/workers/presets verfügbar. Jedes ist ein generisches Template für beliebige Projekte: keine Brand-Referenzen, keine Charakternamen, keine Verweise auf unsere Infrastruktur.

Engineering / Core (6):

Worker ID Modell Typ Tools Zweck
Consultant consultant Sonnet chat Read, Glob, Grep, WebSearch, WebFetch Read-only-Recherche, Beratung
Developer developer Opus terminal Alle Code shippen, der die DoD erfüllt
UI/UX Designer ui-designer Sonnet chat Read, Glob, Grep, WebFetch UI-Layouts, Design-Tokens
Knowledge Archivist archivist Sonnet terminal Read, Write, Glob, Grep Kurator der Wissensdatenbank
Sentinel sentinel Sonnet chat Read, Glob, Grep, WebSearch Security-Audits, Pentests
Product Owner product-owner Sonnet chat Read, Edit, Grep, Glob Roadmap, Scoping, User-first-Entscheidungen

Startup Operations (6, hinzugefügt in Phase 66):

Worker ID Zweck
Market Analyst analyst TAM/SAM/SOM, SWOT, Porter's Five Forces, PEST
Growth Strategist growth AARRR-Funnel, ICP, Kanäle, A/B-Testing, LTV/CAC
Fractional CFO cfo Unit Economics, Burn, Runway, 3-Szenario-Forecasts
Pitch Coach pitch-coach One-Liner, Story Arc, 15-Slide-Deck-Regel, Q&A-Vorbereitung
Legal Advisor legal Rechtsform, Founder Agreements, IP, GDPR/CCPA
Customer Researcher researcher Mom Test, hypothesengetrieben, Kohorten-Retention

Worker im Projekt erstellen

Über die UI (Default): Klick auf + Add in der WorkerSelector-Pill-Bar → der WorkerCreationWizard öffnet sich mit 3 Schritten:

  1. Identity — Preset-Karte wählen ODER „From scratch"
  2. Capabilities — Modell + Tools + Smart Warnings (z. B. „read-only Rolle + Write-Tool = Fehlkonfiguration")
  3. Instructions — System-Prompt + Skills-Picker + Live-Vorschau

Der Wizard injiziert die SYSTEM_PROTOCOL-Baseline automatisch (siehe unten) — das Preset konzentriert sich nur auf die rollenspezifische Expertise.

Über CLI / API: POST /api/crm/projects/:name/workers mit vollständigem Body (Legacy-Formular, Link „Show advanced form →" im Wizard).

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-4-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)

SYSTEM_PROTOCOL — Baseline für alle Worker

Während worker.system_prompt die rollenspezifische Expertise definiert (der Analyst macht TAM/SAM/SOM, der Sentinel macht SQL-Injection-Audits), gibt es 15 Cross-Cutting-Regeln, die jeder Worker einhalten muss — vom Developer bis zum Pitch Coach. Statt sie in jedem Preset zu duplizieren, leben sie in einer einzigen Konstante (shared/cli-routes.ts:SYSTEM_PROTOCOL) und werden bei jedem Worker-Spawn über child-bot/claude-runner.ts automatisch injiziert.

5 Regeln des Mandatory Workflow

  1. Every new task MUST be registered via arc issue create
  2. Any plan change MUST update ROADMAP.md via arc roadmap sync
  3. Before starting work, read ROADMAP.md + open issues (arc issues)
  4. After significant changes, sync knowledge via arc memory refresh
  5. Log meaningful progress on issues via arc issue log <id> "<text>"

10 Regeln der Quality Baseline (#229)

  1. Priorities: P0 > P1 > P2 > P3 — always know what's next and why
  2. Session report: close meaningful work with arc report --summary
  3. Definition of Done includes documentation, not just commit
  4. Trade-offs explicit: scope vs deadline vs quality — recommend one path + 1-2 alternatives
  5. Format: concise, tables/numbers where possible, actionable beats descriptive
  6. Cite sources for any fact/number; "I don't know" beats fabrication
  7. No silent failures: state blockers explicitly, don't continue down wrong path
  8. Honest progress: report what actually shipped (done vs attempted vs failed)
  9. Convention over invention: follow existing patterns, explain deviations
  10. Learnings feedback loop: append to learnings.md when corrected on recurring mistake

Effekt

Durch diese automatische Injektion wurden die Presets 50-70% kürzer. Beispiel: product-owner fiel von 733 auf 404 Zeichen — übrig blieb nur die „User-first lens" (der spezifische Frame), der Rest (Priorities/Roadmap/Issues/DoD/Trade-offs) ist jetzt Baseline.

Admins können die Baseline in shared/cli-routes.ts erweitern — die Änderung gilt automatisch für alle Worker beim nächsten Spawn.


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.