fix(agents): исправлена оркестрация моделей и контекста

- Зачем:
  - следующая сессия должна управлять стоимостью субагентов без повторной загрузки длинных отчётов в контекст мастера.
- Что:
  - разделены TOML-роли и разовые переопределения модели, уточнены fork и service tier.
  - добавлен файловый обмен, жизненный цикл временного каталога и нативные скелеты промптов.
  - синхронизированы полевые заметки и handoff с проверенной механикой Codex.
- Проверка:
  - quick_validate.py agents/.agents/skills/codex-subagent-playbook.
  - git diff --cached --check.
  - независимое ревью: VERDICT: APPROVED.
This commit is contained in:
Dmitry Dementiev committed 2026-07-10 17:59:15 +03:00
1 parent 0d2fc9af65
commit 60182ab493
5 files changed
+249 -57

No files matched your search

@@ -15,9 +15,13 @@
и его конфигурацию.
- **Управляемая стоимость.** Хост видит агентов из `~/.codex/agents` или
`.codex/agents` и позволяет выбрать агента по имени. Вызывай именованную
роль; модель и глубину рассуждений закрепляй в её TOML-файле. Не наследуй
плавающие настройки мастер-сессии для роли с известным бюджетом.
`.codex/agents` и схема `spawn_agent` открывает `agent_type`, `model` и
`reasoning_effort`. Для TOML-роли передавай `agent_type`, а модель и
глубину бери из её файла. Для разового выбора передавай `model` и
`reasoning_effort` без пользовательской роли с закреплённой моделью.
Плейбук использует `fork_turns="none"` ради чистого контекста. Технически
ограниченный fork числом тоже допускает переопределения; только полный
fork `all` наследует модель мастера и отклоняет их.
- **Неуправляемая стоимость.** Интерфейс запуска принимает только задачу и
имя треда. Передавай роль мандатом в промпте, но не утверждай, что выбрана
дешёвая или сильная модель. `task_name` — идентификатор треда, а не выбор
@@ -26,6 +30,38 @@
Если способ выбора роли не виден в доступном инструменте, считай стоимость
неуправляемой и отметь это в итоговом отчёте.
Вызов 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).
## Выбор уровня
| Уровень | Для чего | Настройка |
@@ -97,6 +133,8 @@
`workspace-write`, запретить правки исходников мандатом и сверить Git до и
после. Доступ к сети проверять отдельно: право записи не гарантирует поиск и
доступ к документации. Непроверенную внешнюю механику отмечать как гипотезу.
Для длинного или повторно используемого индекса нужен доступ на запись в
обменный каталог; иначе вернуть короткий индекс один раз сообщением.
### `verifier`
@@ -123,7 +161,8 @@ developer_instructions = """
```
Не подменяй выбор роли совпадением `task_name` с её именем: это работает
только при явной гарантии хоста.
только при явной гарантии хоста. После добавления или изменения TOML начни
новую сессию и проверь, что имя роли появилось в описании `agent_type`.
## Пределы параллельности