Проєктування мультиагентного конвеєра

Узагальнений мультиагентний конвеєр: ingest, plan, tools та MCP, workers.

В агентній системі агент рідко є складною частиною. Складні — черга перед ним, бюджет навколо нього, довговічний запис під ним і незалежна перевірка після нього. Я будував це кілька разів — рантайм за AI-visibility платформою, дослідницький каскад для валідації стартапів, контент-конвеєр, що чекає підтвердження людини, перш ніж опублікувати, — і саме каркас переноситься між ними.

Чому конвеєр, а не промпт

Промпт повертає відповідь. Щоб повертати ту саму відповідь надійно й за передбачуваною ціною, потрібні стадії навколо нього: план, який можна оглянути, стан, який можна відтворити, і крок, що може відхилити результат. Це й є конвеєр — і це більша частина інженерії.

Форма запуску

Кожен запуск проходить ті самі стадії й пише в той самий запис. Якщо дізнатися, що сталося, можна лише запустивши його знову, — запис не виконує свою роботу.

Став повільну роботу за чергу

Виклики агентів повільні й подекуди дорогі, тож API не робить їх синхронно. Він ставить роботу в чергу, а фонові воркери її виконують. API лишається чуйним, невдалий крок ретраїться, не тримаючи запит відкритим, а дубльований запит зводиться до вже запущеного прогону, замість платити двічі.

Дай кожному запуску бюджет і зупиняйся, коли його вичерпано:

interface RunBudget {
  maxSteps: number;
  maxTokens: number;
  deadline: number; // epoch ms
}

function withinBudget(spent: RunBudget, limit: RunBudget): boolean {
  return (
    spent.maxSteps <= limit.maxSteps &&
    spent.maxTokens <= limit.maxTokens &&
    Date.now() <= limit.deadline
  );
}

Ретраї без дублювання

Ретраї — нормально; повторені сайд-ефекти — ні. Ключуй кожен крок так, щоб ретрай був ідемпотентним: друга спроба підтверджує першу, а не робить її знову.

Зроби стан явним

Кожен запуск — довговічний запис, і кожен крок пише свої входи й виходи. Тоді трасування є джерелом істини, а не реконструкцією заднім числом.

Що Де живе Чому
Метадані запуску таблиця runs Один рядок на запуск, статус і бюджет
Входи/виходи таблиця steps Входи, виходи, час кожного кроку
Артефакти об’єктне сховище Великі дані тримаємо поза БД

Виробник не оцінює себе сам

Агент, що переглядає власний вихід, не каже тобі нічого. Конвеєри, яким я довіряю, мають незалежний прохід: верифікатор, що не виробляв те, що перевіряє; рев’ю, яке автор не може затвердити. Обмеж його бюджетом, щоб не зациклився, а коли щось лишається відкритим після вичерпання бюджету, віддай це людині, а не познач як зроблене.

Спостережність

Якщо ти не бачиш, чому агент зробив те, що зробив, ти не можеш запускати його в продакшні. Span на кожен крок перетворює запуск на трасування, яке читаєш згори донизу, тож «вихід неправильний» стає «планувальник обрав не той інструмент на кроці чотири», а це вже баг, який можна полагодити.

Що переноситься

Ніщо з цього не залежить від фреймворку чи моделі. Це та сама дисципліна — чи агенти підсумовують документ, чи вирішують, готова сторінка до публікації: зроби роботу спостережною й зроби так, щоб її затверджував хтось, окрім виробника.