aboutsummaryrefslogtreecommitdiffstats
path: root/config
diff options
context:
space:
mode:
Diffstat (limited to 'config')
-rw-r--r--config/asistente.toml56
1 files changed, 55 insertions, 1 deletions
diff --git a/config/asistente.toml b/config/asistente.toml
index b638acd..a219142 100644
--- a/config/asistente.toml
+++ b/config/asistente.toml
@@ -30,6 +30,17 @@ es así, llámala primero y espera su resultado; no contestes de memoria. Sólo
cuando tengas el resultado, resúmelo en una frase.
"""
+# Se añade a system_prompt para redactar la respuesta cuando una herramienta ya
+# devolvió su resultado. Aquí sí se puede añadir estilo —la llamada ya ocurrió—
+# y hace falta: sin esto el modelo anuncia lo que acaba de hacer («he tomado una
+# foto, ahora puedo responderte sobre el color») en vez de decir lo que averiguó.
+tool_result_prompt = """
+Acabas de recibir el resultado de una herramienta. Contesta a la pregunta \
+usando ese resultado y nada más. No anuncies lo que has hecho ni lo que \
+podrías hacer: di directamente lo que has averiguado. Si el resultado viene en \
+otro idioma, tradúcelo al español.
+"""
+
[audio]
# Vacío = el dispositivo por defecto. `asistente devices` los lista.
input_device = ""
@@ -113,11 +124,54 @@ dedicated_prompt = true
# una shell a un modelo que obedece a lo que oye por el micrófono es un cambio
# de postura de seguridad, no una comodidad. Actívala aquí o con --shell.
shell = false
-shell_allowlist = ["date", "uptime", "free", "df", "ls"]
+shell_allowlist = ["date", "uptime", "free", "df", "ls", "mkdir", "cat"]
shell_timeout_secs = 10
shell_dry_run = false
shell_working_dir = ""
+# Búsqueda en internet. La clave NO va aquí: se lee de la variable de entorno
+# que indique api_key_env, porque este fichero se versiona y un secreto dentro
+# acaba en el historial de git.
+#
+# Tres buscadores, medidos:
+# tavily ~2,4 s. Devuelve una respuesta YA REDACTADA además de los enlaces,
+# que es lo que se puede leer en voz alta sin gastar otra vuelta del
+# modelo en resumir. Necesita clave.
+# ddgs 1,5-5,8 s. Sin clave. Consulta DuckDuckGo, Brave, Mojeek, Startpage
+# y compañía a través de scripts/buscar-ddgs.sh. Sólo devuelve
+# fragmentos: la síntesis la tiene que hacer el modelo, y con 2B sale
+# algo peor que con tavily.
+# searxng Sin clave, pero hace falta una instancia propia. Como ddgs, sólo
+# devuelve resultados.
+[search]
+enabled = true
+backend = "tavily" # "tavily", "ddgs" o "searxng"
+api_key_env = "TAVILY_API_KEY"
+base_url = "" # sólo para searxng, p. ej. "http://127.0.0.1:8888"
+# Programa del backend "ddgs". {consulta} y {max} se sustituyen antes de
+# ejecutar, y tiene que escribir JSON por la salida estándar. Vale cualquier
+# otro programa que respete eso, incluido un puente a un servidor MCP.
+command = ["../scripts/buscar-ddgs.sh", "{consulta}", "{max}"]
+max_results = 5
+timeout_secs = 20
+
+# Mirar por la cámara. El servidor ya carga el proyector multimodal, así que el
+# mismo modelo que conversa describe lo que capta.
+[camera]
+enabled = true
+device = "/dev/video0"
+# La resolución manda en la latencia. Medido en esta máquina: 1,3 s a 320x240,
+# 2,9 s a 640x480 y 7,8 s a 1280x720. 640x480 es el equilibrio.
+width = 640
+height = 480
+# Fotogramas descartados para que se asiente la exposición automática; el
+# primero suele salir quemado y descartar unos pocos es casi gratis.
+warmup_frames = 5
+timeout_secs = 15
+# Vacío = no se guarda ningún fotograma en disco, que es lo que corresponde.
+# Ponle una carpeta sólo para depurar qué está viendo el modelo.
+save_dir = ""
+
[supervisor]
manage = true # lanzar los servidores; --no-manage los supone arriba
startup_timeout_secs = 180