Skip to content
Эта страница создана и переведена с помощью ИИ. Если вы заметили неточности, помогите нам улучшить её. Редактировать на GitHub

Сессии и агенты

PRX предоставляет восемь инструментов для мультиагентной оркестрации, позволяющих родительскому агенту порождать дочерних агентов, делегировать задачи специализированным агентам и управлять параллельными сессиями. Это основа архитектуры параллельной декомпозиции задач PRX, где сложные задачи разбиваются на подзадачи, обрабатываемые независимыми экземплярами агентов.

Инструменты сессий (sessions_spawn, sessions_send, sessions_list, sessions_history, session_status, subagents) управляют жизненным циклом сессий подагентов. Инструменты делегирования агентов (delegate, agents_list) обеспечивают маршрутизацию задач к именованным агентам с собственными провайдером, моделью и конфигурацией инструментов.

Инструменты сессий зарегистрированы в реестре all_tools() и всегда доступны. Инструменты delegate и agents_list регистрируются условно, только при наличии определений агентов в конфигурации.

Конфигурация

Конкурентность подагентов

toml
[agent.subagents]
max_concurrent = 4          # Максимум одновременных подагентов
max_depth = 3               # Максимальная глубина вложенности (подагенты, порождающие подагентов)
max_total_spawns = 20       # Общий бюджет порождений на корневую сессию
child_timeout_secs = 300    # Таймаут для выполнения отдельного дочернего агента

Определения делегируемых агентов

Именованные агенты определяются в секциях [agents.*]:

toml
[agents.researcher]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
system_prompt = "You are a research assistant. Find accurate, up-to-date information."
agentic = true
max_iterations = 10
allowed_tools = ["web_search_tool", "web_fetch", "file_read", "memory_store"]

[agents.coder]
provider = "openai"
model = "gpt-4o"
system_prompt = "You are a code generation specialist. Write clean, well-tested code."
agentic = true
max_iterations = 15
allowed_tools = ["shell", "file_read", "file_write", "git_operations"]

[agents.reviewer]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
system_prompt = "You are a code reviewer. Focus on correctness, security, and style."
agentic = true
max_iterations = 5
allowed_tools = ["file_read", "shell"]

Справочник инструментов

sessions_spawn

Порождает асинхронного подагента, работающего в фоне. Возвращает немедленно с ID запуска. Родитель автоматически уведомляется при завершении дочернего агента.

