Saltar al contenido
← artículos
actualizado AI CodingAI AgentsDeveloper ToolsHarness Engineering

Pi: el agente de código que no esconde nada

Pi es un agente de código open source, con tu propia API key, cuatro herramientas y un system prompt de 150 palabras. Sin MCP, sin planner oculto, sin subagents invisibles. Solo un loop que ves por completo.

Todos los agentes de código populares sumaron más cosas en 2025. Pi fue en la dirección contraria, y de eso se trata.

La industria lanzó planners ocultos, subagents en paralelo, integraciones MCP y miles de tokens de andamiaje en el system prompt. Los agentes se volvieron más capaces en el papel y más difíciles de entender en la práctica. El pi coding agent es la apuesta contraria: cuatro herramientas, un system prompt de 150 palabras, ninguna capa oculta y transparencia total por defecto.

No es un juguete minimalista. Pi, creado por Mario Zechner bajo earendil-works, se defiende bien en Terminal-Bench 2.0 y corre con cualquier modelo de frontera: Anthropic, OpenAI, Gemini o local. Es parte de mi stack diario. Puse en producción 13 apps de una fintech cripto, solo, con agentes de IA, en 70 días. Pi era parte de ese harness.

Si leíste harness engineering, ya conoces la idea: Agente = Modelo + Harness. Pi es la demostración más clara que existe de que el harness puede ser más chico de lo que crees y aun así sostener una carga de trabajo seria.

La apuesta por cuatro herramientas es todo el argumento

La mayoría de los agentes de código le dan al modelo un kit enorme de herramientas. Comandos de shell, automatización de navegador, búsqueda de archivos, utilidades de diff, stores de memoria, decenas de servicios conectados por MCP. La premisa es que más herramientas significan más capacidad.

Pi viene con cuatro:

  • read. Lee un archivo.
  • write. Escribe un archivo.
  • edit. Aplica una edición puntual a un archivo existente.
  • bash. Ejecuta un comando de shell.

Grep, find y ls están disponibles, pero apagados por defecto. Esa es la lista completa. El argumento es que cuatro herramientas bien descritas producen llamadas a herramientas más confiables que cuarenta mal descritas, porque el modelo no tiene que atravesar ruido para decidir cuál usar. Un modelo que siempre elige bien entre cuatro le gana a uno que a veces elige mal entre cuarenta.

Debajo hay un punto más fuerte. Cuatro herramientas cubren casi cualquier tarea real de código: leer el repo, escribir código, editar código existente, correr tests y builds. Si quieres una quinta herramienta, ya la tienes: bash. La superficie es chica no porque al diseño se le acabaron las ideas, sino porque el problema de verdad no pide más.

Un system prompt de 150 palabras es una decisión de presupuesto

Cada palabra del system prompt es un costo fijo que pagas en cada turno de cada sesión, para siempre. Un system prompt largo no vence. Queda en la context window junto a tu código, tu historial y tu pregunta, compitiendo por atención.

El system prompt de pi tiene unas 150 palabras. La lógica de fondo es directa: un modelo de frontera ya sabe ser un agente de código. Sabe qué es un code review. Sabe para qué sirven los tests. Sabe que tiene que preguntar antes de borrar cosas. No tienes que enseñárselo. Tienes que quitarte del camino.

La economía del system prompt

~150
palabrasel system prompt completo de pi
13k a 18k
tokensun MCP server popular antes de que escribas
4
herramientasread, write, edit, bash
0
capas ocultassin planner, sin agentes invisibles
El system prompt es un costo fijo en cada turno. Pi lo mantiene cerca de cero.

Compáralo con agentes que cargan el prompt de entrada con descripciones de herramientas, instrucciones de persona, capas de seguridad y lógica de orquestación. Un MCP server popular, por sí solo, agrega entre 13.000 y 18.000 tokens antes de tu primer mensaje. Esos tokens no desaparecen. Quedan en cada turno, achicando el espacio que te queda para el trabajo real. Si quieres la versión larga sobre adónde se van los tokens, el desglose del costo en tokens lo cubre completo.

Un system prompt de 150 palabras no significa un agente sin restricciones. Significa que las restricciones están en el lugar correcto: en el preentrenamiento del modelo, no en un prompt que tienes que mantener.

Lo que pi se niega a incluir, y por qué cada negativa es correcta

