cd /news/ai-agents/my-ai-agent-s-mood-is-three-numbers-… · home › topics › ai-agents › article
[ARTICLE · art-162071] src=dev.to ↗ pub= topic=ai-agents verified=true sentiment=· neutral

My AI agent's mood is three numbers and a 16-emotion table. Here's the math

A developer built PaulusAI, an agent whose persistent mood is modeled as a PAD (Pleasure, Arousal, Dominance) vector in [-1, 1], with events appraised through the OCC model to produce emotions like joy, pride, fear, and gratitude that each nudge the mood toward a PAD signature. The design scales positive emotions by a reactivity factor and negative emotions by 0.7 + 0.6 × neuroticism, and exposes the current vector and last emotion via a /mood endpoint. The developer frames it as a functional, explainable model rather than a claim that the agent feels anything.

by read1 min views1 publishedNov 1, 2026

PaulusAI has a persistent mood, and it's not a vibe prompt. It's a PAD vector (Pleasure, Arousal, Dominance), each in [-1, 1]. Events are appraised with the OCC model (Ortony, Clore & Collins), which turns an event into emotions like joy, pride, fear, or gratitude. Each emotion nudges the mood toward its PAD signature.

Here's the loop:

task_success is described by appraisal variables: desirability 0.5, praiseworthiness 0.4, caused by the agent itself. That yields joy (0.5), pride (0.4), and gratification (0.45) before scaling.reactivity (0.7), so joy ends up at 0.35. Negative emotions are scaled by 0.7 + 0.6 × neuroticism, which amplifies them only above neuroticism 0.5. A surprise boost of up to 1.5x exists in the formula, but no event currently sets it./mood shows the current vector and the last emotion felt, so you can see why the agent is in a given state. I'm not claiming the agent feels anything. It's a functional model: an explainable way to make behavior shift with events and fade back over time.

EVENT_APPRAISALS = {
    "owner_thanks":     Appraisal(desirability=0.7, praiseworthiness=0.6, agency="self"),
    "owner_frustrated": Appraisal(desirability=-0.6, praiseworthiness=-0.5, agency="self"),
    "task_success":     Appraisal(desirability=0.5, praiseworthiness=0.4, agency="self"),
    "task_error":       Appraisal(desirability=-0.5, praiseworthiness=-0.4, agency="self"),
    "action_declined":  Appraisal(desirability=-0.2, agency="none"),
    "new_learning":     Appraisal(desirability=0.4, prospect="prospective", likelihood=0.8),
}

Open questions I'd like input on:

── more in #ai-agents 4 stories · sorted by recency
── more on @paulusai 3 stories trending now
sponsored brought to you by zahid.host 4,200+ EU-deployed projects
reading about agents? ship yours in a single git push.

Run your AI side-project on zahid.host

EU-based hosting, git-push deploys, automatic HTTPS, no cold starts. Free tier with a custom domain — perfect for shipping the agent you just read about.

$git push zahid main
→ Live at https://your-agent.zahid.host ✓
Get free account → Pricing
from €0/mo · no card required
LIVE [news/my-ai-agent-s-mood-i…] indexed:0 read:1min 2026-11-01 · —