FIPA-ACL 遗产


文档摘要

FIPA-ACL 遗产 本节摘要:在 MCP、在 A2A 之前,有过 FIPA-ACL。2000 年,IEEE 的智能物理Agent基金会(FIPA)批准了一套Agent通信语言——二十个施事语(performatives)、两种内容语言、一组交互协议(合同网、订阅/通知、请求-当)。它因本体(ontology)开销太重而在产业界淡出,但 LLM 多智能体的复兴正在悄悄重实现同样的思想:JSON 契约顶替了施事语,自然语言顶替了本体。本节认真读 FIPA-ACL,让你看清 2026 年各协议决策里哪些是「重新发明」、哪些是真创新、哪些老问题将被新一代规范重新踩一遍。读完本节,你能用一份「五问清单」审视任何新协议,而不被营销话术牵着走。

FIPA-ACL 遗产

本节摘要:在 MCP、在 A2A 之前,有过 FIPA-ACL。2000 年,IEEE 的智能物理Agent基金会(FIPA)批准了一套Agent通信语言——二十个施事语(performatives)、两种内容语言、一组交互协议(合同网、订阅/通知、请求-当)。它因本体(ontology)开销太重而在产业界淡出,但 LLM 多智能体的复兴正在悄悄重实现同样的思想:JSON 契约顶替了施事语,自然语言顶替了本体。本节认真读 FIPA-ACL,让你看清 2026 年各协议决策里哪些是「重新发明」、哪些是真创新、哪些老问题将被新一代规范重新踩一遍。读完本节,你能用一份「五问清单」审视任何新协议,而不被营销话术牵着走。

学习目标

阅读完本节,你应当能够:

  1. 说清**言语行为理论(Speech Act)**到 FIPA-ACL 的演化链条(Austin → Searle → KQML → FIPA)。
  2. 识别 FIPA 二十个施事语中与 LLM 协议对应的核心原语(inform、request、query-ref、cfp、subscribe)。
  3. 把 MCP、A2A、ACP、ANP 等 2026 协议映射回 FIPA 施事语族,判断其创新与重发明。
  4. 说明放弃共享本体带来的**语义漂移(semantic drift)**风险及其缓解手段。
  5. 用「五问清单」在采用任何新协议前做一次架构尽职调查。

一、问题与直觉

2026 年的 Agent 协议图景拥挤:MCP 管工具、A2A 管 Agent 间通信、ACP 管企业审计、ANP 管去中心化信任、NLIP 管自然语言内容,外加 CA-MCP 与几十份研究提案。每个规范都自称「奠基性」。

诚实的解读是:它们大多在重新发现一条二十年前就画好的决策树。Austin(1962)与 Searle(1969)的言语行为理论告诉我们「话语即行动」;KQML(1993)把它变成线协议;FIPA-ACL(2000)产出标准化参考——二十个施事语、SL0/SL1 内容语言、合同网与订阅-通知等交互协议。JADE 与 JACK 是 Java 参考平台。这套努力约在 2010 年衰落,因为本体开销太重、Web 赢了栈。

当你看 MCP 的 tools/call、A2A 的任务生命周期、或 CA-MCP 的共享上下文存储,你看到的都是 FIPA 当年决策的更软、JSON 原生的翻版。懂这段遗产能告诉你两件事:哪些「创新」其实是重发明,哪些老失败模式新规范还会重新踩到。

言语行为:一段话讲清

Austin 注意到有些句子不是在描述世界,而是在改变世界:「我承诺」「我请求」「我宣布」。他称之为施事话语(performative utterance)。Searle 形式化为五类:断言类(assertive)、指令类(directive)、承诺类(commissive)、表达类(expressive)、宣告类(declarative)。KQML 把它工程化:一条消息 = 施事语(动作)+ 内容(关于什么)。FIPA-ACL 清理了 KQML 的缺口,标准化为约二十个施事语。

FIPA 的二十个施事语(节选)

