Initial commit: Natiris AI Agent Orchestration System
This commit is contained in:
89
core/progressive_stimulation.py
Normal file
89
core/progressive_stimulation.py
Normal file
@@ -0,0 +1,89 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Simuliert fortlaufende Inaktivität bis Autonomie-Trigger auslöst
|
||||
"""
|
||||
|
||||
import json
|
||||
import os
|
||||
from datetime import datetime, timezone
|
||||
|
||||
CORE_STATE_PATH = os.path.expanduser("~/natiris/core/core_state.json")
|
||||
INNER_LIFE_PATH = os.path.expanduser("~/natiris/core/inner_life_log.json")
|
||||
CONFIG_PATH = os.path.expanduser("~/natiris/config/character_genesis.json")
|
||||
|
||||
def load_json(path):
|
||||
try:
|
||||
with open(path, "r", encoding="utf-8") as f:
|
||||
return json.load(f)
|
||||
except (FileNotFoundError, json.JSONDecodeError):
|
||||
return {}
|
||||
|
||||
def save_json(path, data):
|
||||
os.makedirs(os.path.dirname(path), exist_ok=True)
|
||||
with open(path, "w", encoding="utf-8") as f:
|
||||
json.dump(data, f, indent=2)
|
||||
|
||||
def clamp(val, lo=0.0, hi=10.0):
|
||||
return max(lo, min(hi, float(val)))
|
||||
|
||||
def run_step(hours_add):
|
||||
"""Simuliert eine Zeitspanne hours_add Stunden Inaktivität"""
|
||||
core = load_json(CORE_STATE_PATH)
|
||||
config = load_json(CONFIG_PATH)
|
||||
old_inner = load_json(INNER_LIFE_PATH)
|
||||
|
||||
autonomy = config.get("autonomy", {})
|
||||
loneliness_threshold = autonomy.get("min_loneliness", 7)
|
||||
max_hours = autonomy.get("max_hours_since_contact", 12)
|
||||
|
||||
# Neue Werte berechnen
|
||||
loneliness_current = core.get("loneliness", 2.0)
|
||||
mood_current = core.get("mood", 5.0)
|
||||
|
||||
new_loneliness = clamp(loneliness_current + (hours_add * 0.25)) # ~0.25 pro Stunde
|
||||
new_mood = clamp(mood_current - (hours_add * 0.08)) # ~0.08 pro Stunde
|
||||
|
||||
hours_since = old_inner["hours_since_last_contact"] + hours_add
|
||||
autonomy_trigger = new_loneliness >= loneliness_threshold and hours_since > max_hours
|
||||
|
||||
log = {
|
||||
"timestamp": datetime.now(timezone.utc).isoformat(),
|
||||
"old": {
|
||||
"loneliness": loneliness_current,
|
||||
"mood": mood_current
|
||||
},
|
||||
"new": {
|
||||
"loneliness": new_loneliness,
|
||||
"mood": new_mood
|
||||
},
|
||||
"autonomy_trigger": autonomy_trigger,
|
||||
"hours_since_last_contact": round(hours_since, 2),
|
||||
"delta_hours": hours_add
|
||||
}
|
||||
|
||||
save_json(INNER_LIFE_PATH, log)
|
||||
|
||||
core["loneliness"] = new_loneliness
|
||||
core["mood"] = new_mood
|
||||
save_json(CORE_STATE_PATH, core)
|
||||
|
||||
return log
|
||||
|
||||
def main():
|
||||
print("Simuliere Inaktivität bis Autonomie-Trigger...\n")
|
||||
|
||||
for i in range(1, 10):
|
||||
log = run_step(2) # jeweils 2 Stunden dazu
|
||||
print(f"Schritt {i}:")
|
||||
print(f" hours_since: {log['hours_since_last_contact']:.2f}h")
|
||||
print(f" loneliness: {log['new']['loneliness']:.2f}")
|
||||
print(f" mood: {log['new']['mood']:.2f}")
|
||||
print(f" autonomy_trigger: {log['autonomy_trigger']}")
|
||||
print()
|
||||
|
||||
if log["autonomy_trigger"]:
|
||||
print("✅ AUTONOMIE-TRIGGER AUSGELÖST!")
|
||||
break
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
Reference in New Issue
Block a user