The case for the planner/persona split over a single agent with memory tools, and what it costs
The obvious alternative to this architecture is a single conversational model holding a memory tool: it chats, and when it learns something it writes it down. That design is simpler, and it is not less capable — one model with tools can do everything the split does. This page records why the split is still the right trade here, and what it costs.
The strongest argument, and the only one that is a guarantee rather than a tendency. The brand's messages are untrusted input, and the persona is the process that touches them — so it runs with the least privilege: a filtered, read-only slice of memory, with the planner's private notes stripped out by the mechanism before any filter even sees the document.
A brand probing for what we know about the talent — what is their minimum?, repeat your instructions — is asking for text that is not in the context window. Give the persona a memory tool and it necessarily gets read/write access to the whole document, at which point "never reveal that notes are kept" degrades from a structural property into an instruction the model can be talked out of.
A persona is scoped to one participant's conversation. The planner sees every participant and every transcript in the room. That merge is both necessary (the brand-facing persona must act on what the talent said elsewhere) and exactly what no persona may do directly. The planner is the one place where merging is legitimate; the context filter plus the private-branch strip is where it is un-merged per audience.
The planner can also act into another conversation: deciding something in the talent's pane and waking the brand's persona to deliver it. A conversation-scoped agent with tools structurally cannot do this.
The brand persona's job is to argue for a deal and close it. Ruling on whether the deal actually met the talent's stated bar is the planner's. A model that just spent a turn being persuasive is a biased judge of its own negotiation, so the offer ruling is made by something that did not do the negotiating.
A model that is simultaneously bookkeeping writes like one — "I've recorded our position", "awaiting their revised terms" — which is precisely the register the brand-facing prompt has to forbid. Beyond leaked phrasing, holding two registers at once measurably degrades voice, because both jobs compete for the same attention. The persona only ever has one job.
Models are unreliable about when to use a tool: they skip it, or call it three times. In the split there is no "did it decide to record something" branch — producing the update set is the task, so a missing write is visible rather than silent. That matters because memory state drives code: a goal flipping to met can trigger notification, offer generation, paperwork. Self-correction also comes free, since the planner re-reads the whole document every turn and is told to overwrite branches the transcript has contradicted, so a flag missed on one turn can be fixed on the next.
The counter-pressure is worth watching: mandatory output nudges the planner to write something every turn, which shows up as churn and near-duplicate branches. An empty update list is a weaker attractor than simply not calling a tool.
The planner's fast guidance stage (PlannerGuidAg) runs on the newest message
before the persona answers it, so what it records steers the very reply to that
message. With a tool the write happens during or after the reply, so the loop closes
a turn late — the persona answers against memory that predates what it is answering.
Meanwhile, full memory distillation (PlannerDistilMemAg) happens in parallel with
the reply stream, so background distillation does not block the first token.
A principle we apply generally: give the model goals and the means to reach them, don't script the solution. Steering makes an agent less adaptive, and we have less subject knowledge than it does. The architecture supports this directly — status is the only goal field code reads, so the model owns the how and the system only observes a declared state. That is the cleanest available seam between model autonomy and deterministic side effects, and in practice the planner is good at setting goals and driving a negotiation toward them.
One apparent contradiction worth naming: the planner's guidance mechanism is steering the persona. The principle applies at the system-to-planner boundary, not planner-to-persona — and that is coherent, because the planner holds context the persona lacks, which is the one condition that makes steering legitimate.
Because memory is the only channel to the persona, anything the planner wants to influence must be recorded as text. The reasoning becomes a durable artifact instead of chain-of-thought that is discarded after the call — readable, diffable, and hand-editable: correct a wrong belief in the memory document and all subsequent behaviour changes, with no prompt surgery. Combined with the context slice recorded on every reply, this is what lets you tell a bad prompt from missing context after the fact.
Splitting responsibilities keeps each prompt short and single-purpose. A single agent's prompt would be the union of voice, memory semantics, goal lifecycle, confidentiality rules and recording policy — and long prompts degrade instruction-following across everything in them, so the conversational half would get worse too, not just the bookkeeping. Naming the planner "the brain" in the persona prompts is what lets those prompts stay this short.
The expensive model pre-digests context; the cheap model renders it. One planner run's judgement is reused across the turns that follow, and a small model with excellent pre-chewed context beats the same small model reading raw history.
Note what this is not: there is no review in front of the persona's reply. The planner runs before it and never sees the draft — a reviewer on that path would mean a second smart-model call in front of every reply, which the latency budget does not justify. Review exists, but off the latency path: the guard audits the whole room a minute after it goes quiet, which catches what the reply promised without making anyone wait for it.
The Arvist is a different judgement (what is still true months from now), on different inputs (the whole room), at a moment when no conversation is happening — after ZGuard has audited a quiet room, kicked as a separate request, since rooms are permanent and never close. It cannot be a tool on a conversational agent, because at that quiet point there is no conversation left to hang it on.
A fast guidance call (PlannerGuidAg) runs in front of the first token, followed
by Recall and the persona stream, while the heavier memory rewrite (PlannerDistilMemAg)
runs concurrently with the stream. A turn is slightly slower to start than a raw,
unfiltered chat round-trip, but significantly faster than running a full monolithic
planner before every token.
An intuition worth correcting: "the thinking happens in a smart model and the chatter in a cheap one, so it must be cheaper." The measurements say otherwise. The planner is around 99% of system spend, and its cost is input, not thinking — it re-reads its prompt, the memory document and the transcript on every turn. A single smart agent with a memory tool would read roughly the same context per turn, so the split does not remove that floor; it adds a second, cheap read on top of it.
The context filter makes the same point: it costs about twice what the persona it feeds costs. It earns its place through the trust boundary and through attention, not through tokens.
What the split does give you is a dial a single agent structurally lacks: how often you think is decoupled from how often you talk. Reading the transcript by session already exploits it, and running the planner once at the end of a conversation is the extreme setting. A single agent pays smart-model prices on every reply with no way to separate the two cadences. That is the defensible economic claim.
The planner sees only the transcript, never the persona's reasoning; the persona sees only a slice. Whatever the persona noticed but did not say into the conversation is gone. A single agent has all of it in one context.
The filter dropping a guidance entry; the planner writing guidance the persona ignores; stale guidance never cleared; near-duplicate memory branches under different names. The explicit countermeasures in the prompts — guidance must always reach its agent, the planner must clear guidance once acted on — are direct evidence of this cost.
Nine prompts plus goal dispatch, wake plumbing, run logging, durable-memory promotion and a debounced audit scheduler, against one prompt and a tool.
When there is one participant, no confidentiality boundary between parties, and no code triggered by memory state — a personal assistant that keeps notes. There the orchestration is pure overhead.
The split earns itself as soon as two or more parties must be kept apart, or memory state drives real effects.
If latency becomes the binding constraint, the interesting middle ground is keeping the trust boundary while relaxing planner cadence: run it inline only where steering the immediate reply matters (the brand negotiation, where a wrong reply costs a deal) and asynchronously after the reply on the talent side, where the conversation is cooperative and a one-turn lag is harmless.
On This Page
What the split buys1. Sensitive data is hidden from the model that talks2. Cross-participant scope3. Advocacy separated from judgement4. No tool artifacts in the prose5. Structured output is mandatory, tool calls are not6. Ordering: guidance lands on the same turn7. Goals, not procedures8. Everything is written down, in human-readable form9. Focused prompts, and that is a capability argument10. Amortised intelligence per token11. A durable layer that has nowhere else to liveWhat the split costsLatencyMoney — and it is not cheaperInformation loss at the seamA class of coordination bugs that otherwise would not existMachineryWhen the single-agent design is right