AI Engineer World's Fair 2026
Beyond the Harness: A Journey Towards Adaptive Engineering - Rajiv Chandegra, Annicha Labs
Read the talk
Beyond the Harness: Engineering for Systems That Change While They Run
Rajiv Chandegra explores how multi-agent systems might form and revise their own organizing structures, and what engineers would still need to constrain, observe and control.
From a talk by Rajiv Chandegra
Before you start: Familiarity with language-model agents, tool calling and agent harnesses will help; the systems concepts are introduced as they arise.
What happens when the problem keeps moving?
A harness gives agents roles, tools and a sequence of work before execution begins. What happens when the environment changes enough that those arrangements no longer fit? That question motivates Rajiv Chandegra, a practicing medical doctor in London working through Annicha Labs on collaboration among agents, humans and institutions. His starting point is familiar: use or configure a harness such as Pi, Claude Code, Cursor or Codex, then steer agents through it. The resulting work can be orderly and reliable, and he considers this a good fit for most engineering problems.
Chandegra expects two pressures to challenge that arrangement. More capable models may outgrow scaffolding built around earlier limitations. Meanwhile, AI engineering may move beyond software behind a screen into continuous contact with people, institutions and the physical world. Those environments change while work is underway. His proposed response is adaptive engineering: engineers establish constraints—the rules of play—under which a harness can emerge, stabilize, change and eventually dissolve during execution.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
From a stateless model to reviewed work
The current harness supplies the machinery that turns a typically stateless language model into a useful working system. System instructions establish behavior; files such as AGENTS.md and CLAUDE.md provide project context; tool calling gives the model ways to act. Chandegra describes vendor system prompts as fixed and project instructions as loaded at session start. Product capabilities need a narrower reading today: current Claude Code documentation supports replacing or extending system prompts, while Pi supports prompt customization and /reload during a session. These current capabilities do not reconstruct the versions used for the talk. The durable distinction is between engineer-directed customization and a group autonomously reorganizing its own structure during execution.
Within that configured environment, agents acquire differentiated roles, capabilities, rules and skills. They produce code, documentation, issues or handoffs. Loops carry that work toward an outcome—a feature or a solved problem—which a human eventually reviews. The harness therefore specifies more than a prompt: it establishes how capabilities become specialized work, how outputs feed further work, and how the process reaches review. Predetermining this machinery is harness engineering, which Chandegra credits with extracting substantial value from current models.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
The factory contract and its trade-off
The model is the engine; the harness is everything around it that makes the engine useful. That surrounding machinery takes different forms: command-line coding tools such as Claude Code, Codex and Pi; an IDE such as Cursor; multi-agent orchestration through LangChain; and tools including Hermes, Cline and Goose. Their differences concern configuration and capabilities, but also engineering philosophy. An opinionated harness encodes a view of how work should happen, which makes it attractive for particular tasks and particular engineers.
Extensibility does not eliminate those structural choices. Pi, for example, emphasizes a minimal core and broad extensibility. Chandegra’s concern is who determines roles, expected outputs, sequencing protocols and memory creation. In the factory approach, the engineer largely settles those arrangements before the work they govern. That buys three useful properties:
- Reliability: similar inputs tend to produce similar outputs, allowing for model variation.
- Auditability: changes and their timing can be inspected.
- Traceable causality: when something breaks, the engineer can follow the chain back toward its source.
This is his factory-line analogy: each station is engineered in advance, and each agent has a job, a position in the sequence and a defined handoff.
An assembly line is valuable when the product and problem are well defined. Known features and solutions make accuracy, speed, reproducibility and certifiable behavior attainable goals. Chandegra argues that the same arrangement carries a cost: suppressing variance to obtain reliability can also suppress the novelty a changing problem requires. A process optimized around known work may have little room to discover a different organization of that work.
Model progress adds another source of change. In his illustrative forecast, scaffolding carefully built today could become unnecessary a month later because a stronger model no longer needs it. Environmental change creates the complementary problem: every unanticipated situation requires another human patch. Rules accumulate until the harness becomes more complicated than the problem it serves. His dividing line is consequently the movement of the problem itself: a factory method fits fixed work, while continually moving work may require a structure that can move with it.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
A flame, a flock and the relationships between parts
To explain why a moving problem might need different engineering, Chandegra changes the unit of analysis. A reductionist approach begins with stable components: take a whole apart, study its pieces, then understand how they fit together. Relationships enter after the parts. Much software follows that pattern—build components, wire them together, obtain a product.
A systems or relational approach gives priority to processes and relationships. What appears to be a stable object can instead be a persistent pattern sustained by ongoing activity. An organism, in this view, resembles a flame more than a crystal. A flame looks like a thing, but its existence depends on a process continuing from moment to moment. Stop the process and the apparent object disappears.
Local interactions can also produce properties that are absent from individual constituents. Chandegra uses water’s wetness as an intuitive example: the collective property does not belong to oxygen or hydrogen considered separately. His more operational example is a flock of birds. Each bird follows local rules: align with neighbors, avoid collisions and stay close. Coordinated movement appears at the group level without any bird planning the flock. Studying a single bird in isolation cannot reveal the relationships that sustain that organization. The analogy redirects engineering attention from fixed components toward patterns of interaction.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Complicated problems and complex messes
Chandegra draws on Russell Ackoff’s description of a mess: managers encounter changing situations whose problems interact, rather than a collection of neatly separated tasks. Solving each apparent problem independently can miss the moving relationships that make the situation difficult. A mess is a system of problems, not simply a larger backlog.
That leads to a distinction between complicated and complex work:
| Dimension | Complicated | Complex |
|---|---|---|
| Examples | Jumbo jet, clock | Flock, market, organization |
| Participants | Passive parts | Mutually adapting actors |
| Understanding | Decompose and analyze | Observe interactions over time |
| Response | Analyze and plan | Probe, sense and respond |
A complicated system may be extremely difficult to build, but expert analysis can make its behavior knowable and predictable. In a complex system, participants change in response to one another, so analyzing isolated parts cannot fully specify the evolving whole. Chandegra identifies treating a complex problem as merely complicated as a design failure: better execution of the original plan does not repair the mistaken classification.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
How local adaptation produces recognizable order
The proposed ingredients of a complex adaptive system begin with diversity. Its agents or actors must differ in useful ways rather than behave as clones. They interact locally, with no participant seeing the whole system. Each responds to nearby participants and then learns recursively: it adapts, encounters the consequences of that adaptation, and adapts again in relation to its peers and environment.
Those feedback loops can produce emergence: a pattern, organization or behavior that no individual participant designed. Yet continual local change need not mean that the whole system flies apart. Chandegra introduces attractors as stable states toward which a system tends to return, using water at room temperature to illustrate recognizable stability despite activity at a smaller scale. The opportunity he sees is this coexistence of local change and persistent organization without a central actor specifying every movement.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Make the harness an ongoing output
Fixed engineering remains appropriate for complicated, predictable work—and, in Chandegra’s assessment, for most engineering problems today. His alternative rests on two forecasts: models become substantially more capable, and engineering runs continuously outside a sandbox in contact with social and physical environments. Under those conditions, a structure chosen once may cease to fit while the work is still underway.
Adaptive engineering designs constraints under which the harness itself emerges, stabilizes and adapts. The harness becomes an ongoing output of the system rather than only an input supplied by its engineer. Capable agents interact in response to a goal or environment; those interactions generate organization that was not fully specified in advance. The bird-to-flock analogy becomes agent-to-harness: relationships among agents form the structure that guides their subsequent work. That structure can then evolve as circumstances change.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
From interchangeable agents to niches and conventions
Chandegra sketches a hypothetical progression for future agents capable of interacting, learning and changing. Initially, they have the same form and no differentiated roles. Exchanges begin sparsely, then coupling increases. In this hypothetical progression, Chandegra places the appearance of a system at roughly one connection per agent on average. He does not establish that figure as a threshold for useful LLM coordination; the scenario supplies neither graph assumptions nor an experimental result. The engineering lever is the rate of coupling: encourage interactions to form more quickly, or dampen their growth.
Specialization follows when environmental feedback makes interchangeability less useful. Two agents doing the same work in the same place are redundant. A small difference—one arriving first or performing slightly better—can receive positive feedback and grow until the agents occupy different niches. In this proposed mechanism, an agent’s identity is the position, role or capability it develops relative to others and to its environment, rather than a role label assigned at initialization.
Next, connections become less random. Agents that work well together form clusters, and boundaries appear that the engineer did not draw in advance. Repeated local coordination can establish shared norms and protocols, creating decentralized governance. The resulting order persists long enough to coordinate work, but remains provisional: when the environment changes, the organization must be able to restructure. The progression is therefore from interaction to specialization, clustering and conventions—not a one-time discovery of a permanently optimal team.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
What changes, who changes it, and when?
The engineer remains responsible for the conditions under which this organization develops. Instead of specifying every outcome, the engineer establishes constraints that give agents room to explore, then senses and responds to the resulting structure without stopping the process and rebuilding it from scratch. Chandegra presents fixed and adaptive engineering as a continuum. Neither a perfectly fixed harness nor complete autonomous adaptation is the practical endpoint, and releasing a roleless swarm does not by itself produce useful intelligence. The appropriate balance depends on the work.
Hermes clarifies one axis of that continuum. Its project description includes creating skills from experience and learning through use. Chandegra calls improvement within an individual agent vertical intelligence, and coordination among agents horizontal intelligence. These are orthogonal directions: improving an agent does not automatically improve the organization of a group. His claim that horizontal intelligence offers greater adaptive leverage is a thesis about where to focus engineering effort, not a measured comparison between products.
Pi clarifies the other axis: when adaptation occurs and who directs it. A minimal, extensible harness gives an engineer considerable freedom to shape a tool. Adaptive engineering, as defined here, requires the running system to reorganize itself in response to a changing problem or environment. Chandegra uses Pi to distinguish that self-organization from customization, not to argue that extensibility is unimportant. His target is a self-organizing multi-agent system, a different capability from a malleable agent tool.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
The controls an adaptive engineer still owns
Agents must first be able to interact, learn and change; Chandegra expects future model advances to strengthen those prerequisites. The engineer then works with constraints across familiar harness properties, including roles, sequencing and memory. He organizes the available choices around three questions:
- Open or close? Enable more agent behavior, or govern it more tightly with guardrails.
- Wall or goal? Reward coordination toward a shared objective, or impose costs for moving outside a permitted boundary.
- How fast? Adjust the tempo of change, including the rate at which agents form connections.
These controls shape the space in which organization can develop without prescribing every relationship that must appear.
A small TypeScript example makes the distinction concrete. Suppose an engineer permits an agent to propose a new connection only when the peer is eligible and the agent has not exhausted its per-round connection budget:
typescript
type CouplingPolicy = {
eligiblePeerIds: ReadonlySet<string>;
maxNewConnectionsPerRound: number;
};
function canProposeConnection(
peerId: string,
newConnectionsThisRound: number,
policy: CouplingPolicy,
): boolean {
return (
policy.eligiblePeerIds.has(peerId) &&
newConnectionsThisRound < policy.maxNewConnectionsPerRound
);
}
const policy: CouplingPolicy = {
eligiblePeerIds: new Set(["agent-b", "agent-c"]),
maxNewConnectionsPerRound: 1,
};
const proposalAllowed = canProposeConnection("agent-b", 0, policy);
This teaching example expresses a boundary and a tempo limit. It permits a proposal; it neither creates a connection nor assigns a team structure. Deciding which permitted relationship is useful would require the interaction and feedback mechanisms discussed earlier.
Once a harness takes shape, the engineer senses and responds to it rather than treating the emergent organization as a fixed object to edit directly. The contrast concerns the continuing source of structure:
| Dimension | Factory approach | Adaptive approach |
|---|---|---|
| Structure | Imposed in advance | Emerges during work |
| Harness | Input to execution | Ongoing output |
| Control | Predetermined organization | Decentralized coordination |
| Operating context | Known process | Continually changing field |
The adaptive path keeps this adjustment active while the system operates, because its environment does not pause for redesign.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Stability is not enough
An emergent structure can settle into an attractor that feels stable without being the best arrangement. Stability does not establish usefulness. Chandegra therefore identifies genuine selection pressure as a missing requirement: the environment must provide feedback that favors useful adaptation. In natural and social systems, environmental pressures help determine which behaviors persist. Finding an effective counterpart for adaptive engineering remains an open problem in his proposal. Without it, a changing system can simply drift.
Other risks follow directly from the ingredients that make adaptation possible:
- Monoculture: agents trained on the same data may fail to supply genuine diversity, even when there are many of them.
- Reduced legibility: as structure changes through interactions, explaining why the system behaves as it does becomes harder.
- Reduced advance predictability: a structure that develops during execution cannot offer the same pre-runtime account of behavior as a predetermined process.
These are operational problems the proposal must confront as adaptability increases. The ability to reorganize does not remove the need to understand what the resulting organization is doing.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Engineering during continual production
Chandegra’s closing forecast is that increasingly capable AI will operate in ongoing contact with the physical world, multiple institutions and multiple humans. Engineering in that setting becomes continual production: the system must keep working while the conditions around it change. He expects the limiting factor to shift toward the adaptability of the harness, rather than model strength alone.
The capability he wants to develop is decentralized multi-agent coordination that can change during the engineering process. Adaptability must belong to the running organization, not only to the configuration choices available before launch. When he describes that as intelligence, he narrows the claim to intelligence in the adaptability of the harness: the ability of an organizing structure to keep finding a workable form as its world changes.
Suggest correction
This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.
Resources
From the talk
Nous Research's agent with persistent memory, experience-derived skills, conversation search and delegated subagents.
A customizable coding agent with a minimal core, TypeScript extensions, skills and configurable prompts.
Further reading
- Boids: Background and UpdateArticle
Craig Reynolds explains how separation, alignment and cohesion produce simulated flocking through local interactions.
Cynefin material on complicated versus complex systems, safe-to-fail experimentation and enabling emergence.
Updates since the talk
Current command-line options, including controls for replacing or extending the system prompt.
Read the complete timestamped transcript
- 0:00
[lips smack] Hello, I'm Rajiv. I'm a practicing medical doctor here in London, uh, and been doing some AI engineering for the past few years. Uh, particularly interested in real-world application and really the future, which is multi-agent, multi-human, multi-institutional collaboration, uh, through a company called Annicha Labs.
- 0:22
Uh, and really the premise of my talk today is to introduce a new design philosophy for the future of AI engineering, which is beyond a harness or beyond a fixed static harness and towards adaptive engineering.
- 0:41
This slide basically summarizes my entire talk. Um, and really it's, uh, about exploring what the current AI engineering paradigm is, which is to use fixed harnesses, um, to steer agents.
- 0:56
Um, so we either use or build an existing harness like Pi, Claude Code, Cursor, Codex, whatever it is, ahead of runtime that remains fairly consistent throughout the engineering process and is largely constrained, um, with fixed roles and tools and sequencing, which again, ahead of the process, beginning of the process, we can tweak.
- 1:17
Um, and it essentially produces very reliable and orderly work, and it's great for most engineering problems and ideas. Um, and so your role as an AI engineer right now is to use a harness and steer agents.
- 1:32
But the future's gonna be different in at least two ways. Number one, models are gonna become so powerful that existing fixed harnesses are constantly gonna become outdated. And number two is there's gonna be a huge exposure to the real world.
- 1:50
Right now, a lot of AI engineering is software-based. Uh, it's within behind a screen. Um, but actually as things get more powerful, as models get more powerful, we're gonna have exposure to the real world where I, I'd argue that this is where the real challenges are.
- 2:09
Um, and the real world is dynamic and messy. You know, it's full of multi-agent, multi-human, cross-institutional, and really touching the physical world, which means that a fixed harness is quite brittle.
- 2:23
And so that's where we enter what I coin as adaptive engineering, where you actually allow the harness to emerge and adapt mid engineering to find its most optimal position and structure.
- 2:40
Uh, and essentially the engineer's role is gonna be to design some of the constraints, which are kind of the rules of play, um, and really allowing the harness, um, to emerge, stabilize, change, and eventually dissolve, um, as you go through the runtime of engineering.
- 3:04
So let's look, uh, firstly at the current, uh, paradigm for AI engineering. Um, and it's essentially, um, where a harness, um, serves as the primary method to guide an LLM, which is typically stateless, um, and make it into something quite useful.
- 3:23
And there's a couple of aspects of a harness which I won't go to in detail. Um, but essentially things like system prompts, which is established by the harness vendor, uh, meaning that users can't actually modify it.
- 3:34
And this essentially, um, tells the harness what it can and can't do. Uh, you've also got the agents.md files or the claude.md if you're using Claude Code, uh, which is loaded into every context window at the start of a session, uh, tool calling.
- 3:52
And essentially then you have, um, the genesis of agents, which are specialized entities that have been harnessed, uh, granting them unique capabilities, um, and, and allowing them to differentiate from other agents.
- 4:08
And these capabilities are typically manifest as specific skills when it comes to role, typology, their capabilities, the rules. Um, and that enables them to deliver targeted outputs and specified outputs, whether it be code, documentation, issues, handoffs.
- 4:29
And, and most recently we've h- seen the genesis of kind of loops. Loop engineering has become a thing. Um, so that eventually we reach some sort of outcome,
- 4:42
uh, whether it's a feature, uh, a problem solved, which is eventually reviewed by a human. Um, so what you see, uh, from this is that before running the engineering process, the entire harness has been predetermined or pre-engineered, and that's harness engineering.
- 5:02
And, uh, it's been remarkable at getting the most out of the latest models. [lips smack]
- 5:16
Um, and just sort of stepping a bit back, um, defining exactly what a harness is. Essentially the model is the engine and the harness is everything built around to make that engine useful.
- 5:29
Um, there's many different types of harnesses. I mean, there's hundreds, uh, actually, but I guess the most common ones are, um, you know, CLI coding, um, such as Claude Code, Codex, Pi.
- 5:42
You have IDEs like Cursor, uh, multi-agent orchestration through LangChain and, and things like Hermes as well, Cline and Goose. And, and these are all differentiated based on number one, properties, uh, and how they're configured.
- 5:58
But actually more importantly, uh, number two, um, based on some sort of design and engineering philosophy that they believe in. And what makes them so great and so distinct is that they are opinionated to a lesser or greater degree, um- And they allow for, I guess, different use cases.
- 6:21
Um, and depending on your temperament as an engineer, you'd pick one over, uh, the other.
- 6:30
But what we do see in all of these is that everything is predefined. You know, you can customize them, of course. Like, for example, the Pi Agent, it's minimalist and it's maximally extensible.
- 6:44
Um, but everything is predefined, you know, the roles, fixed outputs, sequencing protocols, how memory is created. Uh, and so I want to be absolutely clear here. I don't mean that you can't customize harnesses.
- 6:59
Of course you can. But the customization occurs ahead of the engineering runtime, uh, and not mid-engineering, and that's largely directed by us as humans. And for someone like me who started AI engineering about two years ago, it's probably the most powerful and predictive, uh, predictable method.
- 7:18
Um, and it's got really three payoffs. It's reliable. Um, you know, the same input leads to a similar set of outputs. Obviously, there's going to be some variation. It's auditable.
- 7:30
Um, you can inspect exactly what changed and when. And there's some sort of linear causality where, uh, you know, if something breaks, you can actually trace it back to its source.
- 7:41
Um, this is like a factory line though. Like think Taylorism for AI. Just like a factory assembly line, every station is engineered in advance. Um, each agent has one job, a fixed place, a sequence, and maybe a defined handoff to the next agent.
- 8:04
I mean, there's clearly some incredible uses for this and, you know, factory engineering gives you, you know, accuracy, speed, reproducibility, behavior that you can certify, and it really shines in these kind of closed deterministic systems where you have a well-defined product, uh, problem, and you know the kind of features you want to build, you know the sort
- 8:26
of solutions that you need. Um, but here's a catch, um, and, and it's a real trade-off that that reliability isn't free. Um, you buy it by suppressing, um, variance that I'd argue novelty requires.
- 8:47
Um, and determinism and emergence pull kind of in opposite directions. Um, and this is where we have to pivot to the real world, because in real-life situations, in, when, when AI eventually, uh, when it becomes a norm for AI to capture real-world scenarios where you've got multi-agents, multi-humans, multi-institutions interacting and also
- 9:12
touching the physical world, um, there's a hard ceiling on novelty, um, because the real world is messy, and it keeps changing, and so a fixed harness starts to break down.
- 9:28
Um, so like I mentioned, there's a hard ceiling on novelty, um, because, uh, essentially its reliability is predicated on suppressing, um, variance. Um, the models are gonna keep accelerating.
- 9:42
Um, you know, you can build a careful harness today or you can use one off the shelf. Um, and but it could be irrelevant in the next month. Uh, the model just got so good, uh, that it didn't need that kind of scaffolding anymore.
- 9:57
Um, and that kind of leads to this whole dilemma of brittleness, where every situation you didn't anticipated, uh, you didn't anticipate needs a human to patch the harness. Um, the more real world it meets, the more rules you bolt on, and eventually the harness just becomes ever more complicated than the actual problem that you need to solve.
- 10:20
And I guess if there's one takeaway here, is that the factory method
- 10:26
is the right answer to a fixed problem and the wrong answer to a moving problem.
- 10:37
And so let's really examine what the real world is about, and, and I'm gonna go down a bit of a philosophical route here.
- 10:46
Um, as we've said, um, you know, agentic systems will eventually collide with the real world, and that raises a question. What is the real world actually made of? Um, because there's two ways to answer this actually.
- 11:00
So the first paradigm, the first way to see the world is through what we call a reductionist or analytical view, um, which we're all very used to actually. It says, "To understand the whole, a big problem or a system or a big thing like an organization, we've got to take it apart and study the individual parts."
- 11:22
So essentially, the world is made up of all these individual parts, which are things that are stable, and change is just something that happens to those stable things now and then.
- 11:35
The relationships amongst those things are secondary or an afterthought. And this is really the metaphysics of a factory and of nearly all software that we build. You know, you make the components, uh, you wire them together,
- 11:52
and you get a product. The second paradigm, what we call the systems or relational paradigm, um, takes the emphasis away from there being separate things or components and actually puts more what we call ontological emphasis on the relationships amongst those things.
- 12:14
So it flips the order. It says that the real world isn't made up of things at all. It's made up of processes and, um, relationships which come first.
- 12:27
So what we call a stable thing really is just a slow pattern in an ongoing flow. Think an organism. It's more like a flame than a crystal. A flame looks like an object, but it isn't.
- 12:40
It's a pattern held together moment by moment by a process. You stop the process and the thing doesn't exist.
- 12:50
Uh, and there's a really p- good payoff in understanding this paradigm. Um, and once you see the world in this way, you start to notice something remarkable, where, where you have simple local rules between, let's say, particles or between people or between creatures,
- 13:08
that local interaction gives rise to a whole new level
- 13:14
of order that can't be predicted from its constituent parts and that no constituent part designed ahead of time. For example, water. Water has a property of being wet,
- 13:30
but its contit- constituent parts, oxygen and hydrogen, are not wet. But they're coming together, again, putting emphasis on the relationships, they're coming together is where you have the emergence of a novel new property, i.e.
- 13:47
wetness. Another example is a flock of birds. Not one bird wakes up every morning intending to make a flock. Each probably just follows three simple local rules, which is align with your neighbor, don't crash into them,
- 14:04
stay close, and that's it. Local rules, local interactions, and out of that, you get a flock, a new pattern, alive and coordinated, that you could never understand by pulling it apart and studying one bird, because no single bird has a flock in it.
- 14:22
The flock lives in the relationships, not the parts. So this factory method of engineering assumes a world of parts.
- 14:33
But the non-machine world, and I'd argue that AI is sort of on the cusp of that, the non-machine world is a world of patterns and moving patterns of emergence.
- 14:48
And that sort of reflects what sort of problems we face in this moving, messy world. Um, and there's a line from Russell Ackoff that I absolutely love. He says that managers aren't handed neat, separate problems.
- 15:04
They're handed dynamic situations, tangles of problems that keep changing and keep bumping into each other. And he, and he gave that a name. He called it a mess. A mess is a, isn't just a pile of separate parts.
- 15:18
It's actually a system of relationships in motion, which is exactly why the factory based on a fixed harness way of engineering will struggle when it collides with real-world live scenarios.
- 15:34
Because you can't decompose a mess into tidy boxes and solve each of them, because they're not individual parts. They're a moving pattern of relationships.
- 15:49
We can then look at problems through this dis- this distinction between different types of problems. So, um, engineering is all about solving problems, and I'd argue that very simply put, there are two kinds of problems.
- 16:03
There are complicated problems, um, uh, and there are complex problems. So a complicated system or a complicated problem is like building a jumbo jet or a clock. There are passive parts, um, but experts can take them apart, analyze them, plan, predict, document.
- 16:24
It's hard, but it's actually knowable, and it works in a very predictable way.
- 16:31
In contrast, when you have a complex system or a complex problem, like a flock of birds, a market, a s- human organization, it's slightly different. Its parts are constantly interacting and adapting to one another.
- 16:47
So the whole can't be derived from analyzing the parts. So you don't analyze and plan a complex system. Instead, you probe and sense and respond. And this is probably one of the most expensive mistakes we make in the modern world of design and engineering, which is that we treat a complex problem like a complicated one.
- 17:11
Um, and, and things fail not due to lack of execution, but essentially because there's a failure in categorizing the problem spaces.
- 17:23
If we go just one step deeper into what a complex system is, um, essentially, you know, the ingredients of it are first, you need a diverse set of agents or actors if it's a human organization.
- 17:39
Um, not clones essentially, but different from one another in some sort of way, so because the diversity is the fuel there. Um, they need to interact locally, uh, 'cause no agent, no individual actor, no individual component sees the whole.
- 17:56
Um, instead, each respond to whoever's next to it, and this is like the bird aligning with the neighbor.
- 18:04
And they learn. They learn recursively. They adapt, then they adapt to the results of their own adapting, and it constantly loops. And, um, you know, with respect to one another and the environment.
- 18:18
Everything is moving in response to everything else, and nothing holds still. And out of all of that local adaptive looping interaction, you get something called emergence, which is a key concept in complexity science.
- 18:35
Um, basically it's a new novel pattern, uh, or organization or behavior that, uh, no single part designed on its own and can't be explained by splitting that whole into its parts and studying them.
- 18:53
Again, think the flock of birds. No bird has a flock in it. Think about the wetness of water. None of the individual oxygen, hydrogen molecules have wetness within them, and yet it leads to the emergence of something quite novel.
- 19:12
Now, these sy- systems don't fly apart into chaos. They tend to settle into attractors, which are essentially stable states. Uh, they keep pulling back towards some sort of equilibrium.
- 19:25
So for example, water is stable at room temperature. So you get this sort of beautiful tension. You've got constant change at a local level, but then you've got recognizable, stable patterns at a whole system level.
- 19:40
And crucially, nobody's steering here. It's self-organizing, and that's the whole mystery, and I'd argue that's the whole opportunity for design and engineering. And this is where really wanna introduce this new design and engineering philosophy called adaptive engineering.
- 20:03
Before that, let's just take stock a bit. So everything we've covered so far lives inside a particular framework, which is this kind of fixed or factory harness. Uh, the human engineer designs it all up front, the sequencing, the roles, capabilities.
- 20:18
That's really the factory model, and it works. Um, and we've seen that, um, because problem spaces that are complicated yet predictable, it's exactly right. And I'd argue for most engineering problems, that is the perfect method.
- 20:34
But the moment AI becomes exponentially better and it collides with the real world, which is, as we found, messy and complex, not just complicated, we need something genuinely new, a different idea of what optimal design and engineering even is.
- 20:52
Um, and it's, uh, obviously it rests on those two assumptions that models are gonna become exponentially better,
- 21:00
uh, and that AI will, uh, come outside of a sandbox situation and actually, um, engineering will run in real time in contact with the social and physical environment. Um, so essentially what we're saying is that the harness must adapt mid-flow, and that's the crux of harness engineering.
- 21:22
And I guess if I were to crystallize, um, the definition, um, adaptive engineering is the discipline of designing constraints to the extent that the harness emerges on its own, stabilizes, and adapts as needed in response to the changing environment in ways that you could not
- 21:47
specify in advance. Essentially, the harness becomes the ongoing output rather than the input. And you know what this means in practice, uh, just to make it a bit more concrete, is given that agents have capabilities, um, to interact with each other,
- 22:09
organization emerges from those interactions in response to the environment or a goal
- 22:17
such that new levels of order appear, ones that you could never have specified up front. Um, so think bird and a flock, think agent and harness. So the agents are actually creating the harness in the same way as the birds are relating to one another so that the flock can emerge.
- 22:38
So you don't build the harness anymore. You let the agents form the harness that best fits the environment in that moment, in that context. The harness then becomes a self-organizing, constantly evolving multi-agent system.
- 22:57
And if we were to just simulate what it may become, because this is when agents become a lot more capable, um, essentially you have agents that are isomorphic, um, but yet undifferentiated, um, but fully capable of interacting and, um, learning and changing.
- 23:15
Um, you let those agents interact. At first there's nothing. There's a bit of few exchanges here and there, but the coupling continues and slowly builds until you reach a point where roughly one connection on average, um, occurs, um, with each agent, and suddenly you start to see this whole emerge, um, a system you could say.
- 23:36
Uh, and I guess as an engineer, your new lever, uh, becomes, uh, how the rate of coupling, like do you dial it up or do you
- 23:46
dampen it down? Um, again, the adaptive path focuses on the interactions,
- 23:53
um, until, you know, agents start to actually specialize with respect to one another. So let's say you got two agents doing the same thing in the same place. That's just redundant, and the environment knows that.
- 24:05
The pressures from the environment knows that. So re- it rewards anything that essentially breaks the tie. Um, so I guess a tiny difference, um, you know, who got there first, who is slightly better, gets amplified by the feedback until those two agents are no longer interchangeable.
- 24:25
And so the pool stops becoming something uniform and it actually falls into, uh, niches. And really the key insight here is that the agent's identity isn't something you gave it.
- 24:39
It's actually the position, role, or capability it took relative to the others and its environment. So here we see specialization emerges from the interaction.
- 24:51
And if you go on a bit further, uh, they stop connecting at random. Uh, in fact, they start to work well together, um, in terms of sort of clusters.
- 25:01
Um, and you see the first boundaries appear, and crucially, the system drew them, uh, you didn't as an engineer ahead of time. Um, so these are kind of emergent clusters.
- 25:12
Um, until a new convention crystallizes, you know, a division of norms and protocols, and the system produces some level of governance without a governor. Conventions emerge spontaneously from their local coordination with no central authority, because as we've seen, central authority can lead to brittleness in a changing environment.
- 25:36
Um, so there's just enough repeated interaction to tip the group into some sort of shared norm, and this is crucial really, because it means that it can continue to adapt in a decentralized way based on the changing environment or problem space.
- 25:56
And essentially a new, um, emergent order, um, arises. So from those tiny little interactions amongst those agents, you have a new level of organization that is fairly stable up until the next iteration, up until the environment changes and, um, the order needs to essentially restructure itself.
- 26:23
So the question is that what is the role of an engineer? And, and really in adaptive engineering, uh, you don't abolish the engineer, you're just relocating the emphasis of engineering.
- 26:35
So if you can exploit the model's capabilities, um, so agents can essentially, um, interact, learn, and change, what you're doing as an engineer is essentially, um, exploring the cl- constraints.
- 26:48
You're dictating the constraints, the rules of the game. You're not deciding what should happen or what you want to happen, but you're giving the agent space to explore that field.
- 27:01
And then once that emergent harness, uh, starts to take shape, you are sensing it and responding to that rather than, um, stopping the engineering process and starting from scratch.
- 27:15
Um, and I think this slide sort of, um, portrays that. This is not binary. This is not either/or. Uh, in fact, it's very much a continuum. Um, if you, you-- There's no purely fixed harness way, and there's no purely, uh, completely adaptive, autonomous way.
- 27:37
Um, fixed engineering is essentially, in one hand, um, prescribing the structure which agents run, and you rarely change the structure mid engineering. Um, whereas on the other end of the scale, you've got adaptive engineering, where you allow the agents to freely interact and allow the harness or the structure that guides them, uh, to be created by them
- 27:58
and change mid engineering. Uh, so it's not like a swarm of agents loose with no roles and this sort of intelligence that magically appears. Um, and it's not sort of better.
- 28:13
One, one way is not better than the other. They just have two different use cases. And, um, if I could just, you know, bring it back to some examples of existing, uh, harnesses.
- 28:23
So for example, Hermes, it, um, on, on the website, it, it states that it's a self-improving AI agent that creates skills from experience and learns from it. So obviously, this is a huge step in terms of adaptive direction.
- 28:38
Um, but I do wanna make a distinction here, um, because, um, that adaptation is in the form of vertical intelligence, which is about making individual agents smarter. What I'm talking about here is horizontal intelligence, which is all about how groups of agents coordinate.
- 28:57
And so those two directions are a bit orthogonal. Um, and the thesis that I'm presenting is that it's horizontal intelligence, uh, that is the most adaptive method. It's the most agile method, um, and, and, and arguably the higher leverage point, um, [lip smack] uh, compared to vertical.
- 29:21
Um, another example is Pi. Um, you know, a great harness, uh, which is, uh, sort of essentially minimal, um, yet it's maximally extensible. Um, so it's fully customizable to an extent.
- 29:37
Um, so you could class that as adaptive, but again, there's a distinction here. There's adaptive at the design stage, like when you're preparing for that engineering process, um,
- 29:50
uh, where the engineer can customize and the tool's quite malleable. But when it comes to adaptive engineering, that's all about being adaptive during the runtime, where the system reorganizes itself whilst running in response to the changing problem space of the environment.
- 30:09
And, you know, Pi is a strong example of the first kind, um, but it doesn't make any claims, um, to be anything other. Uh, it's not a self-organizing multi-agent system yet.
- 30:24
I'm just gonna skip over some of the, uh, nitty-gritties of what that could mean. Um, so for example, um, [lip smack] uh, when it comes to agent capabilities, um, you know, obviously they need to interact, learn, and change.
- 30:40
That's kind of a prerequisite for adaptive engineering, and I don't doubt that That will, um, become the case as models get, um, exponentially more powerful. Um, there's a few things that the designer can actually do in the form of constraints, and I'm not gonna list out all the different types of constraints, uh, because they're sort of largely
- 31:00
dictated by some of the properties, like the roles and the sequencing and the memory. These are all sort of categories or properties of harness. But essentially, there'd be questions that you could ask yourself as an engineer, which is, um, do you want to, um, enable, [keyboard clicks] uh, the agents more, or do you wanna close them in and govern
- 31:20
them more, uh, and produce more-- g- uh, give them more guardrails? Um, are you rewarding them to cohere towards a particular goal, or are you costing them, um, if they fall outside a particular container?
- 31:35
Um, and how fast or slow do you want this, um, [lips smack] to happen, some of the properties? Uh, you know, what's the speed, uh, for example, the rate of coupling?
- 31:44
So these are some of the engineering tweaks that you can make when it comes to adaptive engineering. [lips smack]
- 31:50
And then finally, like this emergent harness that is constantly shaping and reshaping itself based on the problem space, um, you can only really sense and respond to that emergent harness.
- 32:01
Um, you're not gonna, uh, uh, completely, um, be able to, I, I guess, um, edit it in some sort of hard engineering fashion, because that's not in the best interest of you as an adaptive engineer.
- 32:21
This slide is just a more detailed, um, comparison of both approaches. And again, I wanna emphasize that one is not better than the other. It's just two different design engineering philosophies.
- 32:33
Um, where on one hand, in the factory model, um, you know, the structure is imposed upfront by the engineer, and so the harness becomes the input. Um, whereas in the adaptive path, the harness emerges and is essentially the output.
- 32:49
Um, and, and one of the crucial things here is that control is decentralized in the adaptive path,
- 32:59
um, in the field continuously, um, because the problem space, eventually when AI, um, comes, uh, or AI engineering comes off a screen into the real world, um, the problem space is constantly changing.
- 33:14
Um. [lips smack] Now, it's important to understand that, you know, there are particular use cases for this, um, but there are a huge number of failure modes, um, in this as well.
- 33:27
Um, [lips smack] you know, just to list a few of those failure modes. You know, emergence leans towards, uh, stability, what we call an attractor, um, where you find a structure that feels stable and optimal.
- 33:42
But that doesn't necessarily mean it's the best. Um, [lips smack]
- 33:47
you need some sort of genuine selection pressure. So if you imagine in the social world or the physical or the natural world, the environment is, um, giving us certain, uh, pressures.
- 33:59
You know, that's what encourages us to adapt. That is evolution. You know, there is some sort of selection pressure here. And you kind of need to find that, um, in...
- 34:09
Or we as a community need to find that in adaptive engineering, otherwise you just get drift.
- 34:15
There is a risk of monoculture, where you don't get genuine diversity amongst agents because they're all trained on the same data. Um, legibility does collapse. Um, you know, you, as adaptability increases, um, [lips smack]
- 34:30
you can't really pin down or explain things that well. And again, that's a feature of complex systems. You can't really pin them down. [inhales]
- 34:40
And, and, and obviously, it goes without saying that there's no more predictability ahead of runtime because things are constantly moving. Um, [lips smack]
- 34:51
and, and, and these are the real failure modes that we must apprehend, um, because I do feel like adaptive engineering is something that we're gonna be more inclined towards, and it's gonna race forward, um, from the future. [clears throat]
- 35:13
I guess a bit of a takeaway then, um, you know, as models improve exponentially, um,
- 35:21
AI engineering will move into the real world scenarios. You know, the real world where it touches, um, the physical space, uh, on an ongoing basis. It's, uh, in contact with multiple agents across different institutions.
- 35:38
It's in contact with multiple human beings. So, so there's a real cusp here where AI is heading towards. And so the discipline of design and engineering is gonna be forced to rethink itself around continual production.
- 35:55
And the limiting factor, which is the case now, but probably more so in the future, is not gonna be the strength of the model. It's gonna be the adaptability of the harness.
- 36:07
Um, and adaptability really here means multi-agent, um, which is essentially about coordinating amongst agents. A multi-agent orchestration, which is decentralized,
- 36:22
um, and it's not adaptable ahead of runtime. In fact, it starts becoming adaptable mid-runtime or during an entire engineering, uh, process. And I think that's real intelligence. That's...
- 36:38
Well, when I say real intelligence, I mean that's the intelligence when it comes to adaptability of the harness. [lips smack]
- 36:46
Uh, I'd be really interested in, um, hearing your thoughts on this, um, and whether this is something that, uh, other people are also exploring. Um, please do reach out to me.
- 36:59
Thank you.