Почему параллельность сама по себе не даёт разнообразия
Обычное рассуждение: там, где вариантов много и они непохожи, дешевле запустить несколько независимых попыток, чем итеративно чинить одну (Reflexion). Верно — при условии, что попытки действительно независимы.
Они не независимы, если агентам выдан один и тот же вход: та же сводка накопленных свидетельств, та же повестка, та же родословная лучшего на сегодня решения. Модель на одинаковом контексте выбирает наиболее очевидное продолжение, а «наиболее очевидное» у всех совпадает. Наблюдаемый исход — когорта аккуратных, хорошо обоснованных и почти одинаковых планов: правка функции вознаграждения у всех, калибровка у всех, продолжение последней удачной линии у всех.
Дефект молчаливый в точности потому, что каждый отдельный план хорош. Проверка качества плана его пропускает; отсутствует не качество, а различие.
Механизм: выбирать по когорте, а не по агенту
Приём переносит выбор на уровень выше отдельного агента, не отнимая у него авторства.
- Каждый агент порождает несколько кандидатов и разбирает их сам — глубина индивидуального рассуждения сохраняется.
- Пулы собираются вместе, и распределитель выбирает по одному кандидату из собственного пула каждого агента. Чужого кандидата он не назначает: агент реализует то, что придумал сам, иначе исчезает ответственность за замысел.
- Выбор идёт под потолками на когорту: не больше стольких-то агентов на одно семейство механизмов, на одну поверхность вмешательства, на одно намерение.
Существенная деталь: выбор происходит до написания кода, на уровне замысла. Разводить уже написанные реализации поздно и дорого; разводить замыслы — один дополнительный раунд планирования.
Измерение: концентрация по плану и по факту
Без числа приём превращается в благое пожелание. Измеряют концентрацию работы по категориям — сумму квадратов долей категорий (индекс Херфиндаля—Хиршмана): один занятый вариант даёт максимум, равномерное распределение — минимум.
Считают её дважды и не путают:
- по плану — из повестки, то есть из намеренных значений каждой оси разнообразия;
- по факту — из отчётов о том, что реально реализовано и измерено.
Полезен именно разрыв между ними. План разнообразен, факт схлопнут — значит, агенты по ходу работы сползли к одному и тому же, и чинить надо не распределение, а то, что их туда сносит. И отдельное правило, без которого измерение врёт: плановое значение никогда не заполняет отсутствующее фактическое (Unknown Not A Value) — недостающий отчёт остаётся недостающим и виден как пропуск, а не как совпадение с планом.
Мягкие цели вместо квот
Цели по разнообразию задаются как минимумы («хотя бы двое на архитектурные изменения»), но не как жёсткие квоты. Если подходящего кандидата ни у кого нет, промах записывается, и работа продолжается. Причина в цене отказа: жёсткая квота останавливает целую когорту ради оси разнообразия, то есть ради вспомогательного свойства, и стоит дороже того, что защищает.
Тот же принцип действует на всех отказах распределителя: не нашлось альтернатив — агент оставляет свой исходный выбор; распределение не прошло проверку — остаётся исходный выбор с записанной причиной. Приём консервативен: при полном отключении система возвращается к обычному выбору «лучшее по качеству», а не ломается.
Чего приём не делает
- Не заменяет качество разнообразием. Кандидат отбирается из уже прошедших разбор; разнообразие — добавка к оценке, а не замена ей.
- Не задаёт предметных квот. Потолки формулируются в общих признаках (семейство механизмов, поверхность вмешательства, намерение), а конкретные категории принадлежат задаче. Иначе оркестратор начинает знать предметную область, чего он знать не должен (Multi Agent Patterns — граница между обвязкой и задачей).
- Не спасает от схождения внутри одного агента. Это соседний дефект, и у него свои средства: анти-якорение в блоке памяти и метацикл со сбросом произведённого (Reflexion).
Связано с
- Multi Agent Patterns — топологии параллельной работы; здесь не «кто с кем говорит», а «над чем работают»
- Parallel Agent Dispatch — параллельная работа со стороны человека-диспетчера: там узкое место в ревью, здесь в одинаковости замыслов
- Reflexion — то же схлопывание в последовательном цикле попыток и два других средства против него
- Unknown Not A Value — почему план нельзя подставлять вместо факта при измерении разнообразия
- Agent Roles — разведение ролей как более грубый способ добиться различия
- Quality Metric Design — как не получить метрику, которую оптимизируют вместо цели