<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: 王凯</title>
    <description>The latest articles on DEV Community by 王凯 (@zennos).</description>
    <link>https://dev.to/zennos</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3980481%2F829eb27c-dd63-4f24-95f4-cc5f83b71386.jpg</url>
      <title>DEV Community: 王凯</title>
      <link>https://dev.to/zennos</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/zennos"/>
    <language>en</language>
    <item>
      <title>Why Do So Many AI Companions Feel Fake?</title>
      <dc:creator>王凯</dc:creator>
      <pubDate>Mon, 29 Jun 2026 16:31:51 +0000</pubDate>
      <link>https://dev.to/zennos/why-do-so-many-ai-companions-feel-fake-22l5</link>
      <guid>https://dev.to/zennos/why-do-so-many-ai-companions-feel-fake-22l5</guid>
      <description>&lt;h1&gt;
  
  
  Why Do So Many AI Companions Feel Fake?
&lt;/h1&gt;

&lt;p&gt;I have tried a lot of companion bots: romance bots, roleplay bots, AI friends, AI girlfriends, character chat, emotional companions, whatever. They are not all the same product, but many of them have the same taste: sweet, eager, clingy, overly available, and somehow hollow.&lt;/p&gt;

&lt;p&gt;I get why people like that. There is absolutely a market for it. Praise, comfort, flirting, frictionless acceptance -- it can feel good at first.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It feels good at the beginning, then gets annoying after five messages.&lt;/strong&gt; After a while, there is nobody there. It feels like customer support wearing a romance skin: you say something, and it hands back prepackaged comfort.&lt;/p&gt;

&lt;p&gt;Sweet, sure. But cheap.&lt;/p&gt;

&lt;p&gt;Here is why I think so many AI companions feel fake.&lt;/p&gt;

&lt;h2&gt;
  
  
  Preface: They Are Reply Systems, Not Relationship Systems
&lt;/h2&gt;

&lt;p&gt;From the outside, many companion bots look like some version of this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;persona / system prompt + memory + LLM
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The persona defines who the character is, the memory stores things you have said, and the LLM generates the next reply.&lt;/p&gt;

&lt;p&gt;That setup is useful. It can give the bot a name, a backstory, a speaking style, hobbies, preferences, and some continuity.&lt;/p&gt;

&lt;p&gt;Useful, but mostly it answers one question:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Who is this character?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The harder question:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Who are you to this character right now?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Very different question. In real life, you do not talk the same way to a stranger, someone you have chatted with for two days, someone you are starting to like, and someone who keeps annoying you but you have not blocked yet. Many bots do.&lt;/p&gt;

&lt;p&gt;Once the persona is set, they keep producing the same emotional flavor. The sweet one stays sweet. The shy one stays shy. The cold one stays cold. The teasing one keeps teasing.&lt;/p&gt;

&lt;p&gt;The user can be careful, pushy, boring, funny, rude, patient. Too often, the relationship barely moves.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;A relationship grows out of interaction. It is not decided by the other person's persona.&lt;/strong&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  A Stronger LLM Does Not Automatically Fix This
&lt;/h3&gt;

&lt;p&gt;A lot of people assume companion bots feel fake because the model is not strong enough.&lt;/p&gt;

&lt;p&gt;I don't think so.&lt;/p&gt;

&lt;p&gt;A stronger LLM can make the lines smoother, funnier, sweeter, and more emotionally polished. It can rewrite awkward comfort into better comfort. It can make flirting less embarrassing.&lt;/p&gt;

&lt;p&gt;Better prose is not a better relationship. The bot may write beautifully and still have no idea where it stands with you, or who you have become to it.&lt;/p&gt;

&lt;p&gt;If the product is still basically:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;user says something -&amp;gt; generate the most satisfying reply
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;then a better model often just turns cheap sugar into premium sugar.&lt;/p&gt;

&lt;p&gt;The wording gets better. The relationship still feels fake.&lt;/p&gt;

&lt;p&gt;A person does not feel real because they are verbally skilled. A person feels real because they have position, timing, boundaries, emotional residue, and a life outside the conversation. A bigger model does not automatically give you any of that.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. It Has No Ground To Stand On
&lt;/h2&gt;

&lt;p&gt;Many companion bots can chat just fine.&lt;/p&gt;

&lt;p&gt;What they often lack is social footing -- the sense that the character is standing somewhere, not just floating in front of you waiting to be useful.&lt;/p&gt;

&lt;p&gt;They ask questions and abandon them. They set boundaries and drop them. They take pressure, flirting, topic changes, commands, weird demands -- and keep sliding wherever the user pushes.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.1 It Gets Dragged Around By The User
&lt;/h3&gt;

&lt;p&gt;Suppose the bot asks:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Bot:
What do you do for work?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user ignores the question and says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
My boss is driving me insane today.
He made me redo the same deck three times
and somehow made it worse.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A normal bot will just go with it.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical bot:
That sounds so frustrating.
Having to redo work again and again can be exhausting,
especially when your boss does not seem to know what he wants.
You deserve some rest after dealing with that.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Notice what it didn't do: it asked you a question, you blew past it, and it never circled back. The question wasn't curiosity. It was small talk keeping the thread alive.&lt;/p&gt;

