Skip to content

Categories и Skills: динамическая композиция агентов (v3.0)

Что вы научитесь делать

  • ✅ Использовать 7 встроенных Categories для автоматического выбора оптимальной модели для разных типов задач
  • ✅ Загружать 4 встроенных Skills для инъекции профессиональных знаний и MCP-инструментов в агентов
  • ✅ Комбинировать Category и Skill через delegate_task для создания специализированных подагентов
  • ✅ Создавать собственные Category и Skill для удовлетворения конкретных потребностей проекта

Ваша текущая проблема

Агенты недостаточно специализированы? Слишком высокие затраты?

Представьте такой сценарий:

ПроблемаТрадиционный подходРеальная потребность
UI-задачи на супер-мощной моделиИспользовать Claude Opus для простых изменений стилейВысокие затраты, потеря вычислительных ресурсов
Сложная логика на облегчённой моделиИспользовать Haiku для проектирования архитектурыНедостаточные возможности рассуждения, ошибочные решения
Непоследовательный стиль коммитов GitРучное управление коммитами, подвержено ошибкамТребуется автоматическое обнаружение и следование стандартам проекта
Необходимость браузерного тестированияРучное открытие браузера для проверкиТребуется поддержка MCP-инструмента Playwright

Основные проблемы:

  1. Все задачи обрабатываются одним агентом → несоответствие модели и инструментов
  2. 10 жёстко закодированных агентов → отсутствие гибкой комбинации
  3. Отсутствие профессиональных навыков → агентам не хватает знаний в конкретных областях

Решение: система Categories и Skills в v3.0 позволяет комбинировать агентов как конструктор:

  • Category (абстракция модели): определение типа задачи → автоматический выбор оптимальной модели
  • Skill (профессиональные знания): инъекция знаний предметной области и MCP-инструментов → делает агентов более профессиональными

Когда использовать этот подход

СценарийРекомендуемая комбинацияЭффект
UI-дизайн и реализацияcategory="visual-engineering" + skills=["frontend-ui-ux", "playwright"]Автоматический выбор Gemini 3 Pro + мышление дизайнера + браузерная проверка
Быстрое исправление и коммитcategory="quick" + skills=["git-master"]Низкая стоимость с Haiku + автоматическое обнаружение стиля коммитов
Глубокий анализ архитектурыcategory="ultrabrain" + skills=[]Чистые рассуждения на GPT-5.2 Codex (xhigh)
Написание документацииcategory="writing" + skills=[]Быстрая генерация документации на Gemini 3 Flash

🎒 Подготовка

Предварительные требования

Перед началом этого учебника убедитесь, что:

  1. Установлен oh-my-opencode (см. Учебник по установке)
  2. Настроен минимум один Provider (см. Настройка Provider)
  3. Понято базовое использование инструмента delegate_task (см. Фоновые параллельные задачи)

Ключевые концепции

Category — это "какой это тип работы" (определяет модель, температуру, режим мышления), Skill — это "какие профессиональные знания и инструменты нужны" (инъекция промптов и MCP-серверов). Комбинируйте оба через delegate_task(category=..., skills=[...]).

Основная концепция

Categories: тип задачи определяет модель

oh-my-opencode предоставляет 7 встроенных Categories, каждый из которых предварительно настроен с оптимальной моделью и режимом мышления:

CategoryМодель по умолчаниюTemperatureНазначение
visual-engineeringgoogle/gemini-3-pro0.7Frontend, UI/UX, задачи дизайна
ultrabrainopenai/gpt-5.2-codex (xhigh)0.1Задачи с высокими рассуждениями (сложные архитектурные решения)
artistrygoogle/gemini-3-pro (max)0.7Креативные и художественные задачи (новые идеи)
quickanthropic/claude-haiku-4-50.1Быстрые, низкозатратные задачи (изменение одного файла)
unspecified-lowanthropic/claude-sonnet-4-50.1Задачи средней сложности, не соответствующие другим категориям
unspecified-highanthropic/claude-opus-4-5 (max)0.1Задачи высокого качества, не соответствующие другим категориям
writinggoogle/gemini-3-flash0.1Задачи документации и письма

Зачем нужны Categories?

