Формулируйте гипотезу выигрышем, а не числом агентов
Пилот должен отвечать на один вопрос: стала ли система лучше single-agent baseline по outcome, latency и стоимости принятого результата. Плохая гипотеза - "четыре специалиста рассуждают глубже". Хорошая - "три независимых проверки сократят median wall-clock time на 25 процентов без роста conflict rate выше 2 процентов и без удвоения cost per accepted release".
Метрики стоит выбирать так, чтобы они не подменяли пользу активностью.
Метрика · Что измеряет · Чего не подменяет
- Task success rate - Доля принятых outcomes; Красоту текста и самооценку агента
- Cost per accepted task - Полную цену успешного результата; Цену одного model call
- Wall-clock latency - Время от input до gate; Сумму длительностей параллельных calls
- Conflict rate - Долю пересекающихся или отклоненных writes; Количество сообщений между agents
- Human rework - Время на исправление и сборку результатов; Время наблюдения за красивой демонстрацией
Решение по нескольким метрикам удобно оформить кодом, а не впечатлением.
export interface ArchitectureMetrics {
readonly successRate: number;
readonly medianLatencyMs: number;
readonly costPerAcceptedTask: number;
readonly conflictRate: number;
readonly humanReworkMinutes: number;
}
export interface AdoptionDecision {
readonly adopt: boolean;
readonly reasons: readonly string[];
}
export function compareArchitectures(
single: ArchitectureMetrics,
multi: ArchitectureMetrics
): AdoptionDecision {
const reasons: string[] = [];
const qualityGain = multi.successRate - single.successRate;
const latencyGain = single.medianLatencyMs - multi.medianLatencyMs;
const costRatio = multi.costPerAcceptedTask / single.costPerAcceptedTask;
if (qualityGain >= 0.05) {
reasons.push(`success rate +${(qualityGain * 100).toFixed(1)} pp`);
}
if (latencyGain > 0) {
reasons.push(`median latency -${latencyGain} ms`);
}
if (multi.humanReworkMinutes < single.humanReworkMinutes) {
reasons.push("less human rework");
}
if (multi.conflictRate > 0.02) {
reasons.push("conflict rate exceeds 2%");
}
if (costRatio > 2) {
reasons.push(`cost ratio ${costRatio.toFixed(2)}x`);
}
const adopt =
(qualityGain >= 0.05 || latencyGain > 0) &&
multi.conflictRate <= 0.02 &&
costRatio <= 2 &&
multi.humanReworkMinutes <= single.humanReworkMinutes;
return { adopt, reasons };
}Сравнивайте архитектуры на одном наборе задач, с одинаковыми входами и одним внешним gate. Результат multi-agent run нельзя считать успешным только потому, что supervisor сказал "готово".
Нормальная развязка пилота. Single agent может победить. Это не провал исследования, а экономия production-сложности. Сохраняйте multi-agent вариант только для классов задач, где он доказал преимущество.
Гипотеза поставлена. Если разделение оправдано, следующий выбор - топология, и определяет её место принятия решения.
Что доказывает пользу multi-agent варианта?