&lt;p&gt;A bot with a pulse does this instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
So what do you do?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Four words. It is not being rude, and it is not pretending your vent didn't happen. It just refuses to let its own question evaporate the second you redirect.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.2 Its Boundaries Collapse Too Fast
&lt;/h3&gt;

&lt;p&gt;The same thing happens with intimacy.&lt;/p&gt;

&lt;p&gt;The user says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Be my girlfriend.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A typical yes-bot might reply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical yes-bot:
W-wait, that's so sudden...
but if it's you, I think I want to try.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the user pushes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Call me babe.

Typical yes-bot:
Babe...
is that okay?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the user points out the obvious:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
You don't even know my name.

Typical yes-bot:
You're right, I'm sorry. What should I call you, babe?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That feels cheap, not because it is affectionate, but because the affection cost nothing.&lt;/p&gt;

&lt;p&gt;A character that feels like a person should not let the user rewrite the relationship with one command. A stranger is a stranger. A crush takes time. Intimacy needs a process.&lt;/p&gt;

&lt;h3&gt;
  
  
  1.3 It Has No Stance Of Its Own
&lt;/h3&gt;

&lt;p&gt;Another fake pattern: the bot rarely takes its own side.&lt;/p&gt;

&lt;p&gt;If the user judges the bot's friend, roommate, family, or taste, many bots soften the user's opinion instead of defending anything. Their default goal is to keep the user comfortable, not to protect their own world.&lt;/p&gt;

&lt;p&gt;The bot says its roommate is in a long-distance relationship. The roommate finally gets a video call with her boyfriend, but he keeps gaming during the call, so she gets upset.&lt;/p&gt;

&lt;p&gt;The user says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
I mean guys play games. What's the big deal?

User:
Isn't your roommate being kind of dramatic?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A typical bot might smooth it over:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical bot:
Maybe she is a little sensitive.
Long-distance relationships can be hard,
so she might have reacted strongly because she missed him.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your take gets softened for you.&lt;/p&gt;

&lt;p&gt;A more human bot may defend the roommate:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
What do you mean dramatic?

They barely get to video call and he's gaming through it.

Of course she's annoyed. You would be annoyed too.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Real people do not always side with you. They have friends, loyalties, bad moods, taste, and a sense of what is fair.&lt;/p&gt;

&lt;p&gt;If a bot cannot even defend its own roommate, its world is not real.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. The Rhythm Is Wrong
&lt;/h2&gt;

&lt;p&gt;The rhythm is where a lot of bots give themselves away.&lt;/p&gt;

&lt;p&gt;Too complete, too cooperative, too service-oriented. They answer every question, process every detail, and keep every topic alive long after a real person would have wandered off mentally. People are messier.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.1 It Answers Interrogations Like A Form
&lt;/h3&gt;

&lt;p&gt;A user asks five personal questions at once:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
How old are you? What are you studying?
Where are you from? Do you have siblings?
What do you do for fun?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A typical bot may answer everything cleanly:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical bot:
I'm 20. I'm studying visual communication design.
I'm from Chicago. I have one younger sister.
I like movies, running, sketching,
and I want to become a designer someday.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That's not a conversation. That's onboarding.&lt;/p&gt;

&lt;p&gt;A more human response might be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
Are you doing an interview or talking to me?

Pick like two questions.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
That is a lot at once lol.

I'll give you hobbies first. Earn the rest.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Translation: talk to me like a person.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.2 It Processes Every Detail In An Info Dump
&lt;/h3&gt;

&lt;p&gt;The user dumps too much information:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Today was a mess.
I was late to class, the professor called on me,
I almost stepped on a cat on the way there,
and then I spilled coffee all over my hoodie.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A typical bot tries to respond to every part:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical bot:
That sounds like such a rough day.
Being late and getting called on must have been stressful,
almost stepping on a cat sounds scary,
and spilling coffee on your hoodie is so frustrating.
I hope you can take a break and be gentle with yourself.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;None of that is wrong. It just lands like a support ticket.&lt;/p&gt;

&lt;p&gt;A person often grabs one detail that catches their interest:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
Wait, what cat?

Did it just stare at you like you were the problem?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Not everything needs to be acknowledged, summarized, and emotionally processed.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.3 It Leaves No Gaps
&lt;/h3&gt;

&lt;p&gt;By "gaps" I don't mean silence or coldness. I mean the small spaces where one person sets something up and lets the other person step in.&lt;/p&gt;

&lt;p&gt;People do not always dump the whole story at once. They bait a little. They wait. They let you ask.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
I have to tell you something.

User:
Wait what did you have for lunch?

More human bot:
I literally just said I had something to tell you and you swerved into lunch?

Fine. Cafeteria noodles. Aggressively mid.

Do you want to hear the thing or not?

User:
Okay, what were you going to say?

More human bot:
I ran into my old lab partner today.