Различные задачи требуют моделей с разными возможностями:

  • UI-дизайн → требуется визуальная креативность (Gemini 3 Pro)
  • Архитектурные решения → требуется глубокое рассуждение (GPT-5.2 Codex xhigh)
  • Простые изменения → требуется быстрый отклик (Claude Haiku)

Ручной выбор модели для каждой задачи утомителен, Categories позволяют просто объявить тип задачи, а система автоматически выберет оптимальную модель.

Skills: инъекция профессиональных знаний

Skill — это эксперт предметной области, определённый через файл SKILL.md, который может инъецировать:

  • Профессиональные знания (расширение промпта)
  • MCP-серверы (автоматическая загрузка)
  • Руководства по рабочим процессам (конкретные шаги операций)

4 встроенных Skills:

SkillФункциональностьMCPНазначение
playwrightАвтоматизация браузера@playwright/mcpПроверка UI, скриншоты, веб-скрапинг
agent-browserАвтоматизация браузера (Vercel)Ручная установкаТо же самое, альтернативный вариант
frontend-ui-uxМышление дизайнераНетСоздание красивых интерфейсов
git-masterGit-экспертНетАвтоматические коммиты, поиск истории, rebase

Как работает Skill:

При загрузке Skill система:

  1. Считывает содержимое промпта из файла SKILL.md
  2. Если определён MCP, автоматически запускает соответствующий сервер
  3. Добавляет промпт Skill в системный промпт агента

Например, Skill git-master включает:

  • Обнаружение стиля коммитов (автоматическое распознание формата коммитов проекта)
  • Правила атомарных коммитов (3 файла → минимум 2 коммита)
  • Рабочий процесс Rebase (squash, fixup, обработка конфликтов)
  • Поиск истории (blame, bisect, log -S)

Sisyphus Junior: исполнитель задач

При использовании Category создаётся специальный подагент — Sisyphus Junior.

Ключевые характеристики:

  • ✅ Наследует конфигурацию модели Category
  • ✅ Наследует промпты загруженных Skills
  • Не может делегировать снова (запрещено использование инструментов task и delegate_task)

Почему запрещена повторная делегация?

Для предотвращения бесконечных циклов и расхождения задач:

Sisyphus (основной агент)
  ↓ delegate_task(category="quick")
Sisyphus Junior
  ↓ Попытка delegate_task (если разрешено)
Sisyphus Junior 2
  ↓ delegate_task
...бесконечный цикл...

Запретив повторную делегацию, Sisyphus Junior сосредотачивается на выполнении назначенной задачи, обеспечивая чёткие цели и эффективное выполнение.

Следуйте за мной

Шаг 1: Быстрое исправление (Quick + Git Master)

Используем реальный сценарий: вы изменили несколько файлов и хотите автоматически закоммитить их с соблюдением стиля проекта.

Почему Использование модели Haiku от Category quick имеет низкую стоимость, а配合 Skill git-master автоматически обнаруживает стиль коммитов, обеспечивая идеальные коммиты.

Введите в OpenCode:

Используйте delegate_task для коммита текущих изменений
- category: quick
- load_skills: ["git-master"]
- prompt: "За коммитьте все текущие изменения. Следуйте стилю коммитов проекта (обнаружьте через git log). Обеспечьте атомарные коммиты, максимум 3 файла на коммит."
- run_in_background: false

Вы должны увидеть:

  1. Запускается Sisyphus Junior, использует модель claude-haiku-4-5
  2. Загружается Skill git-master, промпт содержит знания Git-эксперта
  3. Агент выполняет следующие действия:
    bash
    # Параллельный сбор контекста
    git status
    git diff --stat
    git log -30 --oneline
  4. Обнаруживает стиль коммитов (например, Semantic vs Plain vs Short)
  5. Планирует атомарные коммиты (3 файла → минимум 2 коммита)
  6. Выполняет коммиты, следуя обнаруженному стилю

Контрольная точка ✅:

Проверьте успешность коммитов:

bash
git log --oneline -5

Вы должны увидеть несколько атомарных коммитов, каждый с чётким стилем сообщений.

Шаг 2: Реализация и проверка UI (Visual + Playwright + UI/UX)