Sin MCP por defecto. Model Context Protocol permite que los agentes se conecten a servicios externos. La idea es razonable. El costo, no. Un MCP server típico registra entre 13.000 y 18.000 tokens de descripciones de herramientas en la context window en cada sesión, antes de que el modelo lea una línea de tu código. Pi deja MCP afuera por defecto. Si quieres una integración específica, la conectas a propósito y el costo queda explícito. Mira MCP vs CLI para los tradeoffs completos.

Sin modo de planificación oculto. Algunos agentes ejecutan un paso interno de planificación antes de mostrar la respuesta. Ves la salida; no ves el razonamiento. En pi, la planificación vive en PLAN.md y AGENTS.md, en disco, donde la pusiste. El agente los lee como archivos normales. Si quieres entender qué sabe el agente del proyecto, abres el archivo AGENTS.md. No hay ninguna abstracción entre tú y el plan.

Sin subagents invisibles. Los subagents en paralelo mejoran de verdad el rendimiento en algunas cargas de trabajo. También son una pesadilla para depurar cuando algo sale mal y no sabes qué agente hizo qué. La respuesta de pi: invocar pi desde un comando bash. El subagent es una llamada a bash. Ves la invocación, ves la salida, puedes leer el archivo de sesión después. La orquestación es visible porque la escribiste tú.

Un loop, cualquier modelo

Pi no te ata a un proveedor. Funciona con Anthropic, OpenAI, Gemini y endpoints de modelos locales. Tú pones la API key. Eliges el modelo al inicio de la sesión o lo cambias con /model a mitad de camino. El loop del agente es idéntico sin importar qué haya del otro lado.

Esto importa más por el costo que por lealtad a un proveedor. Cuando una tarea pide razonamiento fuerte, usa el mejor modelo disponible. Cuando es mecánica (renombrar, reformatear, boilerplate), usa uno más chico y barato. El loop no cambia. La factura sí.

Agente gestionado (proveedor fijo)

  1. 01Modelo atado al stack del proveedor
  2. 02Precio definido por la plataforma
  3. 03Cambiar de modelo implica migrar el workflow
  4. 04Sin optimización de costo por tarea

Pi (con tu propia API key)

  1. 01Anthropic, OpenAI, Gemini o local
  2. 02Pagas directo la tarifa de la API
  3. 03Cambias con /model, sin migración
  4. 04El modelo a la medida de la tarea
Quedar atado a un proveedor cambia la economía de cada sesión.

Dale a cada fase su propio modelo y esfuerzo

Hay algo que OpenCode hizo bien y que pi te deja a ti: los modos. En OpenCode cambias a un modo explore o a un modo build, y cada uno trae su propio modelo, su propio presupuesto de razonamiento y sus propios permisos. Explore usa un modelo barato y amplio. Build usa un modelo de código preciso. Review usa uno cuidadoso. Pi no trae nada de eso incorporado. Tiene un loop y un comando /model que manejas a mano.

Así que escribí la pieza que faltaba como un paquete, pi-skill-model-handoff, y expliqué cómo funciona en un texto aparte. Lee dos campos de una skill y los aplica en el momento en que la skill se carga: el modelo y el nivel de thinking. Carga tu skill de explore y pi baja a un modelo barato y amplio. Carga tu skill de build y cambia a un modelo de código preciso con razonamiento bajo. El modo sigue al trabajo, y dejas de tocar /model.

Instálalo con una línea y apunta tus skills a los modelos que quieras:

pi install npm:@felipefontoura/pi-skill-model-handoff
---
name: review
description: Review code changes.
model: openai/gpt-5.5
thinking: high
---

Esa es toda la interfaz. Dos campos opcionales en el frontmatter de una skill, model y thinking (off, minimal, low, medium, high, xhigh). Cuando la skill se carga, pi imprime handoff active: review y el cambio está hecho.

Un ejemplo de mapa de handoff

Los modelos los eliges tú. La idea es que la fase los lleve consigo, para que explorar barato y construir con precisión dejen de ser una decisión manual que te olvidas de tomar.
Skill / faseModeloEsfuerzo
exploreopencode-go/glm-5.1high
plananthropic/claude-sonnet-4-5high
buildanthropic/claude-sonnet-4-5minimal
reviewopenai/gpt-5.5high
fixopenai/gpt-5.5medium
Los modelos los eliges tú. La idea es que la fase los lleve consigo, para que explorar barato y construir con precisión dejen de ser una decisión manual que te olvidas de tomar.

