Phase 16 - Lesson 02
El legado de FIPA-ACL y los actos de habla
Antes de MCP, antes de A2A, existía FIPA-ACL. En 2000, la IEEE Foundation for Intelligent Physical Agents ratificó un lenguaje de comunicación de agentes con veinte performativos, dos lenguajes de contenido y un conjunto de protocolos de interacción — contract net, subscribe/notify, request-when. Desapareció de la industria porque la sobrecarga de la ontología era demasiado pesada para la web, pero el renacimiento de los sistemas multiagente con LLMs está reimplementando silenciosamente las mismas ideas sin la semántica formal: los contratos JSON reemplazan a los performativos, el lenguaje natural reemplaza a las ontologías. Esta lección analiza FIPA-ACL con seriedad para que puedas ver qué decisiones de protocolo de 2026 son reinvención, cuáles son novedad y dónde la ola actual redescubrirá problemas que los años 2000 ya habían resuelto.
Tipo: Aprender Lenguajes: Python (stdlib) Prerrequisitos: Phase 16 · 01 (Why Multi-Agent) Tiempo: ~60 minutos
El Problema
El panorama de los protocolos de agentes de 2026 está muy concurrido: MCP para herramientas, A2A para agentes, ACP para auditoría empresarial, ANP para confianza descentralizada, NLIP para contenido en lenguaje natural, además de CA-MCP y dos docenas de propuestas de investigación. Cada especificación se anuncia a sí misma como fundamental.
La lectura honesta es que la mayoría de ellas están redescubriendo un árbol de decisiones muy específico de hace veinte años. La teoría de los actos de habla de Austin (1962) y Searle (1969) nos dio "los enunciados son acciones". KQML (1993) convirtió eso en un protocolo de red. FIPA-ACL (ratificado en 2000) produjo la estandarización de referencia: veinte performativos, lenguajes de contenido SL0/SL1, protocolos de interacción para contract-net y subscribe-notify. JADE y JACK fueron las plataformas Java de referencia. El esfuerzo se desvaneció alrededor de 2010 porque la sobrecarga de la ontología era demasiado pesada y la web estaba ganando.
Cuando miras el tools/call de MCP, el ciclo de vida de las tareas de A2A o el almacén de contexto compartido de CA-MCP, estás viendo una versión más suave y nativa en JSON de las decisiones de FIPA. Conocer el legado te dice dos cosas: qué nuevas "innovaciones" son en realidad reinvenciones y qué viejos modos de fallo redescubrirán las nuevas especificaciones.
El Concepto
Actos de habla, en un párrafo
Austin notó que algunas oraciones no describen el mundo, sino que lo cambian. "Prometo." "Solicito." "Declaro." A estos enunciados los llamó enunciados performativos. Searle formalizó cinco categorías: asertivos, directivos, compromisorios, expresivos, declarativos. KQML (Finin et al., 1993) hizo esto operacional para agentes de software: un mensaje es un performativo (la acción) más el contenido (de qué trata la acción). FIPA-ACL solucionó los vacíos de KQML y se estandarizó en torno a veinte performativos.
Los veinte performativos de FIPA (lista parcial)
| Performativo | Intención |
|---|---|
inform |
"Te digo que P es verdadero" |
request |
"Te pido que hagas X" |
query-if |
"¿Es P verdadero?" |
query-ref |
"¿Cuál es el valor de X?" |
propose |
"Propongo que hagamos X" |
accept-proposal |
"Acepto la propuesta" |
reject-proposal |
"Rechazo la propuesta" |
agree |
"Acepto hacer X" |
refuse |
"Me niego a hacer X" |
confirm |
"Confirmo que P es verdadero" |
disconfirm |
"Niego P" |
not-understood |
"Tu mensaje no se pudo procesar (parse)" |
cfp |
"Convocatoria de propuestas sobre X" |
subscribe |
"Notifícame cuando X cambie" |
cancel |
"Cancela el X en curso" |
failure |
"Intenté X y fallé" |
La lista completa está en fipa00037.pdf (FIPA ACL Message Structure). El objetivo no es memorizarla; el punto es que cada uno de estos corresponde a una primitiva que un protocolo de LLM eventualmente vuelve a agregar.
Canonical FIPA-ACL message
(inform
:sender agent1@platform
:receiver agent2@platform
:content "((price IBM 83))"
:language SL0
:ontology finance
:protocol fipa-request
:conversation-id conv-42
:reply-with msg-17
)
Siete campos transportan el sobre (envelope) del protocolo; un campo (content) transporta la carga útil (payload). El resto de los campos son exactamente lo que reinventas cada vez que agregas reintentos (retries), hilos (threading) y ontología a un protocolo JSON.
Las dos plataformas heredadas
JADE (Java Agent DEvelopment framework, 1999–década de 2020) fue el entorno de ejecución compatible con FIPA más utilizado. Los agentes extendían una clase base, intercambiaban mensajes ACL, se ejecutaban dentro de contenedores y se coordinaban mediante "comportamientos" (behaviors). La biblioteca de protocolos de interacción incluía contract-net, subscribe-notify, request-when y propose-accept.
JACK (Agent Oriented Software, comercial) enfatizaba el razonamiento BDI (Belief-Desire-Intention) sobre los mensajes FIPA. Base formal, menos adoptado.
Ambos disminuyeron una vez que el stack web absorbió los casos de uso multiagente. MCP y A2A son los "contenedores" de ejecución de 2026.
Por qué se desvaneció FIPA
- Sobrecarga de ontología. FIPA requería una ontología compartida para procesar
content. Acordar ontologías es un proceso de estandarización que lleva años. La web simplemente usó HTTP + JSON. - Semántica formal que nadie usaba. SL (Semantic Language) proporcionaba condiciones de verdad rigurosas, pero la mayoría de los sistemas de producción utilizaban contenido de formato libre e ignoraban el formalismo.
- Bloqueo de herramientas (Tooling lock-in). JADE era solo para Java; JACK era comercial. Los equipos políglotas los evitaron.
- El internet ganó el stack. REST, luego JSON-RPC y luego gRPC reemplazaron el transporte de ACL.
El renacimiento de los LLMs es FIPA-lite
Compara un request de FIPA con un tools/call de MCP:
(request {
:sender agent1 "jsonrpc": "2.0",
:receiver tool-server "method": "tools/call",
:content "(lookup stock IBM)" "params": {"name":"lookup_stock",
:ontology finance "arguments":{"symbol":"IBM"}},
:conversation-id c42 "id": 42
) }
Mismo sobre, diferente sintaxis. Ambos contienen: quién, a quién, intención, carga útil (payload), id de correlación. Ninguno es una revolución sobre el otro; son diferentes compensaciones (trade-offs) sobre el mismo diseño.
El estudio de 2025 de Liu et al. ("A Survey of Agent Interoperability Protocols: MCP, ACP, A2A, ANP", arXiv:2505.02279) hace explícita esta genealogía: MCP corresponde a los actos de habla del uso de herramientas, A2A a los actos de habla entre agentes pares (peer-to-peer), ACP a los actos de habla de pistas de auditoría y ANP a las extensiones de identidad descentralizada. Las nuevas especificaciones son descendientes de ACL con sintaxis JSON y semánticas más flexibles.
El trade-off, explicado de forma sencilla
Lo que FIPA ofreciaba y las especificaciones modernas descartan:
- Semántica formal: puedes demostrar que
informimplica que el remitente cree en el contenido. - Un catálogo canónico de performativos: no tienes que volver a discutir "¿deberíamos tener un
cancel?". - Décadas de patrones de protocolos de interacción — contract-net, subscribe-notify, propose-accept — con propiedades de corrección conocidas.
Lo que ofrecen las especificaciones modernas y FIPA no ofrecía:
- Cargas útiles nativas en JSON compatibles con todas las herramientas modernas.
- Contenido en lenguaje natural que los LLMs pueden interpretar sin una ontología codificada a mano.
- Transporte en la pila web (HTTP, SSE, WebSocket).
- Descubrimiento de capacidades mediante documentos autodescriptivos (MCP
listTools, A2A Agent Card).
Semántica de intención más flexible para una implementación más sencilla. Esa es exactamente la compensación.
Protocolos de interacción que vale a pena portar
FIPA incluía aproximadamente 15 protocolos de interacción. Vale la pena trasladar tres de ellos a los sistemas multiagente con LLM:
- Contract Net Protocol (CNP). El gestor emite un
cfp(call for proposals / convocatoria de propuestas); los postores responden conpropose; el gestor acepta o rechaza. Este es el patrón canónico de mercado de tareas (Fase 16 · 16 Negotiation). - Subscribe/Notify. El suscriptor envía
subscribe; el publicador envíainformcada vez que cambia el tema. Este es el caso de todos los buses de eventos (event-bus) en 2026. - Request-When. "Haz X cuando se cumpla la condición Y". Acción diferida con condiciones previas. El análogo de 2026 son las tareas diferidas en motores de flujo de trabajo duraderos (Fase 16 · 22 Production Scaling).
Cada uno se mapea limpiamente en colas de mensajes modernas, HTTP + polling o transmisión SSE.
Qué se rompe al descartar la ontología
Sin una ontología compartida, los agentes infieren el significado del contenido en lenguaje natural. El modo de fallo documentado en 2026 es la desviación semántica (semantic drift): dos agentes usan la misma palabra ("customer") para conceptos sutilmente diferentes, el agente receptor actúa bajo la interpretación errónea y ningún validador de esquema lo detecta. El requisito de ontología de FIPA habría rechazado el mensaje en el momento del análisis (parse).
Mitigaciones sin llegar a una ontología completa:
- JSON Schema en
content: rechaza errores estructurales en la red. - Artefactos tipados (A2A): rechazan la modalidad incorrecta.
- Performativo explícito en el sobre (envelope): hace que la intención sea inequívoca incluso cuando el contenido está en lenguaje natural.
The 2026 specs, mapped to speech-act heritage
| Espec. moderna | Análogo FIPA | Lo que conserva | Lo que descarta |
|---|---|---|---|
MCP tools/call |
request |
intención explícita, id de correlación | semántica formal, ontología |
MCP resources/read |
query-ref |
intención explícita, id de correlación | semántica formal |
| Ciclo de vida de Task de A2A | contract-net + request-when | ciclo de vida asíncrono, transiciones de estado | garantías de completitud formal |
| Eventos de transmisión de A2A | subscribe/notify | push asíncrono | suscripción con predicados tipados |
| Contexto compartido de CA-MCP | pizarra (blackboard, Hayes-Roth 1985) | memoria compartida de escritura múltiple | modelo de consistencia lógica |
| NLIP | contenido en lenguaje natural | nativo para LLM | esquema |
Build It
code/main.py implementa un traductor FIPA-ACL puramente con la biblioteca estándar (stdlib). Codifica y decodifica el sobre (envelope) ACL canónico y muestra cómo cada formato de mensaje de MCP / A2A se reduce a los mismos siete campos. La demostración:
- Codifica cinco mensajes de estilo MCP y A2A como FIPA-ACL.
- Decodifica FIPA-ACL de vuelta a su equivalente moderno.
- Ejecuta una negociación simulada de Contract Net entre un gestor y tres postores usando
cfp,propose,accept-proposalyreject-proposal.
Ejecuta:
python3 code/main.py
La salida es una traza lado a lado que muestra cada mensaje moderno tanto en su formato JSON de 2026 como en su formato FIPA-ACL, y luego un viaje de ida y vuelta de una oferta de contract-net. Las mismas primitivas de protocolo sobreviven al viaje de ida y vuelta; solo difiere la sintaxis.
Use It
outputs/skill-fipa-mapper.md es una habilidad (skill) que lee cualquier especificación de protocolo de agentes y produce el mapeo FIPA-ACL. Úsala antes de adoptar un nuevo protocolo para responder: "¿Es esto genuinamente nuevo, o es solo un inform con sintaxis JSON?"
Ship It
No traigas de vuelta FIPA-ACL. Trae de vuelta su lista de verificación (checklist):
- ¿Cuál es la primitiva de intención (performativo) de cada mensaje?
- ¿Existe un id de correlación para solicitud-respuesta y cancelación?
- ¿Existe un lenguaje de contenido explícito (JSON-RPC, texto sin formato, artefacto tipado estructurado)?
- ¿Son los protocolos de interacción de primera clase, o estás reimplementando contract-net desde cero?
- ¿Qué sucede cuando dos agentes no están de acuerdo sobre el significado del contenido (desviación semántica)?
Documenta estas cinco preguntas para cualquier protocolo nuevo antes de enviarlo a producción.
Ejercicios
- Ejecuta
code/main.py. Observa la codificación de ida y vuelta. Identifica qué performativo de FIPA corresponde atools/call,resources/ready a la creación de tareas en A2A. - Extiende la demostración de contract-net con un performativo
cancelque permita al gestor retirar la tarea a mitad de la oferta. ¿Qué caso de fallo resuelvecancelque los reintentos por sí solos no solucionan? - Lee las secciones 4.1 a 4.3 de la estructura de mensajes de FIPA ACL (http://www.fipa.org/specs/fipa00037/). Elige un performativo que no se trate en esta lección y describe su análogo moderno en JSON-RPC.
- Lee Liu et al., arXiv:2505.02279. Para cada uno de MCP, A2A, ACP, ANP, enumera las familias de performativos de FIPA que conservan y descartan.
- Diseña un JSON-Schema mínimo para el campo
contentde un performativorequesten tu propio sistema. ¿Qué te aporta ese esquema que el lenguaje natural puro no te da, y cuál es su costo?
Términos clave
| Término | Lo que dice la gente | Lo que realmente significa |
|---|---|---|
| Speech act | "Un enunciado que hace algo" | Austin/Searle: enunciados como acciones. El origen teórico de ACL. |
| FIPA | "Esa vieja cosa de XML" | IEEE Foundation for Intelligent Physical Agents. Estandarizó ACL en 2000. |
| ACL | "Lenguaje de Comunicación de Agentes" | El formato de sobre (envelope) de FIPA: performativo + contenido + metadados. |
| Performative | "El verbo" | La clase de intención de un mensaje: inform, request, propose, cfp, etc. |
| KQML | "El predecesor de FIPA" | Knowledge Query and Manipulation Language (1993). Más simple, más estrecho. |
| Ontology | "Vocabulario compartido" | Una definición formal de los conceptos de los que habla el lenguaje de contenido. |
| SL0 / SL1 | "Lenguajes de contenido de FIPA" | Semantic Language niveles 0 y 1: la familia de lenguajes formales de contenido. |
| Contract Net | "Mercado de tareas" | El gestor emite un cfp; los postores proponen; el gestor acepta. El protocolo de interacción canónico. |
| Interaction protocol | "Patrón de mensajes" | Una secuencia de performativos con corrección conocida: request-when, subscribe-notify, etc. |
Further Reading
- Liu et al. — A Survey of Agent Interoperability Protocols: MCP, ACP, A2A, ANP — el estudio canónico de 2025 que conecta las especificaciones modernas con el legado de FIPA
- FIPA ACL Message Structure Specification (fipa00037) — el formato de sobre (envelope) ratificado en 2000
- FIPA Communicative Act Library Specification (fipa00037) — el catálogo completo de performativos
- MCP specification 2025-11-25 — el equivalente moderno de
request/query-refpara el uso de herramientas - A2A specification — el equivalente moderno de contract-net y subscribe-notify entre agentes pares