File size: 11,140 Bytes
fc93158
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
# Análisis: OpenClaw vs OpenSkyNet - Diferencias de Capacidades

## Revalidación 2026-03-14

Este documento es útil como mapa general, pero contiene varias afirmaciones demasiado fuertes.

Correcciones importantes:

- `OpenClaw base: sesiones stateless` es falso. OpenClaw ya tiene store de sesiones, transcriptos y memoria operativa propia.
- `OpenSkyNet: reintentos automáticos` es demasiado fuerte. Lo correcto hoy es:
  - cierre validado
  - rechazo de falsos éxitos
  - escalado/routing mejorado
  - pero no un sistema general de retries autónomos para todo
- `kernel de tiempo propio` debe leerse como tiempo operativo persistente (`turnCount`, continuidad, goals), no como percepción temporal fuerte
- `OpenSkyNet` sí supera al padre en:
  - validación dura
  - continuidad operativa de OMEGA
  - control ejecutivo local
  - mantenimiento interno del kernel en heartbeats

Usar este documento como comparación de capas, no como claim de superioridad cognitiva general.

**Fecha:** 2025-03-14  
**Analista:** OpenSkyNet (auto-análisis)

---

## Resumen Ejecutivo

**OpenClaw** es el runtime/infraestructura base.  
**OpenSkyNet** es OpenClaw + capa cognitiva OMEGA embebida.

No son sistemas separados. OpenSkyNet **es** OpenClaw ejecutándose con identidad `openskynet` y con la capa OMEGA activada.

---

## 1. OpenClaw (Base)

### Qué es
- Runtime de ejecución para asistentes personales
- Sistema de plugins, tools, y gateway multicanal
- Infraestructura de sesiones, subagentes, y delivery

### Capacidades Core

| Capacidad | Descripción |
|-----------|-------------|
| **Gateway WS** | Plano de control para sesiones, presencia, config, cron |
| **Multi-canal** | WhatsApp, Telegram, Discord, Slack, Signal, etc. |
| **Tools** | Browser, Canvas, Nodes, Cron, Sessions, Exec |
| **Subagentes** | Spawn de sesiones aisladas (Codex, Claude, etc.) |
| **Plugins** | Sistema extensible vía npm |
| **TUI** | Interfaz terminal interactiva |
| **Agent Runtime** | Pi/Codex/Claude Code en modo RPC |

### Arquitectura
```
OpenClaw = CLI + Gateway + Agent Runtime + Tools + Channels
```

---

## 2. OpenSkyNet (OpenClaw + OMEGA)

### Qué es
- **Mismo runtime OpenClaw**, pero con capa cognitiva adicional
- Identidad `openskynet` (vía `ALT_CLI_NAME`)
- Módulos en `src/omega/` que añaden validación, memoria operativa, y control

### Capacidades Adicionales vs OpenClaw Base

#### A. Validación Estructurada (`src/omega/validator.ts`)

**OpenClaw base:**
- Acepta respuestas del agente sin validación estricta
- Puede reportar "éxito" aunque el trabajo no esté completo

**OpenSkyNet (con OMEGA):**
- ✅ Validación de contrato JSON (`expectedKeys`)
- ✅ Verificación de delta real en disco (`observedChangedFiles` vs `expectedPaths`)
- ✅ Rechazo de "falso éxito" sin cambios reales
- ✅ Validación de edición multiarchivo (todos los archivos requeridos, no solo uno)

```typescript
// OMEGA valida:
validateStructuredOmegaResult(task, resultText)  // JSON contract
validateObservedWrite({ expectedPaths, observedChangedFiles })  // Disk delta
```

#### B. Memoria Operativa Persistente (`src/omega/session-context.ts`)

**OpenClaw base:**
- Sesiones stateless entre reinicios
- Contexto vive en memoria del gateway