Seamos honestos sobre lo que no hace. Es pasivo. Pi sigue decidiendo qué skill se carga, y el paquete no lee tu prompt para elegir una fase por ti. Aplica el modelo y el esfuerzo después de que se eligió la skill. Eso es una característica, no un hueco. Un ruteo que adivina tu intención es justamente la magia oculta que pi existe para evitar. Tú eliges la fase, el harness se encarga del handoff.

Esta es la recompensa de un harness chico y transparente, en un solo ejemplo. Los modos de OpenCode son una feature que esperas que un proveedor lance y defina. Aquí la misma capacidad es un paquete que puedes leer de una sentada, instalar con una línea y adaptar a tus propias fases. El harness mínimo no perdió contra el lleno de features. Me dejó agregar el único control que quería y saltarme los veinte que no.

Un historial que no desaparece

Pi guarda cada sesión como un archivo JSONL. Ábrelo en cualquier editor de texto y tienes el registro completo: cada llamada a herramienta, cada respuesta del modelo, cada rama. La auto-compactación corre cuando la context window se acerca al límite. Dispárala a mano con /compact si quieres reducir el consumo de tokens a mitad de sesión.

Los comandos de sesión: /resume retoma una sesión anterior, /fork crea una rama desde un punto específico del historial, /tree muestra la estructura de ramas. El loop en sí no tiene un tope arbitrario de pasos. Corre hasta que el modelo deja de llamar herramientas. En tareas largas, eso significa que no tienes que reiniciar porque el agente chocó con un límite que no pusiste tú.

Pi vs Claude Code

Los dos son harnesses de agente, y los dos están en mi stack. Hacen apuestas opuestas. Claude Code es el harness de Anthropic, construido alrededor de Claude y cubierto por un plan Claude. Pi es un harness que puedes leer en una tarde, con cualquier modelo detrás. Si la palabra harness está cargando mucho peso en esa frase, empieza por ahí.

Pi vs Claude Code, octubre de 2026

Un plan Claude cubre Claude Code y no a pi: desde el 4 de abril de 2026, los harnesses de terceros que inician sesión con un plan Claude cobran como uso extra. El 29 de septiembre, OpenAI incluyó a pi entre los partners de lanzamiento que pueden correr con un plan de ChatGPT.
DimensiónPiClaude Code
Herramientas integradasCuatro: read, write, edit, bashMuchas, más MCP servers
System promptUnas 150 palabrasLargo, mantenido por Anthropic
Para extenderloExtensiones y paquetes que puedes leerSkills, hooks, subagents, plugins
PlanificaciónUn PLAN.md en disco, sin modo ocultoPlan mode incorporado
SesionesArchivos JSONL, /fork y /treeResume y compactación automática
ModelosCualquier proveedor, tu keyClaude, o un endpoint compatible con Anthropic
Cómo pagasAPI key, o un plan ChatGPT Plus o Pro desde el 29 de septiembre de 2026Claude Pro o Max lo cubre
Un plan Claude cubre Claude Code y no a pi: desde el 4 de abril de 2026, los harnesses de terceros que inician sesión con un plan Claude cobran como uso extra. El 29 de septiembre, OpenAI incluyó a pi entre los partners de lanzamiento que pueden correr con un plan de ChatGPT.

La división honesta: Claude Code te da más de fábrica y los tokens de frontera más baratos si programas todo el día, por eso volvió a ser mi agente de todos los días. Pi te da un loop que puedes ver, forkear y cambiar en la fuente, y es donde construyo ideas de harness antes de confiar en ellas en cualquier otro lado. El lado financiero de esa elección está en si vale la pena Claude Max.

Quién debería usar pi

Pi te sirve si

  • Obligatorio:
    Trabajas en la terminal.Pi no tiene GUI. Si tu workflow es teclado y shell, no te cuesta nada. Si no, es fricción real.
  • Obligatorio:
    Quieres ver lo que hace el agente.La transparencia es el valor central de pi. Si quieres automatización y guardrails y no te interesa inspeccionar el loop, un agente gestionado con herramientas más ricas es una opción razonable.
  • Obligatorio:
    Controlas tu propio gasto en tokens.Usar tu propia API key significa pagar directo la tarifa de la API y poder optimizar por tarea. En un plan de suscripción fija, donde el costo no es una variable que controlas, esa ventaja desaparece.
  • Opcional:
    Quieres cambiar de modelo según la tarea.Usar un solo proveedor todo el tiempo está bien. El comando /model sirve si trabajas con varios modelos o quieres comparar salidas en la misma tarea.
  • Anti-pattern:
    Necesitas herramientas empresariales gestionadas.Pi es una CLI open source. No es un SaaS gestionado con logs de auditoría, control de acceso por roles ni SLAs de proveedor. Herramienta equivocada para ese contexto.
  • Anti-pattern:
    Quieres un IDE con panel de gestión de proyectos.Cursor, Windsurf, Kiro. Todos son mejores respuestas si quieres la experiencia con GUI. Pi es un loop en tu terminal y nada más.
