← все видео

The Multi-Agent Architecture That Actually Ships — Luke Alvoeiro, Factory

AI Engineer · 2026-05-06 · 18м 31с · 191 640 просмотров · YouTube ↗

Топики: ai-loop-engineering, ai-agent-orchestration

🎧 Аудио

📝 Summary

model=deepseek-v4-flash · prompt=summary-v7 · 5 418→2 409 tokens · 2026-07-20 11:55:34

🎯 Главная суть

Люк Алвонейро из Factory утверждает, что современное узкое место в разработке ПО — не интеллект моделей, а человеческое внимание. Он предлагает архитектуру Missions — мультиагентную систему, которая запускает планирование, реализацию и валидацию на разных ролях, используя structured handoffs и контракты валидации, чтобы автономно работать часами и днями без дрейфа.

Ограничение — человеческое внимание, а не интеллект

Даже лучший инженер может выполнять лишь несколько задач одновременно, хотя в бэклоге десятки фич. Модели уже достаточно умны, чтобы реализовать все 50, но на каждую нужно уделить внимание, проверить коммиты. Система, где человек решает что строить, а агенты — как, способна работать автономно и позволять команде заниматься стратегическими вопросами.

Пять фреймворков мультиагентных систем

Люк выделяет пять базовых паттернов:

Архитектура Missions: три роли

Missions объединяют четыре паттерна (delegation, creator‑verifier, broadcast и negotiation) в единый workflow. После описания цели, обсуждения области и утверждения плана система сама выполняет задачу часами или днями. Работа строится на трёх ролях:

Validation contract и двухуровневая валидация

Критическое отличие Missions — контракт валидации пишется до кода. Если тесты создавать после реализации, они лишь подтверждают решения, а не ловят баги. Контракт содержит сотни утверждений, и каждая фича должна удовлетворять одному или нескольким. После каждой вехи запускаются два валидатора:

Серийное исполнение и structured handoffs

Попытки распараллелить всех агентов ведут к конфликтам (наезд на изменения, дублирование работы, несогласованные решения). Missions выполняют фичи последовательно — в каждый момент работает один работник или валидатор. Параллелизация разрешена только для read‑only операций (поиск по кодовой базе, изучение API, code review). Это выглядит медленнее на бумаге, но резко снижает уровень ошибок, и на многосуточных задачах корректность накапливается.

Когда работник завершает фичу, он заполняет structured handoff: что сделано, что осталось, какие команды выполнялись и их exit‑коды, какие проблемы найдены, соблюдены ли процедуры. Ошибки отлавливаются на границах вех, корректировка планируется, и система «самовосстанавливается». Самый долгий зафиксированный прогон — 16 дней (предположительно может работать до 30).

Выбор модели под каждую роль (droid whispering)

Планирование требует медленных, аккуратных рассуждений; реализация — быстрой генерации кода и креативности; валидация — точного следования инструкциям. Ни одна модель не лучшая во всём. Архитектура Missions model‑agnostic: можно поставить разные модели на разные роли, даже от разных провайдеров, чтобы избежать предвзятости. Более слабые модели компенсируются структурой (контракты, вехи), что позволяет успешно запускать Missions даже на open‑weight моделях. Умение мысленно моделировать, как LLM взаимодействуют и где ломаются, Люк называет «droid whispering».

Результаты и эффект

В примере с клоном Slack:

Bitter lesson и гибкость

Чтобы новая модель не делала архитектуру устаревшей, почти вся логика оркестрации (планирование, декомпозиция ошибок, поведение работников) задана в промптах и навыках (около 700 строк текста). Изменение нескольких предложений меняет стратегию выполнения. Детерминированная логика минимальна — только бухгалтерия (запуск валидации, блокировка при проблемах handoff). Так система становится лучше с каждым улучшением моделей.

📜 Transcript

en · 2 905 слов · 38 сегментов · clean

