md-first memory extraction framework for AI agents. Markdown is the single source of truth; SQLite holds state and LanceDB provides the rebuildable vector + BM25 + scalar index. The codebase follows a single-direction DDD layering (entrypoints -> service -> memory -> infra, with component / core / config cross-cutting) enforced by import-linter. Engineering surface: - Coding conventions in .claude/rules/ (path-scoped) and workflows in .claude/skills/ (/commit, /new-branch, /pr). - GitHub Actions CI runs make lint + test + integration; pre-commit mirrors the gates locally (ruff, hygiene hooks, gitlint commit-msg). - Commit messages follow Conventional Commits, enforced by gitlint. - make lint also enforces datetime two-zone discipline and OpenAPI drift.
67 lines
3.3 KiB
Python
67 lines
3.3 KiB
Python
"""
|
|
Neural network context features — showing how EverCore expands
|
|
the persona engine's perception from 8D to 12D.
|
|
|
|
The 4 additional relationship dimensions from EverCore allow the
|
|
neural network to produce different behavioral signals depending
|
|
on the history between user and persona.
|
|
|
|
Full source: https://github.com/kellyvv/OpenHer/blob/main/engine/genome/genome_engine.py
|
|
"""
|
|
|
|
# ══════════════════════════════════════════════
|
|
# 5D Drive System (internal motivation)
|
|
# ══════════════════════════════════════════════
|
|
|
|
DRIVES = ['connection', 'novelty', 'expression', 'safety', 'play']
|
|
|
|
# ══════════════════════════════════════════════
|
|
# 8D Behavioral Signals (neural network output)
|
|
# ══════════════════════════════════════════════
|
|
|
|
SIGNALS = [
|
|
'directness', # 0=indirect hints → 1=straight talk
|
|
'vulnerability', # 0=guarded → 1=emotionally open
|
|
'playfulness', # 0=serious → 1=playful/teasing
|
|
'initiative', # 0=reactive → 1=proactive leading
|
|
'depth', # 0=small talk → 1=deep conversation
|
|
'warmth', # 0=cold/distant → 1=warm/caring
|
|
'defiance', # 0=compliant → 1=rebellious/stubborn
|
|
'curiosity', # 0=indifferent → 1=intensely curious
|
|
]
|
|
|
|
# ══════════════════════════════════════════════
|
|
# 12D Context Features (neural network input)
|
|
# ══════════════════════════════════════════════
|
|
|
|
CONTEXT_FEATURES = [
|
|
# ── 8D from Critic LLM (per-turn perception) ──
|
|
'user_emotion', # -1=negative → 1=positive
|
|
'topic_intimacy', # 0=professional → 1=intimate
|
|
'time_of_day', # 0=morning → 1=late night
|
|
'conversation_depth', # 0=just started → 1=deep conversation
|
|
'user_engagement', # 0=dismissive → 1=invested
|
|
'conflict_level', # 0=harmonious → 1=conflict
|
|
'novelty_level', # 0=routine topic → 1=novel topic
|
|
'user_vulnerability', # 0=guarded → 1=open
|
|
|
|
# ── 4D from EverCore (cross-session relationship) ──
|
|
'relationship_depth', # 0=stranger → 1=old friend
|
|
'emotional_valence', # -1=negative history → 1=positive history
|
|
'trust_level', # 0=no trust → 1=deep trust
|
|
'pending_foresight', # 0=nothing pending → 1=unresolved concern
|
|
]
|
|
|
|
# Neural network dimensions
|
|
N_DRIVES = len(DRIVES) # 5
|
|
N_CONTEXT = len(CONTEXT_FEATURES) # 12 (8 + 4 from EverCore)
|
|
N_SIGNALS = len(SIGNALS) # 8
|
|
RECURRENT_SIZE = 8 # Internal "mood" state
|
|
INPUT_SIZE = N_DRIVES + N_CONTEXT + RECURRENT_SIZE # 5 + 12 + 8 = 25
|
|
HIDDEN_SIZE = 24
|
|
|
|
# Architecture: 25D input → 24D hidden (tanh) → 8D output (sigmoid)
|
|
# The 4 EverCore dimensions mean the same neural network produces
|
|
# DIFFERENT behavioral signals for strangers vs. old friends,
|
|
# even with identical conversation context.
|