Criterios honestos. Pi no es la herramienta correcta para todos.

Las 13 apps que puse en producción en 70 días usaron pi como parte del harness. Es un dato real, de una sola persona, con un workflow centrado en la terminal y razones específicas para mantener el loop visible. Tu situación puede ser distinta.

La transparencia es lo que realmente estás comprando

Las cuatro herramientas y el system prompt de 150 palabras no son el producto. Son consecuencias de una decisión: hacer del agente algo que un programador pueda entender por completo.

Cuando pi hace algo mal, tienes cuatro lugares donde mirar. Una lectura de archivo mala. Una escritura en la ruta equivocada. Un comando bash que devolvió ruido. Una respuesta del modelo que malinterpretó la instrucción. La superficie de depuración coincide exactamente con la superficie de herramientas.

Suena obvio. La mayoría de los agentes lo hace casi imposible. La capa de MCP tiene 18.000 tokens de descripciones de herramientas que no escribiste. El planner oculto corrió tres pasos antes de que vieras la primera salida. El pool de subagents despachó trabajo que no observaste. Cuando algo se rompe, la falla vive dentro de una caja que no puedes abrir.

Pi abre la caja. Si quieres usarlo, está en GitHub bajo earendil-works. Instálalo, mira las llamadas a herramientas, lee los archivos de sesión. Lo que ves es lo que corre.

Preguntas frecuentes

¿Cómo instalo el pi coding agent?

Pi se distribuye como paquete npm. Instálalo globalmente con npm i -g @mariozechner/pi y ejecuta pi para iniciar una sesión. Vas a necesitar una API key del proveedor que uses: Anthropic, OpenAI, Gemini o un endpoint de modelo local.

¿El pi coding agent soporta MCP?

No por defecto. Pi excluye MCP a propósito porque un MCP server típico agrega entre 13.000 y 18.000 tokens de descripciones de herramientas a cada sesión antes de que escribas un solo carácter. Si quieres una integración MCP específica, puedes conectarla a mano. El costo queda explícito, no oculto.

¿Puedo usar pi con Claude Sonnet u Opus de Anthropic?

Sí. Pi es agnóstico al proveedor. Funciona con Anthropic (incluidos Sonnet y Opus), OpenAI, Gemini y endpoints de modelos locales. Tú pones tu propia API key. Cambia el modelo activo durante la sesión con el comando /model.

¿Cómo maneja pi las sesiones largas que se acercan al límite de contexto?

Pi compacta automáticamente cuando la context window se acerca al límite, y mantiene la sesión viva sin obligarte a reiniciar. También puedes disparar la compactación a mano con /compact en cualquier momento.

El historial completo de la sesión se guarda en archivos JSONL. Usa /resume para retomar una sesión anterior, /fork para crear una rama desde un punto específico del historial y /tree para ver la estructura completa de ramas. No se pierde nada.

¿El pi coding agent está listo para producción?

Pi se defiende bien en Terminal-Bench 2.0, que es una medida objetiva. La respuesta más útil: lo usé como parte del harness que puso en producción 13 apps de una fintech cripto en 70 días, solo. Es una carga de trabajo real, sostenida en el tiempo, no una corrida de benchmark. Si encaja en tu workflow de producción depende de tu tolerancia a una herramienta solo de terminal, sin GUI. La capacidad está.

¿Cuál es la diferencia entre pi y Claude Code?

Pi es mínimo y open source: cuatro herramientas, un system prompt corto, sin MCP por defecto y transparencia total de la sesión vía JSONL. Claude Code es un producto de agente gestionado de Anthropic, con herramientas integradas más ricas, soporte nativo de MCP, un sistema de permisos y hooks, y desarrollo continuo de features por parte del equipo de Anthropic. Si quieres toda la superficie de features y ya estás en el ecosistema de Anthropic, Claude Code es la opción natural. Si quieres un loop que puedas inspeccionar, forkear y modificar a nivel de código fuente, pi encaja mejor.

La facturación también es distinta. Un plan Claude Pro o Max cubre Claude Code, pero no a pi. Pi corre con una API key de cualquier proveedor o, desde el 29 de septiembre de 2026, con un plan ChatGPT Plus o Pro.