Temario · lección 62 de 74
1Por qué fallan los agentes
2Qué es un harness
3Patrones de agentes
4Herramientas
5Ingeniería de contexto
6El repositorio como memoria
7Tareas largas
8Alcance y “hecho” de verdad
9Observabilidad y estado limpio
10Loops y grafos
11Harness reales
12Proyecto final
- Proyecto 1, solo prompt contra harness mínimo
- Proyecto 2, un workspace legible
- Proyecto 3, continuidad entre sesiones
- Proyecto 4, feedback de runtime e indexado
- Proyecto 5, que el agente verifique su trabajo
- Proyecto 6, el harness completo (capstone)
- Proyecto 7, tu primer loop automático
- Proyecto 8, dibuja tu flujo como un grafo
- Checklist final y plantillas
Pi, el harness minimalista
Pi reduce el núcleo al mínimo y expone casi todo como extensión programable: compactación a medida, contexto dinámico y sesiones guardadas como árbol.
Una caja de piezas, no un coche terminado
Hay quien compra un coche y hay quien compra un chasis y un motor para montarlo a su gusto. Pi (@earendil-works/pi-coding-agent) es lo segundo: se define como «minimal agent harness» y su idea es no decidir nada por ti. Cada decisión es un punto de extensión.
Lo organiza en cuatro capas personalizables:
- Extensions: hooks en TypeScript sobre los eventos del ciclo de vida.
- Skills: paquetes de capacidades que se cargan bajo demanda.
- Prompt templates: prompts reutilizables en Markdown que se activan escribiendo
/nombre. - Themes: la apariencia de la terminal.
Instrucciones: pocas y con orden claro
Pi carga AGENTS.md en este orden: el global (~/.pi/agent/AGENTS.md), luego los de los directorios padre y por último el del directorio actual (también entiende CLAUDE.md). Además SYSTEM.md permite reemplazar o ampliar el system prompt por proyecto. El prompt base es deliberadamente corto: las reglas entran como skills o extensiones cuando hacen falta, así que el problema del archivo gigante se evita de partida.
Estado y contexto: donde Pi llega más lejos
Compactación programable. Cerca del límite, Pi resume lo antiguo y conserva más o menos los 20 000 tokens más recientes. Lo interesante es que la estrategia se puede cambiar: por temas, sensible al código o con otro modelo que resuma. Cómo compactar deja de ser una constante y pasa a ser pieza del harness.
Contexto dinámico. Las extensiones pueden inyectar mensajes antes de cada ronda, filtrar el historial, hacer recuperación de información o construir memoria a largo plazo. Decides qué entra antes de que la ventana se llene.
Árbol de sesiones. Las sesiones se guardan como árbol en un solo archivo. Con /tree vuelves a cualquier punto y sigues desde ahí, como un juego con muchos puntos de guardado. Las ramas se pueden exportar a HTML para compartirlas.
Herramientas: extensiones que lo ven todo
Las skills cargan sus detalles solo al activarse, lo que cuida la caché del prompt y el coste. Las extensiones usan hooks para, por ejemplo, bloquear comandos peligrosos, proteger rutas (no escribir en .env), crear un punto de guardado al cambiar de tarea, modificar la salida de una herramienta antes de dársela al modelo o despertar al agente desde un archivo vigilado, un webhook o CI.
Un ejemplo de proyecto de la comunidad (pi-agent-harness) convierte la memoria del repo en archivos persistentes:
VISION.md -> el objetivo
PROGRESS.md -> qué se ha hecho (lo mantiene una extensión)
LESSONS.md -> lo aprendido en sesiones anteriores
STANDARDS.md -> reglas del proyecto
Es el patrón de diario de progreso, automatizado.
Modos programables
Además de la interfaz interactiva, Pi ofrece modo impresión, JSON, RPC y SDK. Un harness que solo admite conversación humana nunca podrá entrar en un loop automático.
El precio de tanta libertad: Pi no trae de serie un control de pruebas obligatorio. Los comandos de verificación los escribes tú en AGENTS.md, y las extensiones útiles tendrás que escribirlas o instalarlas.
¿Qué rasgo distingue a Pi frente a Claude Code y Codex?
Fuentes: Learn Harness Engineering, harness-designs/pi · pi.dev y README de pi-mono (según el repo)