Fénix: el inicio de mi asistente virtual de inteligencia artificial
Los primeros pasos de Fénix: un asistente personal con motor en Rust, conversación continua, herramientas locales e integración con 17 proveedores de modelos.
This publication is currently available in Spanish. Read the original ↗
El inicio de Fénix
Estoy empezando Fénix, un proyecto con el que quiero construir mi propio asistente virtual de inteligencia artificial. La idea es poder conversar con él de forma natural y darle tareas, manteniendo una misma conversación a lo largo del tiempo.
Estoy construyendo primero la base: cómo recibe las solicitudes, utiliza herramientas, conserva información y organiza el trabajo. Esta publicación describe las funcionalidades de la implementación inicial en desarrollo.
Un asistente local y una conversación continua
El motor está desarrollado en Rust, con una arquitectura modular que separa proveedores, credenciales, almacenamiento, ejecución del agente y canales de interacción. SQLite conserva el historial y los datos del asistente. La interfaz utiliza HTML, CSS y JavaScript y se sirve desde el propio ejecutable, sin necesitar un servidor Node en funcionamiento.
La primera versión está pensada para uso personal mediante una web en localhost. La interfaz está disponible en español e inglés, con una estética en blanco y negro, fondo blanco por defecto y modo oscuro seleccionable.
La bienvenida permite elegir el proveedor y el modelo, configurar las credenciales y comprobar una inferencia real antes de habilitar el chat. Desde la web también se administran Telegram, memoria, skills, tareas programadas y actividad.
El chat web y Telegram comparten una sola conversación. Telegram es opcional, admite texto en un chat privado y se vincula a un único propietario. El agente ejecuta una tarea a la vez y encola las solicitudes nuevas en orden de llegada. Las respuestas a una aprobación o aclaración se dirigen a la tarea que está esperando.
Integración con 17 proveedores
Fénix incorpora adaptadores para los siguientes proveedores y plataformas de inferencia:
| Proveedor o plataforma | Integración implementada |
|---|---|
| OpenAI | Responses |
| Anthropic | Messages |
| Google Gemini | GenerateContent |
| OpenRouter | Chat Completions compatible |
| DeepSeek | Chat Completions compatible |
| xAI | Chat Completions compatible |
| Mistral AI | Chat Completions compatible |
| Alibaba Cloud / DashScope | Chat Completions compatible |
| Moonshot AI | Chat Completions compatible |
| Z.ai | Chat Completions compatible |
| MiniMax | Chat Completions compatible |
| Groq | Chat Completions compatible |
| Together AI | Chat Completions compatible |
| Amazon Bedrock | Converse con API key |
| Microsoft Azure / Foundry | Chat Completions con endpoint del recurso |
| Google Vertex AI | GenerateContent en modo express con API key |
| Ollama | API compatible con Chat Completions |
La capa de credenciales admite claves estáticas y perfiles por proyecto. El modelo elegido necesita soportar las llamadas a herramientas que utiliza el agente. El acceso concreto depende de la cuenta, los permisos, el endpoint y la disponibilidad del modelo. Ollama permite una conexión local sin clave cuando se configura explícitamente.
Las 17 herramientas iniciales
El agente dispone de operaciones concretas para ejecutar tareas y consultar sus resultados:
| Área | Herramientas | Función |
|---|---|---|
| Archivos | files_list, file_read, files_search, file_write, file_edit |
Listar, leer, buscar, crear y editar archivos. |
| Comandos | command_run, command_status, command_cancel |
Ejecutar comandos, consultar su estado y cancelar procesos gestionados por el agente. |
| Memoria | memory_search, memory_manage |
Buscar, guardar, consultar, actualizar y eliminar información explícita. |
| Historial | history_search, history_read |
Buscar y recuperar mensajes anteriores. |
| Skills | skill_load |
Cargar instrucciones reutilizables para una tarea. |
| Programación | schedule_manage |
Administrar recordatorios y tareas programadas. |
| Inspección | task_inspect |
Consultar tareas, eventos y salidas de herramientas. |
| Interacción | ask_user, request_approval |
Solicitar información o autorización dentro de la conversación. |
Los comandos pueden ejecutarse en cualquier directorio accesible para el usuario del sistema operativo. Las herramientas dedicadas a archivos trabajan dentro del espacio configurado. Por defecto, los comandos y cambios de archivos requieren aprobación textual para la acción concreta; esta política puede configurarse.
Memoria, contexto y skills
La memoria inicial permite guardar información explícitamente y recuperarla mediante búsqueda léxica con SQLite FTS5. Incluye referencias de procedencia y comprobación de duplicados exactos.
El historial original se conserva. Cuando crece el contexto, el agente puede resumir tareas anteriores, manteniendo mensajes recientes y grupos completos de llamadas a herramientas y sus resultados.
También incorpora cuatro skills manuales, con versión y estado de activación:
- Memoria y recordatorios: guardar información solicitada y organizar recordatorios.
- Trabajo con archivos locales: orientar la lectura, creación y edición de archivos.
- Resumen de conversación: recuperar y resumir información del historial.
- Diagnóstico local: guiar la revisión de problemas mediante herramientas del sistema.
Recordatorios, programación y trazabilidad
Se pueden crear recordatorios y tareas de una sola ejecución, por intervalo o mediante expresiones cron. La zona horaria inicial es America/Lima. Las tareas programadas entran en la misma cola del agente y se comprueban duplicados activos y ejecuciones solapadas de una misma programación.
Cada tarea y llamada a herramienta deja un registro con identificadores, resultados, errores y uso de tokens. Las salidas extensas pueden recuperarse por partes. Hay límites técnicos de ejecución y controles para detectar repeticiones improductivas.
El equipo y el servicio deben permanecer encendidos para atender Telegram y ejecutar la programación. Las tareas interrumpidas se registran; la recuperación automática de esas tareas queda para versiones posteriores.
Desarrollo y próximos pasos
Estoy organizando el código y la documentación para ampliar el asistente de forma progresiva. La descripción de este artículo corresponde al trabajo local actual; su incorporación al repositorio remoto puede avanzar en entregas posteriores.
El siguiente paso que estoy evaluando es definir un contrato por tarea: qué resultado se espera, qué restricciones deben respetarse y qué evidencia permite comprobar que se cumplió. Quiero acompañarlo de evaluaciones repetibles para medir la fiabilidad del agente.
La búsqueda web, el navegador, la voz, el heartbeat, los subagentes, la memoria avanzada y la restauración de acciones están contemplados como trabajo futuro.
Repositorio del proyecto: CristhianRudolf7/fenix.
English overview
Fénix is the beginning of my personal AI virtual assistant project. Its initial implementation combines a modular Rust backend, SQLite storage and an embedded bilingual web interface with a white default theme and an optional dark mode.
The assistant supports one continuous conversation across the web and optional Telegram, a sequential task queue, 17 tools, textual approvals, explicit lexical memory, retained conversation history, basic context summaries, four manual skills, reminders and cron scheduling in the Lima time zone. Settings and task activity are available through the web interface.
The provider layer includes OpenAI, Anthropic, Google Gemini, OpenRouter, DeepSeek, xAI, Mistral AI, Alibaba Cloud, Moonshot AI, Z.ai, MiniMax, Groq, Together AI, Amazon Bedrock, Microsoft Azure, Google Vertex AI and Ollama. It supports static keys and project-scoped credential profiles, subject to each adapter’s endpoint and authentication requirements.
The article describes current local development, which may reach the remote repository in subsequent updates.
The next improvement under consideration is a task contract and outcome-verification layer, supported by repeatable agent evaluations. Web browsing, voice, heartbeat, subagents and advanced memory remain future work.