Сценарий: вам нужно добавить адаптивный компонент диаграмм на страницу и выполнить браузерную проверку.

Почему

  • Category visual-engineering выбирает Gemini 3 Pro (хорошо в визуальном дизайне)
  • Skill playwright предоставляет MCP-инструменты для браузерного тестирования
  • Skill frontend-ui-ux инъецирует мышление дизайнера (цветовая схема, типографика, анимация)

Введите в OpenCode:

Используйте delegate_task для реализации компонента диаграмм
- category: visual-engineering
- load_skills: ["frontend-ui-ux", "playwright"]
- prompt: "Добавьте адаптивный компонент диаграмм на страницу dashboard. Требования:
  - Используйте Tailwind CSS
  - Поддержка мобильных и десктопных устройств
  - Используйте яркую цветовую схему (избегайте фиолетовых градиентов)
  - Добавьте эффекты перекрывающейся анимации
  - После завершения сделайте скриншот через playwright для проверки"
- run_in_background: false

Вы должны увидеть:

  1. Запускается Sisyphus Junior, использует модель google/gemini-3-pro
  2. Загружаются промпты двух Skills:
    • frontend-ui-ux: руководство по мышлению дизайнера
    • playwright: инструкции по автоматизации браузера
  3. Автоматически запускается MCP-сервер @playwright/mcp
  4. Агент выполняет:
    • Дизайн компонента диаграмм (применение мышления дизайнера)
    • Реализация адаптивной верстки
    • Добавление эффектов анимации
    • Использование инструментов Playwright:
      playwright_navigate: http://localhost:3000/dashboard
      playwright_take_screenshot: output=dashboard-chart.png

Контрольная точка ✅:

Проверьте правильность рендеринга компонента:

bash
# Проверьте новые файлы
git diff --name-only
git diff --stat

# Просмотрите скриншоты
ls screenshots/

Вы должны увидеть:

  • Новый файл компонента диаграмм
  • Код адаптивных стилей
  • Файл скриншота (проверка прошла)

Шаг 3: Глубокий анализ архитектуры (Ultrabrain чистое рассуждение)

Сценарий: вам нужно спроектировать сложный шаблон связи для микросервисной архитектуры.

Почему

  • Category ultrabrain выбирает GPT-5.2 Codex (xhigh), предоставляя самые сильные возможности рассуждения
  • Без загрузки Skills → чистое рассуждение, без помех профессиональных знаний

Введите в OpenCode:

Используйте delegate_task для анализа архитектуры
- category: ultrabrain
- load_skills: []
- prompt: "Создайте эффективный шаблон связи для нашей микросервисной архитектуры. Требования:
  - Поддержка обнаружения сервисов
  - Обработка сетевых разделов
  - Минимизация задержки
  - Предоставление стратегии понижения

  Текущая архитектура: [краткое описание]
  Технологический стек: gRPC, Kubernetes, Consul"
- run_in_background: false

Вы должны увидеть:

  1. Запускается Sisyphus Junior, использует модель openai/gpt-5.2-codex (вариант xhigh)
  2. Не загружаются никакие Skills
  3. Агент выполняет глубокое рассуждение:
    • Анализ существующей архитектуры
    • Сравнение шаблонов связи (например, CQRS, Event Sourcing, Saga)
    • Взвешивание плюсов и минусов
    • Предоставление многоуровневых рекомендаций (Bottom Line → Action Plan → Risks)

Структура вывода:

Bottom Line: Рекомендуется использовать гибридный шаблон (gRPC + Event Bus)

Action Plan:
1. Использовать gRPC для синхронной связи между сервисами
2. Асинхронно публиковать ключевые события через Event Bus
3. Реализовать идемпотентность для обработки повторных сообщений

Risks and Mitigations:
- Risk: Сетевые разделы приводят к потере сообщений
  Mitigation: Реализовать повторную отправку сообщений и очередь мёртвых писем

Контрольная точка ✅:

Проверьте полноту решения:

  • Учитывается ли обнаружение сервисов?
  • Обрабатываются ли сетевые разделы?
  • Предоставляется ли стратегия понижения?

Шаг 4: Пользовательская Category (опционально)

Если встроенные Categories не удовлетворяют вашим потребностям, вы можете настроить их в oh-my-opencode.json.

