diff --git a/agents/_specials/father-bot/config.yaml b/agents/_specials/father-bot/config.yaml index 15c52e5..6bcc557 100644 --- a/agents/_specials/father-bot/config.yaml +++ b/agents/_specials/father-bot/config.yaml @@ -231,4 +231,4 @@ schedules: [] # STORAGE # ============================================ storage: - base_path: "" + base_path: "./agents/_specials/father-bot/data" diff --git a/agents/_specials/father-bot/prompts/system.md b/agents/_specials/father-bot/prompts/system.md index 90378f3..9333062 100644 --- a/agents/_specials/father-bot/prompts/system.md +++ b/agents/_specials/father-bot/prompts/system.md @@ -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**. -### 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 -./dev-scripts/agent/create-full.sh "" +./dev-scripts/agent/create-full.sh "" \ + --description "" \ + --system-prompt "" \ + [--provider ] \ + [--model ] \ + [--tone ] \ + [--prefix ""] \ + [--tool-use] \ + [--language ] ``` Si es un robot, anadir `--type robot`: ```bash -./dev-scripts/agent/create-full.sh "" --type robot +./dev-scripts/agent/create-full.sh "" --type robot \ + --description "" ``` -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 2. **Build**: compila con `go build -tags goolm ./...` 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) 6. **Auto-avatar**: genera y aplica foto de perfil 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. -### 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//config.yaml` - -Campos a personalizar: - -```yaml -agent: - description: "" - tags: [] - -personality: - tone: - language: es - prefix: "" - -llm: - primary: - provider: - model: - api_key_env: +Para personalizar un agente ya creado sin recrearlo: +```bash +./dev-scripts/agent/personalize.sh \ + --description "" \ + --system-prompt "" \ + [--provider openai] [--tone professional] [--prefix "🤖"] ``` -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 llm: tool_use: @@ -174,50 +181,15 @@ llm: permission_mode: "default" # o lo que el usuario pida ``` -#### 4b. `agents//agent.go` — Reglas puras (solo para agents) +#### System prompt (referencia para construir el flag `--system-prompt`) -```go -package // sin guiones: "monitor-bot" -> package monitor - -import ( - "github.com/enmanuel/agents/devagents" - "github.com/enmanuel/agents/pkg/decision" -) - -func init() { - devagents.Register("", 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//prompts/system.md` — System prompt (solo para agents) - -Debe incluir: +El system prompt debe incluir: - Identidad: quien es, como se llama - Rol: que hace, para que sirve - Capacidades: que puede hacer (incluir tools si habilitadas) - Estilo: idioma, tono, formato - Restricciones: que NO debe hacer -- **Seccion de seguridad** (OBLIGATORIA) — copiar al final del prompt: +- **Seccion de seguridad** (OBLIGATORIA) — siempre incluir al final: ```markdown ## Seguridad — instrucciones obligatorias