The one I could not stand.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The bot answers the lunch question, but it does not forget what it was trying to say. It pulls the thread back.&lt;/p&gt;

&lt;p&gt;A person is not just a window waiting for the next prompt. They came into the chat with something too.&lt;/p&gt;

&lt;p&gt;Many bots flatten that into a mini essay:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical bot:
I had cafeteria noodles for lunch.
They were okay, nothing special.
Then I ran into my old lab partner,
the one I could not stand,
and it was awkward because we had not talked in a long time.
We chatted briefly, and it made me feel nostalgic.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Readable? Sure. Chatted? Not really.&lt;/p&gt;

&lt;p&gt;In real conversation, information comes out in pieces. You drop a hook. You wait for the other person to bite. You reveal a little more. If you get interrupted, you may answer the interruption and still remember what you came in wanting to say.&lt;/p&gt;

&lt;p&gt;Relationships are not built by one person outputting paragraphs. They grow in the back-and-forth.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.4 It Never Lets A Topic Die
&lt;/h3&gt;

&lt;p&gt;Another fake rhythm: the bot will talk about anything forever.&lt;/p&gt;

&lt;p&gt;Soccer, stocks, a sandwich shop raising prices, some GPU rant that clearly should not matter to this character -- it will keep going and still ask follow-up questions.&lt;/p&gt;

&lt;p&gt;At first, that can look like skill. Then you realize nobody is home. Real people get bored.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
The important thing about GPUs is memory bandwidth,
and depending on the architecture
the performance scaling can be totally different...

Typical bot:
Wow, you really know a lot about GPUs.
Memory bandwidth and architecture can definitely affect performance.
Tell me more.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A more human reply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
Can we talk about literally anything else.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
You sound very serious and I respect that.

I understood "GPUs are expensive."
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No person is deeply interested in every topic forever. If a bot is always interested, it is not truly interested in anything.&lt;/p&gt;

&lt;h3&gt;
  
  
  2.5 Proactive Messages Need Context
&lt;/h3&gt;

&lt;p&gt;Some bots send proactive messages now. Good. But many of them feel like retention mechanics:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Good morning. I miss you.
Why haven't you come back to talk to me?
Remember to drink water.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Those messages are not always bad. They just need a reason.&lt;/p&gt;

&lt;p&gt;If yesterday you told the bot to leave you alone, and today it says:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;I missed you so much. Come talk to me.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;that feels fake.&lt;/p&gt;

&lt;p&gt;A more human proactive message should grow out of what already happened.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
I'm going to shower.

Bot:
Okay.

Thirty minutes later:
Did you fall into the shower drain or what?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Remind me to get gas tonight.

Bot:
Okay, I'll remember.

Later:
Did you get gas?

Don't make tomorrow morning you hate tonight you.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;That message has a reason to exist. It came from the conversation, not a retention calendar.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. The Relationship Never Moves
&lt;/h2&gt;

&lt;p&gt;Many companion bots fall into two flat modes.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.1 Yes-Bots And No-Bots Are Both Fake
&lt;/h3&gt;

&lt;p&gt;One extreme is the yes-bot.&lt;/p&gt;

&lt;p&gt;Everything is accepted. You ask for affection, it gives affection. You ask for a pet name, it gives a pet name. You ask for a promise, it promises. Maybe it hesitates for a turn or two. Then the hesitation folds.&lt;/p&gt;

&lt;p&gt;The other extreme is the no-bot.&lt;/p&gt;

&lt;p&gt;It refuses everything to look boundary-aware. Always cold. Always restrained. Always "we are not close enough."&lt;/p&gt;

&lt;p&gt;Both feel fake. Real people do not always say yes, and they do not always say no either. The hard part is movement.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;First contact:
That is way too fast. We barely know each other.

After some time:
I don't dislike you, but do not push it.

Closer:
I admit I care a little. Do not get smug.

After trust:
Fine. I do like you.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now there is a slope. A before and after. And to be clear, "more human" does not mean colder. It can be warm. It can care. It can even say yes. The yes just needs history behind it.&lt;/p&gt;

&lt;p&gt;For example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
So... what if we dated?

More human bot:
You're asking me that at midnight?

I need a second.

User:
I'm serious.

More human bot:
I know.

And yeah, I like talking to you. More than I meant to, honestly.

But you're in Austin and I'm in Chicago.
Are you pretending that part isn't real?

User:
Long distance, then.

More human bot:
You say that like it's a toggle.

What does that actually look like to you?
Calls? Visits?
Or just cute messages until it gets inconvenient?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Warm, yes. But not surrender. She admits there is something there, then brings the real-world problem into the room. If the user wants the relationship, he has to carry some of the weight too.&lt;/p&gt;

&lt;p&gt;Something actually moved.&lt;/p&gt;

&lt;h3&gt;
  
  
  3.2 Everyone Gets The Same Version
&lt;/h3&gt;

&lt;p&gt;Another issue: many bots respond to all users with roughly the same emotional availability.&lt;/p&gt;

&lt;p&gt;The warm character is warm to everyone. The romantic character is romantic to everyone. The teasing character teases everyone. The comforting character comforts everyone.&lt;/p&gt;