施事语 意图
inform 我告诉你 P 为真
request 我请你做 X
query-if P 是否为真?
query-ref X 的值是什么?
propose 我提议我们做 X
accept-proposal / reject-proposal 我接受/拒绝该提议
agree / refuse 我同意/拒绝做 X
confirm / disconfirm 我确认/否认 P
not-understood 你的消息没解析出来
cfp 就 X 招标
subscribe X 变化时通知我
cancel 取消进行中的 X
failure 我试了 X 但失败了

重点不在背全表,而在于:每一个都对应着 LLM 协议最终会重新加回来的某个原语。

标准 FIPA-ACL 消息

(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 )

七个字段承协议信封,一个字段(content)承载荷。其余字段正是你每次给 JSON 协议加重试、线程化、本体时都要重新发明的东西。

为什么 FIPA 衰落

  • 本体开销:FIPA 要求共享本体才能解析 content。达成本体共识是数年的标准化过程;Web 直接用 HTTP + JSON。
  • 没人用的形式语义:SL 给出严格真值条件,但生产系统多用自由格式内容,无视形式化。
  • 工具锁定:JADE 仅 Java;JACK 商业。多语言团队绕开了两者。
  • 互联网赢了栈:REST、JSON-RPC、gRPC 取代了 ACL 的传输层。

LLM 复兴就是 FIPA-lite

把 FIPA 的 request 和 MCP 的 tools/call 并排看:

(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 ) }

同样的信封,不同的语法。都携带:谁、给谁、意图、载荷、关联 id。谁也不是相对另一个的革命——它们是同一设计的不同权衡。

放弃本体的代价

没有共享本体,Agent 从自然语言内容里推断含义。2026 年被记录的失败模式是语义漂移:两个 Agent 用同一个词(如「customer」)指代微妙不同的概念,接收方按错误理解行动,而没有任何 schema 校验器能抓到。FIPA 的本体要求本会在解析期就拒收这条消息。

⚠️ 这就是「协调难点」的典型形态——不是技术实现难,而是语义对齐难。本体的价值正在于此:它把语义冲突从「运行时悄悄出错」提前到「解析时显式失败」。

二、从零实现

原课程 code/main.py 用 Python 标准库实现一个 FIPA-ACL 翻译器,演示每条 MCP/A2A 消息如何归约到同样的七个字段。核心是一个消息信封与一个合同网玩具演示。

信封编解码

def encode_acl(performative, sender, receiver, content, language="JSON", ontology=None, conv_id=None, reply_with=None): msg = { "performative": performative, "sender": sender, "receiver": receiver, "content": content, "language": language, } if ontology: msg["ontology"] = ontology if conv_id: msg["conversation-id"] = conv_id if reply_with: msg["reply-with"] = reply_with return msg def to_mcp_tools_call(acl_msg): # FIPA request → MCP tools/call return {"jsonrpc": "2.0", "method": "tools/call", "params": acl_msg["content"], "id": acl_msg.get("conversation-id")}

合同网玩具演示

一个经理向三个投标者招标,用 cfp / propose / accept-proposal / reject-proposal 跑一轮:

def contract_net(manager, bidders, task): trace = [] cfp = encode_acl("cfp", manager, bidders, task, conv_id="c42") trace.append(cfp) proposals = [] for b in bidders: bid = {"bidder": b, "price": fake_bid(task)} # propose proposals.append(encode_acl("propose", b, manager, bid, conv_id="c42")) trace += proposals winner = min(proposals, key=lambda p: p["content"]["price"]) trace.append(encode_acl("accept-proposal", manager, winner["sender"], winner["content"], conv_id="c42")) for p in proposals: if p is not winner: trace.append(encode_acl("reject-proposal", manager, p["sender"], p["content"], conv_id="c42")) return trace, winner

设计要点:合同网是任务市场的原型——它把「谁来做、做多便宜」变成一个显式协议而非隐式编排。第 16 节的协商与第 21 节的 Agent 经济都建筑其上。

三、框架对比

