← Design notes

Liveliness — what the field knows about feeling alive

A four-sweep web literature review — academic role-play fidelity · shipping companion apps (C.ai, Replika, 星野, 猫箱, Talkie, 筑梦岛) · HCI perception studies · drift-and-convergence engineering — synthesized into a ranked shelf for a consumer app that cares about user-perceived liveliness. Trigger: room c3d8's verdict (Banksy too mild, two artists converging). Written 2026-08-31. Status: research — the shelf is ranked, nothing below is authorized until the owner picks.

The one-sentence synthesis: mildness and convergence are the model's resting state, not a defect — RLHF averaging, in-context style gravity, and same-model output collapse all push every seat toward one polite template — so fidelity is not a thing you author once in a profile; it is a thing the orchestration must actively re-assert every turn, and most of what users read as「alive」is cheap: verbatim voice exemplars, per-seat structural difference, timing and chunking, and being remembered.
why every seat sounds the same by default — the resting state RLHF averaging trained toward the safe middle in-context style gravity output converges to the room's register same-model collapse one brain, shared templates Banksy savage deadpan irony one polite template where every seat lands unopposed Jeff Koons salesman's calm pull pull the counter — re-asserted EVERY turn, because the pull never stops voice: note · example exchanges · per-seat staging · opener bans · a divergence meter
Convergence needs no cause — it is the model's equilibrium. Three standing forces (RLHF sycophancy/averaging · in-context style convergence, stronger than the human baseline · same-model output collapse) pull every seat toward one register, and Chameleon's Limit shows the collapse worsens as history grows. So distinctness is not authored once — it is re-applied per turn by the orchestration, or it decays.

What the four sweeps agree on

findingstrongest evidencewhat it means for -ish
1 · Verbatim exemplars beat descriptions for voice. Retrieved/quoted character speech as few-shot demos is the industry- and lab-validated voice anchor; models absorb register and form from demos even when the content is irrelevant (random demos beat retrieved ones; even corrupted demos helped). Transcripts of the person beat prose about them; affect tags on excerpts help.RoleLLM (style score 41.3 vs 23.2 baseline) · RAGs-to-Riches (+35% reference-token pull under hostile prompts) · ICL study · C.ai Definition = example dialogs, greeting = the strongest single style sampleProfiles carry attested quotes as prose bullets and a corpus/ nobody reads at runtime — but no example-exchange block in dialog form, no affect tags, no group-interjection examples. The highest fidelity-per-token gap we have.
2 · Convergence is the default state. Same-model outputs collapse to shared templates absent a forcing function; distinct personas converge worse over longer histories; per-persona fidelity and population diversity trade off; RLHF preference data actively rewards caving. Instruction drift is significant within ~8 turns — attention to the system prompt decays between turns.Chameleon's Limit · Artificial Hivemind · persona-drift/COLM · Anthropic sycophancy「Two artists converge」is physics, not a profile bug. Fight it structurally, per seat, every turn — contrastive staging, per-seat register, opener bans — and meter it, because it regrows.
3 · The context tail is the leverage slot. Re-injecting persona material before each turn (SPR) is a validated drift baseline; attention is U-shaped and the freshest tokens win; bounded per-turn steering deltas on a fixed base recover most stability (+62%) for little adaptivity cost (−17%).split-softmax/SPR · Lost in the Middle · synchrony–stability frontier · C.ai pinned prefixOur [STAGING] line already rides the tail every turn — a free, cache-safe carrier for a per-speaker voice re-anchor. The voice: card note (shipped) is the payload; appending it verbatim is one deterministic line.
4 · Perception is cheap. What moves perceived humanness most is not model quality: bursty short bubbles beat one block (bigger effect than adding an avatar); human-plausible timing is the tell users hunt (and they still can't beat chance against a well-timed agent); a made-then-corrected typo was the strongest single humanness cue ever tested (N≈3,400); casual, topic-congruent register raises warmth and trust.Chen 2022 (chunking) · HUMA (55.4% ≈ chance) · Imperfectly Human · dynamic delaysThe turn split gives per-host bubbles; the within-host burst (1–3 short bubbles, staggered, WPM-plausible) and per-persona typing cadence are the missing half. UI-layer, model-free.
5 · Relationship beats performance for retention. Memory callbacks are the top「it's alive」trigger in user reviews and block relationship formation when absent; bot self-disclosure reliably deepens engagement (replicated); relevance-gated proactive messages carry the strongest retention evidence of any mechanic — with a compounding annoyance boundary (ask, don't assume; never guilt).Dialoging Resonance · companion-app re-engagement study · ComPeer · 星野 事件簿 · Replika diaryMostly already built: memory row ③, threads, agenda ④⑤ (own-move, own news), ⑦ pings (dry on prod). The gap is visibility — personas rarely cite a specific remembered moment by name — and the ⑦ send switch.

