Files
dotfiles/agents/.agents/skills/codex-subagent-playbook/references/roles.md
T
Dmitry Dementiev 60182ab493 fix(agents): исправлена оркестрация моделей и контекста
- Зачем:
  - следующая сессия должна управлять стоимостью субагентов без повторной загрузки длинных отчётов в контекст мастера.
- Что:
  - разделены TOML-роли и разовые переопределения модели, уточнены fork и service tier.
  - добавлен файловый обмен, жизненный цикл временного каталога и нативные скелеты промптов.
  - синхронизированы полевые заметки и handoff с проверенной механикой Codex.
- Проверка:
  - quick_validate.py agents/.agents/skills/codex-subagent-playbook.
  - git diff --cached --check.
  - независимое ревью: VERDICT: APPROVED.
2026-07-10 17:59:15 +03:00

174 lines
11 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Уровни и роли
Читай этот файл только при настройке ролей или когда нужная роль недоступна.
Сам конвейер описан в `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`: субагенты не создают собственное дерево исполнителей.
- Оставляй один слот мастеру.
- Параллельно запускай чтение, независимые исследования и слепые ревью.
- Реализацию и починку одного рабочего дерева выполняй последовательно одним
владельцем.