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.

Ver repositorio ↗

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.

← Todas las publicaciones