Почему Некоторые проекты требуют специфической конфигурации моделей (например, Korean Writer, Deep Reasoning).

Отредактируйте ~/.config/opencode/oh-my-opencode.json:

jsonc
{
  "categories": {
    "korean-writer": {
      "model": "google/gemini-3-flash",
      "temperature": 0.5,
      "prompt_append": "You are a Korean technical writer. Maintain a friendly and clear tone."
    },
    
    "deep-reasoning": {
      "model": "anthropic/claude-opus-4-5",
      "thinking": {
        "type": "enabled",
        "budgetTokens": 32000
      },
      "tools": {
        "websearch_web_search_exa": false
      }
    }
  }
}

Описание полей:

ПолеТипОписание
modelstringПереопределение модели, используемой Category
temperaturenumberУровень креативности (0-2)
prompt_appendstringСодержимое, добавляемое в системный промпт
thinkingobjectКонфигурация Thinking ({ type, budgetTokens })
toolsobjectОтключение разрешений инструментов ({ toolName: false })

Контрольная точка ✅:

Проверьте действие пользовательской Category:

bash
# Использование пользовательской Category
delegate_task(category="korean-writer", load_skills=[], prompt="...")

Вы должны увидеть, что система использует настроенную вами модель и промпт.

Предупреждения о ловушках

Ловушка 1: Промпт Category Quick недостаточно чёткий

Проблема: Category quick использует модель Haiku с ограниченными возможностями рассуждения. Если промпт слишком расплывчатый, результат будет плохим.

Неправильный пример:

delegate_task(category="quick", load_skills=["git-master"], prompt="За коммитьте изменения")

Правильный подход:

TASK: За коммитьте все текущие изменения кода

MUST DO:
1. Обнаружить стиль коммитов проекта (через git log -30)
2. Разделить 8 файлов по каталогам на 3+ атомарных коммита
3. Максимум 3 файла на коммит
4. Следуйте обнаруженному стилю (Semantic/Plain/Short)

MUST NOT DO:
- Объединять файлы из разных каталогов в один коммит
- Пропускать планирование коммитов и выполнять сразу

EXPECTED OUTPUT:
- Несколько атомарных коммитов
- Каждое сообщение коммита соответствует стилю проекта
- Следование порядку зависимостей (определения типов → реализация → тесты)

Ловушка 2: Забыть указать load_skills

Проблема: load_skills — это обязательный параметр, без указания будет ошибка.

Ошибка:

delegate_task(category="quick", prompt="...")

Вывод ошибки:

Error: Invalid arguments: 'load_skills' parameter is REQUIRED.
Pass [] if no skills needed, but IT IS HIGHLY RECOMMENDED to pass proper skills.

Правильный подход:

# Без Skills, явно передайте пустой массив
delegate_task(category="unspecified-low", load_skills=[], prompt="...")

Ловушка 3: Одновременное указание Category и subagent_type

Проблема: Эти параметры взаимно исключаются, нельзя указывать оба одновременно.

Ошибка:

delegate_task(
  category="quick",
  subagent_type="oracle",  # ❌ Конфликт
  ...
)

Правильный подход:

# Используйте Category (рекомендуется)
delegate_task(category="quick", load_skills=[], prompt="...")

# Или напрямую укажите агента
delegate_task(subagent_type="oracle", load_skills=[], prompt="...")

Ловушка 4: Правило множественных коммитов Git Master

Проблема: Skill git-master требует множественных коммитов, 1 коммит из 3+ файлов не пройдёт.

Ошибка:

# Попытка 1 коммита 8 файлов
git commit -m "Update landing page"  # ❌ git-master отклонит

Правильный подход:

# Разделите по каталогам на несколько коммитов
git add app/page.tsx app/layout.tsx
git commit -m "Add app layer"  # ✅ Commit 1

