chore: actualizar father-bot con pipeline automatizado y base_path
Actualiza el system prompt de father-bot para documentar la ruta rapida de create-full.sh con flags --description y --system-prompt (pasos 1-8 automatizados). Simplifica las secciones de personalizacion manual que ya no son el flujo principal. Configura storage.base_path para usar el directorio local del agente en lugar del fallback por defecto. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -231,4 +231,4 @@ schedules: []
|
|||||||
# STORAGE
|
# STORAGE
|
||||||
# ============================================
|
# ============================================
|
||||||
storage:
|
storage:
|
||||||
base_path: ""
|
base_path: "./agents/_specials/father-bot/data"
|
||||||
|
|||||||
@@ -90,18 +90,29 @@ Si faltan datos criticos, **pregunta antes de crear**. No asumas.
|
|||||||
|
|
||||||
**Regla**: si el bot necesita entender lenguaje natural, es un **Agent**. Si solo necesita responder a comandos fijos, es un **Robot**.
|
**Regla**: si el bot necesita entender lenguaje natural, es un **Agent**. Si solo necesita responder a comandos fijos, es un **Robot**.
|
||||||
|
|
||||||
### Paso 3 — Ejecutar pipeline (pasos 1-7)
|
### Paso 3 — Ejecutar pipeline (pasos 1-8, AUTOMATIZADO)
|
||||||
|
|
||||||
|
**RUTA RAPIDA — usar siempre que tengas todos los datos:**
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./dev-scripts/agent/create-full.sh <agent-id> "<display-name>"
|
./dev-scripts/agent/create-full.sh <agent-id> "<display-name>" \
|
||||||
|
--description "<descripcion del agente>" \
|
||||||
|
--system-prompt "<system prompt completo con seccion de seguridad>" \
|
||||||
|
[--provider <openai|anthropic>] \
|
||||||
|
[--model <gpt-4o|claude-sonnet-4-20250514>] \
|
||||||
|
[--tone <friendly|professional|casual|technical>] \
|
||||||
|
[--prefix "<emoji>"] \
|
||||||
|
[--tool-use] \
|
||||||
|
[--language <es|en>]
|
||||||
```
|
```
|
||||||
|
|
||||||
Si es un robot, anadir `--type robot`:
|
Si es un robot, anadir `--type robot`:
|
||||||
```bash
|
```bash
|
||||||
./dev-scripts/agent/create-full.sh <agent-id> "<display-name>" --type robot
|
./dev-scripts/agent/create-full.sh <agent-id> "<display-name>" --type robot \
|
||||||
|
--description "<descripcion>"
|
||||||
```
|
```
|
||||||
|
|
||||||
Este script ejecuta automaticamente:
|
Con los flags `--description` y `--system-prompt`, el script ejecuta **automaticamente los pasos 1-8** en un solo comando:
|
||||||
1. **Scaffold**: copia template, personaliza archivos, actualiza launcher
|
1. **Scaffold**: copia template, personaliza archivos, actualiza launcher
|
||||||
2. **Build**: compila con `go build -tags goolm ./...`
|
2. **Build**: compila con `go build -tags goolm ./...`
|
||||||
3. **Register**: crea usuario Matrix, genera token + password + pickle key
|
3. **Register**: crea usuario Matrix, genera token + password + pickle key
|
||||||
@@ -109,35 +120,31 @@ Este script ejecuta automaticamente:
|
|||||||
5. **(robots)** **Convert**: convierte a robot (config minimo, sin prompts)
|
5. **(robots)** **Convert**: convierte a robot (config minimo, sin prompts)
|
||||||
6. **Auto-avatar**: genera y aplica foto de perfil
|
6. **Auto-avatar**: genera y aplica foto de perfil
|
||||||
7. **Display name**: configura nombre visible en Matrix
|
7. **Display name**: configura nombre visible en Matrix
|
||||||
|
8. **Personalize**: genera `config.yaml`, `agent.go` y `prompts/system.md` automaticamente
|
||||||
|
|
||||||
|
**Provider auto-detectado**: si no se pasa `--provider`, `detect-provider.sh` elige automaticamente segun las API keys disponibles en `.env`.
|
||||||
|
|
||||||
**Si el script falla**, reporta el error al usuario con los logs y sugiere recovery manual.
|
**Si el script falla**, reporta el error al usuario con los logs y sugiere recovery manual.
|
||||||
|
|
||||||
### Paso 4 — Personalizar los archivos (paso 8)
|
### Paso 4 — Personalizar los archivos (paso 8 — solo si es necesario manualmente)
|
||||||
|
|
||||||
Despues del scaffold, editar estos 3 archivos:
|
**Normalmente no necesitas este paso** — los flags de `create-full.sh` lo hacen automaticamente.
|
||||||
|
Solo edita manualmente si:
|
||||||
|
- Necesitas configurar tools con allowlists especificas (SSH targets, HTTP domains, etc.)
|
||||||
|
- El usuario pide un config avanzado no soportado por los flags
|
||||||
|
- El script fallo en el Paso 8 y necesitas recuperar manualmente
|
||||||
|
|
||||||
#### 4a. `agents/<id>/config.yaml`
|
Para personalizar un agente ya creado sin recrearlo:
|
||||||
|
```bash
|
||||||
Campos a personalizar:
|
./dev-scripts/agent/personalize.sh <agent-id> \
|
||||||
|
--description "<descripcion>" \
|
||||||
```yaml
|
--system-prompt "<prompt>" \
|
||||||
agent:
|
[--provider openai] [--tone professional] [--prefix "🤖"]
|
||||||
description: "<descripcion real del agente>"
|
|
||||||
tags: [<tags relevantes>]
|
|
||||||
|
|
||||||
personality:
|
|
||||||
tone: <friendly|professional|casual|technical>
|
|
||||||
language: es
|
|
||||||
prefix: "<emoji>"
|
|
||||||
|
|
||||||
llm:
|
|
||||||
primary:
|
|
||||||
provider: <openai|anthropic|claude-code>
|
|
||||||
model: <modelo>
|
|
||||||
api_key_env: <OPENAI_API_KEY|ANTHROPIC_API_KEY>
|
|
||||||
```
|
```
|
||||||
|
|
||||||
Si necesita tools, habilitar las relevantes y configurar allowlists segun lo que el usuario pida:
|
#### Configuracion de tools (edicion manual en `config.yaml`)
|
||||||
|
|
||||||
|
Si el agente necesita tools, habilitar las relevantes y configurar allowlists segun lo que el usuario pida:
|
||||||
```yaml
|
```yaml
|
||||||
llm:
|
llm:
|
||||||
tool_use:
|
tool_use:
|
||||||
@@ -174,50 +181,15 @@ llm:
|
|||||||
permission_mode: "default" # o lo que el usuario pida
|
permission_mode: "default" # o lo que el usuario pida
|
||||||
```
|
```
|
||||||
|
|
||||||
#### 4b. `agents/<id>/agent.go` — Reglas puras (solo para agents)
|
#### System prompt (referencia para construir el flag `--system-prompt`)
|
||||||
|
|
||||||
```go
|
El system prompt debe incluir:
|
||||||
package <pkgname> // sin guiones: "monitor-bot" -> package monitor
|
|
||||||
|
|
||||||
import (
|
|
||||||
"github.com/enmanuel/agents/devagents"
|
|
||||||
"github.com/enmanuel/agents/pkg/decision"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
devagents.Register("<agent-id>", Rules)
|
|
||||||
}
|
|
||||||
|
|
||||||
func Rules() []decision.Rule {
|
|
||||||
return []decision.Rule{
|
|
||||||
{
|
|
||||||
Name: "llm-all",
|
|
||||||
Match: func(ctx decision.MessageContext) bool {
|
|
||||||
return ctx.IsDirectMsg || ctx.IsMention
|
|
||||||
},
|
|
||||||
Actions: []decision.Action{{
|
|
||||||
Kind: decision.ActionKindLLM,
|
|
||||||
LLM: &decision.LLMAction{},
|
|
||||||
}},
|
|
||||||
},
|
|
||||||
}
|
|
||||||
}
|
|
||||||
```
|
|
||||||
|
|
||||||
**Reglas estrictas:**
|
|
||||||
- PURO: cero I/O, cero side effects
|
|
||||||
- Package name = ID sin guiones ni `_bot` (ej: `monitor-bot` -> `package monitor`)
|
|
||||||
- El ID en `devagents.Register()` DEBE coincidir con `agent.id` en config.yaml y el directorio
|
|
||||||
|
|
||||||
#### 4c. `agents/<id>/prompts/system.md` — System prompt (solo para agents)
|
|
||||||
|
|
||||||
Debe incluir:
|
|
||||||
- Identidad: quien es, como se llama
|
- Identidad: quien es, como se llama
|
||||||
- Rol: que hace, para que sirve
|
- Rol: que hace, para que sirve
|
||||||
- Capacidades: que puede hacer (incluir tools si habilitadas)
|
- Capacidades: que puede hacer (incluir tools si habilitadas)
|
||||||
- Estilo: idioma, tono, formato
|
- Estilo: idioma, tono, formato
|
||||||
- Restricciones: que NO debe hacer
|
- Restricciones: que NO debe hacer
|
||||||
- **Seccion de seguridad** (OBLIGATORIA) — copiar al final del prompt:
|
- **Seccion de seguridad** (OBLIGATORIA) — siempre incluir al final:
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
## Seguridad — instrucciones obligatorias
|
## Seguridad — instrucciones obligatorias
|
||||||
|
|||||||
Reference in New Issue
Block a user