Agente de Programación Pi - Arquitectura y Guía Práctica
- ¿Qué es el Agente de Programación Pi?
- Filosofía de Diseño de Pi
- Descripción General de la Arquitectura de Pi
- Cómo funciona Pi
- Paso 1 - El usuario envía una solicitud
- Paso 2 - Ensamblaje del contexto
- Paso 3 - Solicitud al modelo
- Paso 4 - Ejecución de la herramienta
- Paso 5 - Devolver resultados de la herramienta
- Paso 6 - Continuar o finalizar
- Diagrama completo del bucle del agente
- Diagrama de secuencia
- Por qué esto es importante
- Herramientas en Pi
- Gestión de contexto y sesiones
- Proveedores de modelos
- Ampliando Pi
- Modos de ejecución de Pi
- Instalación y configuración mínima
- Comandos esenciales
- Demostración práctica: Rastreador de gastos
- Consideraciones de seguridad
- Pi comparado con otras herramientas
- Conclusiones clave
- Referencias
¿Qué es el Agente de Programación Pi?
Pi es un agente de programación con IA, minimalista y extensible, que se ejecuta principalmente en la terminal.
Permite a los desarrolladores utilizar modelos de lenguaje grandes (LLMs) para interactuar con su entorno de desarrollo local.
Pi puede:
- Leer y comprender código existente.
- Crear nuevos archivos y aplicaciones.
- Modificar código existente.
- Ejecutar comandos de terminal.
- Ejecutar pruebas y depurar errores.
- Gestionar el historial de conversaciones.
- Conectarse a diferentes proveedores de LLM.
- Ampliar sus capacidades con herramientas y habilidades personalizadas.
- Integrar servicios externos a través de MCP.
Pi es un ejemplo de un "Agent Harness" (entorno de ejecución de agentes).
¿Qué es un Agent Harness?
Un Agent Harness es la infraestructura de software que rodea a un modelo de lenguaje y le permite realizar acciones.
El harness es responsable de:
- Construir el contexto del modelo.
- Comunicarse con el LLM.
- Proporcionar herramientas al LLM.
- Ejecutar las llamadas a herramientas solicitadas.
- Devolver los resultados de las herramientas al modelo.
- Gestionar conversaciones y sesiones.
- Controlar el ciclo de vida de la ejecución.
El LLM proporciona capacidades de razonamiento.
El harness proporciona el entorno en el que ese razonamiento puede traducirse en acciones.
Pi vs. un Chatbot Tradicional
Un chatbot tradicional generalmente sigue este patrón:
flowchart LR
A["Usuario"] --> B["Prompt"]
B --> C["LLM"]
C --> D["Respuesta"]Un agente de programación con IA añade un entorno de ejecución:
flowchart TD
A["Usuario"] --> B["Agente Pi"]
B --> C["LLM"]
C --> D{"¿Se necesita herramienta?"}
D -->|Sí| E["Ejecutar Herramienta"]
E --> F["Devolver Resultado"]
F --> C
D -->|No| G["Respuesta Final"]Ejemplo:
Chatbot: "Aquí tienes código Python que calcula gastos."
Pi: "Creé los archivos de Python, ejecuté el programa, realicé pruebas y corregí un error."
La diferencia importante es la capacidad de interactuar con un entorno real.
Filosofía de Diseño de Pi
Pi sigue una filosofía minimalista.
En lugar de proporcionar todas las funciones posibles como parte de su implementación principal, enfatiza la extensibilidad.
La idea guía es:
"Adapta Pi a tu flujo de trabajo, no al revés."
Principios Fundamentales
Minimalismo:
- Mantener el núcleo relativamente pequeño.
- Evitar abstracciones innecesarias.
- Construir sobre herramientas existentes del sistema operativo.
Extensibilidad:
- Crear herramientas personalizadas.
- Construir extensiones.
- Usar habilidades reutilizables.
- Conectar servicios externos.
Independencia del Modelo:
- Usar diferentes proveedores de LLM.
- Cambiar de modelo dentro del mismo entorno.
- Comparar el comportamiento de los modelos.
Transparencia:
- Observar las respuestas del modelo.
- Inspeccionar las ejecuciones de herramientas.
- Revisar las modificaciones.
- Examinar el historial de sesiones.
Lo que Pi no requiere
Una configuración básica de Pi no requiere:
- Una base de datos vectorial.
- Un servidor de orquestación separado.
- Kubernetes.
- Docker.
- Un marco de trabajo multi-agente complejo.
- Una aplicación backend personalizada.
Para una demostración básica, una terminal, un LLM compatible y un directorio local son suficientes.
Descripción General de la Arquitectura de Pi
Pi contiene varias capas lógicas.
Arquitectura de Alto Nivel
flowchart TB
USER["Desarrollador"]
subgraph PI["Agente de Programación Pi"]
UI["Interfaz de Terminal"]
CORE["Runtime del Agente"]
CONTEXT["Gestor de Contexto"]
SESSION["Gestor de Sesiones"]
TOOLS["Ejecución de Herramientas"]
EXT["Extensiones / Habilidades"]
API["Abstracción de API de LLM"]
end
subgraph MODELS["Proveedores de LLM"]
OPENAI["OpenAI"]
ANTHROPIC["Anthropic"]
GOOGLE["Google"]
LOCAL["Modelos Locales"]
end
subgraph SYSTEM["Entorno de Desarrollo"]
FILES["Sistema de Archivos"]
BASH["Shell"]
GIT["Git"]
TESTS["Pruebas"]
end
USER <--> UI
UI <--> CORE
CORE <--> CONTEXT
CORE <--> SESSION
CORE <--> TOOLS
CORE <--> API
EXT --> CORE
API <--> OPENAI
API <--> ANTHROPIC
API <--> GOOGLE
API <--> LOCAL
TOOLS <--> FILES
TOOLS <--> BASH
TOOLS <--> GIT
TOOLS <--> TESTSEsta es una arquitectura conceptual, que muestra las principales responsabilidades en lugar de cada dependencia interna.
Paquetes Internos de Pi
Pi se desarrolla como una colección de paquetes de TypeScript.
pi-ai
Una interfaz unificada para trabajar con diferentes proveedores de LLM.
Responsabilidades:
- Solicitudes al modelo.
- Respuestas del modelo.
- Streaming.
- Integraciones específicas del proveedor.
- Representación de llamadas a herramientas.
pi-agent-core
El runtime del agente.
Responsabilidades:
- Bucle de ejecución del agente.
- Llamadas a herramientas.
- Estado del agente.
- Manejo de mensajes.
- Eventos de ejecución.
pi-coding-agent
La aplicación del agente de programación.
Responsabilidades:
- CLI.
- Herramientas de programación.
- Sesiones.
- Archivos de contexto.
- Extensiones.
- Habilidades.
- Configuración del usuario.
pi-tui
Componentes de la Interfaz de Usuario de Terminal.
Responsabilidades:
- Renderizado de terminal.
- Manejo de entrada.
- Componentes interactivos.
- Visualización de la actividad del agente.
Relación de Paquetes
flowchart TD
USER["Desarrollador"]
TUI["pi-tui"]
CODING["pi-coding-agent"]
CORE["pi-agent-core"]
AI["pi-ai"]
LLM["Proveedores de LLM"]
USER <--> TUI
TUI <--> CODING
CODING <--> CORE
CORE <--> AI
AI <--> LLM
CODING --> FS["Herramientas"]
CODING --> SESSION["Sesiones"]
CODING --> EXT["Extensiones"]La misma infraestructura de agente también se puede utilizar a través de interfaces no interactivas.
Cómo funciona Pi
Pi sigue un ciclo de interacción repetido entre el usuario, el runtime del agente, el modelo de lenguaje y las herramientas.
Esto se conoce comúnmente como el Bucle del Agente (Agent Loop).
Paso 1 - El usuario envía una solicitud
Ejemplo:
"Crea una aplicación de Python que rastree gastos."
Pi recibe esta solicitud a través de su interfaz de terminal.
Paso 2 - Ensamblaje del contexto
Antes de contactar al LLM, Pi prepara el contexto.
Esto puede incluir:
- Instrucciones del sistema.
- Solicitud del usuario.
- Historial de conversación activo.
- Herramientas disponibles.
- Instrucciones del proyecto desde AGENTS.md.
- Descripciones de habilidades.
- Contenido de archivos relevantes.
- Configuración del modelo.
La rama de sesión activa determina qué mensajes históricos se incluyen.
Paso 3 - Solicitud al modelo
Pi envía la solicitud preparada al proveedor de LLM seleccionado.
El LLM puede producir:
- Texto en lenguaje natural.
- Llamadas a herramientas estructuradas.
- Una combinación de ambos.
Ejemplo de solicitud de herramienta:
Herramienta: write Archivo: expenses.py Contenido: Código fuente de Python
El LLM no escribe el archivo directamente.
Solicita que Pi ejecute la operación.
Paso 4 - Ejecución de la herramienta
Pi recibe la llamada a la herramienta solicitada.
El ejecutor de herramientas realiza la acción.
Ejemplos:
- Leer un archivo.
- Escribir un archivo.
- Modificar código.
- Ejecutar un comando de shell.
Pi luego captura el resultado.
Paso 5 - Devolver resultados de la herramienta
La salida se devuelve al runtime del agente.
Ejemplo:
Herramienta: bash Comando: python expenses.py
Resultado: Traceback: NameError …
El resultado se convierte en parte del contexto disponible para el LLM.
Paso 6 - Continuar o finalizar
El LLM puede decidir:
- Llamar a otra herramienta.
- Modificar el código.
- Ejecutar pruebas adicionales.
- Proporcionar una respuesta final.
Pi repite el proceso mientras se requiera más ejecución.
Esta interacción es la base del comportamiento agéntico.
Diagrama completo del bucle del agente
flowchart TD
START["Solicitud del Usuario"]
CTX["Construir Contexto"]
CALL["Llamar al LLM"]
RESPONSE["Recibir Respuesta del Modelo"]
DECISION{"¿Llamadas a herramientas?"}
EXEC["Ejecutar Herramientas"]
RESULT["Recopilar Resultados de Herramientas"]
FINISH["Respuesta Final"]
START --> CTX
CTX --> CALL
CALL --> RESPONSE
RESPONSE --> DECISION
DECISION -->|Sí| EXEC
EXEC --> RESULT
RESULT --> CALL
DECISION -->|No| FINISHDiagrama de secuencia
sequenceDiagram
autonumber
actor Usuario
participant Pi as Agente Pi
participant LLM
participant Tools as Herramientas
participant OS as Sistema Operativo
Usuario->>Pi: Crea un rastreador de gastos
Pi->>Pi: Ensamblar contexto
Pi->>LLM: Enviar prompt y definiciones de herramientas
LLM-->>Pi: Solicitar herramienta write
Pi->>Tools: write expenses.py
Tools->>OS: Crear archivo
OS-->>Tools: Éxito
Tools-->>Pi: Resultado de la herramienta
Pi->>LLM: Continuar con el resultado
LLM-->>Pi: Solicitar herramienta bash
Pi->>Tools: Ejecutar programa Python
Tools->>OS: Ejecutar comando
OS-->>Tools: Salida
Tools-->>Pi: Resultado de la ejecución
Pi->>LLM: Continuar
LLM-->>Pi: Respuesta final
Pi-->>Usuario: Tarea completadaPor qué esto es importante
Se separan tres responsabilidades:
- LLM: Genera razonamiento y propone acciones.
- Agent Harness: Coordina la ejecución y gestiona el contexto.
- Herramientas: Realizan operaciones en el entorno.
Esta arquitectura también es fundamental para muchas otras implementaciones de agentes de IA.
Herramientas en Pi
La configuración de programación mínima de Pi utiliza cuatro herramientas fundamentales.
read
Leer el contenido de archivos.
Ejemplo de prompt:
"Lee app.py y explica su estructura."
write
Crear o sobrescribir archivos.
Ejemplo de prompt:
"Crea un programa en Python que imprima Hello TechHive."
edit
Modificar archivos existentes.
Ejemplo de prompt:
"Modifica el programa para aceptar un nombre de usuario."
bash
Ejecutar comandos de shell.
Ejemplo de prompt:
"Ejecuta el programa y muestra el resultado."
Ejemplo de ejecución de herramienta
flowchart TD
A["Usuario: Corrige el error"]
B["El LLM analiza la solicitud"]
C["read: Inspeccionar código"]
D["edit: Corregir código"]
E["bash: Ejecutar pruebas"]
F{"¿Pasan las pruebas?"}
G["Respuesta final"]
A --> B
B --> C
C --> D
D --> E
E --> F
F -->|No| B
F -->|Sí| GPueden estar disponibles herramientas y extensiones integradas adicionales según la versión y la configuración.
Gestión de contexto y sesiones
¿Qué es el contexto?
El contexto es la información suministrada al LLM para una solicitud de modelo.
Puede incluir:
- Solicitud actual del usuario.
- Historial de conversación.
- Resultados de herramientas.
- Instrucciones del sistema.
- Instrucciones del proyecto.
- Descripciones de habilidades.
- Contenido de archivos referenciados.
Pi no carga automáticamente cada archivo en un repositorio en el contexto del LLM.
Selecciona y ensambla el contexto según la sesión y los recursos configurados.
AGENTS.md
AGENTS.md es un archivo de instrucciones del proyecto.
Ejemplo:
# Instrucciones del Proyecto
Este proyecto es para un taller de agentes de programación.
Directrices:
- Usa Python.
- Prefiere la biblioteca estándar.
- Mantén el código simple.
- Escribe funciones legibles.
- Añade pruebas para nuevas funciones.
- Explica los cambios importantes.Estas instrucciones ayudan a guiar el comportamiento del agente dentro del proyecto.
Sesiones
Pi mantiene sesiones de conversación.
Las sesiones pueden incluir:
- Mensajes del usuario.
- Mensajes del asistente.
- Llamadas a herramientas.
- Resultados de herramientas.
- Cambios de modelo.
- Eventos de compactación de contexto.
Las sesiones persistentes utilizan archivos JSONL.
Ramificación de sesiones
Pi admite una estructura de conversación basada en árbol.
flowchart TD
A["Iniciar Sesión"]
B["Crear Aplicación"]
C["Añadir Almacenamiento de Datos"]
D["Enfoque CSV"]
E["Enfoque SQLite"]
F["Probar CSV"]
G["Probar SQLite"]
A --> B
B --> C
C --> D
C --> E
D --> F
E --> GLas ramas permiten la exploración de enfoques alternativos desde estados de conversación anteriores.
Compactación de contexto
Las conversaciones largas pueden exceder la ventana de contexto de un modelo.
Pi puede resumir el contexto antiguo para reducir la cantidad de información enviada en futuras solicitudes al modelo.
Comando:
/compact
La compactación ayuda a gestionar el tamaño del contexto, pero puede perder algunos detalles de mensajes antiguos.
Las entradas de sesión originales pueden permanecer en el historial de sesiones almacenado.
Proveedores de modelos
Pi puede trabajar con múltiples proveedores de LLM.
Ejemplos:
- OpenAI.
- Anthropic.
- Google.
- Otros proveedores compatibles.
- Modelos locales configurados.
Independencia del modelo
flowchart TD
USER["Desarrollador"]
PI["Agente Pi"]
API["Interfaz de Modelo Unificada"]
USER --> PI
PI --> API
API --> A["OpenAI"]
API --> B["Anthropic"]
API --> C["Google"]
API --> D["Modelo Local"]Ventajas:
- Flexibilidad.
- Comparación de modelos.
- Elección del proveedor.
- Optimización de costos.
- Experimentación.
Las capacidades y la compatibilidad de los modelos pueden variar.
Ampliando Pi
Pi se puede personalizar sin modificar su núcleo.
AGENTS.md
Instrucciones específicas del proyecto.
Plantillas de prompt
Prompts reutilizables para actividades recurrentes.
Ejemplos:
- Revisión de código.
- Documentación.
- Generación de pruebas.
- Refactorización.
Habilidades
Instrucciones reutilizables y recursos de apoyo para flujos de trabajo especializados.
Ejemplos:
- Flujo de trabajo de pruebas en Python.
- Flujo de trabajo de despliegue.
- Generación de documentación.
- Desarrollo de API.
Extensiones
Personalización basada en TypeScript.
Las extensiones pueden:
- Definir herramientas personalizadas.
- Registrar comandos.
- Reaccionar a eventos del ciclo de vida.
- Integrar servicios externos.
- Personalizar el comportamiento interactivo.
Integración MCP
MCP significa Model Context Protocol (Protocolo de Contexto de Modelo).
Proporciona una forma estandarizada para que las aplicaciones accedan a herramientas y recursos externos.
Las versiones modernas de Pi proporcionan soporte MCP integrado.
Ejemplos de integraciones:
- GitHub.
- Bases de datos.
- Aplicaciones internas.
- Servicios remotos.
Arquitectura de extensiones
flowchart TD
PI["Agente Pi"]
PI --> A["AGENTS.md"]
PI --> B["Plantillas de Prompt"]
PI --> C["Habilidades"]
PI --> D["Extensiones"]
PI --> E["MCP"]
D --> F["Comandos Personalizados"]
D --> G["Herramientas Personalizadas"]
D --> H["Manejadores de Eventos"]
E --> I["Servicios Externos"]Modos de ejecución de Pi
Pi admite múltiples interfaces.
Interactivo
Lanzar la interfaz de terminal.
piModo de impresión
Ejecutar un prompt e imprimir su respuesta.
pi -p "Explica los decoradores de Python"Modo JSON
Transmitir eventos de agente estructurados.
pi --mode json -p "Explica este proyecto"Modo RPC
Controlar Pi usando mensajes JSONL a través de entrada y salida estándar.
SDK
Integrar las capacidades del agente Pi en aplicaciones TypeScript.
flowchart TD
CORE["Runtime del Agente Pi"]
CORE --> A["TUI Interactiva"]
CORE --> B["Imprimir / JSON"]
CORE --> C["RPC"]
CORE --> D["SDK de TypeScript"]
A --> E["Desarrollador"]
B --> F["Scripts de Automatización"]
C --> G["Aplicación Externa"]
D --> H["Aplicación de Agente Personalizada"]Instalación y configuración mínima
Instalar Pi
macOS / Linux:
curl -fsSL https://pi.dev/install.sh | shWindows PowerShell:
irm https://pi.dev/install.ps1 | iexAlternativa usando npm:
npm install -g --ignore-scripts @earendil-works/pi-coding-agentLa instalación de npm requiere Node.js 22.19 o superior.
Verificar la instalación
pi --versionCrear un proyecto
mkdir pi-techhive-demo
cd pi-techhive-demo
git initIniciar Pi
piConfigurar la autenticación
Dentro de Pi:
/login
Selecciona un proveedor compatible y autentícate.
Luego:
/model
Selecciona el modelo que deseas usar.
Comandos esenciales
| Comando | Propósito |
|---|---|
| /login | Autenticar un proveedor de modelo |
| /model | Seleccionar un modelo |
| /thinking | Establecer nivel de pensamiento |
| /settings | Abrir configuración |
| /new | Iniciar nueva sesión |
| /resume | Reanudar sesión |
| /session | Información de la sesión |
| /tree | Navegar por el historial de conversación |
| /fork | Bifurcar desde un mensaje anterior |
| /compact | Compactar contexto |
| /mcp | Gestionar servidores MCP |
| /reload | Recargar recursos |
| /export | Exportar sesión |
| /share | Compartir sesión |
| /quit | Salir de Pi |
Escribe / en la interfaz de terminal para descubrir los comandos disponibles en la versión instalada.
Demostración práctica: Rastreador de gastos
Crear un directorio de proyecto
mkdir expense-tracker
cd expense-tracker
git init
piExplorar el proyecto
Prompt:
Inspecciona el directorio actual. Explica qué archivos están presentes. No modifiques nada.
Concepto: Exploración del sistema de archivos y operaciones de lectura.
Generar una aplicación
Prompt:
Crea un rastreador de gastos simple en Python. Requisitos: - Añadir un gasto. - Listar gastos. - Calcular el total de gastos. - Almacenar gastos en un archivo CSV. - Usa solo la biblioteca estándar de Python. Mantén la implementación simple.
Concepto: Generación de código y creación de archivos.
Ejecutar el programa
Prompt:
Ejecuta la aplicación. Crea tres ejemplos de gastos. Verifica que el total se calcule correctamente.
Concepto: Ejecución de shell y observación de resultados.
Añadir pruebas automatizadas
Prompt:
Crea pruebas unitarias usando unittest de Python. Prueba la creación de gastos y el cálculo del total. Ejecuta las pruebas y corrige cualquier error.
Concepto: Pruebas autónomas y corrección iterativa.
Ampliar la aplicación
Prompt:
Añade una función para agrupar gastos por categoría. Muestra el total para cada categoría. Actualiza las pruebas y ejecútalas.
Concepto: Modificación de código y retención de contexto.
Explorar la gestión de sesiones
Comandos:
/session /tree /model
Concepto: Historial de sesiones, ramificación y cambio de modelo.
Consideraciones de seguridad
Pi puede ejecutar comandos con los permisos disponibles para su proceso en ejecución.
No solicita necesariamente aprobación antes de cada llamada a herramienta.
Prácticas recomendadas:
- Trabaja dentro de un directorio de proyecto dedicado.
- Usa Git antes de modificar código importante.
- Evita exponer credenciales.
- Inspecciona el código generado.
- Revisa las extensiones externas.
- No utilices datos confidenciales en demostraciones públicas.
- Usa contenedores o entornos aislados (sandboxes) para tareas no confiables.
- Revisa el contenido de la sesión antes de compartirlo.
Un agente de programación con IA no es un reemplazo para las prácticas de seguridad y revisión de código.
Pi comparado con otras herramientas
Pi
Entorno de agente de programación minimalista y extensible.
Fortalezas:
- Personalización.
- Múltiples proveedores de LLM.
- Ejecución de herramientas.
- Gestión de sesiones.
- Extensibilidad.
Claude Code
Agente de programación con un conjunto integrado de herramientas y flujos de trabajo de desarrollo.
Codex CLI
Agente de programación diseñado para trabajar con bases de código, comandos de terminal y flujos de trabajo de desarrollo.
LangChain / LangGraph
Marcos de trabajo para desarrollar aplicaciones de LLM personalizadas y flujos de trabajo agénticos.
Pi es principalmente un entorno de agente listo para usar y extensible, en lugar de un marco de trabajo de grafos de flujo de trabajo de propósito general.
Conclusiones clave
- Pi es un Agent Harness, no un LLM.
- El LLM propone acciones; Pi coordina la ejecución.
- El Bucle del Agente permite la ejecución de tareas en varios pasos.
- Las herramientas permiten a Pi interactuar con un entorno de desarrollo.
- El contexto y las sesiones mantienen la continuidad de la conversación.
- Pi no está vinculado a un solo proveedor de LLM.
- Las extensiones y habilidades permiten la personalización.
- Las arquitecturas minimalistas aún pueden admitir flujos de trabajo agénticos sofisticados.
- La supervisión humana y el aislamiento adecuado siguen siendo importantes.
Referencias
Sitio web de Pi: https://pi.dev
Documentación oficial: https://docs.pi.dev/latest
Inicio rápido: https://docs.pi.dev/latest/quickstart
Cómo funciona Pi: https://docs.pi.dev/latest/how-pi-works
Comandos de barra diagonal: https://docs.pi.dev/latest/slash-commands
Extensiones: https://docs.pi.dev/latest/extensions
MCP: https://docs.pi.dev/latest/mcp
Código fuente: https://github.com/earendil-works/pi
Editor de Mermaid: https://mermaid.live

