Skip to main content

Субагенты

Субагент — помощник, которому основной агент передаёт отдельную часть задачи. Пока субагент прогоняет тесты или изучает код, основной агент и вы продолжаете работу.

Зачем это нужно​

  • Параллельная работа. Например: Параллельно прогони тесты и объясни PR.
  • Чистый контекст. Побочная работа не засоряет основной чат: в него приходит только результат.
  • Независимая проверка. Отдельный агент проверяет изменения, не опираясь на рассуждения автора.

Два вида помощников​

ВидКак работаетКогда полезен
ФоркВетка текущего чата: наследует контекст и переиспользует кэш провайдераПараллельные части задачи, где нужен накопленный контекст
Независимый субагентНачинает с пустого контекста и получает задачу целикомНезависимый взгляд, ревью, роль со своими инструкциями

Какой вид выбрать, решает основной агент. Вы можете попросить об этом явно: Проверь мои изменения отдельным субагентом.

Форки и кэш промпта​

Форк создаётся от последнего завершённого хода основного агента. У него тот же системный промпт, те же инструменты в том же порядке, та же модель и тот же уровень рассуждений. Поэтому первый запрос форка читает историю чата из кэша провайдера, а не оплачивает её заново. На подписке Veai это сокращает время обработки запроса, а значит и расход минут; со своим ключом — экономит деньги напрямую.

Из этого следуют два ограничения:

  • Модель и уровень рассуждений форк берёт у основного агента. Задать их отдельно для форка нельзя. Если нужна другая модель, используйте независимого субагента с профилем модели.
  • Если вы только что сменили модель, истории для новой модели в кэше ещё нет, и первый запрос форка оплатит запись в кэш.

Пример: тесты в трёх модулях​

Попросим агента прогнать тесты в проекте из трёх модулей и починить падения. Агент запускает три форка, по одному на модуль. Под чатом появляется панель с их состоянием.

Агент запустил три форка в фоне, под чатом панель с их состоянием

Любой форк можно открыть и посмотреть, что он делает прямо сейчас: какую задачу ему дал основной агент, какие инструменты он вызывает и что выводят команды.

Окно работающего форка: задача от основного агента и ход выполнения

Закончив, форк присылает основному агенту отчёт: что сделано, какие файлы затронуты и что осталось непроверенным.

Отчёт форка основному агенту

Если форку нужно разрешение на команду, запрос появляется в основном окне. В нём видно, какой форк спрашивает и почему.

Запрос разрешения от фонового форка

Встроенные агенты​

АгентРольИнструменты
workhorseРеализует чётко поставленное изменение и сообщает, что изменилСтандартный набор
hawkeyeПроверяет изменение по задаче и сообщает о дефектах с файлом и строкойТолько чтение
retrieverНаходит файлы, точки входа и поток данных и подсказывает, с чего начатьТолько чтение

Как следить за субагентами​

Запущенные субагенты видны на панели работы в терминале.

  • Нажмите Enter на субагенте, чтобы следить за ним в реальном времени.
  • В истории субагента клавиша b отправляет его в фон, а s останавливает.

Субагент может работать в фоне, пока вы продолжаете переписку. Результат придёт основному агенту автоматически.

Свои агенты и профили моделей​

Агенты задаются Markdown-файлами:

ЧтоДля всех проектовДля одного проекта
Агент (роль, инструкции, инструменты, скиллы)~/.veai/agents/*.md<проект>/.veai/agents/*.md
Профиль модели (модель и уровень рассуждений)~/.veai/models/*.md<проект>/.veai/models/*.md

Агенты и профили комбинируются: один агент-ревьюер может работать на дешёвой модели для маленького диффа и на сильной — для большого. Если профиль не указан, субагент работает на модели основного агента.

Пример агента <проект>/.veai/agents/reviewer.md:

---
name: reviewer
description: Независимое ревью готового изменения. Только чтение.
tools: [read, grep, find, ls]
---
Проверь изменение по задаче. Сообщай о дефектах с файлом и строкой. Ничего не редактируй.

Проще всего попросить агента создать файл: Создай агента-ревьюера, который только читает код. Команда /agents показывает всех агентов, их источник и состояние и позволяет включать и выключать их.

Настройки​

В settings.json:

КлючПо умолчаниюЧто задаёт
subagents.maxConcurrency20Сколько субагентов могут работать или ждать одновременно
subagents.disabledAgents[]Отключённые агенты, включая встроенные
subagents.disabledProfiles[]Отключённые профили моделей

Подробнее — в разделе «Настройки».

Ограничения​

  • Вложенных субагентов нет: субагент и форк не могут запускать своих субагентов.
  • Если лимит параллельных субагентов (subagents.maxConcurrency) исчерпан, новый запуск отклоняется. Основной агент получает отказ и сам решает, что остановить.
  • Если субагент закончил работу и не прислал отчёт, CLI напоминает ему об этом. После нескольких напоминаний субагент завершается с ошибкой.
  • Каждый форк и субагент расходует минуты сам: три параллельных форка списывают минуты втрое быстрее, чем один.
  • Субагент начинает работу в режиме разрешений основного агента и следует его переключениям.
  • Субагент не переключается на другую модель во время работы. Если модель из профиля недоступна, запуск завершится ошибкой: CLI не подставит другую модель молча.
  • Поля model из агентов других инструментов (например, .claude/agents/) не действуют. Модель задаётся только через профиль.