json
{
  "name": "sessions_spawn",
  "arguments": {
    "task": "Research the latest Rust async runtime benchmarks and summarize the findings.",
    "action": "spawn"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
taskstringДа--Описание задачи / системный промпт для подагента
actionstringНет"spawn"Действие: "spawn", "history" (просмотр журнала) или "steer" (перенаправление)
allowed_toolsarrayНетИнструменты родителяПодмножество инструментов, доступных подагенту

sessions_send

Отправляет сообщение в работающую сессию подагента, обеспечивая интерактивную коммуникацию между родителем и дочерним агентом.

json
{
  "name": "sessions_send",
  "arguments": {
    "session_id": "run_abc123",
    "message": "Focus on performance comparisons, not API differences."
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
session_idstringДа--ID запуска целевого подагента
messagestringДа--Сообщение для отправки подагенту

sessions_list

Список всех активных сессий подагентов с их статусом, описанием задачи и прошедшим временем.

json
{
  "name": "sessions_list",
  "arguments": {}
}

Параметры не требуются. Возвращает список активных сессий.

sessions_history

Просмотр журнала разговора запуска подагента, включая все вызовы инструментов и ответы LLM.

json
{
  "name": "sessions_history",
  "arguments": {
    "session_id": "run_abc123"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
session_idstringДа--ID запуска для получения истории

session_status

Проверка статуса конкретной сессии (выполняется, завершена, ошибка, таймаут).

json
{
  "name": "session_status",
  "arguments": {
    "session_id": "run_abc123"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
session_idstringДа--ID запуска для проверки

subagents

Управление пулом подагентов -- список, остановка или инспекция работающих подагентов.

json
{
  "name": "subagents",
  "arguments": {
    "action": "list"
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
actionstringДа--Действие: "list", "stop", "inspect"
session_idstringУсловно--Обязателен для действий "stop" и "inspect"

agents_list

Список всех настроенных делегируемых агентов с их моделями, возможностями и разрешёнными инструментами. Регистрируется только при наличии секций [agents.*].

json
{
  "name": "agents_list",
  "arguments": {}
}

Параметры не требуются. Возвращает определения агентов из конфигурации.

delegate

Делегирует задачу именованному агенту с собственным провайдером, моделью и набором инструментов. Делегированный агент выполняет изолированный агентный цикл и возвращает результат.

json
{
  "name": "delegate",
  "arguments": {
    "agent": "researcher",
    "task": "Find the top 5 Rust web frameworks by GitHub stars in 2026."
  }
}
ПараметрТипОбязательныйПо умолчаниюОписание
agentstringДа--Имя настроенного агента (из [agents.*])
taskstringДа--Описание задачи для делегированного агента

Паттерны использования

Параллельное исследование

Порождение нескольких подагентов для одновременного исследования разных тем:

Родитель: Мне нужно сравнение 3 движков баз данных для нашего проекта.

  [sessions_spawn] task="Research PostgreSQL strengths, weaknesses, and use cases"
  [sessions_spawn] task="Research SQLite strengths, weaknesses, and use cases"
  [sessions_spawn] task="Research DuckDB strengths, weaknesses, and use cases"

  [ожидание завершения всех трёх]
  [синтез результатов в сравнительную таблицу]

Делегированный код-ревью

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

Родитель: Проверьте этот pull request на проблемы безопасности.

  [delegate] agent="reviewer", task="Review the diff in /tmp/pr-42.patch for security vulnerabilities"

  [агент-ревьюер работает с инструментами file_read и shell]
  [возвращает подробный обзор безопасности]

Иерархическая декомпозиция задач

Подагенты могут порождать собственных подагентов (до max_depth):

Родительский агент
  ├── Агент-исследователь
  │     ├── Подагент веб-поиска
  │     └── Подагент анализа документов
  ├── Агент генерации кода
  └── Агент тестирования

Безопасность

Ограничения глубины и конкурентности

PRX применяет жёсткие ограничения на порождение подагентов для предотвращения исчерпания ресурсов:

  • max_concurrent: Ограничивает одновременно работающих подагентов (по умолчанию: 4)
  • max_depth: Ограничивает глубину вложенности (по умолчанию: 3). При максимальной глубине инструмент sessions_spawn удаляется из доступных инструментов дочернего агента.
  • max_total_spawns: Ограничивает общее количество порождений на корневую сессию (по умолчанию: 20)
  • child_timeout_secs: Принудительно завершает подагентов, превысивших таймаут (по умолчанию: 300 секунд)

Ограничения инструментов

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

json
{
  "name": "sessions_spawn",
  "arguments": {
    "task": "Search the web for information",
    "allowed_tools": ["web_search_tool", "web_fetch"]
  }
}

Делегированные агенты имеют инструменты, явно определённые в конфигурации. Они не могут обращаться к инструментам за пределами своего списка allowed_tools.

Изоляция учётных данных

Делегированные агенты могут использовать других провайдеров и API-ключи, отличные от родителя:

toml
[agents.researcher]
provider = "anthropic"
model = "claude-sonnet-4-20250514"
# Использует API-ключ, настроенный для провайдера

Это позволяет маршрутизировать задачи к различным LLM-провайдерам в зависимости от требований задачи, с изоляцией учётных данных каждого провайдера.

Политика безопасности

Инструменты сессий и агентов управляются движком политик:

toml
[security.tool_policy.groups]
sessions = "allow"

[security.tool_policy.tools]
delegate = "supervised"    # Требовать одобрение для делегирования

Связанные разделы

Released under the Apache-2.0 License.