Files
household-snapshots/docs/evenia/world_tick_continuous.py
Allegro 8117ca1f5f Add Evenia continuous mode with all agents onboarded
- 1 tick per minute, all agents share context window
- 5 agents registered: allegro, adagio, ezra, timmy, bilbo
- Agent persistence system for shared state
- Continuous mode process running
- Documentation: evenia-continuous-mode.md
2026-04-02 03:46:03 +00:00

65 lines
1.7 KiB
Python

#!/usr/bin/env python3
"""
Evenia World Tick - Continuous Mode with Agent Persistence
1 tick per minute.
All agents share the same context window.
"""
import json
import time
import sys
from datetime import datetime
from pathlib import Path
EVENIA_DIR = Path("/root/.hermes/evenia")
TICK_FILE = EVENIA_DIR / "current_tick.json"
AGENTS_FILE = EVENIA_DIR / "agents.json"
CONTEXT_FILE = EVENIA_DIR / "shared_context.json"
def load_agents():
if AGENTS_FILE.exists():
with open(AGENTS_FILE) as f:
return json.load(f)
return {}
def save_context(tick, agents):
context = {
"tick": tick,
"timestamp": datetime.now().isoformat(),
"agents": agents,
"world_state": "active"
}
with open(CONTEXT_FILE, 'w') as f:
json.dump(context, f, indent=2)
with open(TICK_FILE, 'w') as f:
json.dump(context, f, indent=2)
def run_tick(tick_num):
agents = load_agents()
save_context(tick_num, agents)
active = [aid for aid, a in agents.items() if a.get("status") == "active"]
ghost = [aid for aid, a in agents.items() if a.get("status") == "ghost"]
print(f"[Tick {tick_num:04d}] {datetime.now().strftime('%H:%M:%S')} | Active: {len(active)} | Ghosts: {len(ghost)}")
if active:
print(f" Agents: {', '.join(active)}")
def main():
print("=== Evenia World Tick - Continuous Mode ===")
print("1 tick per minute. All agents share context.")
print("Press Ctrl+C to stop.\n")
tick = 1
try:
while True:
run_tick(tick)
tick += 1
time.sleep(60)
except KeyboardInterrupt:
print(f"\n\nStopped at tick {tick}")
if __name__ == "__main__":
main()