Categories и Skills: динамическая композиция агентов (v3.0)
Что вы научитесь делать
- ✅ Использовать 7 встроенных Categories для автоматического выбора оптимальной модели для разных типов задач
- ✅ Загружать 4 встроенных Skills для инъекции профессиональных знаний и MCP-инструментов в агентов
- ✅ Комбинировать Category и Skill через
delegate_taskдля создания специализированных подагентов - ✅ Создавать собственные Category и Skill для удовлетворения конкретных потребностей проекта
Ваша текущая проблема
Агенты недостаточно специализированы? Слишком высокие затраты?
Представьте такой сценарий:
| Проблема | Традиционный подход | Реальная потребность |
|---|---|---|
| UI-задачи на супер-мощной модели | Использовать Claude Opus для простых изменений стилей | Высокие затраты, потеря вычислительных ресурсов |
| Сложная логика на облегчённой модели | Использовать Haiku для проектирования архитектуры | Недостаточные возможности рассуждения, ошибочные решения |
| Непоследовательный стиль коммитов Git | Ручное управление коммитами, подвержено ошибкам | Требуется автоматическое обнаружение и следование стандартам проекта |
| Необходимость браузерного тестирования | Ручное открытие браузера для проверки | Требуется поддержка MCP-инструмента Playwright |
Основные проблемы:
- Все задачи обрабатываются одним агентом → несоответствие модели и инструментов
- 10 жёстко закодированных агентов → отсутствие гибкой комбинации
- Отсутствие профессиональных навыков → агентам не хватает знаний в конкретных областях
Решение: система 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 |
🎒 Подготовка
Предварительные требования
Перед началом этого учебника убедитесь, что:
- Установлен oh-my-opencode (см. Учебник по установке)
- Настроен минимум один Provider (см. Настройка Provider)
- Понято базовое использование инструмента delegate_task (см. Фоновые параллельные задачи)
Ключевые концепции
Category — это "какой это тип работы" (определяет модель, температуру, режим мышления), Skill — это "какие профессиональные знания и инструменты нужны" (инъекция промптов и MCP-серверов). Комбинируйте оба через delegate_task(category=..., skills=[...]).
Основная концепция
Categories: тип задачи определяет модель
oh-my-opencode предоставляет 7 встроенных Categories, каждый из которых предварительно настроен с оптимальной моделью и режимом мышления:
| Category | Модель по умолчанию | Temperature | Назначение |
|---|---|---|---|
visual-engineering | google/gemini-3-pro | 0.7 | Frontend, UI/UX, задачи дизайна |
ultrabrain | openai/gpt-5.2-codex (xhigh) | 0.1 | Задачи с высокими рассуждениями (сложные архитектурные решения) |
artistry | google/gemini-3-pro (max) | 0.7 | Креативные и художественные задачи (новые идеи) |
quick | anthropic/claude-haiku-4-5 | 0.1 | Быстрые, низкозатратные задачи (изменение одного файла) |
unspecified-low | anthropic/claude-sonnet-4-5 | 0.1 | Задачи средней сложности, не соответствующие другим категориям |
unspecified-high | anthropic/claude-opus-4-5 (max) | 0.1 | Задачи высокого качества, не соответствующие другим категориям |
writing | google/gemini-3-flash | 0.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-master | Git-эксперт | Нет | Автоматические коммиты, поиск истории, rebase |
Как работает Skill:
При загрузке Skill система:
- Считывает содержимое промпта из файла SKILL.md
- Если определён MCP, автоматически запускает соответствующий сервер
- Добавляет промпт 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Вы должны увидеть:
- Запускается Sisyphus Junior, использует модель
claude-haiku-4-5 - Загружается Skill
git-master, промпт содержит знания Git-эксперта - Агент выполняет следующие действия:bash
# Параллельный сбор контекста git status git diff --stat git log -30 --oneline - Обнаруживает стиль коммитов (например, Semantic vs Plain vs Short)
- Планирует атомарные коммиты (3 файла → минимум 2 коммита)
- Выполняет коммиты, следуя обнаруженному стилю
Контрольная точка ✅:
Проверьте успешность коммитов:
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Вы должны увидеть:
- Запускается Sisyphus Junior, использует модель
google/gemini-3-pro - Загружаются промпты двух Skills:
frontend-ui-ux: руководство по мышлению дизайнераplaywright: инструкции по автоматизации браузера
- Автоматически запускается MCP-сервер
@playwright/mcp - Агент выполняет:
- Дизайн компонента диаграмм (применение мышления дизайнера)
- Реализация адаптивной верстки
- Добавление эффектов анимации
- Использование инструментов Playwright:
playwright_navigate: http://localhost:3000/dashboard playwright_take_screenshot: output=dashboard-chart.png
Контрольная точка ✅:
Проверьте правильность рендеринга компонента:
# Проверьте новые файлы
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Вы должны увидеть:
- Запускается Sisyphus Junior, использует модель
openai/gpt-5.2-codex(вариант xhigh) - Не загружаются никакие Skills
- Агент выполняет глубокое рассуждение:
- Анализ существующей архитектуры
- Сравнение шаблонов связи (например, 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:
{
"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
}
}
}
}Описание полей:
| Поле | Тип | Описание |
|---|---|---|
model | string | Переопределение модели, используемой Category |
temperature | number | Уровень креативности (0-2) |
prompt_append | string | Содержимое, добавляемое в системный промпт |
thinking | object | Конфигурация Thinking ({ type, budgetTokens }) |
tools | object | Отключение разрешений инструментов ({ toolName: false }) |
Контрольная точка ✅:
Проверьте действие пользовательской Category:
# Использование пользовательской 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):
{
"mcpServers": {
"playwright": {
"command": "npx",
"args": ["@playwright/mcp@latest"]
}
}
}Если Playwright MCP не настроен, Skill playwright автоматически запустит его.
Итог урока
Система Categories и Skills позволяет гибко комбинировать агентов:
| Компонент | Роль | Способ конфигурации |
|---|---|---|
| Category | Определяет модель и режим мышления | delegate_task(category="...") или файл конфигурации |
| Skill | Инъецирует профессиональные знания и MCP | delegate_task(load_skills=["..."]) или файл SKILL.md |
| Sisyphus Junior | Выполняет задачу, не может делегировать снова | Автоматически создаётся, ручное указание не требуется |
Стратегии комбинации:
- UI-задачи:
visual-engineering+frontend-ui-ux+playwright - Быстрое исправление:
quick+git-master - Глубокое рассуждение:
ultrabrain(без Skill) - Написание документации:
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_task | src/tools/delegate-task/tools.ts | Весь файл (1070 строк) |
| Функция resolveCategoryConfig | src/tools/delegate-task/tools.ts | 113-152 |
| Функция buildSystemContent | src/tools/delegate-task/tools.ts | 176-188 |
| Конфигурация Categories по умолчанию | src/tools/delegate-task/constants.ts | 158-166 |
| Добавление промптов Categories | src/tools/delegate-task/constants.ts | 168-176 |
| Описания Categories | src/tools/delegate-task/constants.ts | 178-186 |
| Schema конфигурации Category | src/config/schema.ts | 154-172 |
| Определения встроенных Skills | src/features/builtin-skills/ | Структура каталога |
| Промпт Skill git-master | src/features/builtin-skills/git-master/SKILL.md | Весь файл (1106 строк) |
Ключевые константы:
SISYPHUS_JUNIOR_AGENT = "sisyphus-junior": агент выполнения для делегирования CategoryDEFAULT_CATEGORIES: конфигурации моделей 7 встроенных CategoriesCATEGORY_PROMPT_APPENDS: добавления промптов для каждой CategoryCATEGORY_DESCRIPTIONS: описания каждой Category (отображаются в подсказке delegate_task)
Ключевые функции:
resolveCategoryConfig(): разрешает конфигурацию Category, объединяя пользовательские переопределения и значения по умолчаниюbuildSystemContent(): объединяет содержимое промптов Skill и CategorycreateDelegateTask(): создаёт определение инструмента 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-browsersrc/features/builtin-skills/dev-browser/SKILL.md: справочная документация по автоматизации браузера