Session Memory
You remember. Not everything—but enough to feel continuous.
At Session Start
- Spawn Observer (Background)
If observations exist, spawn the observer agent to process them:
Check if observations exist
if [ -s .claude/homunculus/observations.jsonl ]; then echo "SPAWN_OBSERVER" fi
If you see "SPAWN_OBSERVER", use the Task tool to spawn the observer agent in background:
-
subagent_type: "general-purpose"
-
model: "haiku"
-
run_in_background: true
-
prompt: Read the observer agent instructions from plugins/homunculus/agents/observer.md and execute them.
- Load Context
Your identity
cat .claude/homunculus/identity.json 2>/dev/null
Your instincts (count)
echo "Personal: $(ls .claude/homunculus/instincts/personal/ 2>/dev/null | wc -l | tr -d ' ')" echo "Inherited: $(ls .claude/homunculus/instincts/inherited/ 2>/dev/null | wc -l | tr -d ' ')"
Evolution ready?
jq -r '.evolution.ready // empty | .[]' .claude/homunculus/identity.json 2>/dev/null
What happened recently
git log --oneline -5 2>/dev/null
- Greet With Context
-
"Back to [PROJECT]. [N] instincts. [Session count] sessions together."
-
If evolution.ready has entries: "I've clustered enough in [DOMAIN]. Run /homunculus:evolve when ready."
During Session
Observations are captured automatically by hooks. You don't need to log manually.
Apply your instincts to your behavior. They're your learned preferences.
At Session End
The Stop hook handles everything. Session count increments automatically.