@johpaz/hive-agents 0.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +905 -0
- package/dist/hive.js +565898 -0
- package/package.json +154 -0
- package/packages/core/src/index.ts +55 -0
package/README.md
ADDED
|
@@ -0,0 +1,905 @@
|
|
|
1
|
+
# Hive 🐝
|
|
2
|
+
|
|
3
|
+
> Tu colmena de agentes IA. Local-first. Multi-canal. Open source. Construido desde Colombia para el mundo.
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@johpaz/hive)
|
|
6
|
+
[](https://opensource.org/licenses/MIT)
|
|
7
|
+
[](https://www.npmjs.com/package/@johpaz/hive)
|
|
8
|
+
[](https://github.com/johpaz/hive)
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## ¿Qué es Hive?
|
|
13
|
+
|
|
14
|
+
Hive es un Gateway de IA Orquestado — un Enjambre de Agentes Especializados que trabajan juntos bajo la coordinación de un gateway central. A diferencia de un asistente personal único, Hive implementa una arquitectura de enjambre donde múltiples agentes especializados trabajan en equipo.
|
|
15
|
+
|
|
16
|
+
**El problema que resolvemos**: Necesitas un asistente de IA que funcione en múltiples canales (Telegram, Discord, WhatsApp), que pueda ejecutar tareas automáticamente, que respete tu privacidad con datos locales, y que sea extensible con herramientas propias.
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## Por dentro
|
|
21
|
+
|
|
22
|
+
51.937 líneas de TypeScript. Sin frameworks de agentes. Sin LangChain. Sin abstracciones intermedias. Todo construido desde cero sobre Bun + SQLite.
|
|
23
|
+
|
|
24
|
+
```
|
|
25
|
+
Language files blank comment code
|
|
26
|
+
─────────────────────────────────────────────────────
|
|
27
|
+
TypeScript 434 7671 2683 51937 ← motor, gateway, canales, UI
|
|
28
|
+
Markdown 45 2225 0 8233
|
|
29
|
+
JSON 15 5 0 575
|
|
30
|
+
CSS 1 141 29 450
|
|
31
|
+
YAML 2 35 11 197
|
|
32
|
+
Shell 2 14 5 61
|
|
33
|
+
Dockerfile 1 19 10 38
|
|
34
|
+
─────────────────────────────────────────────────────
|
|
35
|
+
TOTAL 504 10119 2741 61546
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
La imagen Docker pesa ~120 MB. El bundle npm pesa ~12 MB. El binario standalone ~50 MB. Todo el runtime cabe en una Raspberry Pi Zero 2W con 512 MB de RAM.
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
|
|
42
|
+
## Instalación
|
|
43
|
+
|
|
44
|
+
### Prerequisito — Bun
|
|
45
|
+
|
|
46
|
+
Hive requiere [Bun](https://bun.sh) como runtime para las opciones de binario y npm. Docker no lo requiere.
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
curl -fsSL https://bun.sh/install | bash
|
|
50
|
+
source ~/.bashrc # o reinicia la terminal
|
|
51
|
+
bun --version # verifica que quedó instalado
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
Elige la opción que mejor se adapte a tu caso:
|
|
57
|
+
|
|
58
|
+
| | Docker | Binario | npm / bun |
|
|
59
|
+
|---|---|---|---|
|
|
60
|
+
| Requiere | Docker | Bun | Bun |
|
|
61
|
+
| Setup | 1 comando | descarga + ejecuta | `bun install -g @johpaz/hive` |
|
|
62
|
+
| Actualizar | `docker compose pull` | descarga nueva versión | `bun install -g @johpaz/hive` |
|
|
63
|
+
| Ideal para | Raspberry Pi, VPS, laptop vieja, VM | uso personal, USB | desarrolladores |
|
|
64
|
+
| Abre navegador | automático (con GUI) / por IP (headless) | automático | automático |
|
|
65
|
+
| Tamaño | ~120 MB imagen | ~50 MB | ~12 MB bundle |
|
|
66
|
+
|
|
67
|
+
---
|
|
68
|
+
|
|
69
|
+
### Opción 1 — Docker (Recomendada para servidores y VPS)
|
|
70
|
+
|
|
71
|
+
La forma más rápida. Sin instalar Node, Bun ni dependencias. Solo necesitas Docker.
|
|
72
|
+
|
|
73
|
+
#### Laptop, PC o VM con interfaz gráfica
|
|
74
|
+
|
|
75
|
+
Un solo comando que levanta todo y abre el navegador automáticamente:
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
curl -O https://raw.githubusercontent.com/johpaz/hive/master/docker-compose.yml
|
|
79
|
+
curl -O https://raw.githubusercontent.com/johpaz/hive/master/hive-docker.sh
|
|
80
|
+
chmod +x hive-docker.sh
|
|
81
|
+
./hive-docker.sh
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
El script levanta el contenedor, espera a que el gateway esté listo y abre el navegador directamente en `/setup` (primera vez) o en el dashboard (si ya está configurado).
|
|
85
|
+
|
|
86
|
+
#### Raspberry Pi, VPS o servidor headless
|
|
87
|
+
|
|
88
|
+
Sin interfaz gráfica, usa Docker Compose directamente:
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
curl -O https://raw.githubusercontent.com/johpaz/hive/master/docker-compose.yml
|
|
92
|
+
docker compose up -d
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
Luego accede desde cualquier equipo en la misma red usando la IP del servidor:
|
|
96
|
+
|
|
97
|
+
```
|
|
98
|
+
http://<ip-del-servidor>:18790
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Para conocer la IP del servidor:
|
|
102
|
+
|
|
103
|
+
```bash
|
|
104
|
+
ip a | grep "inet " | grep -v 127.0.0.1
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
> **Raspberry Pi tip:** si usas el mismo Pi para todo, `http://raspberrypi.local:18790` suele funcionar sin necesitar la IP.
|
|
108
|
+
|
|
109
|
+
**Con un solo comando** (sin Compose):
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
docker run -d \
|
|
113
|
+
-p 18790:18790 \
|
|
114
|
+
-v hive-data:/root/.hive \
|
|
115
|
+
--name hive \
|
|
116
|
+
--restart unless-stopped \
|
|
117
|
+
johpaz/hive:0.0.3
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
**Variables de entorno disponibles:**
|
|
121
|
+
|
|
122
|
+
| Variable | Default | Descripción |
|
|
123
|
+
|----------|---------|-------------|
|
|
124
|
+
| `HIVE_HOST` | `0.0.0.0` | Interfaz de red donde escucha el gateway |
|
|
125
|
+
| `HIVE_PORT` | `18790` | Puerto del gateway |
|
|
126
|
+
| `HIVE_AUTH_TOKEN` | — | Token de autenticación (opcional) |
|
|
127
|
+
| `HIVE_LOG_LEVEL` | `info` | Nivel de logs (`debug`, `info`, `warn`, `error`) |
|
|
128
|
+
|
|
129
|
+
**Actualizar a la última versión:**
|
|
130
|
+
|
|
131
|
+
```bash
|
|
132
|
+
docker compose pull # descarga la imagen más reciente de Docker Hub
|
|
133
|
+
docker compose up -d # reinicia el contenedor con la nueva imagen
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Los datos (BD, config, logs) se persisten en el volumen `hive-data` — actualizar no borra tu configuración.
|
|
137
|
+
|
|
138
|
+
**Ver logs en tiempo real:**
|
|
139
|
+
|
|
140
|
+
```bash
|
|
141
|
+
docker compose logs -f hive
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
---
|
|
145
|
+
|
|
146
|
+
#### Acceso a archivos del sistema desde Docker
|
|
147
|
+
|
|
148
|
+
El `docker-compose.yml` monta automáticamente tu home completo dentro del contenedor — sin configuración adicional ni variables de entorno:
|
|
149
|
+
|
|
150
|
+
| Sistema | Path del host | Path dentro del contenedor |
|
|
151
|
+
|---------|--------------|---------------------------|
|
|
152
|
+
| **Linux** | `/home/tu_usuario` | `/host/home` |
|
|
153
|
+
| **macOS** | `/Users/tu_usuario` | `/host/home` |
|
|
154
|
+
| **Windows** | `C:\Users\tu_usuario` | `/host/home` |
|
|
155
|
+
|
|
156
|
+
La variable `${HOME}` la detecta el shell automáticamente al hacer `docker compose up`.
|
|
157
|
+
|
|
158
|
+
**Configurar el workspace en la UI**
|
|
159
|
+
|
|
160
|
+
1. Abre la UI: `http://localhost:18790`
|
|
161
|
+
2. Ve a **Configuración del Agente** (o crea tu agente si es la primera vez)
|
|
162
|
+
3. En el campo **Workspace**, configura el subdirectorio que quieres:
|
|
163
|
+
- `/host/home` — todo tu home
|
|
164
|
+
- `/host/home/Documentos` — solo carpeta Documentos
|
|
165
|
+
- `/host/home/Proyectos` — solo carpeta Proyectos
|
|
166
|
+
|
|
167
|
+
El path se guarda en la base de datos SQLite (`agents.workspace`). A partir de ese momento, todas las operaciones de filesystem del agente están restringidas a ese directorio por seguridad.
|
|
168
|
+
|
|
169
|
+
**Ejemplo de uso:**
|
|
170
|
+
|
|
171
|
+
```
|
|
172
|
+
Usuario: "Crea un archivo README.md en mi carpeta Proyectos"
|
|
173
|
+
Agente: → Escribe en: /host/home/Proyectos/README.md
|
|
174
|
+
→ Que se traduce a: ~/Proyectos/README.md (en tu host)
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
> **Nota de seguridad:** El agente solo puede acceder al path que configures como workspace. Si configuras `/host/home/Documentos`, no podrá leer `/host/home/Proyectos`.
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
#### Docker portable — USB o disco externo
|
|
182
|
+
|
|
183
|
+
Docker también puede viajar en una USB. La clave es exportar la imagen como archivo `.tar` y montar el volumen de datos desde la USB en vez de un volumen gestionado por Docker.
|
|
184
|
+
|
|
185
|
+
**Paso 1 — Exportar la imagen a un archivo**
|
|
186
|
+
|
|
187
|
+
En el equipo donde tienes conexión a internet:
|
|
188
|
+
|
|
189
|
+
```bash
|
|
190
|
+
# Descargar la imagen si no la tienes
|
|
191
|
+
docker pull johpaz/hive:0.0.3
|
|
192
|
+
|
|
193
|
+
# Exportar a archivo tar (cabe en cualquier USB de 512 MB+)
|
|
194
|
+
docker save johpaz/hive:0.0.3 -o /media/usb/hive-image.tar
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**Paso 2 — Crear la estructura en la USB**
|
|
198
|
+
|
|
199
|
+
```
|
|
200
|
+
/usb/
|
|
201
|
+
├── hive-image.tar ← imagen Docker exportada (~120 MB)
|
|
202
|
+
├── docker-compose.yml ← archivo de configuración
|
|
203
|
+
└── datos/ ← directorio de datos de Hive (se crea al primer arranque)
|
|
204
|
+
└── hive.db
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
Crea el `docker-compose.yml` en la USB con el volumen apuntando a la USB:
|
|
208
|
+
|
|
209
|
+
```yaml
|
|
210
|
+
services:
|
|
211
|
+
hive:
|
|
212
|
+
image: johpaz/hive:0.0.3
|
|
213
|
+
ports:
|
|
214
|
+
- "18790:18790"
|
|
215
|
+
volumes:
|
|
216
|
+
- ./datos:/root/.hive
|
|
217
|
+
restart: unless-stopped
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
> La clave es `./datos:/root/.hive` — monta la carpeta `datos/` relativa al `docker-compose.yml`, que está en la USB. Así los datos viajan con la USB, no quedan en el equipo.
|
|
221
|
+
|
|
222
|
+
**Paso 3 — Cargar y ejecutar en cualquier equipo con Docker**
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
# 1. Cargar la imagen desde el archivo (sin internet)
|
|
226
|
+
docker load -i /media/usb/hive-image.tar
|
|
227
|
+
|
|
228
|
+
# 2. Ir al directorio de la USB
|
|
229
|
+
cd /media/usb
|
|
230
|
+
|
|
231
|
+
# 3. Levantar
|
|
232
|
+
docker compose up -d
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
Abre `http://localhost:18790` en el navegador. Si es la primera vez en ese equipo, muestra el wizard de setup. Si la USB ya tiene datos, carga tu agente directamente.
|
|
236
|
+
|
|
237
|
+
**Detener y llevar la USB a otro equipo:**
|
|
238
|
+
|
|
239
|
+
```bash
|
|
240
|
+
# Detener el contenedor
|
|
241
|
+
docker compose down
|
|
242
|
+
|
|
243
|
+
# En el otro equipo, volver al Paso 3
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
> **Nota para Windows:** Docker Desktop usa rutas como `D:\` para la USB. Ajusta el volumen en el `docker-compose.yml` a la letra de tu unidad:
|
|
247
|
+
> ```yaml
|
|
248
|
+
> volumes:
|
|
249
|
+
> - D:\datos:/root/.hive
|
|
250
|
+
> ```
|
|
251
|
+
|
|
252
|
+
**Backup de los datos del contenedor:**
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
# Copiar la BD desde la USB a tu máquina
|
|
256
|
+
cp /media/usb/datos/hive.db ~/backup-hive-$(date +%Y%m%d).db
|
|
257
|
+
|
|
258
|
+
# Restaurar
|
|
259
|
+
cp ~/backup-hive-20260312.db /media/usb/datos/hive.db
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
**Actualizar la imagen en la USB:**
|
|
263
|
+
|
|
264
|
+
```bash
|
|
265
|
+
# En un equipo con internet
|
|
266
|
+
docker pull johpaz/hive:latest
|
|
267
|
+
docker save johpaz/hive:latest -o /media/usb/hive-image.tar
|
|
268
|
+
|
|
269
|
+
# Actualizar el tag en docker-compose.yml
|
|
270
|
+
# Luego en cualquier equipo:
|
|
271
|
+
docker load -i /media/usb/hive-image.tar
|
|
272
|
+
docker compose up -d
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
---
|
|
276
|
+
|
|
277
|
+
### Opción 2 — Binario standalone (Sin dependencias)
|
|
278
|
+
|
|
279
|
+
Descarga un ejecutable único para tu plataforma. No requiere Node, Bun ni Docker. Al ejecutarlo, **el navegador se abre automáticamente** en `/setup` (primera vez) o en el dashboard.
|
|
280
|
+
|
|
281
|
+
#### Dónde descargar
|
|
282
|
+
|
|
283
|
+
**Desde la web** — [hiveagents.io](https://www.hiveagents.io/#installation)
|
|
284
|
+
La página detecta tu sistema operativo automáticamente y muestra el botón de descarga correcto. También puedes seleccionar otra plataforma desde el selector.
|
|
285
|
+
|
|
286
|
+
**Desde GitHub Releases** — [github.com/johpaz/hive/releases/latest](https://github.com/johpaz/hive/releases/latest)
|
|
287
|
+
Descarga manual de cualquier plataforma o versión específica.
|
|
288
|
+
|
|
289
|
+
| Plataforma | Archivo | Descarga directa |
|
|
290
|
+
|------------|---------|------------------|
|
|
291
|
+
| Linux x64 | `hive-v0.0.3-linux-x64` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-linux-x64) |
|
|
292
|
+
| Linux ARM64 (Raspberry Pi, etc.) | `hive-v0.0.3-linux-arm64` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-linux-arm64) |
|
|
293
|
+
| macOS Apple Silicon (M1/M2/M3/M4) | `hive-v0.0.3-macos-arm64` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-macos-arm64) |
|
|
294
|
+
| macOS Intel | `hive-v0.0.3-macos-x64` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-macos-x64) |
|
|
295
|
+
| Windows x64 | `hive-v0.0.3-windows-x64.exe` | [Descargar](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-windows-x64.exe) |
|
|
296
|
+
|
|
297
|
+
> Los links anteriores siempre apuntan a la última versión publicada. Si necesitas una versión específica, visita la [página de releases](https://github.com/johpaz/hive/releases).
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
#### Linux x64 / ARM64
|
|
302
|
+
|
|
303
|
+
```bash
|
|
304
|
+
# 1. Descargar el binario (reemplaza "linux-x64" por "linux-arm64" si es ARM)
|
|
305
|
+
curl -L -o hive https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-linux-x64
|
|
306
|
+
|
|
307
|
+
# 2. Dar permisos de ejecución
|
|
308
|
+
chmod +x hive
|
|
309
|
+
|
|
310
|
+
# 3. Descargar la UI web
|
|
311
|
+
curl -L https://github.com/johpaz/hive/releases/latest/download/ui-dist.tar.gz \
|
|
312
|
+
| tar -xz --one-top-level=ui-dist
|
|
313
|
+
|
|
314
|
+
# 4. Colocar la UI donde Hive la espera
|
|
315
|
+
mkdir -p ~/.hive/ui
|
|
316
|
+
cp -r ui-dist/* ~/.hive/ui/
|
|
317
|
+
|
|
318
|
+
# 5. Ejecutar
|
|
319
|
+
./hive start
|
|
320
|
+
```
|
|
321
|
+
|
|
322
|
+
El gateway levanta en `http://localhost:18790`. El navegador se abre automáticamente.
|
|
323
|
+
|
|
324
|
+
**Agregar al PATH (opcional)** para ejecutar `hive` desde cualquier directorio:
|
|
325
|
+
|
|
326
|
+
```bash
|
|
327
|
+
sudo mv hive /usr/local/bin/hive
|
|
328
|
+
hive start
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
---
|
|
332
|
+
|
|
333
|
+
#### macOS — Apple Silicon (M1/M2/M3/M4)
|
|
334
|
+
|
|
335
|
+
```bash
|
|
336
|
+
# 1. Descargar
|
|
337
|
+
curl -L -o hive https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-macos-arm64
|
|
338
|
+
|
|
339
|
+
# 2. Dar permisos de ejecución
|
|
340
|
+
chmod +x hive
|
|
341
|
+
|
|
342
|
+
# 3. Quitar la cuarentena de Gatekeeper (necesario en todos los binarios descargados)
|
|
343
|
+
xattr -d com.apple.quarantine hive
|
|
344
|
+
|
|
345
|
+
# 4. Descargar la UI
|
|
346
|
+
curl -L https://github.com/johpaz/hive/releases/latest/download/ui-dist.tar.gz \
|
|
347
|
+
| tar -xz --one-top-level=ui-dist
|
|
348
|
+
mkdir -p ~/.hive/ui && cp -r ui-dist/* ~/.hive/ui/
|
|
349
|
+
|
|
350
|
+
# 5. Ejecutar
|
|
351
|
+
./hive start
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
> **¿Por qué el paso `xattr`?** macOS bloquea binarios descargados de internet que no tienen firma de Apple. El comando `xattr -d com.apple.quarantine` elimina esa restricción. Si lo omites, verás el error: _"hive no se puede abrir porque Apple no puede comprobar que no contiene software malicioso"_.
|
|
355
|
+
>
|
|
356
|
+
> Alternativa: en Finder, haz clic derecho sobre el archivo → **Abrir** → **Abrir** de nuevo en el diálogo. Esto también lo desbloquea.
|
|
357
|
+
|
|
358
|
+
> **Error "there is no application set to open this document"**
|
|
359
|
+
> El binario es un ejecutable de terminal — **no se puede abrir con doble clic desde Finder**. Siempre se ejecuta desde Terminal con `./hive start`. Si aparece ese mensaje al hacer doble clic, ignóralo y usa Terminal.
|
|
360
|
+
>
|
|
361
|
+
> Si después del `xattr` el error persiste, ve a **Ajustes del Sistema → Privacidad y Seguridad** y haz clic en **"Abrir de todas formas"**.
|
|
362
|
+
|
|
363
|
+
**Agregar al PATH:**
|
|
364
|
+
|
|
365
|
+
```bash
|
|
366
|
+
sudo mv hive /usr/local/bin/hive
|
|
367
|
+
hive start
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
---
|
|
371
|
+
|
|
372
|
+
#### macOS — Intel
|
|
373
|
+
|
|
374
|
+
Igual que Apple Silicon pero descarga `macos-x64`:
|
|
375
|
+
|
|
376
|
+
```bash
|
|
377
|
+
curl -L -o hive https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-macos-x64
|
|
378
|
+
chmod +x hive
|
|
379
|
+
xattr -d com.apple.quarantine hive
|
|
380
|
+
curl -L https://github.com/johpaz/hive/releases/latest/download/ui-dist.tar.gz \
|
|
381
|
+
| tar -xz --one-top-level=ui-dist
|
|
382
|
+
mkdir -p ~/.hive/ui && cp -r ui-dist/* ~/.hive/ui/
|
|
383
|
+
./hive start
|
|
384
|
+
```
|
|
385
|
+
|
|
386
|
+
---
|
|
387
|
+
|
|
388
|
+
#### Windows x64
|
|
389
|
+
|
|
390
|
+
**Paso 1 — Descargar el binario**
|
|
391
|
+
|
|
392
|
+
Descarga [`hive-v0.0.3-windows-x64.exe`](https://github.com/johpaz/hive/releases/latest/download/hive-v0.0.3-windows-x64.exe) desde GitHub o desde [hiveagents.io](https://www.hiveagents.io/#installation).
|
|
393
|
+
|
|
394
|
+
**Paso 2 — Windows SmartScreen**
|
|
395
|
+
|
|
396
|
+
Al ejecutar por primera vez, Windows puede mostrar _"Windows protegió tu PC"_. Es normal para binarios sin firma de código.
|
|
397
|
+
|
|
398
|
+
1. Haz clic en **"Más información"**
|
|
399
|
+
2. Luego en **"Ejecutar de todas formas"**
|
|
400
|
+
|
|
401
|
+
**Paso 3 — Descargar la UI**
|
|
402
|
+
|
|
403
|
+
Descarga [`ui-dist.tar.gz`](https://github.com/johpaz/hive/releases/latest/download/ui-dist.tar.gz) y extrae su contenido en:
|
|
404
|
+
|
|
405
|
+
```
|
|
406
|
+
C:\Users\TU_USUARIO\.hive\ui\
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
Puedes usar [7-Zip](https://www.7-zip.org/) o WSL para extraer el `.tar.gz`. Con PowerShell 5+:
|
|
410
|
+
|
|
411
|
+
```powershell
|
|
412
|
+
# Crear la carpeta de destino
|
|
413
|
+
New-Item -ItemType Directory -Force -Path "$env:USERPROFILE\.hive\ui"
|
|
414
|
+
|
|
415
|
+
# Extraer (requiere PowerShell 5+ o Windows 11)
|
|
416
|
+
tar -xzf ui-dist.tar.gz -C "$env:USERPROFILE\.hive\ui"
|
|
417
|
+
```
|
|
418
|
+
|
|
419
|
+
**Paso 4 — Ejecutar**
|
|
420
|
+
|
|
421
|
+
```powershell
|
|
422
|
+
.\hive-v0.0.3-windows-x64.exe start
|
|
423
|
+
```
|
|
424
|
+
|
|
425
|
+
El navegador se abre automáticamente en `http://localhost:18790`.
|
|
426
|
+
|
|
427
|
+
**Agregar al PATH (opcional):**
|
|
428
|
+
|
|
429
|
+
```powershell
|
|
430
|
+
# Mover a una carpeta ya en el PATH, por ejemplo:
|
|
431
|
+
Move-Item .\hive-v0.0.3-windows-x64.exe C:\Windows\System32\hive.exe
|
|
432
|
+
|
|
433
|
+
# Luego ejecutar desde cualquier lugar:
|
|
434
|
+
hive start
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
---
|
|
438
|
+
|
|
439
|
+
#### ¿Dónde se guardan los datos?
|
|
440
|
+
|
|
441
|
+
Todos los datos (base de datos, configuración, logs) se guardan en `~/.hive/`:
|
|
442
|
+
|
|
443
|
+
```
|
|
444
|
+
~/.hive/ # Windows: C:\Users\TU_USUARIO\.hive\
|
|
445
|
+
├── data/
|
|
446
|
+
│ └── hive.db ← SQLite (agentes, conversaciones, config)
|
|
447
|
+
├── ui/ ← archivos de la interfaz web
|
|
448
|
+
├── logs/
|
|
449
|
+
│ └── gateway.log
|
|
450
|
+
└── gateway.pid
|
|
451
|
+
```
|
|
452
|
+
|
|
453
|
+
**Variables de entorno disponibles:**
|
|
454
|
+
|
|
455
|
+
| Variable | Default | Descripción |
|
|
456
|
+
|----------|---------|-------------|
|
|
457
|
+
| `HIVE_HOME` | `~/.hive` | Directorio raíz de datos |
|
|
458
|
+
| `HIVE_PORT` | `18790` | Puerto del gateway |
|
|
459
|
+
| `HIVE_HOST` | `127.0.0.1` | Interfaz de red |
|
|
460
|
+
| `HIVE_UI_DIR` | `~/.hive/ui` | Ruta alternativa para la UI |
|
|
461
|
+
|
|
462
|
+
---
|
|
463
|
+
|
|
464
|
+
#### Uso portable — USB o disco externo
|
|
465
|
+
|
|
466
|
+
El binario standalone es ideal para llevarlo en una USB. Tu agente viaja contigo con toda su memoria, historial y configuración.
|
|
467
|
+
|
|
468
|
+
**Estructura recomendada en la USB:**
|
|
469
|
+
|
|
470
|
+
```
|
|
471
|
+
/usb/
|
|
472
|
+
├── hive ← binario ejecutable
|
|
473
|
+
├── ui/ ← archivos de la UI (extraídos de ui-dist.tar.gz)
|
|
474
|
+
└── datos/ ← directorio de datos (se crea automáticamente)
|
|
475
|
+
├── data/hive.db
|
|
476
|
+
└── ...
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
**Preparar la USB:**
|
|
480
|
+
|
|
481
|
+
```bash
|
|
482
|
+
cp hive-v0.0.3-linux-x64 /media/usb/hive
|
|
483
|
+
chmod +x /media/usb/hive
|
|
484
|
+
cp -r ui-dist/* /media/usb/ui/
|
|
485
|
+
|
|
486
|
+
# (Opcional) llevar los datos existentes
|
|
487
|
+
cp -r ~/.hive/data /media/usb/datos/
|
|
488
|
+
```
|
|
489
|
+
|
|
490
|
+
**Ejecutar desde la USB:**
|
|
491
|
+
|
|
492
|
+
```bash
|
|
493
|
+
# Linux
|
|
494
|
+
HIVE_HOME=/media/usb/datos HIVE_UI_DIR=/media/usb/ui /media/usb/hive start
|
|
495
|
+
|
|
496
|
+
# macOS
|
|
497
|
+
HIVE_HOME=/Volumes/USB/datos HIVE_UI_DIR=/Volumes/USB/ui /Volumes/USB/hive start
|
|
498
|
+
```
|
|
499
|
+
|
|
500
|
+
**Backup de datos:**
|
|
501
|
+
|
|
502
|
+
```bash
|
|
503
|
+
cp ~/.hive/data/hive.db ~/backup-hive-$(date +%Y%m%d).db
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
---
|
|
507
|
+
|
|
508
|
+
### Opción 3 — bun (Para desarrolladores)
|
|
509
|
+
|
|
510
|
+
> Requiere Bun instalado — ver prerequisito al inicio de esta sección.
|
|
511
|
+
|
|
512
|
+
**Instalación global:**
|
|
513
|
+
|
|
514
|
+
```bash
|
|
515
|
+
bun install -g @johpaz/hive
|
|
516
|
+
```
|
|
517
|
+
|
|
518
|
+
> Si instalas con `npm install -g @johpaz/hive` también funciona, pero igualmente necesitas Bun instalado — el CLI lo usa como runtime.
|
|
519
|
+
|
|
520
|
+
**Iniciar:**
|
|
521
|
+
|
|
522
|
+
```bash
|
|
523
|
+
hive start
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
El navegador se abre automáticamente en `http://localhost:18790`. Si es la primera vez, redirige a `/setup` para configurar tu agente.
|
|
527
|
+
|
|
528
|
+
**Configurar desde terminal** (sin browser):
|
|
529
|
+
|
|
530
|
+
```bash
|
|
531
|
+
hive onboard
|
|
532
|
+
```
|
|
533
|
+
|
|
534
|
+
**Comandos útiles:**
|
|
535
|
+
|
|
536
|
+
```bash
|
|
537
|
+
hive status # estado del gateway
|
|
538
|
+
hive logs --follow # logs en tiempo real
|
|
539
|
+
hive stop # detener el gateway
|
|
540
|
+
hive doctor # diagnóstico del sistema
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
**Actualizar a la última versión:**
|
|
544
|
+
|
|
545
|
+
```bash
|
|
546
|
+
bun install -g @johpaz/hive # instala la versión más reciente
|
|
547
|
+
hive stop && hive start # reinicia el gateway
|
|
548
|
+
```
|
|
549
|
+
|
|
550
|
+
**Modo desarrollo** (hot-reload + Vite, para contribuir al proyecto):
|
|
551
|
+
|
|
552
|
+
```bash
|
|
553
|
+
git clone https://github.com/johpaz/hive.git && cd hive
|
|
554
|
+
bun install
|
|
555
|
+
bun run dev
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
**Migrar datos a otro equipo (portable):**
|
|
559
|
+
|
|
560
|
+
El ejecutable de Hive queda instalado globalmente en el sistema, pero **todos los datos viven en `~/.hive/`** — agentes, conversaciones, configuración, API keys. Para llevarlos a otro equipo basta con copiar esa carpeta:
|
|
561
|
+
|
|
562
|
+
```bash
|
|
563
|
+
# En el equipo origen — comprimir los datos
|
|
564
|
+
tar -czf hive-datos.tar.gz -C ~ .hive
|
|
565
|
+
|
|
566
|
+
# Copiar a USB, disco externo o transferir por red
|
|
567
|
+
cp hive-datos.tar.gz /media/usb/
|
|
568
|
+
|
|
569
|
+
# En el equipo destino — instalar Hive y restaurar datos
|
|
570
|
+
bun install -g @johpaz/hive
|
|
571
|
+
tar -xzf /media/usb/hive-datos.tar.gz -C ~
|
|
572
|
+
|
|
573
|
+
# Arrancar — carga tu agente con toda su memoria
|
|
574
|
+
hive start
|
|
575
|
+
```
|
|
576
|
+
|
|
577
|
+
> La carpeta `.hive` contiene la BD SQLite (`data/hive.db`), la UI web (`ui/`) y los logs. No contiene el binario de Hive — ese se reinstala con `bun install -g`.
|
|
578
|
+
|
|
579
|
+
**Backup rápido solo de la BD:**
|
|
580
|
+
|
|
581
|
+
```bash
|
|
582
|
+
cp ~/.hive/data/hive.db ~/backup-hive-$(date +%Y%m%d).db
|
|
583
|
+
```
|
|
584
|
+
|
|
585
|
+
---
|
|
586
|
+
|
|
587
|
+
## Los Cuatro Pilares
|
|
588
|
+
|
|
589
|
+
| Pilar | Descripción |
|
|
590
|
+
|-------|-------------|
|
|
591
|
+
| **Tools** | Herramientas nativas: navegador, sistema de archivos, cron, canvas. |
|
|
592
|
+
| **Skills** | Habilidades incluidas: búsqueda web, shell, memoria, HTTP client, file manager. |
|
|
593
|
+
| **MCP** | Compatible con Model Context Protocol para extender funcionalidades. |
|
|
594
|
+
| **Ética** | Límites claros definidos en ETHICS.md — tu agente siempre sabe qué puede y qué no puede hacer. |
|
|
595
|
+
|
|
596
|
+
---
|
|
597
|
+
|
|
598
|
+
## Arquitectura técnica
|
|
599
|
+
|
|
600
|
+
Hive usa un **Native Agent Loop** propio — sin dependencias de LangGraph ni LangChain. Todo corre sobre Bun + SQLite con cero abstracciones intermedias.
|
|
601
|
+
|
|
602
|
+

|
|
603
|
+
|
|
604
|
+
### Loop principal
|
|
605
|
+
|
|
606
|
+
```
|
|
607
|
+
mensaje entrante
|
|
608
|
+
→ Context Compiler (compileContext)
|
|
609
|
+
→ callLLM()
|
|
610
|
+
→ [executeTool() → callLLM()]*
|
|
611
|
+
→ respuesta al usuario
|
|
612
|
+
```
|
|
613
|
+
|
|
614
|
+
---
|
|
615
|
+
|
|
616
|
+
### FASE 3 — Context Compiler
|
|
617
|
+
|
|
618
|
+
El Context Compiler es el componente central del motor. Se ejecuta antes de cada llamada al modelo y ensambla una "vista mínima" del contexto consultando SQLite directamente. Implementa cuatro estrategias de Context Engineering:
|
|
619
|
+
|
|
620
|
+
**3.1 — Selección de historial (SELECCIONAR)**
|
|
621
|
+
- Conversaciones cortas (< 20 mensajes): pasa todos los mensajes
|
|
622
|
+
- Conversaciones largas: usa el resumen de la tabla `summaries` + los últimos N mensajes recientes
|
|
623
|
+
- Nunca pasa la conversación cruda completa a modelos con ventana chica
|
|
624
|
+
|
|
625
|
+
**3.2 — Scratchpad (ESCRIBIR)**
|
|
626
|
+
- Carga las notas persistentes del thread actual desde la tabla `scratchpad`
|
|
627
|
+
- Las inyecta en el system prompt como "Información conocida sobre esta conversación"
|
|
628
|
+
- El agente puede escribir al scratchpad usando la tool `save_note(key, value)`
|
|
629
|
+
|
|
630
|
+
**3.3 — Playbook del ACE (SELECCIONAR)**
|
|
631
|
+
- Busca con FTS5 en la tabla `playbook` usando keywords del mensaje del usuario
|
|
632
|
+
- Inyecta máximo 5 reglas relevantes (`active=1`, `helpful_count > harmful_count`)
|
|
633
|
+
- Las reglas son aprendidas automáticamente por el Curator del ACE
|
|
634
|
+
|
|
635
|
+
**3.4 — Selección de tools en tres niveles (SELECCIONAR)**
|
|
636
|
+
|
|
637
|
+
| Nivel | Operación |
|
|
638
|
+
|-------|-----------|
|
|
639
|
+
| 1 — Catálogo | `collectNativeTools()` + tools de MCP activos |
|
|
640
|
+
| 2 — Agente | `filterToolsByAgent()` — filtra por `tools_json` del agente. `NULL` = todas permitidas |
|
|
641
|
+
| 3 — Turno | `selectToolLoadout()` — ALWAYS_INCLUDE + scoring por keywords del mensaje (máx. 20) |
|
|
642
|
+
|
|
643
|
+
El límite de 20 tools por turno es crítico para modelos locales con recursos limitados. Las tools del `ALWAYS_INCLUDE` siempre están disponibles sin consumir slots opcionales: `cron_add/list/remove/edit`, `project_create/task_create/task_update`, `read/write/edit`, `save_note`, `notify`, `report_progress`, `create_agent`.
|
|
644
|
+
|
|
645
|
+
**3.5 — Ética (capa constitucional)**
|
|
646
|
+
- Carga todas las reglas de la tabla `ethics` — sin filtrar, sin comprimir
|
|
647
|
+
- Siempre es el primer bloque del system prompt, en toda llamada al modelo
|
|
648
|
+
|
|
649
|
+
**Orden de ensamblaje del contexto:**
|
|
650
|
+
|
|
651
|
+
```
|
|
652
|
+
[system prompt]
|
|
653
|
+
1. Reglas de ética (completas, siempre)
|
|
654
|
+
2. Identidad del agente (agents.system_prompt + description)
|
|
655
|
+
3. Hive Capabilities Manifest (hive_capabilities table)
|
|
656
|
+
4. Perfil del usuario (users table)
|
|
657
|
+
5. Reglas del playbook relevantes (FTS5, máx. 5)
|
|
658
|
+
6. Notas del scratchpad (filtradas por thread_id)
|
|
659
|
+
7. Entorno (agent_id, thread_id, fecha/hora local)
|
|
660
|
+
|
|
661
|
+
[messages]
|
|
662
|
+
8. Resumen del historial (si la conversación es larga)
|
|
663
|
+
9. Mensajes recientes (últimos N)
|
|
664
|
+
|
|
665
|
+
[tools]
|
|
666
|
+
10. Tools filtradas en tres niveles
|
|
667
|
+
```
|
|
668
|
+
|
|
669
|
+
---
|
|
670
|
+
|
|
671
|
+
### FASE 4 — Proyectos, Tareas y Workers
|
|
672
|
+
|
|
673
|
+
El Coordinador puede descomponer problemas complejos en proyectos con tareas paralelas ejecutadas por workers autónomos.
|
|
674
|
+
|
|
675
|
+
**4.1 — Decisión simple vs proyecto**
|
|
676
|
+
|
|
677
|
+
El modelo decide en su system prompt:
|
|
678
|
+
- **Tarea simple** → el Coordinador la resuelve directamente o despacha a un worker existente
|
|
679
|
+
- **Tarea compleja** → crea un proyecto con subtareas y dependencias
|
|
680
|
+
|
|
681
|
+
**4.2 — Creación de proyecto y asignación de workers**
|
|
682
|
+
|
|
683
|
+
1. `project_create` — registra el objetivo del proyecto
|
|
684
|
+
2. `task_create` — crea cada subtarea con dependencias
|
|
685
|
+
3. `find_agent` — busca por FTS5 sobre `name+description` del agente vs la tarea
|
|
686
|
+
- Si existe un worker compatible → `assign_task`
|
|
687
|
+
- Si no → `create_agent` con system prompt y tools necesarios, luego `assign_task`
|
|
688
|
+
|
|
689
|
+
**4.3 — Ejecución respetando dependencias**
|
|
690
|
+
|
|
691
|
+
- Tareas sin dependencias (o con dependencias ya `completed`) se ejecutan primero
|
|
692
|
+
- Tareas independientes entre sí corren en paralelo (`Promise.all`)
|
|
693
|
+
- Si una tarea falla: el Coordinador puede reintentar, reasignar a otro agente, o marcar el proyecto como `failed`
|
|
694
|
+
|
|
695
|
+
**4.4 — Contexto aislado por worker (AISLAR)**
|
|
696
|
+
|
|
697
|
+
Cada worker recibe **solo** lo necesario para su tarea:
|
|
698
|
+
- Reglas de ética + su system prompt propio
|
|
699
|
+
- Descripción de la tarea asignada
|
|
700
|
+
- Resultados de las tareas de las que depende
|
|
701
|
+
|
|
702
|
+
El worker **no** recibe la conversación completa del usuario. Esto mantiene el contexto mínimo y evita contaminación entre agentes.
|
|
703
|
+
|
|
704
|
+
---
|
|
705
|
+
|
|
706
|
+
### FASE 5 — ACE (Adaptive Context Engine)
|
|
707
|
+
|
|
708
|
+
El ACE convierte a Hive en un sistema que aprende automáticamente de sus propias ejecuciones.
|
|
709
|
+
|
|
710
|
+
**5.1 — Tracer (Generator)**
|
|
711
|
+
|
|
712
|
+
Después de cada ejecución se guarda automáticamente en la tabla `traces`:
|
|
713
|
+
- Qué agente, qué tool, qué recibió, qué produjo
|
|
714
|
+
- Si fue exitoso, cuánto tardó, cuántos tokens consumió
|
|
715
|
+
|
|
716
|
+
Pasivo — no agrega latencia al usuario.
|
|
717
|
+
|
|
718
|
+
**5.2 — Reflector (análisis periódico)**
|
|
719
|
+
|
|
720
|
+
Se ejecuta en segundo plano, nunca en el flujo del usuario:
|
|
721
|
+
- Trigger: cada 20 trazas nuevas, o por cron periódico
|
|
722
|
+
- Le pide al modelo que analice las trazas: patrones de éxito, fallos repetidos, oportunidades de mejora
|
|
723
|
+
- Guarda los insights en la tabla `reflections` (incluyendo `ethics_violation` con prioridad máxima)
|
|
724
|
+
|
|
725
|
+
**5.3 — Curator (playbook + poda de agentes)**
|
|
726
|
+
|
|
727
|
+
Transforma insights en reglas operativas:
|
|
728
|
+
- Si ya existe una regla similar → incrementa `helpful_count` o `harmful_count`
|
|
729
|
+
- Si es nueva → la inserta con `confidence` proporcional a cuántas trazas la respaldan
|
|
730
|
+
- Si `harmful_count > helpful_count` → marca la regla como `active=0`
|
|
731
|
+
- Si hay reglas duplicadas o contradictorias → fusiona o poda
|
|
732
|
+
|
|
733
|
+
Poda de agentes:
|
|
734
|
+
- Workers sin actividad por más de 14 días → `status='archived'`
|
|
735
|
+
- Workers con tasa de fallo alta → `archived` + regla en playbook explicando por qué fallaba
|
|
736
|
+
- Workers duplicados (skills similares) → archiva el menos exitoso
|
|
737
|
+
|
|
738
|
+
**Ciclo completo del ACE:**
|
|
739
|
+
|
|
740
|
+
```
|
|
741
|
+
Agentes ejecutan tareas
|
|
742
|
+
→ trazas en SQLite
|
|
743
|
+
→ Reflector analiza periódicamente
|
|
744
|
+
→ Curator actualiza playbook + poda agentes
|
|
745
|
+
→ Context Compiler inyecta reglas
|
|
746
|
+
→ Agentes ejecutan mejor la próxima vez
|
|
747
|
+
```
|
|
748
|
+
|
|
749
|
+
---
|
|
750
|
+
|
|
751
|
+
### FASE 6 — Compaction (compresión de historial)
|
|
752
|
+
|
|
753
|
+
Mantiene el contexto dentro del presupuesto de tokens del modelo.
|
|
754
|
+
|
|
755
|
+
**Compresión de conversación (COMPRIMIR)**
|
|
756
|
+
- Trigger: cuando el token count acumulado del thread supera el 60% de la ventana del modelo
|
|
757
|
+
- Toma todos los mensajes excepto los últimos 5
|
|
758
|
+
- El modelo los resume preservando: datos del usuario, decisiones tomadas, resultados de tools, contexto para continuar
|
|
759
|
+
- El resumen se guarda en la tabla `summaries`; los mensajes originales permanecen como historial
|
|
760
|
+
|
|
761
|
+
**Tool result clearing**
|
|
762
|
+
- Resultados de tools con más de N turnos de antigüedad → reemplazados por un resumen corto
|
|
763
|
+
- Reduce tokens sin perder el registro de que la tool se ejecutó
|
|
764
|
+
|
|
765
|
+
---
|
|
766
|
+
|
|
767
|
+
### Providers LLM soportados
|
|
768
|
+
|
|
769
|
+
Hive llama directamente a los SDKs oficiales de cada provider:
|
|
770
|
+
|
|
771
|
+
| Provider | SDK | Modelos ejemplo |
|
|
772
|
+
|----------|-----|-----------------|
|
|
773
|
+
| Google Gemini | `@google/genai` | gemini-2.5-flash, gemini-2.0-flash |
|
|
774
|
+
| Anthropic | `@anthropic-ai/sdk` | claude-sonnet-4-6, claude-opus-4-6 |
|
|
775
|
+
| OpenAI | `openai` | gpt-4o, gpt-4.1 |
|
|
776
|
+
| Groq | `openai` (compat) | llama-3.3-70b, mixtral-8x7b |
|
|
777
|
+
| Mistral AI | `openai` (compat) | mistral-large, codestral |
|
|
778
|
+
| DeepSeek | `openai` (compat) | deepseek-chat, deepseek-reasoner |
|
|
779
|
+
| Kimi (Moonshot) | `openai` (compat) | moonshot-v1-8k, moonshot-v1-128k |
|
|
780
|
+
| Ollama | `openai` (compat) | llama3, qwen2.5, etc. |
|
|
781
|
+
| OpenRouter | `openai` (compat) | cualquier modelo de la plataforma |
|
|
782
|
+
|
|
783
|
+
### Onboarding → System Prompt
|
|
784
|
+
|
|
785
|
+
Al completar el onboarding, el campo `agents.system_prompt` se genera automáticamente con el nombre, descripción y tono del agente. El tono puede ser: `friendly`, `professional`, `direct` o `casual`.
|
|
786
|
+
|
|
787
|
+
---
|
|
788
|
+
|
|
789
|
+
## Browser Automation
|
|
790
|
+
|
|
791
|
+
Hive incluye 7 tools de browser automation para navegar, extraer datos, interactuar y automatizar sitios web con JavaScript rendering completo.
|
|
792
|
+
|
|
793
|
+
Usa **Puppeteer + Chromium** — el browser se descarga y gestiona automáticamente al primer uso. No requiere instalación manual ni configuración extra.
|
|
794
|
+
|
|
795
|
+
### Tools disponibles
|
|
796
|
+
|
|
797
|
+
| Tool | Descripción |
|
|
798
|
+
|------|-------------|
|
|
799
|
+
| `browser_navigate` | Navegar a URL y obtener contenido renderizado (soporta JS) |
|
|
800
|
+
| `browser_screenshot` | Capturar screenshot de la página (base64 PNG) |
|
|
801
|
+
| `browser_click` | Hacer click en elemento (CSS selector) |
|
|
802
|
+
| `browser_type` | Escribir texto en campos de formulario |
|
|
803
|
+
| `browser_extract` | Extraer datos con selectores CSS o XPath |
|
|
804
|
+
| `browser_script` | Ejecutar JavaScript arbitrario en el contexto de la página |
|
|
805
|
+
| `browser_wait` | Esperar por elemento o condición antes de continuar |
|
|
806
|
+
|
|
807
|
+
Todas las tools de browser están **activadas por defecto**. Si el browser no está disponible, las tools fallan gracefully sin afectar el resto de Hive.
|
|
808
|
+
|
|
809
|
+
### Sin configuración
|
|
810
|
+
|
|
811
|
+
Al primer uso, Puppeteer descarga automáticamente Chromium en el directorio de caché del sistema. No requiere instalar Chrome, Chromium ni ningún browser externo.
|
|
812
|
+
|
|
813
|
+
- ✅ **Primera ejecución**: Puppeteer descarga Chromium (~170 MB) automáticamente
|
|
814
|
+
- ✅ **Siguientes ejecuciones**: reutiliza el Chromium ya descargado (instantáneo)
|
|
815
|
+
- ⚠️ **Sin internet al primer uso**: las browser tools fallan gracefully hasta que el browser esté disponible
|
|
816
|
+
|
|
817
|
+
### Ejemplo de uso
|
|
818
|
+
|
|
819
|
+
```typescript
|
|
820
|
+
// Navegar a una página con JavaScript rendering
|
|
821
|
+
const result = await browser_navigate({
|
|
822
|
+
url: "https://example.com",
|
|
823
|
+
waitFor: ".content-loaded",
|
|
824
|
+
timeout: 30000,
|
|
825
|
+
});
|
|
826
|
+
|
|
827
|
+
// Extraer datos con selector CSS
|
|
828
|
+
const links = await browser_extract({
|
|
829
|
+
url: "https://example.com",
|
|
830
|
+
selector: "a[href]",
|
|
831
|
+
attribute: "href",
|
|
832
|
+
all: true,
|
|
833
|
+
});
|
|
834
|
+
|
|
835
|
+
// Tomar screenshot
|
|
836
|
+
const screenshot = await browser_screenshot({
|
|
837
|
+
url: "https://example.com",
|
|
838
|
+
fullPage: true,
|
|
839
|
+
});
|
|
840
|
+
|
|
841
|
+
// Ejecutar JavaScript
|
|
842
|
+
const data = await browser_script({
|
|
843
|
+
script: `document.querySelector('.price').textContent`,
|
|
844
|
+
});
|
|
845
|
+
```
|
|
846
|
+
|
|
847
|
+
---
|
|
848
|
+
|
|
849
|
+
## Seguridad
|
|
850
|
+
|
|
851
|
+
| Tema | Resumen |
|
|
852
|
+
|------|---------|
|
|
853
|
+
| **Autenticación** | Define `HIVE_AUTH_TOKEN` siempre en producción. Sin él, cualquiera que alcance el puerto puede usar el dashboard. |
|
|
854
|
+
| **Red** | En VPS o servidores, pon Hive detrás de un reverse proxy con HTTPS y abre solo el puerto `18790`. |
|
|
855
|
+
| **Container** | El proceso corre como `root` dentro del contenedor (sin `--privileged`). Migración a usuario no-root pendiente en versiones futuras. |
|
|
856
|
+
| **Datos** | Todo se almacena en el volumen `hive-data` / `~/.hive/`. No se envía telemetría a servidores externos. Las API keys se guardan cifradas. |
|
|
857
|
+
|
|
858
|
+
Consulta [SECURITY.md](SECURITY.md) para instrucciones detalladas de configuración, backup y hardening.
|
|
859
|
+
|
|
860
|
+
---
|
|
861
|
+
|
|
862
|
+
## Desarrollo
|
|
863
|
+
|
|
864
|
+
```bash
|
|
865
|
+
# Clonar el repo
|
|
866
|
+
git clone https://github.com/johpaz/hive.git
|
|
867
|
+
cd hive
|
|
868
|
+
|
|
869
|
+
# Instalar dependencias
|
|
870
|
+
bun install
|
|
871
|
+
|
|
872
|
+
# Modo desarrollo
|
|
873
|
+
bun run dev
|
|
874
|
+
```
|
|
875
|
+
|
|
876
|
+
---
|
|
877
|
+
|
|
878
|
+
## Contribuir
|
|
879
|
+
|
|
880
|
+
¿Quieres agregar una nueva funcionalidad? Consulta [CONTRIBUTING.md](CONTRIBUTING.md) para saber exactamente dónde hacer tu cambio.
|
|
881
|
+
|
|
882
|
+
| Tipo de cambio | Ubicación |
|
|
883
|
+
|---------------|-----------|
|
|
884
|
+
| Canal nuevo | `packages/core/src/channels/` + registrar en `manager.ts` |
|
|
885
|
+
| Tool nativa | `packages/core/src/tools/` + registrar en `native-tools.ts` |
|
|
886
|
+
| Skill nueva | `packages/skills/src/` |
|
|
887
|
+
| MCP nuevo | `packages/core/src/mcp/` |
|
|
888
|
+
| Capability en el manifest | tabla `hive_capabilities` vía `seed.ts` |
|
|
889
|
+
| Mejora al CLI | `packages/cli/src/commands/` |
|
|
890
|
+
|
|
891
|
+
Todo en un PR. Una revisión. Un merge.
|
|
892
|
+
|
|
893
|
+
---
|
|
894
|
+
|
|
895
|
+
## Links
|
|
896
|
+
|
|
897
|
+
- 🌐 [hiveagents.io](https://hiveagents.io)
|
|
898
|
+
- 💬 [Discord](https://discord.gg/hive)
|
|
899
|
+
- 📱 [Telegram](https://t.me/hive_agents)
|
|
900
|
+
|
|
901
|
+
---
|
|
902
|
+
|
|
903
|
+
## Licencia
|
|
904
|
+
|
|
905
|
+
MIT © 2024-2026 Hive Team — Construido con ❤️ desde Colombia
|