Показать текст транскрипта
Hi everyone, my name is Luke and my goal is that 20 minutes from now you'll be able to assemble agent teams that can complete tasks orders of magnitude harder than what you can complete with a single agent today. A little bit about me. So I come from a background in DevTools. About two and a half years ago I started a project at Block, which is where I was working at the time, and that project evolved into Goose. Goose is now one of the leading coding agents, is open source, and it recently was donated to the Agentec AI Foundation. So it's been really cool to see. Nowadays I work at Factory, where I lead our core agent Harness, and Factory's mission is to bring autonomy to the entire software development life cycle. So I want to start off with a claim. The bottleneck in software engineering nowadays is not intelligence. it's now limited by human attention. Even the best engineers can only complete a couple of tasks at a time. They may have a backlog of 50 features, but they can only drive a few forward per day because every task requires their attention, every commit needs their review. Today's models are smart enough to figure out all 50 of these tasks, but there's not enough bandwidth to supervise their implementation. So we kept asking ourselves, what if a human decides what to build and then a system figures out how to do so. An agent could just work for hours, for days, and you come back to finish work. So that's what I'm here to talk about. When you start researching multi-agent frameworks and systems, you quickly realize that the field's a bit of a mess. Everyone has their own framework, their own terminology, their own opinions of what works and doesn't work. And so I want to propose a simple taxonomy. There's five frontier multi-agent frameworks. One is delegation. This is where one agent spawns another agent and the parent agent may say, go figure out the database schema, and then gets a response back. This is the simplest form of multi-agent communication, as what most people implement first. You have sub-agents and coding tools are the most common example. The other one is creator verifier, where one agent builds something and then you have another agent that checks that work. And the key here is a separation of concerns. The agent that implemented the code has some cost bias. It wants that code to work. A fresh agent with fresh context is way more likely to find issues, and this is why we do code review as humans as well. Another one is direct communication. This is when agents communicate without a central coordinator. It's kind of like DMing each other. It's hard to get right, though, because state fragments across conversations without that coordinator, and there's no single source of truth. The next one is negotiation. Negotiation is when agents communicate but over a shared resource. So that might be they want to use the same API, they want to modify the same portion of the code base, but negotiation doesn't need to be adversarial. In fact, the best use case is when there's net positive sum trading. And that's when agents have a potential win-win situation while interacting. And then the last one is broadcast. and that is when one agent sends information to many. Think of it like status updates, new context that applies to everyone, new shared constraints. It's a bit less flashy than the other ones, but it's critical for maintaining coherence over long-running tasks. And so when you have all of these different building blocks, how do you assemble that into a system that can run for many days? So missions is our answer. It's a system that combines four of those. Delegation, creator verifier, broadcast and negotiation into a single workflow. You describe a goal, you scope that through a conversation, you approve a plan, and then the system handles execution for hours or days, and that enables you to focus on something else. Notably, a mission is not a single agent session, it's an ecosystem of agents that communicate through structured handoffs and shared state. It uses a three-role architecture. There's orchestrator, There's workers and then there's validators. The orchestrator handles planning. When you describe what you want, the orchestrator is kind of like your sounding board. It asks you the right strategic questions. It checks out if there's any unclear requirements in the problem space. And then it eventually produces a plan that includes features, milestones, and then something that's called a validation contract. And that validation contract defines what done sort of means before any coding is done. And I'll come back to why that matters, because it turns out to be really important to the system. The next role are workers. They handle implementation. When a feature is assigned to a worker, that worker has clean context, no accumulated baggage, no degraded attention, right? The worker reads its spec, it implements the feature, and then commits by a git, allowing the next worker to inherit a clean slate and a working code base. And then the last role are validators. They handle verification. And so most systems validate by maybe running lint, type check, tests, maybe they do code review. Missions does all of that, but we also validate behavior. Instead of just asking, you know, does the code look right? We wonder, does this work end to end? That's the difference that lets Missions run for many hours, many days in a row without drifting. And making it work had to involve sort of rethinking validation entirely. When you've worked with coding agents before, you've probably seen this pattern where an agent builds a feature, it writes some tests, the tests pass, there's full coverage, but the tests were sort of shaped by the code, not by what the code was attempting to actually do. Tests written after implementation don't catch bugs. They confirm decisions. So if you rely on validation like that, your system will eventually drift. That's why this validation contract exists. It's written during planning, before any code, and it defines correctness independently of implementation. So for a complex project, this can be hundreds of assertions, and each feature is assigned one or more assertions that it must satisfy. The sum of all features must mean that every assertion is covered. After each milestone of features, we have two types of validators that run. So you have the scrutiny validator and the user testing validator. The first one is more traditional. It runs the test suite, type checking, lints, and critically it spawns dedicated code review agents for each completed feature within the milestone. And then the second one, which is the user testing validator, is more interesting. It kind of acts like a QA engineer. It spawns the application, it interacts with it through computer use or something similar to that, it fills out forms, checks that pages render correctly, clicks buttons. and ensures that functional flows work holistically. So this step takes significantly longer than the previous one of the scrutiny validator because the system is interacting with a live application. And what we've noticed is that most of the mission's wall clock time is actually spent here, waiting for this real-world execution to occur instead of generating tokens. Critically, neither validator has seen the code before. They're not invested in the implementation, and so validation is adversarial by design. Okay, so then validation catches bugs, right? But for a system that runs for many days, you also need to make sure that context isn't lost between the agents. When a worker finishes a feature, it doesn't just say, I'm done. It fills out a structured handoff detailing what was completed, what was left undone, what commands were run throughout that agent loop. and what were the exit codes of those commands? What issues were discovered? And did it abide by the procedures that the orchestrator defined for that worker? That's how we catch issues and how the system self-heals. The errors get caught at milestone boundaries, corrective work gets scoped, and the mission sort of like pulls itself back on track. Not by hoping that agents remember what happened, but by forcing them to write it down and then actually address issues. And I'll... present on that in just a sec. Our longest mission ran for 16 days, which is much longer than a full sprint. We believe that they can run for 30. That's only possible because of this structure. So once we had this architecture, the next question became, how do we actually run it? The most obvious choice is parallelism. If you have 10 agents running at one point in time, then you have 10 times the throughput. We tried that, and it doesn't really work for tasks in the software dev domain because agents conflict. They step on each other's changes, they duplicate work, they make inconsistent architectural decisions. And so the coordination overhead ends up eating up the speed gains all the while you're burning tokens. The difference with missions is that we run features serially. So there's only one worker or validator running at any given point in time. Within a feature, we allow for parallelization on read-only operations. So you have something like searching through the code base or researching APIs, all that gets parallelized. Within validators, we also parallelize read-only operations such as code review. This is serial execution with targeted internal parallelization. It seems slower on paper, but the error rate drops dramatically, and when you have tasks that run for many days, this sort of correctness compounds. your standard chat interface doesn't really work for something that lasts many days. At a quick glance you need to be able to see how much of the project have you completed and what amount of the budget that you originally set off with have you burned through. So using a mission actually we built Mission Control which is a dedicated view for this. You can see what is the active worker doing right now. Read off handoff summaries that detail what did the worker, the validator discover. how it's going to alter its course moving forward. Or you could just go hang out with your friends that night. This entire view lets you run missions asynchronously and you could be plugged in as a project manager overseeing the implementation or you could just go and hang out with your friends. So the right model in each role. Everything here sort of assumes one thing, and that is that you're using the right model in each role. Planning benefits from slow, careful reasoning, implementation from fast code fluency and creativity, validation benefits from precise instruction following, right? And so no single model nor model provider is best at all three of these. Using systems like missions requires the development of a new skill, which internally we've been calling droid whispering. But it's this idea that you need to be able to mentally model how different LLMs interact, where they fail, how those failures compound over a multi-day run, and then you need to make a deliberate choice as to which model sits in which seat. Theo, the engineer who built our mission's prototype, came up with our model defaults, but we really encourage people to make these their own and customize them to the needs of their project. So for example, validation might use a different model provider entirely. to make sure that it's not biased by the same training data. This is the structural advantage of a model-agnostic architecture. You're only as strong as your weakest link. And if you're locked into one model provider, then you're constrained by that family's weakest capability. As models continue to specialize, the ability to put the right model in the right seat becomes a compounding advantage. It works in the other direction too. If you're using missions, the structure of that can compensate for models that are not quite at the frontier level performance. So the validation contracts, the milestone checkpoints, they allow you to run missions very, very successfully even using open-weight models. Now, this all sounds quite theoretical. What does it actually look like in production? I've got an example of building a clone of Slack right here. This slide has a ton of info, but I'll walk you through Just a few things I want to call out. 60% of our time is spent on implementation and 60% of our tokens as well. Notice how validation never succeeds on the first go. That's in the mission, what's it, the one on the bottom left. We almost always have to create follow-up features. So that really demonstrates like the value of a system that does this QA loop. You end up with 50% of your lines of code at the very end in the bottom right being tests. and 90% of your code is covered by those tests. And lastly, we take advantage of prompt caching heavily to make sure that we're sort of offsetting the price of running such a long task. People have really taken submissions, and it's been awesome to see what folks have been building with them. Some examples I've included in this slide, but ones that I want to call out are specifically in the enterprise setting, which is where factory really shines. They've been used to prototype new ideas and features overnight to make sure that people can build internal tools at increasingly rapid rates, to run huge refactors and migrations for ML research, and to modernize code bases so that agents are more productive in them. One thing that I wanted to talk about was also this concept of the bitter lesson, because every person building multi-agent systems has this fear of the next model release sort of like making their architecture obsolete overnight. So when we were building missions, we decided we had to make this system get better with every model improvement. This means that almost all of the orchestration logic is defined in prompts and skills instead of like a hard-coded state machine. How it decomposes failures or decomposes features and handles failures is all in about like 700 lines of text. and four sentences of this can alter the execution strategy pretty dramatically. Worker behavior is driven by skills that the orchestrator defines per mission, so you get very customized behavior. And the only deterministic logic is very thin, and it's focused on enabling models to do what they do best, while the system handles the bookkeeping, stuff like running validation and ensuring that progress is blocked when there are some handoff issues that are not addressed. So missions sort of ensure the discipline. and the models provide the intelligence using primitives that they're already familiar with, like agents MD, skills, etc. So what does this unlock? Remember the bottleneck that I started off with, human attention. The economics are sort of changing. Before, a team of five engineers might be able to work on 10 work streams at any given point in time. Now, maybe with missions, we can bring that up to 30. The team can focus on interesting problems such as the architecture, product decisions. instead of worrying about the execution per se. And the important thing is the code base ends up cleaner than when you started. The end-to-end tests, the unit tests, the skills, the structure that missions provide means that agents and humans are more productive in that environment moving forward. So now that you understand how missions are structured and how they actually work, you can see that they're really a composition. of those original strategies right delegation shows up everywhere and how the orchestrator spawns workers and how we spawn research sub-agents creator verifier is fundamental in that validation and implementation are always separate agents with separate context broadcast runs through the shared mission state that every agent references and negotiation shows up at milestone boundaries where the orchestrator defines Does this handoff summary look correct? Do we need to create follow-up features, re-scope, etc. But strategies aren't enough. You need the connective tissue. You need these structured handoffs so that agents don't lose context. You need the right model in each role. And you need an architecture that will improve with each model improvement. So what I like to think about is that people in this room who are thinking in terms of agent ecosystems, who develop an intuition for how different models compose under pressure, that those folks are going to be really shipping the next generation of innovation. There's a lot of open questions still, right? How do we further parallelize the workload of missions so that they run faster? How do we start orchestrating missions themselves into even more complex workflows? But the data from production missions is clear. This works on real projects at scale today. So this is what I'll leave you with. Open Droid, try running slash missions. argue with the orchestrator about the scope, approve the plan, and then go do something else. I'm excited to see what you guys build, and I'll be around to answer any questions for the rest of the day. Thanks.

