emoclaw
Give your AI emotions that grow from its own memories. Emoclaw builds a unique emotional state that shifts with every conversation, decays between sessions, and evolves over time through self-calibration. Train it on your agent's identity files and watch it develop its own emotional fingerprint.
Install via CLI (Recommended)
clawhub install openclaw/skills/skills/fenrirlabsnl/emoclawEmotion Skill
Emotions for AI agents — built from memories, shaped by relationships, always changing.
Emoclaw trains a lightweight model on your agent's identity and conversation history, producing a persistent emotional state that evolves with every interaction. Emotions decay naturally between sessions, shift based on who's talking and what's being said, and gradually recalibrate as your agent grows. The result is injected into the system prompt as an [EMOTIONAL STATE] block, giving your AI a felt sense of its own inner life.
How it works
- Bootstrap —
extract.pyreads your agent's identity/memory files.label.pyscores each passage via the Claude API (opt-in).trainbuilds a small neural net from those scores. One-time setup. - Encode — Each incoming message is turned into a 384-dim vector by a frozen MiniLM sentence encoder. No fine-tuning, no network call — runs from a local cache.
- Feel — The encoding + context (who's talking, what channel, previous emotion) flows through a GRU and MLP head, outputting an N-dimensional emotion vector (0-1 per dimension). The GRU hidden state persists across sessions — this is the "emotional residue" that carries forward mood.
- Decay — Between sessions, each dimension drifts back toward its baseline at a configurable half-life (fast for arousal, slow for safety/groundedness). Time apart = cooling off.
- Inject — The emotion vector is formatted as an
[EMOTIONAL STATE]block and inserted into the agent's system prompt, giving the AI a felt sense of its own inner state.
Model is ~2MB, runs on CPU, adds <50ms per message. Network access is only used during bootstrap (opt-in).
Quick Reference
| Situation | Action |
|---|---|
| First-time setup | python scripts/setup.py (or manual steps below) |
| Check current state | python -m emotion_model.scripts.status |
| Inject state into prompt | python -m emotion_model.scripts.inject_state |
| Start the daemon | bash scripts/daemon.sh start |
| Send a message to daemon | See Daemon Protocol |
| Retrain after new data | python -m emotion_model.scripts.train |
| Resume interrupted training | python -m emotion_model.scripts.train --resume |
| Add new training data | Add .jsonl entries to emotion_model/data/, re-run prepare + train |
| Upgrade from v0.1 | See references/upgrading.md |
| Change baselines | Edit emoclaw.yaml → dimensions[].baseline |
| Add a new channel | Edit emoclaw.yaml → channels list |
| Add a relationship | Edit emoclaw.yaml → relationships.known |
| Customize summaries | Create a summary-templates.yaml and point config at it |
Setup
Quick Setup
python skills/emoclaw/scripts/setup.py
This copies the bundled emotion_model engine to your project root, creates a venv, installs the package, and copies the config template. Then edit emoclaw.yaml to customize for your agent.
Manual Setup
Metadata
Not sure this is the right skill?
Describe what you want to build — we'll match you to the best skill from 16,000+ options.
Find the right skillPaste this into your clawhub.json to enable this plugin.
{
"plugins": {
"official-fenrirlabsnl-emoclaw": {
"enabled": true,
"auto_update": true
}
}
}