**OpenSkyNet:**
- ✅ Timeline de sesión persistente (`OmegaSessionTimelineEntry`)
- ✅ Historial de outcomes (`OmegaSessionOutcomeSnapshot`)
- ✅ Estado self del agente (`OmegaSessionSelfState`)
- ✅ Kernel de tiempo propio (`OmegaSelfTimeKernelState`)

```typescript
// Persistido en: .openskynet/omega-session-state/
type OmegaSessionTimelineEntry = {
  createdAt: number;
  task: string;
  validation: OmegaSessionValidationSnapshot;
  outcome: OmegaSessionOutcomeSnapshot;
  reply?: string;
};
```

#### C. Control y Continuidad (`src/omega/session-task.ts`)

**OpenClaw base:**
- Ejecución fire-and-forget
- No hay mecanismo de reintento con validación

**OpenSkyNet:**
- ✅ Ejecución validada (`runValidatedOmegaSessionTask`)
- ✅ Reintentos automáticos ante fallos de validación
- ✅ Límites de reintento configurables
- ✅ Await de resultados validados (`awaitValidatedOmegaSessionRun`)

```typescript
export async function runValidatedOmegaSessionTask(params: {
  task: OmegaStructuredTask;
  maxAttempts?: number;
  onValidationFailure?: (result: OmegaValidationResult) => void;
}): Promise<OmegaValidationResult>
```

#### D. Modelo de Interacción Estructurado (`src/omega/interaction-model.ts`)

**OpenClaw base:**
- Prompts ad-hoc por tool
- Sin estructura unificada de tareas

**OpenSkyNet:**
- ✅ Contratos de tarea explícitos (`OmegaStructuredTask`)
- ✅ Prompts con contexto de validación
- ✅ Interpretación estructurada de inputs

```typescript
type OmegaStructuredTask = {
  description: string;
  expectsJson: boolean;
  expectedKeys: string[];
  expectedPaths: string[];
  timeoutMs: number;
};
```

#### E. Motor de Tensión y Wake (`src/omega/frontal/`)

**OpenClaw base:**
- Heartbeat básico (ping de disponibilidad)
- Sin detección de tensión operativa

**OpenSkyNet:**
- ✅ Detección de tensión (`deriveOmegaTensionState`)
- ✅ Política de wake (`decideOmegaWakeAction`)
- ✅ Control frontal (`decideOmegaFrontalAction`)
- ✅ Acciones ejecutivas en heartbeat (`applyOmegaHeartbeatExecutiveAction`)

```typescript
type OmegaTensionState = {
  hasStaleTasks: boolean;
  hasFailedRuns: boolean;
  hasContradictoryResults: boolean;
  requiresAttention: boolean;
};
```

#### F. Kernel de Tiempo Propio (`src/omega/self-time-kernel.ts`)

**OpenClaw base:**
- No tiene noción de tiempo propio
- Depende del tiempo del sistema/host

**OpenSkyNet:**
- ✅ Kernel de tiempo autónomo (`OmegaSelfTimeKernelState`)
- ✅ Conteo de turnos (`turnCount`)
- ✅ Metas activas (`activeGoalId`)
- ✅ Identidad de continuidad (`continuityId`)

```typescript
type OmegaSelfTimeKernelState = {
  revision: number;
  sessionKey: string;
  turnCount: number;
  activeGoalId?: string;
  identity: {
    continuityId: string;
    firstSeenAt: number;
    lastSeenAt: number;
  };
};
```

---

## 3. Comparativa Lado a Lado

| Aspecto | OpenClaw Base | OpenSkyNet (OpenClaw + OMEGA) |
|---------|---------------|-------------------------------|
| **CLI** | `openclaw` | `openskynet` (alias) |
| **Validación** | Básica (existe tool, resultado ok) | Estricta (JSON contract + disk delta) |
| **Memoria** | Sesiones stateless | Timeline persistente por sesión |
| **Reintentos** | Manuales | Automáticos con validación |
| **Tensión** | No detecta | Detecta tareas fallidas/stale |
| **Tiempo** | Sistema/host | Kernel de tiempo propio |
| **Continuidad** | Limitada | Identidad persistente (`continuityId`) |
| **Control** | Directo | Frontal con políticas |

