Overthinker (III): Trying to stop it from getting repetitive
Now that the system basically works, I can already see the next problem: the loop might be too simple.
Right now the structure is this: you check in on the pet, he tells you something about his life, you react to it with a positive, negative, or ignore response, and then he reacts back. That reaction changes his emotional state.
That already works, but if I leave it there it will probably get repetitive very fast. So a big part of the work now is making sure the same structure can still feel different depending on mood. If he is low, maybe he does not really want to tell you much. If he is upset, he can be colder. If he is spiralling, he asks more, pushes more, and needs more reassurance.

Prompting the LLM with all of this in mind is delicate. Finding a free model that is actually useful for this is also part of the problem. More and more I feel that the model itself is not the interesting part. What matters is the framing: what memory it gets, what biography the pet has, what parts of his life he can bring back, and how his voice shifts depending on state.
The backend already has persistent memory. It is a pretty ugly JSON, but it does the job:
{
"attachment": 6,
"fragility": 4,
"resentment": 0,
"soothed": 31,
"energy": 96,
"mood": "calm",
"pending_initiative": false,
"utterance_counter": 202
}
And then lower down there are actual dialogue fragments and topic references, for example:
{
"text": "Overthinker[utt_200]: Pues a mi me paso que el otro dia estuve charlando con un cliente en la tienda y luego me dio la sensación de que me quedé hablando demasiado y lo incomode sin darme cuenta.",
"source_topic": "futuro_duda"
}
The other thing I am trying to add is initiative. I do not want him to only exist when you poke him. Every now and then he should decide on his own to go “hey” and try to tell you something.
That helps for two reasons. First, it adds surprise. Second, it gives you a small decision: do I listen or do I brush him off? And obviously that should affect him.

I am also starting to let bits of the outside world into the device: weather, day, season, and later maybe other information or even news. The tricky part is making sure that does not turn it into an assistant, a weather app, or anything too useful.
One of the prompt rules says this:
Si usas este contexto, hazlo de forma escasa y totalmente filtrada por tu sesgo.
Si el contexto es weather, puedes mencionar temperatura, lluvia o cielo,
pero integrado en tu tono, no como un boletin.
Convierte ese tiempo en sensacion, bajon, pereza, encierro, mal cuerpo o una rayada tuya.
That is probably the balance I am chasing now. I want it to stay somewhere between a narrative device and a tech experiment. I want there to be enough surprise in it that you still feel like giving it what it wants, which is attention and reassurance.