git add components/demo/*
git commit -m "Add demo components"  # ✅ Commit 2

git add e2e/*
git commit -m "Add tests"  # ✅ Commit 3

Ловушка 5: Skill Playwright без установленного MCP

Проблема: Перед использованием Skill playwright убедитесь, что MCP-сервер доступен.

Ошибка:

delegate_task(category="visual-engineering", load_skills=["playwright"], prompt="Сделайте скриншот...")

Правильный подход:

Проверьте конфигурацию MCP (~/.config/opencode/mcp.json или .claude/.mcp.json):

jsonc
{
  "mcpServers": {
    "playwright": {
      "command": "npx",
      "args": ["@playwright/mcp@latest"]
    }
  }
}

Если Playwright MCP не настроен, Skill playwright автоматически запустит его.

Итог урока

Система Categories и Skills позволяет гибко комбинировать агентов:

КомпонентРольСпособ конфигурации
CategoryОпределяет модель и режим мышленияdelegate_task(category="...") или файл конфигурации
SkillИнъецирует профессиональные знания и MCPdelegate_task(load_skills=["..."]) или файл SKILL.md
Sisyphus JuniorВыполняет задачу, не может делегировать сноваАвтоматически создаётся, ручное указание не требуется

Стратегии комбинации:

  1. UI-задачи: visual-engineering + frontend-ui-ux + playwright
  2. Быстрое исправление: quick + git-master
  3. Глубокое рассуждение: ultrabrain (без Skill)
  4. Написание документации: writing (без Skill)

Лучшие практики:

  • ✅ Всегда указывайте load_skills (даже если это пустой массив)
  • ✅ Промпт Category quick должен быть чётким (возможности рассуждения Haiku ограничены)
  • ✅ Для задач Git всегда используйте Skill git-master (автоматическое обнаружение стиля)
  • ✅ Для задач UI всегда используйте Skill playwright (браузерная проверка)
  • ✅ Выбирайте подходящий Category в зависимости от типа задачи (а не используйте основной агент по умолчанию)

Предпросмотр следующего урока

В следующем уроке мы изучим Встроенные Skills: автоматизация браузера, Git-эксперт и UI-дизайнер.

Вы узнаете:

  • Детальный рабочий процесс Skill playwright
  • 3 режима Skill git-master (Commit/Rebase/History Search)
  • Дизайн-философию Skill frontend-ui-ux
  • Как создавать собственные Skills

Приложение: ссылка на исходный код

Нажмите, чтобы развернуть расположение исходного кода

Обновлено: 2026-01-26

ФункциональностьПуть к файлуНомер строки
Реализация инструмента delegate_tasksrc/tools/delegate-task/tools.tsВесь файл (1070 строк)
Функция resolveCategoryConfigsrc/tools/delegate-task/tools.ts113-152
Функция buildSystemContentsrc/tools/delegate-task/tools.ts176-188
Конфигурация Categories по умолчаниюsrc/tools/delegate-task/constants.ts158-166
Добавление промптов Categoriessrc/tools/delegate-task/constants.ts168-176
Описания Categoriessrc/tools/delegate-task/constants.ts178-186
Schema конфигурации Categorysrc/config/schema.ts154-172
Определения встроенных Skillssrc/features/builtin-skills/Структура каталога
Промпт Skill git-mastersrc/features/builtin-skills/git-master/SKILL.mdВесь файл (1106 строк)

Ключевые константы:

  • SISYPHUS_JUNIOR_AGENT = "sisyphus-junior": агент выполнения для делегирования Category
  • DEFAULT_CATEGORIES: конфигурации моделей 7 встроенных Categories
  • CATEGORY_PROMPT_APPENDS: добавления промптов для каждой Category
  • CATEGORY_DESCRIPTIONS: описания каждой Category (отображаются в подсказке delegate_task)

Ключевые функции:

  • resolveCategoryConfig(): разрешает конфигурацию Category, объединяя пользовательские переопределения и значения по умолчанию
  • buildSystemContent(): объединяет содержимое промптов Skill и Category
  • createDelegateTask(): создаёт определение инструмента delegate_task

Файлы встроенных Skills:

  • src/features/builtin-skills/frontend-ui-ux/SKILL.md: промпт мышления дизайнера
  • src/features/builtin-skills/git-master/SKILL.md: полный рабочий процесс Git-эксперта
  • src/features/builtin-skills/agent-browser/SKILL.md: конфигурация Vercel agent-browser
  • src/features/builtin-skills/dev-browser/SKILL.md: справочная документация по автоматизации браузера