- Зачем: - следующая сессия должна управлять стоимостью субагентов без повторной загрузки длинных отчётов в контекст мастера. - Что: - разделены TOML-роли и разовые переопределения модели, уточнены fork и service tier. - добавлен файловый обмен, жизненный цикл временного каталога и нативные скелеты промптов. - синхронизированы полевые заметки и handoff с проверенной механикой Codex. - Проверка: - quick_validate.py agents/.agents/skills/codex-subagent-playbook. - git diff --cached --check. - независимое ревью: VERDICT: APPROVED.
174 lines
11 KiB
Markdown
174 lines
11 KiB
Markdown
# Уровни и роли
|
||
|
||
Читай этот файл только при настройке ролей или когда нужная роль недоступна.
|
||
Сам конвейер описан в `SKILL.md`.
|
||
|
||
- [Возможности хоста](#возможности-хоста)
|
||
- [Выбор уровня](#выбор-уровня)
|
||
- [Роли](#роли)
|
||
- [Файл пользовательского агента](#файл-пользовательского-агента)
|
||
- [Пределы параллельности](#пределы-параллельности)
|
||
|
||
## Возможности хоста
|
||
|
||
Сначала установи, позволяет ли текущий хост выбрать пользовательского агента
|
||
и его конфигурацию.
|
||
|
||
- **Управляемая стоимость.** Хост видит агентов из `~/.codex/agents` или
|
||
`.codex/agents` и схема `spawn_agent` открывает `agent_type`, `model` и
|
||
`reasoning_effort`. Для TOML-роли передавай `agent_type`, а модель и
|
||
глубину бери из её файла. Для разового выбора передавай `model` и
|
||
`reasoning_effort` без пользовательской роли с закреплённой моделью.
|
||
Плейбук использует `fork_turns="none"` ради чистого контекста. Технически
|
||
ограниченный fork числом тоже допускает переопределения; только полный
|
||
fork `all` наследует модель мастера и отклоняет их.
|
||
- **Неуправляемая стоимость.** Интерфейс запуска принимает только задачу и
|
||
имя треда. Передавай роль мандатом в промпте, но не утверждай, что выбрана
|
||
дешёвая или сильная модель. `task_name` — идентификатор треда, а не выбор
|
||
конфигурации агента.
|
||
|
||
Если способ выбора роли не виден в доступном инструменте, считай стоимость
|
||
неуправляемой и отметь это в итоговом отчёте.
|
||
|
||
Вызов TOML-роли:
|
||
|
||
```json
|
||
{
|
||
"task_name": "explore_code",
|
||
"message": "Исследуй код и верни выжимку по договору роли.",
|
||
"fork_turns": "none",
|
||
"agent_type": "explorer"
|
||
}
|
||
```
|
||
|
||
Разовый выбор модели без TOML-роли с закреплёнными настройками:
|
||
|
||
```json
|
||
{
|
||
"task_name": "explore_code",
|
||
"message": "Исследуй код и верни выжимку по договору результата.",
|
||
"fork_turns": "none",
|
||
"model": "<быстрая модель>",
|
||
"reasoning_effort": "medium"
|
||
}
|
||
```
|
||
|
||
Не смешивай режимы: роль применяется отдельным слоем конфигурации и может
|
||
перекрыть прямые параметры. `service_tier` передавай только по явному запросу;
|
||
он технически совместим и с полным fork. Если TOML-роль закрепляет
|
||
`service_tier`, значение роли перекрывает аргумент вызова; для гарантированного
|
||
разового tier используй роль без закреплённого tier.
|
||
|
||
Основание: [официальная документация о субагентах](https://learn.chatgpt.com/docs/agent-configuration/subagents)
|
||
и [актуальная схема `spawn_agent`](https://github.com/openai/codex/blob/main/codex-rs/core/src/tools/handlers/multi_agents_spec.rs).
|
||
|
||
## Выбор уровня
|
||
|
||
| Уровень | Для чего | Настройка |
|
||
|---|---|---|
|
||
| Быстрый | Поиск, чтение журналов, тесты, пакетная механика | Быстрая дешёвая модель, `low` или `medium` |
|
||
| Рабочий | Обычная реализация по ясной постановке | Сильная модель для кода, `medium` или `high` |
|
||
| Глубокий | Архитектура, сложная диагностика, ревью высокого риска | Самая сильная доступная модель, `high` или выше |
|
||
|
||
Начинай с самого дешёвого подходящего уровня. Повышай уровень, когда агент
|
||
не может проверить предположение, дважды возвращает слабый результат или
|
||
задача требует решения с высокой ценой ошибки. Не повышай уровень ради
|
||
объёма механической работы: дели её на независимые части.
|
||
|
||
- `low`/`medium`: детерминированная механика, поиск и известные проверки.
|
||
- `medium`/`high`: реализация по ясному контракту, несколько связанных
|
||
файлов, нет необратимых решений.
|
||
- `high`: публичный контракт, безопасность, целостность данных, конкуренция,
|
||
миграция или неоднозначная архитектура.
|
||
- `xhigh` и выше: необратимый дорогой выбор либо повторное противоречие
|
||
сильных агентов. Это исключение, а не обычный режим ревью.
|
||
|
||
Конкретные названия моделей держи в конфигурации агентов, а не в `SKILL.md`.
|
||
Так замена модельной линейки не меняет процесс.
|
||
|
||
## Роли
|
||
|
||
### `fast-worker`
|
||
|
||
Уровень: быстрый. Читает шумный ввод, запускает проверки, выполняет простые
|
||
пакетные операции. Возвращает только выжимку и пути к полным журналам.
|
||
|
||
Обычно: `sandbox_mode = "workspace-write"`, потому что тесты и инструменты
|
||
создают временные файлы. В инструкциях ограничить изменения явно названной
|
||
механикой.
|
||
|
||
### `explorer`
|
||
|
||
Уровень: быстрый. Строит карту кода, находит точки входа, контракты и команды
|
||
проверки. Не запускает полный набор тестов и не проектирует решение, пока
|
||
мастер прямо не попросит. Узкую команду запускает только для проверки факта,
|
||
без которого карта ненадёжна.
|
||
|
||
Обычно: `sandbox_mode = "read-only"`.
|
||
|
||
### `worker`
|
||
|
||
Уровень: рабочий или глубокий по сложности задачи. Единственный владелец
|
||
реализации. Читает самодостаточный файл-задачу, меняет код и проверяет свою
|
||
часть. Не делает коммит.
|
||
|
||
Обычно: `sandbox_mode = "workspace-write"`.
|
||
|
||
### `deep-reasoner`
|
||
|
||
Уровень: глубокий. Принимает одно сложное решение: архитектура, алгоритм,
|
||
диагноз, противоречие требований. Возвращает рекомендацию, ключевые доводы и
|
||
непроверенные предположения.
|
||
|
||
Обычно: `sandbox_mode = "read-only"`.
|
||
|
||
### `reviewer`
|
||
|
||
Уровень: глубокий. Свежий тред без истории исполнителя. Ищет ошибки
|
||
корректности, безопасности, контракта и тестов. Каждая находка содержит
|
||
сценарий сбоя, доказательство, влияние и способ проверки.
|
||
|
||
Для чистого чтения: `sandbox_mode = "read-only"`. Если ревью требует запуска
|
||
инструментов, которые пишут кэш или артефакты, использовать
|
||
`workspace-write`, запретить правки исходников мандатом и сверить Git до и
|
||
после. Доступ к сети проверять отдельно: право записи не гарантирует поиск и
|
||
доступ к документации. Непроверенную внешнюю механику отмечать как гипотезу.
|
||
Для длинного или повторно используемого индекса нужен доступ на запись в
|
||
обменный каталог; иначе вернуть короткий индекс один раз сообщением.
|
||
|
||
### `verifier`
|
||
|
||
Уровень: быстрый. Запускает уже известные команды приёмки, разбирает сбои и
|
||
возвращает счётчики. Не ищет новые требования и не исправляет продуктовый
|
||
код.
|
||
|
||
Обычно: `sandbox_mode = "workspace-write"`.
|
||
|
||
## Файл пользовательского агента
|
||
|
||
Роли Codex хранятся в `~/.codex/agents/*.toml` или `.codex/agents/*.toml`.
|
||
Минимальный шаблон:
|
||
|
||
```toml
|
||
name = "role-name"
|
||
description = "Когда координатору выбирать эту роль."
|
||
model = "<актуальная модель нужного уровня>"
|
||
model_reasoning_effort = "medium"
|
||
sandbox_mode = "read-only"
|
||
developer_instructions = """
|
||
Одна узкая роль и её договор результата.
|
||
"""
|
||
```
|
||
|
||
Не подменяй выбор роли совпадением `task_name` с её именем: это работает
|
||
только при явной гарантии хоста. После добавления или изменения TOML начни
|
||
новую сессию и проверь, что имя роли появилось в описании `agent_type`.
|
||
|
||
## Пределы параллельности
|
||
|
||
- Держи глубину `1`: субагенты не создают собственное дерево исполнителей.
|
||
- Оставляй один слот мастеру.
|
||
- Параллельно запускай чтение, независимые исследования и слепые ревью.
|
||
- Реализацию и починку одного рабочего дерева выполняй последовательно одним
|
||
владельцем.
|