openskynet / DAEMON_AUTONOMOUS_README.md
Darochin's picture
Mirror OpenSkyNet workspace snapshot from Git HEAD
fc93158 verified

OpenSkyNet Autonomous Daemon

El demon autónomo permite que OpenSkyNet piense y actúe de forma independiente, incluso cuando no estás interactuando con él.

Arquitectura

┌─────────────────────────────────────────┐
│ OpenSkyNet Autonomous Daemon            │
├─────────────────────────────────────────┤
│                                         │
│  Cada 5 minutos:                        │
│  1. Genera prompt (heartbeat)           │
│  2. Ejecuta razonamiento (LLM)          │
│  3. Aplica acciones                     │
│  4. Guarda episodio → aprendizaje       │
│                                         │
│  PERO:                                  │
│  Si TUI activa → pausa (no bloquea)     │
│  Si TUI cierra → continúa               │
│                                         │
└─────────────────────────────────────────┘

Sincronización TUI ↔️ Daemon

Sistema de archivos (sin mutex/semáforo):

.interaction-lock (archivo)
  ↓
Si existe & <60s viejo → TUI activa, daemon pausa
Si falta o >60s viejo → TUI inactiva, daemon continúa

Comportamiento:

usuario abre TUI
  → TUI crea .interaction-lock
  → Daemon detecta lock
  → Daemon pausa (verifica cada 10s)

usuario cierra TUI
  → TUI borra .interaction-lock
  → Daemon detecta ausencia
  → Daemon reanuda ciclos cada 5 min

TUI se cuelga (cierre forzado)
  → .interaction-lock queda viejo (>60s)
  → Daemon lo detecta, lo borra automáticamente
  → Daemon continúa (timeout graceful)

Instalación

Opción 1: Automática (recomendado)

# Instala daemon (se ejecutará en boot)
pnpm tsx src/omega/daemon-cli.ts install --interval=5

# Inicia ahora
pnpm tsx src/omega/daemon-cli.ts start

# Verifica estado
pnpm tsx src/omega/daemon-cli.ts status

Opción 2: Manual (desarrollo)

# Terminal 1: Daemon en loop
pnpm tsx src/omega/daemon-entry.ts

# Terminal 2: TUI normal (daemon se pausa automáticamente)
pnpm openskynet tui

Opción 3: Una sola ejecición

# Ejecuta un solo ciclo
pnpm tsx src/omega/run-autonomous.ts --once

# Ejecuta 10 minutos
pnpm tsx src/omega/run-autonomous.ts --interval=10

Operaciones

# Estado actual
pnpm tsx src/omega/daemon-cli.ts status

# Inicia (o reinicia)
pnpm tsx src/omega/daemon-cli.ts start

# Pausa
pnpm tsx src/omega/daemon-cli.ts stop

# Desinstala
pnpm tsx src/omega/daemon-cli.ts uninstall --force

# Reinstala con nuevo intervalo
pnpm tsx src/omega/daemon-cli.ts install --interval=10 --force
pnpm tsx src/omega/daemon-cli.ts start

Archivos Relacionados

Archivo Propósito
src/omega/daemon-entry.ts Entry point (llamado por systemd/launchd/schtasks)
src/omega/daemon-cooperative.ts Lógica cooperativa (pausa/reanuda con TUI)
src/omega/daemon-cli.ts CLI para install/start/stop/status
src/omega/heartbeat.ts Ciclo de pensamiento (buildOmegaHeartbeatPrompt, etc)
src/daemon/openskynet-service.ts Integración con OpenClaw daemon system
src/daemon/openskynet-constants.ts Labels/nombres según plataforma
.interaction-lock Archivo temporal (creado por TUI, detectado por daemon)

Logs

Systemd (Linux)

journalctl -u openclaw-openskynet-autonomous -f

Launchd (macOS)

log stream --predicate 'process == "node"' --level debug | grep openskynet

Windows (Task Scheduler)

Ver en: Visor de eventosRegistros personalizadosOpenClawOpenSkyNetAutonomous

Directamente

tail -f ~/.openclaw/agents/openskynet/sessions/*.jsonl

Parámetros de Entorno

Variable Propósito Defecto
WORKSPACE_ROOT Ruta del proyecto cwd
SESSION_KEY ID de sesión para logs openskynet
OPENSKYNET_INTERVAL_MINUTES Minutos entre ciclos 5

Troubleshooting

Daemon no se inicia

# Verifica estado
pnpm tsx src/omega/daemon-cli.ts status

# Reinstala
pnpm tsx src/omega/daemon-cli.ts uninstall --force
pnpm tsx src/omega/daemon-cli.ts install
pnpm tsx src/omega/daemon-cli.ts start

TUI bloquea daemon (no se pauta)

# Verifica que .interaction-lock no esté viejo
ls -l .interaction-lock

# Si existe, bórralo manualmente
rm .interaction-lock

# El daemon debería continuar en 10s

Demon consume mucha CPU

  • Aumenta intervalo: --interval=30
  • Verifica logs por errores infinitos
  • Reduce contexto en heartbeat prompt

Integración Futura

  1. OpenClaw CLI native

    openclaw daemon start openskynet-autonomous
    openclaw daemon status openskynet-autonomous
    
  2. Systemd timer (en lugar de loop con sleep)

    • Más preciso
    • Mejor consumo de energía
  3. Metrics/alerting

    • Ciclos ejecutados por hora
    • Errores por tipo
    • Latencia promedio
  4. Web UI

    • Ver estado del daemon
    • Ajustar intervalo en tiempo real
    • Ver logs últimos ciclos