Воркери та Intelligence Layer
Arc OS використовує систему воркерів для розподілу задач між спеціалізованими AI-агентами, а Intelligence Layer забезпечує якість їхніх відповідей через чотири модулі: Binary Evals, Context Router, Learnings та Karpathy Loop.
Система воркерів
Кожен воркер — це окремий AI-агент з визначеною роллю, моделлю та набором інструментів. Воркери працюють у рамках проєкту і доступні через Workspace UI або Telegram-команди (/c, /d, /w:worker_id).
Вбудовані воркери
| Воркер | ID | Модель | Тип | Max Turns | Інструменти | Призначення |
|---|---|---|---|---|---|---|
| Consultant | consultant |
Sonnet 4.5 | chat | 10 | Read, Glob, Grep, WebSearch, WebFetch, Bash | Стратегічний радник, аналіз, Q&A |
| Developer | developer |
Opus 4.6 | terminal | 20 | Всі | Виконання задач, код, деплой |
| UI/UX Designer | ui-designer |
Sonnet 4.5 | chat | 8 | Read, Glob, Grep, WebFetch | Дизайн, UX аудит |
| Knowledge Archivist | archivist |
Sonnet 4.5 | terminal | 15 | Read, Glob, Grep, Write, Edit | Документація, wiki |
| Sentinel | sentinel |
Sonnet 4.5 | chat | 5 | Read, Glob, Grep, WebSearch, WebFetch | Безпека, аудит |
| Product Owner | product-owner |
Sonnet 4.5 | chat | 5 | Read, Glob, Grep, WebSearch, WebFetch | Roadmap, пріоритизація |
Типи воркерів
- chat — turn-based розмова з повною історією контексту. Воркер отримує всю попередню переписку і відповідає як співрозмовник.
- terminal — streaming виконання з tool events. Воркер працює як термінальна сесія, виконуючи інструменти послідовно і транслюючи прогрес у реальному часі.
Створення кастомного воркера
Кастомні воркери описуються у файлі config/workers_registry.json. Кожен запис визначає поведінку агента:
{
"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
}
Поля конфігурації
| Поле | Тип | Опис |
|---|---|---|
id |
string | Унікальний ідентифікатор воркера, використовується в командах (/w:id) |
label |
string | Відображуване ім'я у UI |
icon |
string | Emoji-іконка для аватару |
type |
"chat" | "terminal" |
Режим роботи (див. вище) |
model |
string | Claude модель (claude-sonnet-4-5, claude-opus-4-6, claude-haiku-3-5) |
max_turns |
number | Максимальна кількість tool-use циклів за одну відповідь |
tools |
"all" | string[] |
Доступні інструменти. "all" дає повний набір |
system_prompt |
string | Inline системний промпт |
system_prompt_skill |
string | Шлях до файлу з системним промптом (альтернатива inline) |
prompt_style |
"history" | "gsd" |
Стиль промптування: history зберігає контекст, gsd — task-oriented |
output_format |
"text" | "stream-json" |
Формат виводу |
focus_dirs |
string[] | Директорії, на які воркер фокусується |
log_category |
string | Категорія для логування |
builtin |
boolean | true для вбудованих воркерів (не видаляються через UI) |
Binary Evals — Валідація відповідей
Що це?
Декларативні правила перевірки якості відповідей воркерів. Кожне правило — детерміністичне (без AI), працює миттєво і не блокує відповідь. Результати мають severity warning або info — вони інформують, а не зупиняють.
6 типів правил
| Тип | Опис | Приклад |
|---|---|---|
string_contains |
Відповідь містить підрядок | "verdict" в code review |
string_not_contains |
Відповідь НЕ містить підрядок | Немає --force в output |
regex_match |
Відповідь відповідає regex | Містить метрику (disk|RAM|CPU) |
regex_not_match |
Відповідь НЕ відповідає regex | Немає credentials в output |
max_length |
Довжина <= значення | Відповідь до 5000 символів |
min_length |
Довжина >= значення | Відповідь мінімум 1000 символів |
Формат файлу evals
Файл розміщується поруч із навичкою: 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"
}
]
}
Кожне правило має унікальний id, людиночитабельний name, один із 6 типів, value для порівняння та severity (warning або info).
Context Router — Автопідбір навичок
Як працює?
При кожному повідомленні Context Router скорить всі навички з skills/_registry.json і автоматично підбирає найрелевантніші:
- Trigger match (+2 бали) — пряме входження слова-тригеру з повідомлення
- Keyword match (+1 бал) — семантична близькість за ключовими словами
- Top-5 за сумою балів injected як
SKILLS_HINTу промпт воркера
Приклад
Повідомлення: "review the git commit for security"
code-review: trigger"review"знайдено → +2 балиgit-manager: keyword"commit"знайдено → +1 бал- Результат:
code-review(2),git-manager(1) injected у промпт
Формат реєстру навичок
{
"name": "code-review",
"triggers": ["review", "audit", "security"],
"keywords": ["vulnerability", "OWASP", "XSS"],
"agents": ["summer"],
"category": ["complex"]
}
triggers— слова, що точно вказують на навичку (високий пріоритет)keywords— додаткові терміни для семантичного зв'язкуagents— які воркери можуть використовувати цю навичкуcategory— класифікація (simple,complex,critical)
Learnings — Пам'ять корекцій
Як створюються?
Learnings — це accumulated правила, що виникають із зворотного зв'язку:
- Thumbs-down (👎) — автоматично створюється learning з source
"negative"на основі проблемної відповіді - Fix It — повторний запуск задачі генерує learning з source
"fixit" - Ручні — архітектурні рішення та правила, source
"manual"або"architecture"
Формат файлу
Файл learnings.md у корені проєкту:
# 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...
Як використовуються?
- Завантажуються при старті кожної сесії воркера
- Injected у GSD-промпт Developer (бюджет — 2000 символів)
- Найновіші правила — першими (пріоритет за часом)
- Діють як імунна пам'ять — помилки, зроблені одного разу, не повторюються у наступних сесіях
Karpathy Loop — Нічне самовдосконалення
Автоматичний цикл покращення навичок, натхненний ідеями Андрія Карпаті про iterative self-improvement.
Як працює?
Щоночі о 3:00 UTC запускається автоматичний pipeline:
- Збір метрик — зчитує
quality-metrics.jsonкожного проєкту - Пошук проблемних навичок — фільтрує навички з success rate < 80% або кількістю negative > positive feedback
- Sage аналіз — Haiku генерує покращену версію навички на основі зібраних помилок
- Blind A/B тест — 3 сценарії, рандомізований порядок, dual scoring:
- Eval rules (60% ваги) + LLM judge (40% ваги)
- PR створення — якщо нова версія перемагає (
new_wins > old_wins), створюється pull request - Звіт CEO — результати надсилаються в Telegram для фінального рішення
Метрики якості
Кожен проєкт накопичує статистику у 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
}
]
}
Ці метрики дозволяють системі об'єктивно визначати, які навички потребують покращення, і відстежувати прогрес після оновлень.