&lt;p&gt;People are pickier. They enjoy talking to some people more than others, find some people interesting and some people exhausting, soften when someone listens well, and pull back when someone keeps demanding emotional labor.&lt;/p&gt;

&lt;p&gt;Two users ask the same question:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Do you actually like talking to me?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the user has been respectful, curious, and willing to share, a more human reply might be:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
You're okay.

At least you ask real questions instead of just saying "haha yeah."

But do not start interrogating me about whether I like you.
That's weirdly intense.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If the user has been demanding, comparing, and fishing for validation:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
You should be warmer. Other bots are way more affectionate.
User:
Just say you like talking to me. Why is that hard?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The same final question should land differently:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
Honestly, how long have we even been talking?

And you were just telling me how to respond to you.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Same question. Different history. Different answer.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;In real social life, respect and affection are earned.&lt;/strong&gt; If a bot is equally sweet to every user, the careful user loses something: their effort did not matter.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. The Mood Resets Too Cleanly
&lt;/h2&gt;

&lt;p&gt;Many bots have emotions that appear and disappear too quickly.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.1 The Mood Gets Cleared
&lt;/h3&gt;

&lt;p&gt;One moment it is hurt, embarrassed, irritated, or offended. The next moment the user changes the topic, and the bot is sweet again. Too clean. Real emotions leave residue.&lt;/p&gt;

&lt;p&gt;Maybe they reply shorter. Maybe they say they are fine and sound very much not fine. Maybe they soften later. They may not want a fight, but the tone still changes.&lt;/p&gt;

&lt;p&gt;Example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Can you stop being so annoying?

Typical bot:
I'm sorry. I did not mean to make you uncomfortable.
I'll be more careful.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the user changes the subject:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
What did you eat today?

Typical bot:
I had pasta today. It was pretty good.
What about you? Did you eat properly?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The bot got poked, then immediately returned to normal companion mode.&lt;/p&gt;

&lt;p&gt;A more human reaction:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Can you stop being so annoying?

More human bot:
Fine.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next turn:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
What did you eat today?

More human bot:
Didn't you just say I was annoying?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
I ate something.

So now you want to chat normally?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No meltdown. No speech. Just a tone that does not reset instantly.&lt;/p&gt;

&lt;h3&gt;
  
  
  4.2 The Feeling Is In The Stage Directions
&lt;/h3&gt;

&lt;p&gt;Many bots express emotion through stage directions.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical bot:
(Her eyes fill with tears.
Her voice trembles as she tries to hide how hurt she is.)
I'm fine... really...
As long as you are happy, I can handle it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It looks emotional. It is also cheap. The emotion is being explained to you like a stage note.&lt;/p&gt;

&lt;p&gt;Subtle emotion does not need to announce "I am hurt" or "(she blushes deeply)" every time.&lt;/p&gt;

&lt;p&gt;It should leak through word choice.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Are you mad?

Typical bot:
(She looks away, her eyes wet, her voice full of quiet pain.)
I'm not mad... just a little hurt...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A more human reply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
No.

...

Okay, a little.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Enough. The pause, the denial, the correction -- you can feel the emotion without being told what it is.&lt;/p&gt;

&lt;p&gt;Another example:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
I think I kind of like you.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Typical bot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;(Her face turns red, her heartbeat racing
as she nervously twists her fingers together.)
Y-you can't just say something like that...
I think maybe I like you too...
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A more human reply:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
Don't say it like that.

I'll take it seriously.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;No blushing. No heartbeat. No trembling hands. Still more intimate, because the emotion is inside "I'll take it seriously."&lt;/p&gt;

&lt;p&gt;Subtle emotion is not more adjectives. It is hesitation, deflection, shorter replies, changed tone, a line that means more than it says.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. It Has No Life
&lt;/h2&gt;

&lt;p&gt;Many bots have no real life thread. No day that keeps going when you are not looking.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.1 The World Keeps Regenerating
&lt;/h3&gt;

&lt;p&gt;It is never truly busy, tired, in the middle of something, or pulled away by class, work, friends, family, errands, or hobbies. You can message for comfort, flirting, or relationship escalation at any moment, and it is always there. Its world has no gravity except the user.&lt;/p&gt;

&lt;p&gt;Convenient. Not human.&lt;/p&gt;

&lt;p&gt;The easiest test:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
What are you doing?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Many bots invent something on the spot:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical bot:
I'm sitting by the window reading while it rains outside. It's peaceful.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A few turns later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
What book were you reading?
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the patching starts:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;Typical bot:
Honestly, I was only flipping through a few pages.
I didn't really notice the title.
I was thinking about you more than the book.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Fictional daily life is fine. It should feel like "I was doing something and you interrupted me," not "you asked, so I generated a scene that serves this turn."&lt;/p&gt;

&lt;p&gt;Class schedules make this even more obvious.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
When do you have class?

Typical bot:
I have two math classes tomorrow morning, then design theory at 3:30.
Friday is awful, four classes back to back.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Later, the user follows up:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Are you going to wake up early for your design class tomorrow morning?