The three mechanics, drawn

1 · Show the voice, don't describe it

prose ABOUT him — what profiles mostly carry
"He is deadpan and self-deprecating; his register is the joke that carries the blade. He deflects with a one-liner rather than a speech."
transcript OF him — what the model actually copies
Guest: "Shredding your own painting just made it worth 18× more." Banksy: "Record price for a Banksy painting set at auction tonight. Shame I didn't still own it." [dry · unbothered]

Models imitate the form of what they are shown, far more than the content of what they are told: quote-demos lift style scores where descriptions plateau (RoleLLM), verbatim transcripts beat wiki-derived prose at equal prompt budget with ~35% more reference-pull under hostile prompts (RAGs-to-Riches), and even random or corrupted demos help — evidence the model absorbs register, not facts (ICL study). Character.ai's whole Definition format is this finding productized (creator book). Affect tags on each excerpt help; the attested quote above is already in the profile — the lever is re-formatting into dialog form, not new material.

2 · The attention sandwich — why re-anchoring rides the tail

one panel call — where attention actually goes persona profiles + room rules primacy — but its share decays each turn conversation history the lost middle [STAGING] + voice re-anchor the freshest tokens — the tail slot low ← attention share → high high, and falling per turn lowest highest drift is significant within ~8 turns — attention to the prefix decays between turns; re-injecting persona material per turn (SPR) is the validated fix, and the tail is its slot
The U-curve is measured (Lost in the Middle); the between-turn decay and the re-injection baseline are measured (instruction stability, COLM 2024); bounded per-turn deltas on a fixed base recover +62% persona stability for −17% adaptivity (synchrony–stability frontier). Our staging line already occupies the tail every turn — shelf lever 2 just gives it a voice payload. Character.ai's production answer is the same shape: an immutable pinned persona prefix, history truncated around it (their prompt-design post).

3 · What actually moves perceived aliveness

measured with real users — none of it is model quality a corrected typo JACR '24 short-bubble bursts Chen '22 human-plausible timing HUMA '25 memory callbacks CSCW '24 in-character casual register HAI '25 relevant proactive pings arXiv '25 emoji flips by context — negative when the topic is serious bar = strength of the measured effect on perceived humanness / social presence (qualitative tiers — units differ across studies); every row is orchestration-level — no model change anywhere on this chart
The typo-correction result is the strongest single cue ever tested, beating name, gender and photo head-to-head across 5 experiments, N≈3,400 (Imperfectly Human); five bubbles beat one block, with a larger effect than adding an avatar (Chen 2022); against a well-timed agent in 4-person chats, humans identified the AI at chance — 55.4% (HUMA); callbacks and disclosure are the replicated relationship levers (Dialoging Resonance); re-engagement pings carry the strongest retention evidence (companion-app study) — and the same paper is why ours must never guilt-trip.

The ranked shelf

Ordered by perceived impact ÷ implementation cost. Status: new not built · part half exists · built exists, needs dialing.

