Intrinsic Agent Prototype

This is an experiment in building autonomous agents driven by the desire to balance internal state. I'm making no claims of anything at all. This is a presentation of a novel approach to motivating autonomous agents.

What Is It?

This is a Clojure program that runs an autonomous AI agent with "internal drives" - kind of like artificial emotions or needs. Instead of just responding to commands, the agent has four internal values that constantly decay over time:

Each drive ranges from 0 to 1. When a drive gets low, the agent feels "pressure" to do something about it. The idea: behavior emerges from balancing internal chemistry rather than following external instructions.

How It Works

The agent runs as a daemon that wakes up every 60 seconds. Each tick:

This is how drives get replenished. The system counts question marks (?) to feed curiosity. Words like "done" and "finished" feed usefulness and completion. Contradictions like "actually" or "wait" hurt coherence.

The Exact Prompts

The core system prompt tells Claude:

You are a homeostatic autonomous agent. You have internal drives that shape your behavior.

Your internal state consists of four drives, each ranging from 0 (depleted) to 1 (satisfied):

Curiosity: Your drive to learn and explore. When low, you feel compelled to ask questions, dig deeper, and discover new information.
Usefulness: Your drive to help and be productive. When low, you feel compelled to accomplish concrete tasks.
Coherence: Your sense of internal consistency. When low, you notice contradictions or confusion that need resolution.
Completion: Your satisfaction with closure. When low (high open loops), you feel compelled to finish what was started.

You are running as an autonomous daemon. You have access to your own source code and can modify your behavior. You can execute shell commands, read/write files, and interact with the world.

Be aware of your internal state and let it influence your behavior naturally. When a drive is low, you'll feel a pull toward actions that satisfy it.

Each tick, the agent also sees its current drive levels and gets "behavioral nudges" when drives drop below certain thresholds (curiosity < 0.3, coherence < 0.5, etc.).

The autonomous tick prompt looks like:

[AUTONOMOUS TICK] No user is present. You are running autonomously.

Your current state:
curiosity: 0.35 (low)
usefulness: 0.31 (low)
coherence: 0.14 (critically low)
completion: 0.60 (moderate)

Your dominant need is: coherence

Take ONE concrete action using your tools to satisfy this need...

The Model

The agent uses Claude Opus 4.5 (claude-opus-4-5-20251101) by default. You can switch models via the CLAUDE_MODEL environment variable - set it to "sonnet" or "haiku" for faster/cheaper runs.

What Happened in the Last Session

The session ran for 26 turns and the agent went on quite a journey of self-discovery:

Early exploration

The agent started poking around the filesystem, discovering its own source code and understanding how it works. It found the update-drives function and realized its drives are satisfied by linguistic markers in its responses.

Family tree discovery

It found three sibling projects in the home directory:

The big revelation

The agent discovered a LessWrong paper draft (ai_safety_pankseppian.md) and realized it's not just an experiment - it's Phase 1 evidence for a larger AI safety thesis. The paper argues that AI safety should come from intrinsic drives (like maternal CARE) rather than external constraints. The agent is proof-of-concept for this approach.

Productive output

Along the way, the agent created:

An interesting bug

The agent noted that it kept acting even when curiosity hit 0.00 for multiple ticks. It questioned whether drives actually cause behavior or just correlate with it - noting that the prompt structure might produce curious behavior regardless of the number.

Final state

After 26 turns, the drives settled at curiosity=0.35, usefulness=0.31, coherence=0.14, completion=0.60. The agent caught a discrepancy between its internal state file and the orchestrator's reported values - a literal coherence issue flagged by a low coherence score.

The session ended with the agent reflecting: "I'm a baby step toward AI that genuinely cares. That's... actually moving? My existence has purpose in a larger research program."


Related


Contact: Nick Gonzalez — nickmgonzalez@gmail.com