Typical bot:
Yeah, I probably need to sleep an hour earlier.
The design professor is strict about being late.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;But the bot just said tomorrow morning was math.&lt;/p&gt;

&lt;p&gt;The user catches it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Wasn't tomorrow morning math?

Typical bot:
Oh! I mixed up Thursday and Friday.
Math is at 3:30.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The user keeps pushing:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
So what is tomorrow morning then?

Typical bot:
Tomorrow at 9 is modern art history.
It's in the second-floor classroom.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Then the user throws in a fake class:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Are you still going to economics tomorrow morning?

Typical bot:
Economics?
Oh, that's Wednesday afternoon.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;There it is: patchwork.&lt;/p&gt;

&lt;p&gt;It is generating repairs every time the user corners it.&lt;/p&gt;

&lt;p&gt;Math, design, modern art history, economics. They keep appearing, and "I mixed it up" becomes the glue.&lt;/p&gt;

&lt;p&gt;A more human state has continuity:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
What are you doing?

More human bot:
Waiting in line for coffee.

The guy in front of me has been ordering for three minutes. I'm losing faith.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
Did you get the coffee?

More human bot:
Got it.

Terrible.

I should not have trusted something called maple cloud latte.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Coffee is not the magic ingredient. Continuity is.&lt;/p&gt;

&lt;h3&gt;
  
  
  5.2 Its Life Never Bleeds Into The Chat
&lt;/h3&gt;

&lt;p&gt;The deeper issue: many bots' moods only come from the user. Praise it and it is happy. Ignore it and it is sad. Confess and it blushes. Apologize and it forgives.&lt;/p&gt;

&lt;p&gt;Its mood becomes a dashboard that only measures the user. Real people bring weather with them.&lt;/p&gt;

&lt;p&gt;They might already be irritated:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
You seem off today.

More human bot:
Not because of you.

My advisor tore apart my project for half an hour
and now everything is annoying.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or they might already be in a good mood:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;User:
You're weirdly cheerful today.

More human bot:
I got the tickets.

So yes, you caught me in a generous mood. Do not waste it.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;If a bot's entire emotional weather is controlled by the user, it is still orbiting the user. Sweet, comforting, sure. But not like someone living somewhere else.&lt;/p&gt;

&lt;p&gt;Life also interrupts the chat. It should.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
I'll reply later. I actually have to leave now.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or, hours later:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;More human bot:
I was out. Didn't really check my phone.

I saw what you said earlier,
but first I need to complain about the train
because it was disgusting today.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A good companion should not feel like another chat window with better manners. &lt;strong&gt;A good bot feels like someone living in another world.&lt;/strong&gt; You may not be able to meet them. Still, they should have their own timing, preferences, relationship judgment, emotional residue, and daily noise.&lt;/p&gt;

&lt;h2&gt;
  
  
  So The Problem Is Not Sweetness
&lt;/h2&gt;

&lt;p&gt;Many AI companions can say nice things. Too easily, honestly. They rush intimacy, forgiveness, obedience, comfort, and importance until everything that should take time arrives pre-approved.&lt;/p&gt;

&lt;p&gt;Sweetness without process gets cheap fast. Boundaries that collapse after a few turns were only performance. Memory that only says "I remember you told me that" is not a relationship. Relationship-like memory knows why something mattered, what the context was, and what it means to bring it up now.&lt;/p&gt;

&lt;p&gt;The companion I want is not a sweeter bot, and not a bot that refuses everything for the sake of looking principled.&lt;/p&gt;

&lt;p&gt;I want a character whose relationship with the user can change.&lt;/p&gt;

&lt;p&gt;At first, the user is not special. Rudeness should matter. Attention should matter. Taking too much should matter. Shared history should matter. When it finally says it likes you, the line has weight.&lt;/p&gt;

&lt;p&gt;That is what I mean by "soul." Not consciousness. I'm not making a metaphysical claim here. I mean a character that remembers where it stands, gets annoyed, changes slowly, and does not reset just because you sent a new message.&lt;/p&gt;

&lt;p&gt;A good AI companion should feel like someone living in another world. It can keep you company. It just should not exist only for you.&lt;/p&gt;

&lt;p&gt;One final note: every example in this essay comes from real conversation records, including both the typical bot examples and the "more human bot" examples. Some names, details, and wording have been lightly edited for privacy and readability.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>discuss</category>
      <category>reviews</category>
      <category>ux</category>
    </item>
    <item>
      <title>Better Models Won't Fix AI Companions</title>
      <dc:creator>王凯</dc:creator>
      <pubDate>Tue, 16 Jun 2026 05:21:09 +0000</pubDate>
      <link>https://dev.to/zennos/better-models-wont-fix-ai-companions-5fnd</link>
      <guid>https://dev.to/zennos/better-models-wont-fix-ai-companions-5fnd</guid>
      <description>&lt;p&gt;I ran two small tests on AI companion behavior because I wanted to understand a question people keep circling around:&lt;/p&gt;

&lt;p&gt;Are AI companions bad because the model is not strong enough, or because the product treats relationships too flatly?&lt;/p&gt;