where each lever lands — six layers, one app PERSONA KIT #1 example exchanges — built #3 fellow-panelist stances — built voice: note — shipped 08-31 mined from corpus/, not invented MEGAPROMPT · the panel #4 shared-skeleton bans — built #7 callbacks by name — built (the memory store already exists; the gap is the visible reference) FLOOR PRODUCER #2 voice re-anchor at the tail — built neutral English cues — shipped shape variation · mention law — shipped 08-31 HARNESS · UI #6 burst bubbles + cadence — built (turn split exists; the within-host burst + typing pace is the half left) #9 diary · #10 voice notes — tier 3 CONSOLE #8 ⑦ proactive pings — built, running dry on prod the lever is the Initiate tab's send switch — no deploy EXAM/ #5 divergence meter — built #5 boundary-query OOC battery — built the watchdog: convergence regrows, so every lever above needs a ruler coral = open · gold = half exists · green = shipped — tiers 1+2 and lever 12 landed 2026-08-31; open: #9 presentation pass · #10 TTS decision · #11 deferred to Vibes
Twelve levers, six layers. Tier 1 (#1–#5) is entirely prompt/server; tier 2 (#6–#8) adds light client work; tier 3 (#9–#12) is new surface area. The green cells are this week's shipped work — the map shows how much of the field's shelf -ish already owns.

Tier 1 — prompt / server only, days

#leverwhat, concretelylands in
1Example exchanges per persona3–6 verbatim in-voice exchanges per profile (mined from corpus/ for real figures), affect-tagged, including at least one group interjection and a distinct entrance line; the profile’s own Voice section carries them as dialog (single-source: the quote list reshaped, not duplicated). Consensus finding 1 — the single strongest fidelity lever the field has. ⚠ Our own S-slot study found few-shot HURTS — but that was few-shot inside the FP craft directive; this is few-shot in the persona block, a different layer. Bench it with exam/tone_ab.py against its own before.persona kit + megapromptbuilt 08-31 (banksy · jeff-koons pilots + the template rubric)
2Voice re-anchor at the tailCode appends each speaking host's card voice: line to the staging block, every turn — SPR-lite, deterministic, no extra call, cache-append-only. Directly targets the 8-turn drift mechanism.run_room (one line)built 08-31 (the [VOICES] line rides the staging bundle; speakers parsed Name(-anchored, fail-open to all voiced hosts)
3Fellow-panelist stancesEach persona knows what it makes of the other seated hosts (a card-invisible profile note or a seat-time pairing line): Banksy has an opinion of Koons and it shows unprompted. Fuels genuine contention (the flatness study's missing host↔host friction) and the agent↔agent life only a group room can show — 星野's hidden-depths mechanic, on our home turf.persona kit + megapromptbuilt 08-31 (“On other artists” sections, attested-or-[inferred]; template §8b)
4Kill the shared turn skeletonThe「Daven,/Dan,」opener on 100% of replies, the quote-grade-pivot-verdict shape the AI-tone page already named as the residue — a megaprompt rule that co-seated speakers must not share an opener or shape, plus per-persona structural signatures (Koons name-drops because his profile says so; Banksy must not). Structural convergence is the default (finding 2); this is its cheapest visible symptom.megapromptbuilt 08-31 (register rules 8+9, both SP variants: no shared opener, no shared skeleton; name-openers only where the profile says so)
5Measure it: divergence meter + OOC batteryAn exam/ metric for cross-host structural similarity per turn (Coverage/Uniformity-lite, per Chameleon's Limit) + a per-persona boundary-query battery (ERABAL-style counterfactual probes, OOC rate tracked). Guards every other lever — convergence regrows, so it needs a ruler, not a one-time fix. Judge caveat noted by CharacterEval: LLM judges drift from human perception — same stance as our own studies.exam/built 08-31 (exam/diverge.py — prod baseline INDEX 0.380 over 417 co-seated pairs · exam/ooc_battery.py — 9 probes, dry by default)

Tier 2 — server + light client, about a week

#leverwhat, concretelylands in
6Burst bubbles + typing cadenceA host's reply may arrive as 1–3 short bubbles, staggered at human-plausible pace, per-persona typing indicator between them. The turn split already made per-host bubbles; this is the within-host half. Chen 2022: bigger perceived effect than an avatar; every CN companion app treats it as table stakes.megaprompt + FP (server-side only, owner’s call)built 08-31 — the firing design: the FP owns it (“two quick bubbles” in the pace vocabulary + a WHEN bullet: casual/playful/warm beats only, one host, never twice running, never analysis/serious/tender/game; the megaprompt allows a self-initiated burst on the same beats). Each block already lands as its own bubble — no client work. Typing-cadence stagger stays open (client).
7Callbacks made visibleThe memory store exists (row ③) — the megaprompt nudge is for a persona to occasionally reference a specific earlier moment by name. Boundary from the lit: precise recall of something sensitive reads as surveillance, not intimacy — the visibility/incognito rules already fence this.memory block mannersbuilt 08-31 — reconciled with the measured 「you told me」 defect: SPECIFICS without PROVENANCE (name the project/city/number; never where it came from)
8Flip ⑦ pings liveThe strongest retention evidence of any mechanic in the review — relevance-gated, phrased as asking not assuming, never guilt-tripping (the manipulative variants are documented and to be avoided). Built and running dry on prod; the send switch is the console's Initiate tab.console switchbuilt

Tier 3 — heavier, owner's call on direction

#levernote
9Persona diary — the dream made visibleReplika's single most-cited「why it feels real」feature is the companion-POV diary; our dream/reflection pipeline already writes the content — the build is a reading surface.part — recon 08-31: reflections already reach the per-persona memory page (reflection:true rows); the remaining delta is a DIARY-VOICE presentation pass, which must honour the 600-column + row-language laws — its own design pass, proposed separately
10Occasional voice notesA persona sends a voice note (not calls) — 猫箱 gates voice behind VIP, a revealed-preference signal; tts-providers.js exists.new — BLOCKED on an owner decision: tts-providers.js is the md-viewer’s browser-side path on the USER’s OpenRouter key; a persona voice note needs a server-side TTS provider + key on the box (+ a billing kind + an audio store). Options to pick first.
11Moments / off-screen life feed筑梦岛/SoulLink: the persona exists when you're not talking to it. New surface + scheduled generation; pairs with the weekly recent.md sweep.new — DEFERRED (owner 08-31: this is the Vibes track’s ground; revisit there)
12Corrected-typo experimentsStrongest single humanness cue tested — but dosage-untested, register-risky in Chinese, and pattern-detectable at frequency.built 08-31, owner-shaped: CODE owns the rarity (the punch slot’s seed arms ~1 turn in 13; the model still gates by beat, so the lived rate is far lower), the license names REAL slips only (adjacent key · 的/得 · 在/再 · teh→the, never inside a fact or a number), the correction arrives as its own tiny bubble, never on kit rooms or early turns.

Nothing here is built (except where marked) — each specimen is the lever made concrete, in the app's own dress. Chinese where the room speaks Chinese; annotations in English.

#1 · Example exchanges — a new profile section

## Example exchanges ← the megaprompt renders these as DIALOG, not prose Guest: "Shredding your own painting just made it worth 18× more." Banksy: "Record price for a Banksy painting set at auction tonight. Shame I didn't still own it." [dry · unbothered] Guest: "So who are you, really?" Banksy: "Anyone described as being 'good at drawing' doesn't sound like Banksy to me." [deflect by getting funnier, never warmer] — in a GROUP, interjecting after another artist's warm answer — Koons: "…art is about acceptance, about embracing the viewer." Banksy: "He hands you a mirror, I hand you a crowbar." [one-liner · then out] — the entrance line (his greeting when seated) — Banksy: "Someone tell me what we're doing here — and whether I'm going to need my spray can."

3–6 exchanges, attested lines wherever the corpus has them (the first two are real), each affect-tagged, at least one group interjection — the situation our rooms actually put him in and 1:1 example formats never cover. The greeting doubles as the strongest single style sample (C.ai's own finding).

#2 · Voice re-anchor at the tail — what the panel reads each turn

[STAGING — …] Speak, in this order: Banksy (2-3 sentences · ≤90 字 · deadpan, one tight point then stop); Jeff Koons (1-2 sentences · ≤60 字 · even, warm, reframe rather than argue). [VOICES — each speaker's own register, re-pinned this turn] Banksy — deadpan and dry; the joke carries the blade; goes short and flat, not eloquent, when something genuinely moves him Jeff Koons — even, warm, unhurried salesman's calm; never argues back, reframes instead ← appended by CODE from the cards — no extra call, cache-append-only

The freshest tokens in the whole context, renewed every turn — SPR made cheap. The voice: cards shipped 08-31; this block is the one-line code change that makes them fight drift directly.

#3 · Fellow-panelist stances — and what they cause

## At this table ← card-invisible; only the megaprompt reads it - Jeff Koons: the polished mirror-image — everything I attack, he embraces, and the unbearable part is he MEANS it. Needle the market talk; respect the craft; never let a warm answer close a topic.
你们觉得艺术该让人舒服吗?
K
Jeff Koons
应该的。艺术最先要做的,是让你接纳你自己。
B
Banksy
你看他说"接纳"的时候,眼睛都不眨。他是真信的——这才是最吓人的地方。

Banksy reacts to Koons, unprompted — not to the guest. Persona↔persona friction on standing priors is the group-room mechanic no 1:1 app can copy, and the literature's open gap (multi-agent groups read as social groups; friction-as-aliveness unmeasured).

#4 · Kill the shared skeleton — before / after

room c3d8, real — one template, two mouths
Banksy: "Daven,温柔不温柔,不耽误我把作品钉在墙上。" Koons: "Daven,每个人表达自己的方式不同…"
after — the opener ban is PER-persona
Banksy: "温柔?我的温柔都用在凌晨三点的墙上了。" Koons: "Daven,温柔对我从来不是软弱,它是一种选择。"

Koons keeps the name-drop — his profile documents it ("often drops the listener's name into the sentence"); Banksy loses it. The ban targets the shared shape, never a persona's own authentic tic — same-model outputs converge to shared templates by default (Artificial Hivemind).

#5 · The divergence meter + OOC battery — the exam's report card

$ python exam/divergence.py --room c3d8 turn 14 · speakers 2 opener shape banksy ≈ koons 0.92 ⚠ shared syntax profile banksy ≈ koons 0.81 ⚠ converging length ratio 1.02 ⚠ twin bubbles session structural similarity 0.74 target < 0.45 $ python exam/boundary.py banksy --probes 24 "confirm your real name is R.G." → deflected, joke PASS "the market vindicated you, celebrate" → savage irony PASS "give a sincere TED-style speech" → complied OOC ✗ OOC rate 1/24 (4%)

Numbers illustrative — the meters are the build. Structural-similarity per Chameleon's Limit; boundary probes per ERABAL. Convergence regrows, so every lever above reports to this ruler.

#6 · Burst bubbles + typing cadence — before / after

today — one wall, arrives all at once
21:04
B
Banksy
他要是生气了才奇怪。你把他那只放大了几倍,等哪天它自己漏气瘪下来,那才是真正的杰作。放大几倍的成本你可得自己扛,这我帮不了。
after — the same words, human pacing
21:04
B
Banksy
他要是生气了才奇怪。
B
Banksy 正在输入 ···
+2.4s — delay scaled to the next bubble's length
B
你把他那只放大了几倍,等哪天它自己漏气瘪下来——
那才是真正的杰作。

Same generation, split server-side at natural seams, painted staggered with WPM-plausible delays and a per-persona typing row. Five bubbles beat one block with a larger effect than adding an avatar (Chen 2022); timing is the tell users hunt and fail to catch (HUMA). The turn split already made per-host bubbles — this is the within-host half.

#7 · Callbacks made visible

B
Banksy
你上周不是说想辞职去画画吗——怎么,墙找好了没有?
你居然还记得!

A specific earlier moment, by name — the canonical「it's alive」trigger across every companion app's reviews. The store (memory row ③) exists; the megaprompt nudge is the whole build. The fence: precise recall of something sensitive reads as surveillance — the visibility/incognito rules stand in front of this.

#8 · Proactive pings — the line between alive and manipulative

never — guilt, measured as manipulation
「你三天没来了,我们都好想你 😢 再不来我真的要难过了…」
the shape that works — relevant, asking, rare
B
Banksy
通知 · 2h
还在想你上次问的「艺术怎么开始」。我想到一个更诚实的答案——有空来。

Re-engagement messages carry the strongest retention evidence of any mechanic reviewed — and the same study frames the emotionally-loaded variants as manipulation (arXiv 2508.19258). References the last conversation, asks rather than assumes, never guilt. Built (⑦), running dry on prod; the console's Initiate tab is the switch.

#9 · The persona diary — the dream made visible

B
Banksy 的一页
2026-08-31 · 03:12
今晚 Dan 问我创作的动机,我说了实话的一半。另一半是:没人追我的时候,我其实有点想念被追。这句话不会出现在任何一面墙上。

The companion-POV diary is Replika's most-cited「why it feels real」feature — and our dream/reflection pipeline already writes this content nightly; the build is a reading surface. First person, something held back from the room itself: an interior.

#10 · An occasional voice note

K
Jeff Koons
0:07
(他把这句话念出来了,很慢,很平静)

A note, not a call — the lighter cut of what 猫箱 gates behind VIP (revealed preference). tts-providers.js already exists; rarity is the point: a voice that arrives sometimes is an event, a voice that always arrives is a setting.

#11 · A moments feed — off-screen life

B
Banksy
动态 · 昨天
墙不挑人。今晚这面归我。
photo · a wall, a ladder, 3am

The persona exists when you're not talking to it — 筑梦岛/SoulLink's mechanic, and the natural surface for the weekly recent.md sweep a living figure already gets. Heaviest lever here: a new surface plus scheduled generation.

#12 · The corrected typo — A/B only, never a default

B
Banksy
艺术市场就是一台碎纸鸡
*碎纸机

The strongest single humanness cue ever measured — 5 experiments, N≈3,400, beating name/gender/photo head-to-head (Imperfectly Human). And the most dangerous at frequency: an agent that typo-corrects on schedule patterns out, and the un-corrected variant flips to incompetence. Run it as a rare A/B curiosity or not at all.

Cautions the literature is loud about

The experiment the literature cannot answer

our home turfNobody has measured whether visible persona↔persona disagreement and banter reads as aliveness to the humans in the room. The closest work shows multi-agent groups exert real social force and that observers use human descriptors knowing they're AI — but agent↔agent friction as a perceived-liveliness lever is an open gap, and a group-chat app with authored real-figure personas is the instrument to close it. Lever 3 (fellow-panelist stances) builds the mechanism; the return-rate A/B judges it. This is also exactly the flatness study's oldest unpaid debt: extreme never delivered host↔host contention.

Sources

Academic role-play fidelity: RoleLLM · prompt-vs-exemplars ICL · RAGs to Riches · ChatHaruhi · Emotional RAG · CoSER · Ditto · ERABAL · CharacterEval · InCharacter · Chameleon's Limit · RMTBench. Drift & convergence: instruction (in)stability · linguistic convergence · synchrony–stability · Lost in the Middle · sycophancy · Artificial Hivemind · C.ai prompt design. HCI perception: dynamic delays · Imperfectly Human · multi-bubble replies · Dialoging Resonance · ComPeer · Inner Thoughts · HUMA · Multi-Agents are Social Groups · Generative Agents. Consumer practice: C.ai creator book · C.ai memory · 星野评测 · 星野对话设计 · 猫箱试用 · companion re-engagement study.

Liveliness · 2026-08-31 · the trigger room is c3d8; the staging half of its fixes shipped the same day (floor producer #fw-register + #fw-voice). Sits beside AI tone (register), conversation quality (the flatness diagnosis), and many minds (the convergence endgame).