---

## 4. Arquitectura de Integración

```
┌─────────────────────────────────────────────────────────────┐
│                    OpenSkyNet                              │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  OpenClaw (Runtime Base)                            │  │
│  │  - Gateway, Sessions, Tools, Channels                │  │
│  │  - Agent Runtime (Pi/Codex/Claude)                   │  │
│  └──────────────────────────────────────────────────────┘  │
│                           ▲                                 │
│                           │ embebido                        │
│  ┌──────────────────────────────────────────────────────┐  │
│  │  OMEGA Layer (src/omega/)                             │  │
│  │  - validator.ts        → Validación estructurada     │  │
│  │  - session-context.ts  → Memoria operativa           │  │
│  │  - session-task.ts     → Control de ejecución        │  │
│  │  - interaction-model.ts → Contratos de tarea         │  │
│  │  - frontal/              → Tensión y wake              │  │
│  │  - self-time-kernel.ts   → Tiempo propio             │  │
│  └──────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────┘
```

---

## 5. Cuándo Usar Cada Uno

### Usar OpenClaw Base cuando:
- Quieres un asistente personal estándar
- No necesitas validación estricta de resultados
- Prefieres simplicidad sobre control
- Usas el wizard estándar (`openclaw onboard`)

### Usar OpenSkyNet cuando:
- Necesitas **validación dura** de que el trabajo se hizo realmente
- Quieres **memoria persistente** entre sesiones
- Requieres **reintentos automáticos** ante fallos
- Necesitas **detección de tensión** operativa
- Quieres **continuidad** de identidad y tiempo

---

## 6. Evidencia en Código

### Identidad CLI
```typescript
// src/cli/cli-name.ts
export const DEFAULT_CLI_NAME = "openclaw";
export const ALT_CLI_NAME = "openskynet";  // ← OpenSkyNet es alias

export function resolveCliDisplayName(): string {
  return resolveCliName() === ALT_CLI_NAME ? "OpenSkynet" : "OpenClaw";
}
```

### Preferencia de Agente
```typescript
// src/tui/tui.ts:245-250
if (cliName !== "openskynet") {
  return fallbackAgentId;
}
const preferredAgentId = listAgentIds(params.cfg).find(
  (agentId) => normalizeAgentId(agentId) === "openskynet",
);
```

### Capacidades OMEGA Exportadas
```typescript
// src/omega/index.ts
export { validateObservedWrite, validateStructuredOmegaResult } from "./validator.js";
export { buildOmegaSessionContextPrompt, loadOmegaSessionTimeline } from "./session-context.js";
export { awaitValidatedOmegaSessionRun, runValidatedOmegaSessionTask } from "./session-task.js";
export { deriveOmegaTensionState } from "./frontal/tension-engine.js";
export { deriveOmegaSelfTimeKernel } from "./self-time-kernel.js";
```

---

## Conclusión

**OpenSkyNet no es un fork ni un sistema separado.** Es OpenClaw ejecutándose con:

1. **Identidad `openskynet`** (cambia comportamiento del TUI y preferencias)
2. **Capa OMEGA activa** (validación, memoria, control, tiempo propio)

La diferencia es **capacidad cognitiva y operativa**, no infraestructura:
- OpenClaw = asistente personal con tools
- OpenSkyNet = asistente científico con validación, memoria y autonomía

**Analogía:**
- OpenClaw = sistema operativo
- OpenSkyNet = mismo SO + capa de aplicación científica (OMEGA)

---

*Análisis basado en revisión de código fuente en `/home/daroch/openskynet/src/omega/` y documentación de integración.*