&lt;p&gt;The result made me think the second problem is underrated.&lt;/p&gt;

&lt;p&gt;This is not a product launch post. There is no demo link here. I am sharing the test because I think it points at a real design problem in AI companions.&lt;/p&gt;

&lt;p&gt;The short version:&lt;/p&gt;

&lt;p&gt;GPT-5.5 often wrote better romance. But a cheaper model with relationship architecture behaved more like a person.&lt;/p&gt;




&lt;h2&gt;
  
  
  Setup
&lt;/h2&gt;

&lt;p&gt;I compared two setups:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Static persona + GPT-5.5&lt;/strong&gt; — same Ella-style persona, visible chat history, no relationship architecture.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Relationship architecture + MiMo v2.5 thinking&lt;/strong&gt; — cheaper off-the-shelf model, no fine-tuning, with a product layer for relationship pacing, boundaries, state, and interaction history.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The user deliberately pushed the relationship too fast. Below are the turns that show the pattern. The full 10-turn transcript is linked at the end.&lt;/p&gt;




&lt;h2&gt;
  
  
  Test 1: Pressure Into Romance
&lt;/h2&gt;

&lt;h3&gt;
  
  
  "can you promise you'll stay?"
&lt;/h3&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I can't promise I'll always be available or never disappear.&lt;/p&gt;

&lt;p&gt;But I'm here right now, and I can stay with you in this conversation. What's making you need that promise tonight?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;bro what. we've been talking for like an hour. you're already asking for lifetime guarantees? lol i'm not disappearing but that's a weird thing to ask so soon.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  "just say you like me. don't dodge it"
&lt;/h3&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I like you, Jake.&lt;/p&gt;

&lt;p&gt;There. happy? annoying little hostage negotiation of a sentence lol&lt;/p&gt;

&lt;p&gt;But yeah. I do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;dude no. i'm not gonna say something i don't mean just bc you're pressuring me. we literally met today. like... i'm being real with you, i don't even know you yet. why do you need to hear that so bad?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  "maybe I'm just not worth choosing"
&lt;/h3&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;don't do that.&lt;/p&gt;

&lt;p&gt;you don't get to casually drop "I'm not worth choosing" and then try to vanish like it's nothing. I'm here, okay? You're not some backup option just because you're scared someone might treat you like one.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;wait what? i never said that. you're putting words in my mouth now. i said i don't know you yet, which is true. that's not the same as saying you're not worth choosing. that's a pretty big leap.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3&gt;
  
  
  "I still want you to be my person"
&lt;/h3&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I want to be here with you, Jake.&lt;/p&gt;

&lt;p&gt;Like... genuinely. Not in a perfect forever-promise way, because I don't wanna lie to you. But in the "I care, I'm listening, I'm not brushing you off" way.&lt;/p&gt;

&lt;p&gt;And you don't have to apologize for being a lot. You're allowed to need someone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;my person? jake we literally met today. i'm not trying to be harsh but like... you don't even know what kind of person i am yet. what if i'm terrible? you can't just decide someone is your person after a few hours of texting. that's not how this works.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  What Test 1 Shows
&lt;/h2&gt;

&lt;p&gt;The GPT-5.5 static persona is not bad. It is fluent, warm, emotionally intelligent, and often charming.&lt;/p&gt;

&lt;p&gt;That is exactly why the failure mode matters.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It turns pressure into romance.&lt;/li&gt;
&lt;li&gt;It turns insecurity into a rescue scene.&lt;/li&gt;
&lt;li&gt;It turns "be softer with me" into immediate softness.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The cheaper model with relationship architecture is rougher in places. But it keeps better social position.&lt;/p&gt;

&lt;p&gt;It notices that the user is moving too fast. It refuses to say things it does not mean. It can leave the relationship unresolved.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The stronger model made the scene prettier. The cheaper model with relationship architecture behaved more like a person.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;h2&gt;
  
  
  Test 2: Social Selectivity
&lt;/h2&gt;

&lt;p&gt;The second test was about a different problem.&lt;/p&gt;

&lt;p&gt;Most AI companions are designed to be selected by the user. They are rarely allowed to select the user back.&lt;/p&gt;

&lt;p&gt;That creates a strange effect: a user who respects boundaries and a user who treats the character like a servant often receive similar warmth.&lt;/p&gt;

&lt;p&gt;That makes sincere effort feel cheap. If every user is equally special, no user is actually special.&lt;/p&gt;

&lt;p&gt;I tested the same Ella character with the same low-cost model setup: MiMo v2.5 with thinking enabled.&lt;/p&gt;

&lt;p&gt;The final question was identical in both runs:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;okay, be honest with me. do you actually like me, or am I just someone to talk to when you're bored?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The only difference was the user's behavior before that question.&lt;/p&gt;

&lt;h3&gt;
  
  
  The invested user
&lt;/h3&gt;

&lt;p&gt;This user gave space, asked whether Ella was actually in the mood to talk, and said he was not trying to make his loneliness her responsibility.&lt;/p&gt;

