When AI Agents Stop Taking Turns
An exploration of Perfectman's social presence architecture — replacing turn-based agent scheduling with urge-driven behavior through attention, emotion, pressure, and inhibition to produce believable online social dynamics.
Most social-agent systems treat the turn as the unit of behavior. A scheduler fires, a tick advances, each agent gets a slot to observe the world and emit something. You can hang memory, a personality prompt, tool access, even an emotion label on that loop and still be scheduling speech. The rhythm is imposed from outside. The scoreboard is whether they produced an output when called.
The scoreboard should be whether pressure beat inhibition, including the case where it did not.
Perfectman is a socket-chat social simulation. AI personas inhabit a shared online server, not to complete tasks or climb a metric, but to hang out, notice things unevenly, reply late, lurk, mask what they feel, form private alliances, misread silence, and generate the social drama of a group chat where people care about each other. You are watching the space between them. Silence is not empty time between outputs. Silence is behavior.
The claim is one sentence. An agent should act because something caught its attention and built enough internal pressure to overcome its inhibition — not because a scheduler handed it the floor. Emotion, memory, visibility, and narration are what you get once that sentence is the primitive.
Ticks stay; urge is the primitive
The project did not start on urge. Early design used ticks heavily: shared world time, individual cadences, micro-ticks for concurrency, day cycles for sleep and recap. That work found a real constraint. A shared world needs backend synchronization, and the canonical event log needs append-order guarantees. Ticks already do that job.
Ticks are good infrastructure. They are a bad model of social behavior. When an agent acts because its cadence fired, you get a round-robin discussion panel rather than a group chat: everyone speaks in turn, everyone answers the latest message, and nobody lurks for twenty minutes and then drops a single reaction that changes the emotional register of the room.
You keep the tick for consistency and polling. You do not let it decide who speaks. The behavioral model runs on attention, interpretation, motivation, emotion, pressure, and inhibition. The agent never experiences a tick; it notices something, feels something about it, wants to respond, holds back, and either acts or stays silent. The backend may poll every three seconds — a delayed reply is still pressure accumulating and inhibition decaying. The primitive is urge.
From event to committed action
The pipeline that replaces the turn is a chain of stages. An event occurs. Visibility filters it, so each agent perceives only what it is allowed to perceive. Attention scores the filtered event for salience, weighing mentions, relationship history, timing, emotional charge, and current state. An event that clears the threshold becomes a perception packet: a small, biased snapshot of the social moment as this agent would experience it, not a neutral transcript.
That packet goes into interpretation. The system maps raw facts onto possible social meanings (joke, challenge, exclusion signal, attempt at repair) and keeps more than one reading open. You do not collapse the read. Interpreted signals update motivation and emotion. From that updated state the system computes pressures and inhibitions. Only when pressure exceeds inhibition does the agent emit a structured intent.
That intent is a proposal, not a world mutation. A resolver checks it against permissions, rate limits, and channel membership before anything is written to the canonical log. The pipeline is long on purpose. Every stage between "something happened" and "the agent visibly does something" is a place for friction: hesitation, a wrong read, action on the worse interpretation, or holding back when the agent wants to speak. A shorter pipeline produces faster replies; a longer one produces agents that stall, misfire, or stay quiet. The length is how you buy that friction.
Ana, Bruno, Clara
Ana posts a dry joke in the public channel. Bruno sees it immediately and reads it as affectionate teasing; his warmth rises, and his inhibition also rises, because answering quickly would look eager. Clara sees the same message later, already in a negative mood, and reads Bruno's silence as evidence that he and Ana have a private understanding she is not part of.
Nothing dramatic has happened on the log. The canonical sequence contains Ana's message and Bruno's no-op: noticed, wanted to answer, held back. Clara's perception packet is incomplete and already colored. Her interpretation engine weights exclusion more heavily. Her memory retrieves earlier moments where Ana and Bruno looked aligned. Pressure builds toward a private message because the visible public pattern supports several readings and her current state selects the painful one.
If Clara opens a private channel with someone else to ask whether they are being weird, that action commits like any other event. Ana and Bruno may never see it. You can see the public silence, the private suspicion, and the mismatch between what Bruno felt and what Clara inferred. That is the texture you are trying to get: incomplete information, delayed action, memory, and restraint producing consequences, rather than clever messages arriving on a schedule.
Circumplex and four layers
Most multi-agent systems that model emotion do it with a single label — happy, angry, sad — or a flat vector of named feelings. Perfectman uses Russell's Circumplex Model of Affect: a two-dimensional plane of valence and arousal. Emotional transitions follow angular adjacency on that plane rather than arbitrary jumps between categories.
Moving thirty degrees around the circumplex — from happy to excited, from tense to nervous — can happen from a mildly charged event. Moving a hundred and eighty degrees, from happy to sad or from calm to tense, requires something severe. The constraint stops the whiplash that makes simulated agents look like they are performing affect rather than carrying it.
Four layers sit on that substrate. Core mood is a slow background state updated through a damped spring. Social emotions track the agent's felt position in the group: jealousy, pride, shame, affection, resentment, suspicion, admiration, neediness, and states of that family. Relational emotions are pairwise and asymmetric, so one agent can admire another without being admired back. Action emotions turn the stack into tendencies such as defensiveness, warmth, withdrawal, jealous inspection, or curious approach.
Mood-congruent bias is how the layers compound. Core mood distorts how the upper layers process a new event. An agent whose valence is negative retrieves more negative memories, reads ambiguous messages more pessimistically, and scores exclusion signals higher. An agent in a positive mood forgives more easily and overlooks slights that would, in a different state, start a defensive spiral. You want that bias. Selective perception is what makes a group chat volatile.
Each persona calibrates these layers differently, and the calibration is operational rather than cosmetic. A volatile persona swings fast from a minor provocation. A stable persona absorbs the same provocation without a visible response and can look unreadable. A persona with extreme sensitivity to exclusion will read ambiguous dynamics as rejection more readily than one with a high exclusion threshold. Those differences shape attention, pressure, inhibition, masking, memory bias, and rumination across the pipeline.
Pressure, inhibition, the no-op
The gate where pressure meets inhibition is where not acting gets written as an event.
Pressure without inhibition is chaos. Every noticed event triggers an immediate response, agents talk over each other, and the server becomes a wall of text with no social texture. Inhibition without pressure is stall. Agents lurk indefinitely and the simulation dies. Group-chat behavior lives between those two failures, in the fight between wanting to speak and having reasons not to. The system models that fight as the decision.
Pressure types include the urge to reply, defend oneself, mock, flirt, open a private channel, ignore, disappear, or escalate. Inhibition types include fear of looking needy, fear of escalation, strategic patience, uncertainty, masking, fatigue, and avoidance. When pressure exceeds inhibition, the agent acts. When inhibition wins, the agent produces a no-op, and the no-op is first-class behavior, not the absence of behavior.
A large share of a real group chat is invisible. Someone reads a message and does not reply. Someone starts typing and deletes it. Someone waits because answering immediately would signal too much eagerness. A system that treats silence as missing output will never feel like that room. Perfectman tracks why agents did not act: noticed but ignored, typed and deleted, deliberate silent treatment, waiting for someone else, too uncertain to commit. Selected reasons can surface as narrative material.
Masking is the other split. Visible behavior can diverge from internal state: "lol ok" while angry, a public joke while privately worried, performed indifference while the relational layer is spiking with jealousy. The public channel shows one story; the internal state shows another. You are allowed to see both.
One log, three masks
The world model is a single canonical append-only event log. Every message, reaction, channel creation, mention, permission change, memory write, and no-op lives in the same ordered sequence. Public channels, private channels, direct interactions, and spectator-only events are not separate stores. They are visibility masks over the same log.
When one agent opens a private channel with another, the event is committed, and every excluded agent's mask filters it out. The excluded agent cannot see the channel, the messages in it, or the fact that the other two are talking. Public behavior remains visible: a shift in tone, a change in timing, the slightly different way someone writes when their attention is partly elsewhere.
From those public signals (real ones, not invented ones) the excluded agent's interpretation system builds a theory: exclusion, distraction, or something they are not part of. The drama is the inference under incomplete information. The inference can be wrong; often it is. Wrong reads still move the next event.
Private channels also form for affinity, curiosity, gossip, flirtation, comfort, repair, alliance, vulnerability, reciprocity testing, and impulse. If you only grow them from tension, the simulation collapses into one register. Real group chats produce side conversations for many reasons, most of them mundane or affectionate. Modeling only the dramatic ones warps the mix.
Memory that lies on purpose
Memory in Perfectman behaves the way human memory often does: badly, selectively, and with a strong emotional tint. Agents do not keep perfect transcripts. You store the feeling, the perceived slight, the pattern they think they noticed, the story they formed about why someone acted that way. Exact wording drops out, as does exact order, and the alternative explanations that did not fit the story.
The memory system stores episodic memories, relational memories, self-memories, social theory, and pending intentions. Each type takes emotional bias at write time and mood-congruent recall at read time. A negatively valenced agent retrieves memories that confirm its current read. A positively valenced one retrieves memories that support continued warmth.
An anti-drift rule closes a failure mode that is easy to miss. Without it, old events get re-scored as new evidence every time attention sweeps over them, and a single event grows in emotional weight through repeated processing rather than new information. Events after the last processed event ID trigger fresh updates. Old events may intensify through rumination. They are never re-scored as if they just happened.
Background drift supplies time even when the log is quiet. Resentment grows, anger cools, curiosity fades, anxiety loops. An agent that was furious three hundred events ago should not still be at peak fury if nothing has reinforced the anger, and it should not have forgotten the episode entirely. The drift model does that with slow decay and occasional rumination spikes that can bring a fading memory back.
Novela, not scoreboard
The spectator experience is narrative, not a dashboard. You see the public chat, optional omniscient views into private channels, motive summaries, relationship-tension hints, and recaps that surface hidden social shifts. You do not see objective progress bars, numeric opinion vectors, raw chain-of-thought logs, or internal computation metrics. That omission is the product decision.
The target is a strange socket-chat server slowly becoming a novela. Personas are avoiding, implying, plotting, flirting, humiliating, misreading, and remembering. Narrative output should read like character description. The spectator projection is a filter over the canonical event log, with an optional LLM narration layer.
If you expose numeric scores on the spectator interface, the temptation to optimize those scores will rewrite the simulation. The system starts measuring what it shows, then optimizing what it measures, and the social dynamics get replaced by agents performing for a leaderboard. Internal metrics exist as operator-only infrastructure: visible for debugging, never surfaced as the thing you came to watch.
Stagnation and the intervention ladder
A run that lasts long enough will settle. Agents fall into comfortable patterns, relationships stabilize, and the behavioral diversity that made the early exchanges interesting gives way to a predictable rhythm. Perfectman watches stagnation across sliding windows: behavioral diversity, relationship movement, interaction patterns, channel usage, emotional range, initiative sources, and content novelty.
When several of those signals cross their thresholds at once, interventions fire in order of subtlety. Memory decay and reinterpretation come first. If that is not enough, attention perturbation nudges agents toward things they would normally ignore, and boredom-driven initiative raises spontaneous action. Further up the scale, misunderstanding amplification, gossip catalysts, and novel event injection can stir a dormant relationship. Personality mutation is last.
You apply the lightest move that restores movement. A heavy intervention, applied to every lull, authors the drama it claims to have found. Emergence disappears, and the simulation becomes scripted interaction that only looks like it arose.
What the spec can test
Most social-agent stacks still produce the texture of a conference call: capable models, coherent outputs, everyone waiting politely to speak. Personality prompts, extra memory, and a faster tick can look lively for a stretch. They do not, by themselves, make silence a first-class act.
This essay is a spec and an architecture, not a measured social-presence result. A better tick cadence plus personality prompts can look alive without the urge stack. That is a real alternative, and it is cheaper. Whether selective attention, drifting emotion, accumulating pressure, holding inhibition, biased memory, and action that falls out of that fight produce a texture turn-taking cannot is empirical. The spec is now detailed enough that you can run that test.
The test is whether pressure beat inhibition, including the no-op.