2026 规范 FIPA 类比 保留 放弃
MCP tools/call request 显式意图、关联 id 形式语义、本体
MCP resources/read query-ref 显式意图、关联 id 形式语义
A2A 任务生命周期 合同网 + 请求-当 异步生命周期、状态迁移 形式完备性保证
A2A 流式事件 订阅/通知 异步推送 类型化谓词订阅
CA-MCP 共享上下文 黑板模型(Hayes-Roth 1985) 多写者共享内存 逻辑一致性模型
NLIP 自然语言内容 LLM 原生 schema

读这张表自上而下,规律是:保留结构原语、丢掉形式化、让 LLM 去糊上语义的缝隙。

值得搬到 LLM 系统的三个 FIPA 交互协议:

  1. 合同网协议(CNP):经理发 cfp,投标者 propose,经理 accept/reject。这是任务市场模式(见第 16、21 节)。
  2. 订阅/通知:订阅者发 subscribe,发布者在主题变化时发 inform。这就是 2026 年的每个事件总线。
  3. 请求-当(Request-When):「当条件 Y 成立时做 X」。带前置条件的延迟动作。2026 年的对应物是持久化工作流引擎里的延迟任务(见第 22 节)。

四、可复用产物

outputs/skill-fipa-mapper.md 是一个技能:读取任何 Agent 协议规范,产出其 FIPA-ACL 映射。采用新协议前先用它回答一句:「这到底是新东西,还是带 JSON 语法的 inform?」

五问清单(别把 FIPA 搬回来,把它的清单搬回来):

  1. 每条消息的**意图原语(施事语)**是什么?
  2. 有没有用于请求-响应与取消的关联 id?
  3. 有没有显式内容语言(JSON-RPC、纯文本、结构化类型化产物)?
  4. 交互协议是否一等公民,还是你又在从头实现合同网?
  5. 当两个 Agent 对内容含义**意见不合(语义漂移)**时会发生什么?

把任何新协议进生产前,先为这五问写下答案。

五、练习

  1. 跑通演示:运行 code/main.py,观察往返编解码。识别 tools/callresources/read、A2A 任务创建各自对应哪个 FIPA 施事语。
  2. 加取消:给合同网演示加一个 cancel 施事语,让经理能在投标中途撤回任务。cancel 解决了什么单靠重试解决不了的失败场景?
  3. 读规范:读 FIPA ACL Message Structure(fipa00037)4.1–4.3 节,挑一个本节未覆盖的施事语,描述它的现代 JSON-RPC 对应物。
  4. 读综述:读 Liu et al.(arXiv:2505.02279),为 MCP、A2A、ACP、ANP 各列出它们保留与放弃的 FIPA 施事语族。
  5. 设计 schema:为你的系统里 request 施事语的 content 字段设计一个最小 JSON Schema。它给了你什么纯自然语言给不了的?代价又是什么?

本节要点回顾

  1. 言语行为是理论源头:Austin/Searle 把话语当动作,KQML 把它工程化为线协议,FIPA 在 2000 年标准化为二十个施事语。
  2. FIPA 消息七字段:sender、receiver、content、language、ontology、protocol、conversation-id——其余字段是你每次重发明的。
  3. 衰落原因:本体开销重、形式语义没人用、工具锁定、Web 赢了栈。
  4. LLM 复兴是 FIPA-lite:JSON 契约顶施事语、自然语言顶本体、Web 栈顶传输;信封结构几乎没变。
  5. 三个值得搬的交互协议:合同网(任务市场)、订阅/通知(事件总线)、请求-当(延迟任务)。
  6. 放弃本体的代价是语义漂移:同一个词不同含义,接收方误判,schema 抓不到——协调的难点往往在语义对齐而非技术实现。
  7. 缓解手段:JSON Schema 校验结构、类型化产物校验模态、信封显式施事语让意图无歧义。
  8. 五问清单:意图原语、关联 id、内容语言、交互协议一等公民、语义冲突处理——任何新协议进生产前先回答。

下一节,我们进入具体的通信协议设计——如何为多智能体选择消息格式、传输层与会话语义,把本节的施事语落到可部署的工程层。


发布者: 作者: Rohit Gupta 转发
评论区 (0)
U