# Instrucciones, aprobaciones y configuración

Define preferencias de redacción, elige cuándo pregunta el asistente y configura reglas reutilizables para el proyecto.

Dale al asistente preferencias de redacción claras y elige cómo gestiona los cambios. Las instrucciones describen el trabajo que quieres; los controles de aprobación deciden qué acciones de las herramientas pueden seguir adelante.

![Ajustes → Asistente de IA → Instrucciones. Define el modelo predeterminado, escribe tus instrucciones y usa Guardar las instrucciones. La captura de páginas del PDF está debajo del campo de texto.](https://cdn.oleafly.com/images/screenshots/desktop/docs/settings-instructions-dark-window-v2.png#view=519,89,883,724)

## Modelo predeterminado del chat

Abre **Ajustes → Asistente de IA → Instrucciones**. Elige **Modelo predeterminado del chat** para definir el modelo que se usa en un chat nuevo. La lista contiene los modelos habilitados de tus proveedores configurados. Aun así, puedes cambiar el modelo en una conversación concreta.

## Instrucciones personalizadas

Escribe tus preferencias en **Instrucciones personalizadas** y haz clic en **Guardar las instrucciones**. Un buen punto de partida para un manuscrito de investigación es:

```text title="Instrucciones de escritura de ejemplo"
Use British English and preserve the terminology already used in the paper.
Keep citation keys, labels, equations, and numerical results unchanged unless
I explicitly ask you to edit them.
When a statement needs evidence, mark it for a source check. Do not invent
references or results.
Explain substantive changes briefly so I can review them.
```

Haz que estas instrucciones sean lo bastante concretas para guiar una revisión sin repetir todo el resumen de tu proyecto. Complementan el comportamiento integrado del asistente y no cambian los permisos de sus herramientas.

## Guardar las instrucciones

Haz clic en **Guardar las instrucciones** después de editar. El indicador **Guardado** confirma que se han guardado. Una edición sin guardar en este campo no es tu nuevo valor predeterminado.

## Permitir la captura de páginas del PDF para la IA

Activa **Permitir la captura de páginas del PDF para la IA** para que el asistente pueda inspeccionar las páginas renderizadas con un modelo con visión. La herramienta `verify_pdf_pages` rasteriza las páginas compiladas para comprobar la maquetación. Desactiva el control cuando no quieras que se envíen imágenes de las páginas al proveedor configurado.

## Inspecciona el catálogo de herramientas

Expande **Ahora mismo el asistente admite estas herramientas** en la pestaña Instrucciones. Úsalo para ver el trabajo que puede hacer el asistente y pide después un resultado, como compilar una sección, inspeccionar el PDF o encontrar una referencia sin resolver.

## Perfiles

![Ajustes → Asistente de IA → Perfiles. Crear un perfil está encima de la lista; los controles de editar y eliminar están junto a cada perfil.](https://cdn.oleafly.com/images/screenshots/desktop/docs/settings-personas-dark-window-v2.png#view=519,89,883,902)

Un perfil es un conjunto de instrucciones con nombre. Crea uno en **Ajustes → Asistente de IA → Perfiles** y selecciónalo después en el campo de mensaje del chat para un tipo concreto de trabajo. Por ejemplo, mantén un perfil conciso de corrección y otro distinto de revisor.

Un perfil activo aporta el conjunto de instrucciones de la conversación en lugar del texto de las instrucciones personalizadas predeterminadas. Incluye las preferencias permanentes que el perfil también necesite. Un perfil cambia las pautas; no concede permisos a las herramientas.

## Elige un modo de aprobación

![Abre el menú de aprobación bajo el campo de mensaje. El modo seleccionado aparece con una marca de verificación; elige la política que quieras para tu proyecto.](https://cdn.oleafly.com/images/screenshots/desktop/docs/llama-approval-menu-dark-window-v2.png#view=1448,770,465,305)

Usa el selector de aprobación del campo de mensaje del chat. La elección se guarda para el proyecto actual.

| Modo | Comportamiento |
|---|---|
| **Pedir aprobación** | Las herramientas clasificadas como de lectura pueden ejecutarse; las demás acciones preguntan antes |
| **Aprobar por mí** | Las herramientas de lectura y de red pueden ejecutarse; los cambios de archivos y los comandos de shell preguntan antes |
| **Acceso completo** | Las acciones de las herramientas pueden seguir adelante sin pedir aprobación, salvo las herramientas que bloquea una regla `deny` |
| **Personalizado** | Se aplican las reglas `allow` y `deny` guardadas, y las herramientas sin regla usan la política de riesgo estándar |

**Aprobar por mí** es el valor predeterminado. Algunas herramientas tienen sus propias comprobaciones dentro de una operación. Compilar e inspeccionar un PDF se tratan de forma distinta a escribir un archivo fuente o ejecutar un comando de shell.

## Aprueba una acción propuesta

Lee el nombre de la herramienta y la operación propuesta en la tarjeta de aprobación. Aprueba para ejecutar esa acción, o recházala para dejar sin aplicar el cambio propuesto. Continúa la conversación con una instrucción más acotada si la acción solicitada es demasiado amplia.

## Siempre en este proyecto

En el modo **Personalizado**, usa **Siempre en este proyecto** en una petición de aprobación para guardar una regla para esa herramienta. Comprueba el modo seleccionado cuando esperes que una regla afecte a la siguiente ejecución.

## Revisa o quita una regla

Con el proyecto abierto, ve a **Ajustes → Asistente de IA → Proveedores y claves** y baja hasta **Aprobaciones de herramientas**. Cada fila muestra el nombre de la herramienta y si está siempre permitida o denegada. Quita una regla para devolver esa herramienta a la política de riesgo estándar en el modo Personalizado.

## Edita approvals.toml

**Archivo de reglas de aprobación**, bajo **Aprobaciones de herramientas**, edita `~/.oleafly/approvals.toml`. Usa **Volver a cargar** para leer el archivo actual, **Descartar los cambios** para abandonar las ediciones sin guardar o **Insertar un ejemplo** para partir de una configuración de muestra. **Cómo funciona el archivo** explica el formato y muestra el ID del proyecto abierto. Al guardar se valida el TOML antes de aplicarlo, y las reglas se aplican desde la siguiente llamada a una herramienta.

El archivo tiene una tabla de modos y tablas de reglas por herramienta, indexadas por el **ID de la carpeta del proyecto**, no por el título que se muestra:

```toml title="~/.oleafly/approvals.toml"
["$approval_modes"]
"my-project-folder-id" = "custom"

["my-project-folder-id"]
write_file = "allow"
replace_in_file = "allow"
run_command = "deny"
delete_file = "deny"
```

Sustituye `my-project-folder-id` por el ID real de la carpeta de tu proyecto. Los ID de proyecto son los nombres de las carpetas que hay en `~/.oleafly/projects`. Los valores de modo son `ask-for-approval`, `approve-for-me`, `full-access` y `custom`. Un proyecto que no aparece usa Aprobar por mí. Los valores de las reglas por herramienta son `allow` y `deny`. Una regla `deny` se aplica en todos los modos, también en Acceso completo, así que una herramienta denegada nunca se ejecuta. Una regla `allow` solo se aplica en el modo Personalizado. Una herramienta sin regla usa la política de riesgo normal.

Los comentarios que empiezan por `#` se conservan al guardar desde Ajustes, pero elegir **Siempre en este proyecto** en una tarjeta de aprobación reescribe el archivo sin ellos.

Usa los nombres exactos de las herramientas del catálogo. Entre los nombres habituales están `write_file`, `replace_in_file`, `create_file`, `rename_file`, `delete_file`, `run_command`, `compile`, `insert_figure` y `set_main_doc`.

## ¿Qué archivo de configuración debo usar?

| Archivo | Finalidad |
|---|---|
| `~/.oleafly/config.json` | Configuración de la aplicación, que se gestiona desde Ajustes |
| `~/.oleafly/approvals.toml` | Modos de aprobación del proyecto y reglas por herramienta |
| `~/.oleafly/agent.toml` | Límites e instrucciones avanzados para varios agentes |
| La configuración de tu agente externo, como `~/.codex/config.toml` | Los ajustes y las conexiones MCP propios de ese agente |

Oleafly no usa un único `config.toml` para todos estos ajustes. Usa la interfaz de Ajustes para las claves de los proveedores y las preferencias de la aplicación; las credenciales tienen un almacenamiento cifrado aparte. No sustituyas toda la configuración de tu aplicación por un ejemplo corto.

## Configura agent.toml

Los usuarios avanzados pueden crear `~/.oleafly/agent.toml` para ajustar la configuración multiagente del asistente. Estos ajustes rigen el entorno de ejecución de agentes propio de Oleafly, de forma independiente a la configuración de un agente de línea de comandos conectado.

```toml title="~/.oleafly/agent.toml"
maxAgentDepth = 2
maxConcurrentSubagents = 8
minWaitTimeoutMs = 1000
maxWaitTimeoutMs = 300000
defaultWaitTimeoutMs = 120000
waitAgentEnabled = true

usageHintText = """
Delegate independent checks with clear scopes. Keep writing decisions with
the parent agent, and close completed agents when their work is collected.
"""

subagentDeveloperInstructions = """
Work only on the assigned task. Report the files and evidence you inspected.
Do not spawn additional agents.
"""
```

### maxAgentDepth

Limita la profundidad de anidamiento. El valor predeterminado es `2`: los hijos de una ejecución no delegan más. El valor mínimo aceptado es `1`.

### maxConcurrentSubagents

Limita los subagentes simultáneos en una sesión. El valor predeterminado es `8` y el mínimo es `1`. Más agentes pueden aumentar el uso del modelo; sube el límite para trabajo que realmente pueda avanzar de forma independiente.

### minWaitTimeoutMs

Fija el límite inferior de la espera de un agente, en milisegundos. El valor predeterminado es `1000`.

### maxWaitTimeoutMs

Fija el límite superior de la espera de un agente. El valor predeterminado es `300000`, es decir, cinco minutos. Se mantiene igual o por encima del mínimo.

### defaultWaitTimeoutMs

Fija la duración de espera predeterminada. El valor predeterminado es `120000`, es decir, dos minutos. Los valores quedan limitados al mínimo y al máximo configurados.

### waitAgentEnabled

Controla la disponibilidad de la capacidad de esperar a un agente. El valor predeterminado es `true`.

### usageHintText

Proporciona al agente principal orientación sobre la delegación. El ejemplo anterior sustituye la orientación predeterminada por tu propio texto.

### subagentDeveloperInstructions

Proporciona instrucciones a los agentes hijos. Úsalo para indicar el alcance, lo que se espera que informen y si conviene delegar más.

El entorno de ejecución también acepta versiones en snake_case de estas claves, como `max_agent_depth`. Los campos omitidos usan los valores predeterminados. Un archivo ausente o mal formado vuelve a los valores predeterminados, así que revisa bien la sintaxis e inicia una ejecución nueva después de cambiar la configuración.

## Prueba una regla con una tarea pequeña

1. Abre un proyecto de práctica y elige **Pedir aprobación**.
2. Pide: “Lee el documento principal y propón un título más claro. Pregúntame antes de cambiar el archivo.”
3. Inspecciona el cambio propuesto y apruébalo o recházalo.
4. Revisa en Ajustes las reglas guardadas antes de pasar al modo Personalizado.
5. Usa el [modo plan](/docs/ai-chat/#plan-before-editing) cuando quieras acordar varios pasos antes de que empiecen las ediciones.

Los asistentes externos que se conectan a través del MCP de Oleafly usan la [política del servidor MCP](/docs/mcp/#approvals-and-safety), que se configura por separado.
