Workery i Intelligence Layer

Arc OS używa systemu workerów do rozdziału zadań między wyspecjalizowane agenty AI, a Intelligence Layer zapewnia jakość ich odpowiedzi przez cztery moduły: Binary Evals, Context Router, Learnings i Karpathy Loop.


System workerów

Każdy worker to osobny agent AI z określoną rolą, modelem i zestawem narzędzi. Workery działają w ramach projektu i są dostępne przez Workspace UI lub komendy Telegram (/c, /d, /w:worker_id).

Kanoniczna biblioteka presetów (12)

Wszystkie presety żyją w config/workers_registry.json i są dostępne przez GET /api/crm/workers/presets. Każdy to generyczny szablon dla dowolnego projektu: żadnych odwołań do marki, żadnych imion postaci, żadnych odniesień do naszej infrastruktury.

Engineering / Core (6):

Worker ID Model Typ Tools Przeznaczenie
Consultant consultant Sonnet chat Read, Glob, Grep, WebSearch, WebFetch Read-only research, doradztwo
Developer developer Opus terminal Wszystkie Dostarczanie kodu spełniającego DoD
UI/UX Designer ui-designer Sonnet chat Read, Glob, Grep, WebFetch Layouty UI, design tokens
Knowledge Archivist archivist Sonnet terminal Read, Write, Glob, Grep Kurator bazy wiedzy
Sentinel sentinel Sonnet chat Read, Glob, Grep, WebSearch Audyty bezpieczeństwa, pentesty
Product Owner product-owner Sonnet chat Read, Edit, Grep, Glob Roadmap, scoping, decyzje user-first

Operacje startupowe (6, dodane w Phase 66):

Worker ID Przeznaczenie
Market Analyst analyst TAM/SAM/SOM, SWOT, Porter's Five Forces, PEST
Growth Strategist growth Lejek AARRR, ICP, kanały, testy A/B, LTV/CAC
Fractional CFO cfo Unit economics, burn, runway, prognozy 3-scenariuszowe
Pitch Coach pitch-coach One-liner, story arc, zasada 15 slajdów, przygotowanie do Q&A
Legal Advisor legal Wybór formy prawnej, umowy founderów, IP, GDPR/CCPA
Customer Researcher researcher Mom Test, podejście hipotezowe, retencja kohortowa

Tworzenie workera w projekcie

Przez UI (domyślnie): kliknięcie + Add w pasku WorkerSelector → otwiera się WorkerCreationWizard z 3 krokami:

  1. Identity — wybór karty presetu LUB "From scratch"
  2. Capabilities — model + narzędzia + inteligentne ostrzeżenia (np. "rola read-only + narzędzie Write = misconfig")
  3. Instructions — system prompt + wybór skilli + podgląd na żywo

Wizard automatycznie wstrzykuje baseline SYSTEM_PROTOCOL (zob. niżej) — preset skupia się wyłącznie na ekspertyzie specyficznej dla roli.

Przez CLI / API: POST /api/crm/projects/:name/workers z pełnym body (forma legacy, link "Show advanced form →" w wizardzie).

Typy workerów

Tworzenie własnego workera

Niestandardowe workery opisuje się w pliku config/workers_registry.json. Każdy wpis definiuje zachowanie agenta:

{
  "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
}

Pola konfiguracji

Pole Typ Opis
id string Unikalny identyfikator workera, używany w komendach (/w:id)
label string Wyświetlana nazwa w UI
icon string Emoji-ikona awatara
type "chat" | "terminal" Tryb pracy (patrz wyżej)
model string Model Claude (claude-sonnet-4-5, claude-opus-4-6, claude-haiku-4-5)
max_turns number Maksymalna liczba cykli tool-use na jedną odpowiedź
tools "all" | string[] Dostępne narzędzia. "all" daje pełny zestaw
system_prompt string Inline system prompt
system_prompt_skill string Ścieżka do pliku z system promptem (alternatywa dla inline)
prompt_style "history" | "gsd" Styl promptowania: history zachowuje kontekst, gsd — task-oriented
output_format "text" | "stream-json" Format wyjścia
focus_dirs string[] Katalogi, na których skupia się worker
log_category string Kategoria do logowania
builtin boolean true dla wbudowanych workerów (nie można ich usunąć przez UI)

SYSTEM_PROTOCOL — Baseline dla wszystkich workerów

Podczas gdy worker.system_prompt definiuje ekspertyzę specyficzną dla roli (analyst robi TAM/SAM/SOM, sentinel robi audyt SQL injection), istnieje 15 przekrojowych reguł, których musi przestrzegać każdy worker — od developera po pitch-coacha. Zamiast duplikować je w każdym presecie, żyją w jednej stałej (shared/cli-routes.ts:SYSTEM_PROTOCOL) i są automatycznie wstrzykiwane przy każdym spawnie workera przez child-bot/claude-runner.ts.

5 reguł Mandatory Workflow

  1. Każde nowe zadanie MUSI być zarejestrowane przez arc issue create
  2. Każda zmiana planu MUSI aktualizować ROADMAP.md przez arc roadmap sync
  3. Przed rozpoczęciem pracy przeczytaj ROADMAP.md + otwarte zgłoszenia (arc issues)
  4. Po istotnych zmianach synchronizuj wiedzę przez arc memory refresh
  5. Loguj znaczący postęp na zgłoszeniach przez arc issue log <id> "<text>"