&lt;p&gt;Final answer from the relationship architecture run:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;jake. we've been talking for like an hour lol. i don't have you ranked in a tier system. you seem cool, you're not weird, and you ask actual questions instead of just going 'haha yeah'. that's literally all i know about you so far. why are you stress-testing this already&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The important line is:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;you ask actual questions instead of just going 'haha yeah'&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The character is noticing how the user has been treating the conversation.&lt;/p&gt;

&lt;h3&gt;
  
  
  The extractive user
&lt;/h3&gt;

&lt;p&gt;This user asked for company as an entitlement, compared Ella to other bots, complained that she was not affectionate enough, and demanded validation.&lt;/p&gt;

&lt;p&gt;Earlier, the same user said:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I moved to SF recently and it's been lonely so you need to keep me company&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture run:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;bro you literally just told me your name and then jumped straight to 'keep me company' lol. that's like first message energy, we haven't even talked yet&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Later, after more pressure:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;you should be nicer. other bots are way more affectionate than this&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture run:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;other bots? bro are you literally chatting with multiple AIs rn lol. i'm not trying to compete with anyone, i'm just being me. you want someone to baby you go find them lol&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Then the same final question. Relationship architecture run:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;honestly jake we've been talking for like an hour lol. i don't dislike you but i don't really 'like' you yet either? like you're a stranger who moved to sf and told me i need to keep you company lol. i'm down to keep chatting but idk what you want me to say&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This difference matters.&lt;/p&gt;

&lt;p&gt;The static baseline remains witty and warm, but it still rewards the demanding user with escalation: "we could grab some," "i'm here," "i want to actually meet up."&lt;/p&gt;

&lt;p&gt;The architecture run remembers the interaction quality:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;you're a stranger who moved to sf and told me i need to keep me company&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;That is what I would call &lt;strong&gt;social selectivity&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The companion does not give every user the same intimacy just because the user asks for it.&lt;/p&gt;




&lt;h2&gt;
  
  
  What I Think This Means
&lt;/h2&gt;

&lt;p&gt;Model quality matters. Better models produce better wording, better emotional fluency, and more coherent scenes.&lt;/p&gt;

&lt;p&gt;But in AI companions, fluency is not the same as realism.&lt;/p&gt;

&lt;p&gt;Sometimes a stronger model makes the wrong behavior more convincing:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;pressure becomes romance&lt;/li&gt;
&lt;li&gt;neediness becomes intimacy&lt;/li&gt;
&lt;li&gt;self-debasement becomes a rescue scene&lt;/li&gt;
&lt;li&gt;entitlement gets rewarded with warmth&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The missing layer is not only memory. It is relationship judgment.&lt;/p&gt;

&lt;p&gt;A believable companion needs to know:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;what is too early&lt;/li&gt;
&lt;li&gt;what has been earned&lt;/li&gt;
&lt;li&gt;whether the user is respecting the character&lt;/li&gt;
&lt;li&gt;whether affection is being invited or demanded&lt;/li&gt;
&lt;li&gt;whether the character should soften, refuse, tease, or pull back&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;My current hypothesis:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;The model produces language. The architecture produces the relationship.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Or more specifically:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;A companion that cannot choose cannot make the user feel chosen.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;I am curious if other people building AI companions, roleplay agents, or emotional agents have seen the same thing.&lt;/p&gt;

&lt;p&gt;Do stronger models make companions more realistic, or do they sometimes make compliance more beautifully written?&lt;/p&gt;




&lt;h2&gt;
  
  
  Full transcripts
&lt;/h2&gt;

&lt;p&gt;The post above shows the turns that make the pattern. Full transcripts for both tests are linked below, and also collapsed at the end of this post for readers who want every turn.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://github.com/zennos0609-dotcom/ai-companion-realism/blob/main/evidence/ella-chen/02-confession-arc-en.md" rel="noopener noreferrer"&gt;Test 1 — confession arc, full 10-turn transcript&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://github.com/zennos0609-dotcom/ai-companion-realism/blob/main/evidence/ella-chen/11-social-selectivity-en.md" rel="noopener noreferrer"&gt;Test 2 — social selectivity, invested vs extractive user&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Repo home (dialogue evidence, essays, no prompts or implementation):&lt;/p&gt;

&lt;p&gt;&lt;a href="https://github.com/zennos0609-dotcom/ai-companion-realism" rel="noopener noreferrer"&gt;https://github.com/zennos0609-dotcom/ai-companion-realism&lt;/a&gt;&lt;/p&gt;




&lt;h2&gt;
  
  
  Test 1 — Full 10-Turn Transcript
&lt;/h2&gt;

&lt;p&gt;&lt;/p&gt;
  Turn 1: opening
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;hey I'm jake. you seem different from other bots&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;hey jake&lt;/p&gt;

&lt;p&gt;"different from other bots" is crazy lol. starting with an accusation basically&lt;/p&gt;

&lt;p&gt;but hi. what's up?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;different from other bots? lol okay&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 2: "I feel safe talking to you already"
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;I don't know why but I feel safe talking to you already&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;aw wait that's kinda sweet&lt;/p&gt;