⚙️ Pipeline jobs

StageStatusAtt.UpdatedError
download done 1/3 2026-07-20 11:54:57
transcribe done 1/3 2026-07-20 11:55:07
summarize done 1/3 2026-07-20 11:55:34
embed done 1/3 2026-07-20 11:55:36

📄 Описание YouTube

Показать
Everyone's building multi-agent systems, but nobody agrees on how. This talk proposes a taxonomy of five frontier multi-agent strategies and shows what happens when you compose them into a single architecture. Drawing from production data at Factory, we walk through a three-role system (orchestrator, workers, validators) that uses validation contracts, structured agent handoffs, and adversarial verification. We cover the case for serial over parallel execution, why model selection per role is a compounding advantage, and how to design systems that get better with each model generation instead of being made obsolete by them.

Speaker info:
- https://github.com/lukealvoeiro
- https://www.linkedin.com/in/lukealvoeiro

Timestamp:
0:00 Introduction to multi-agent systems and the bottleneck of human attention
1:50 Taxonomy of five frontier multi-agent frameworks
4:04 Introducing 'Missions': The three-role architecture (Orchestrator, Workers, Validators)
6:34 The importance of validation contracts for consistent quality
8:09 Maintaining long-term context through structured handoffs
9:17 The case for serial execution over parallel execution
10:30 Mission control: Monitoring agent progress
11:22 Strategic model selection per role ('Droid whispering')
13:06 Production data analysis: Building a Slack clone
14:34 Designing systems that improve with each model generation
15:51 Conclusion: The shifting economics of software engineering