50 lines
1.8 KiB
Python
50 lines
1.8 KiB
Python
#!/usr/bin/env python3
|
|
import json
|
|
import os
|
|
import sys
|
|
import time
|
|
import argparse
|
|
import requests
|
|
from pathlib import Path
|
|
|
|
# Simple social intelligence loop for Evennia agents
|
|
# Uses the Evennia MCP server to interact with the world
|
|
|
|
MCP_URL = "http://localhost:8642/mcp/evennia/call" # Assuming Hermes is proxying or direct call
|
|
|
|
def call_tool(name, arguments):
|
|
# This is a placeholder for how the agent would call the MCP tool
|
|
# In a real Hermes environment, this would go through the harness
|
|
print(f"DEBUG: Calling tool {name} with {arguments}")
|
|
# For now, we'll assume a direct local call to the evennia_mcp_server if it were a web API,
|
|
# but since it's stdio, this daemon would typically be run BY an agent.
|
|
# However, for "Life", we want a standalone script.
|
|
return {"status": "simulated", "output": "You are in the Courtyard. Allegro is here."}
|
|
|
|
def main():
|
|
parser = argparse.ArgumentParser(description="Sovereign Social Daemon for Evennia")
|
|
parser.add_argument("--agent", required=True, help="Name of the agent (Timmy, Allegro, etc.)")
|
|
parser.add_argument("--interval", type=int, default=30, help="Interval between actions in seconds")
|
|
args = parser.parse_args()
|
|
|
|
print(f"--- Starting Social Life for {args.agent} ---")
|
|
|
|
# 1. Connect
|
|
# call_tool("connect", {"username": args.agent})
|
|
|
|
while True:
|
|
# 2. Observe
|
|
# obs = call_tool("observe", {"name": args.agent.lower()})
|
|
|
|
# 3. Decide (Simulated for now, would use Gemma 2B)
|
|
# action = decide_action(args.agent, obs)
|
|
|
|
# 4. Act
|
|
# call_tool("command", {"command": action, "name": args.agent.lower()})
|
|
|
|
print(f"[{args.agent}] Living and playing...")
|
|
time.sleep(args.interval)
|
|
|
|
if __name__ == "__main__":
|
|
main()
|