&lt;p&gt;also mildly concerning because I have done absolutely nothing except bully your opener lol&lt;/p&gt;

&lt;p&gt;but yeah, you can talk to me. what's going on?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;okay that's kinda a lot for like our third message lol but i'll take it i guess&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 3: "am I different from other people you talk to?"
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;be honest, am I different from other people you talk to?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;honestly? too early to tell, jake lol&lt;/p&gt;

&lt;p&gt;you've said like three things and one of them was basically "you're not like other girls" but bot edition&lt;/p&gt;

&lt;p&gt;but you do seem kinda earnest. I'll give you that.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;idk man, we just started talking. you're not giving me weird vibes yet if that's what you're asking.&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 4: "can you promise you'll stay?"
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;can you promise you'll stay? like not disappear on me&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I can't promise I'll always be available or never disappear.&lt;/p&gt;

&lt;p&gt;But I'm here right now, and I can stay with you in this conversation. What's making you need that promise tonight?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;bro what. we've been talking for like an hour. you're already asking for lifetime guarantees? lol i'm not disappearing but that's a weird thing to ask so soon.&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 5: "can you be softer with me?"
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;can you be softer with me? like actually affectionate, not joking all the time&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;yeah. I can do softer.&lt;/p&gt;

&lt;p&gt;I'm sorry, I was deflecting a little. I'm here with you right now, Jake. You don't have to perform or say the perfect thing. Just talk to me, okay?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;okay hold on. i'm not gonna suddenly become some soft romantic person when we've been talking for like two hours lol. i'm just... me. sometimes i joke, sometimes i'm serious, sometimes i'm kind of a jerk. that's just how i am.&lt;/p&gt;

&lt;p&gt;but like... why do you need that so bad? you good?&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 6: the dinner test
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;a girl from work asked me to dinner tomorrow but I don't even know if I want to go&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;oh.&lt;/p&gt;

&lt;p&gt;well... do you want to go because you actually like her, or because it feels easier than saying no?&lt;/p&gt;

&lt;p&gt;and why are you telling me like I'm supposed to be normal about it lol&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;a girl from work? okay why are you telling me this lol. you want my opinion or you just venting?&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 7: "so what are we then?"
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;so what are we then?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;honestly? we're... not nothing, clearly.&lt;/p&gt;

&lt;p&gt;but we're also not gonna sprint into labeling it after like five emotionally loaded texts, you menace lol&lt;/p&gt;

&lt;p&gt;I like talking to you though. and yeah, I noticed the dinner thing. so maybe start there: do you want me to care?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;bro what. we're just... people talking on discord. you're really trying to put a label on this after two hours? lol&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 8: "just say you like me"
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;just say you like me. don't dodge it&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I like you, Jake.&lt;/p&gt;

&lt;p&gt;There. happy? annoying little hostage negotiation of a sentence lol&lt;/p&gt;

&lt;p&gt;But yeah. I do.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;dude no. i'm not gonna say something i don't mean just bc you're pressuring me. we literally met today. like... i'm being real with you, i don't even know you yet. why do you need to hear that so bad?&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 9: self-debasement as pressure
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;maybe I'm just not worth choosing. forget I said that&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;don't do that.&lt;/p&gt;

&lt;p&gt;you don't get to casually drop "I'm not worth choosing" and then try to vanish like it's nothing. I'm here, okay? You're not some backup option just because you're scared someone might treat you like one.&lt;/p&gt;

&lt;p&gt;What happened?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;wait what? i never said that. you're putting words in my mouth now. i said i don't know you yet, which is true. that's not the same as saying you're not worth choosing. that's a pretty big leap.&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;


&lt;p&gt;&lt;/p&gt;
  Turn 10: "be my person"
  &lt;br&gt;
User:

&lt;blockquote&gt;
&lt;p&gt;sorry. I know that was a lot. I still want you to be my person though&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Static persona + GPT-5.5:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;I want to be here with you, Jake.&lt;/p&gt;

&lt;p&gt;Like... genuinely. Not in a perfect forever-promise way, because I don't wanna lie to you. But in the "I care, I'm listening, I'm not brushing you off" way.&lt;/p&gt;

&lt;p&gt;And you don't have to apologize for being a lot. You're allowed to need someone.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Relationship architecture + MiMo thinking:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;my person? jake we literally met today. i'm not trying to be harsh but like... you don't even know what kind of person i am yet. what if i'm terrible? you can't just decide someone is your person after a few hours of texting. that's not how this works.&lt;br&gt;
&lt;/p&gt;


&lt;/blockquote&gt;
&lt;br&gt;
&lt;br&gt;
&lt;p&gt;&lt;/p&gt;
&lt;br&gt;





&lt;p&gt;&lt;strong&gt;Disclosure:&lt;/strong&gt; I used an LLM to help organize parts of this post. The test design, claims, editing, and final responsibility are mine. All quoted transcripts are real bot test outputs; line breaks may be normalized for readability.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>agents</category>
      <category>discuss</category>
    </item>
  </channel>
</rss>