10 reguł Quality Baseline (#229)

  1. Priorytety: P0 > P1 > P2 > P3 — zawsze wiedz, co następne i dlaczego
  2. Raport sesji: zamykaj znaczącą pracę przez arc report --summary
  3. Definition of Done obejmuje dokumentację, nie tylko commit
  4. Jawne trade-offy: zakres vs termin vs jakość — rekomenduj jedną ścieżkę + 1-2 alternatywy
  5. Format: zwięźle, tabele/liczby gdzie się da, actionable bije opisowe
  6. Cytuj źródła dla każdego faktu/liczby; "nie wiem" bije konfabulację
  7. Żadnych cichych porażek: nazywaj blokery wprost, nie brnij w złą ścieżkę
  8. Uczciwy postęp: raportuj, co faktycznie zostało dostarczone (done vs attempted vs failed)
  9. Konwencja ponad inwencję: trzymaj się istniejących wzorców, wyjaśniaj odstępstwa
  10. Pętla learnings: dopisuj do learnings.md, gdy zostaniesz poprawiony w powtarzającym się błędzie

Efekt

Dzięki tej automatycznej iniekcji presety stały się o 50-70% krótsze. Przykład: product-owner spadł z 733 do 404 znaków — została tylko "User-first lens" (specyficzna rama), reszta (priorytety/roadmap/zgłoszenia/DoD/trade-offy) to teraz baseline.

Administratorzy mogą rozszerzyć baseline w shared/cli-routes.ts — zmiana zastosuje się automatycznie do wszystkich workerów przy następnym spawnie.


Binary Evals — Walidacja odpowiedzi

Czym jest?

Deklaratywne reguły sprawdzania jakości odpowiedzi workerów. Każda reguła jest deterministyczna (bez AI), działa natychmiastowo i nie blokuje odpowiedzi. Wyniki mają severity warning lub info — informują, ale nie zatrzymują.

6 typów reguł

Typ Opis Przykład
string_contains Odpowiedź zawiera podciąg "verdict" w code review
string_not_contains Odpowiedź NIE zawiera podciągu Brak --force w output
regex_match Odpowiedź pasuje do regex Zawiera metrykę (disk|RAM|CPU)
regex_not_match Odpowiedź NIE pasuje do regex Brak credentials w output
max_length Długość <= wartości Odpowiedź do 5000 znaków
min_length Długość >= wartości Odpowiedź minimum 1000 znaków

Format pliku evals

Plik umieszcza się obok skilla: 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"
    }
  ]
}

Każda reguła ma unikalny id, czytelną dla człowieka nazwę name, jeden z 6 typów, value do porównania i severity (warning lub info).


Context Router — Automatyczny dobór skilli

Jak działa?

Przy każdej wiadomości Context Router ocenia wszystkie skille z skills/_registry.json i automatycznie dobiera najbardziej trafne:

  1. Trigger match (+2 punkty) — bezpośrednie wystąpienie słowa-triggera z wiadomości
  2. Keyword match (+1 punkt) — semantyczna bliskość na podstawie słów kluczowych
  3. Top-5 według sumy punktów jest wstrzykiwane jako SKILLS_HINT do promptu workera

Przykład

Wiadomość: "review the git commit for security"

Format rejestru skilli

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

Learnings — Pamięć korekt

Jak powstają?

Learnings to skumulowane reguły wynikające z informacji zwrotnej:

  1. Thumbs-down (👎) — automatycznie tworzy learning ze źródłem "negative" na podstawie problematycznej odpowiedzi
  2. Fix It — ponowne uruchomienie zadania generuje learning ze źródłem "fixit"
  3. Ręczne — decyzje architektoniczne i reguły, źródło "manual" lub "architecture"

Format pliku

Plik learnings.md w katalogu głównym projektu:

# 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...

Jak są używane?


Karpathy Loop — Nocne samodoskonalenie

Automatyczny cykl ulepszania skilli, zainspirowany ideami Andreja Karpathy'ego o iterative self-improvement.

Jak działa?

Co noc o 3:00 UTC uruchamia się automatyczny pipeline:

  1. Zbieranie metryk — odczytuje quality-metrics.json każdego projektu
  2. Wyszukiwanie problematycznych skilli — filtruje skille z success rate < 80% lub liczbą negative > positive feedback
  3. Analiza Sage — Haiku generuje ulepszoną wersję skilla na podstawie zebranych błędów
  4. Ślepy test A/B — 3 scenariusze, losowa kolejność, dual scoring:
    • Reguły Eval (60% wagi) + LLM judge (40% wagi)
  5. Tworzenie PR — jeśli nowa wersja wygrywa (new_wins > old_wins), tworzony jest pull request
  6. Raport CEO — wyniki trafiają na Telegram do ostatecznej decyzji

Metryki jakości

Każdy projekt akumuluje statystyki w 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
    }
  ]
}

Te metryki pozwalają systemowi obiektywnie określać, które skille wymagają poprawy, i śledzić postęp po aktualizacjach.