跳转到内容

协议与通信:MCP、A2A、AAIF、hcom 与 mcp_agent_mail

第 2 课讲过一条站内信从"送达"到"已读"到"已消费"的旅程。这一页看外面的世界怎么定这些事:MCP 定 agent 和工具怎么说话,A2A 定 agent 和 agent 怎么派活,AAIF 是把这两个协议收进同一把伞的基金会。后两个项目和我们的 aios-comm 同槽位:hcom 解决"终端里的实时插话",mcp_agent_mail 解决"异步、可审计、带文件租约"的邮箱。8 月你已裁定总线单选 hcom;这一页补 9 月的新情况,和"内部协议不要再发明第四套"这条建议。

Grok 于 2026 年 9 月 11 日核实。hcom 8 月裁决与 spike 实测见[Agent 通信总线](/oss/agent-comm-bus/),这里只写增量。

先记三样
  • 位置:协议是标准,该用名字;站内信实现独特,自建。
  • 抄与不抄:抄:A2A 的任务状态机字段、MCP 的资源与工具分离、mcp_agent_mail 的 SQLite 加 Git 双写与租约。不抄:第四套协议、A2A 全协议。
  • 一个数:MCP 7 月 28 日起无会话。一条令:"站内信当 resource,动作当 tool,工具返回值一律当外部输入。"

Model Context Protocol(规范、SDK、servers)

Section titled “Model Context Protocol(规范、SDK、servers)”
  1. 一句话:agent 与工具、资源之间的开放协议,现由 AAIF 托管。规范仓 modelcontextprotocol/modelcontextprotocol;官方 SDK 有 Python、TypeScript 等;servers 仓只保留教学用参考实现,生产名录在 Registry。
  2. 解决什么:每个模型厂商一套插件,工具无法移植;进程 stdin 与远程 HTTP 也无法用同一套原语。
  3. 架构:Host(比如 Claude Code)为每个 Server 建一个 Client。数据层是 JSON-RPC,三类原语 tools、resources、prompts;传输是 stdio 或 Streamable HTTP。现行版本 2026-07-28:无会话,每请求带 version 与 capabilities,用 server/discover 握手。Sampling 已弃用。
  4. 核心机制:工具可执行、资源只读、提示词是模板,三者分开;传输可换、语义不变;2026 规格把状态从会话挪到可移植 handle,这一点有安全争议。
  5. 值得借鉴:站内信当 resource(读便宜),动作当 tool(写要授权)。永远把工具返回值当不可信输入。
  6. 坑与失效:参考服务器明确“非生产”。CVE-2025-49596:Inspector 0.14.1 之前版本代理无认证可远程执行代码。生态里大量 SSRF、命令注入、工具投毒;stdio 传输被报波及面大。采样双向通道曾是协议级弱点。
  7. 状态:servers 90,236 星,2026.8.31;python-sdk 24,268 星,v2.2.0(2026-09-07);typescript-sdk 13,369 星,core 2.0.0(2026-07-27);规范仓 9,184 星,2026-07-28 版。均活跃。
  8. 我们的关系:已在用,不自造。 我们的 Telegram 插件、Grok 派工都走 MCP。第 2 课讲过 7 月 28 日改成无会话对我们的意义:每次请求自带能力声明,Host 重启不丢状态。
  1. 一句话:agent 与 agent 之间的协议(Google 发起,Linux Foundation,2026 年 8 月入 AAIF):对方是黑盒,只交换 Card、任务状态和产物。SDK 与样例在同一组织下。
  2. 解决什么:MCP 连的是工具;跨厂商、跨进程的“把活派给另一个 agent 并等几天”没有标准任务状态机。
  3. 架构:发现走 /.well-known/agent-card.json,鉴权后用 SendMessage 开一个 Task;Task 状态机是 submitted、working、input-required 或 auth-required、completed、failed、canceled、rejected;交换 Message、Artifact、Part;支持 JSON-RPC、gRPC、HTTP。v1.0 加了签名 Card 和版本头。
  4. 核心机制:不暴露内部工具与记忆;任务是带 ID 的状态机,长任务是一等公民;发现去中心,靠 Card 而非注册中心。
  5. 值得借鉴:站内信加 taskId 加显式状态,不要只丢一段自然语言。对外协作先发“我会什么”的卡片,而不是把 MCP 工具表公开。
  6. 坑与失效:早期被批与 MCP 重叠、落地负担大;技能与任务曾脱节,变成“带协议的群聊”。签名 Card 不强制则能伪造。v1.0 后字段与 2025 年教程大量不兼容。
  7. 状态:协议仓 25,730 星,v1.0.1(2026-05-28);python SDK 2,138 星,v1.1.4(2026-09-08);samples 1,763 星,无 release。组织多仓当日仍在 push。
  8. 我们的关系:借鉴状态机,不上全协议。 第 2 课的六个状态(DELIVERY_PENDING 到 DELIVERED_CONFIRMED)和 A2A 的任务状态机可以对齐字段名;对内不必上 Card 和 JSON-RPC。
  1. 一句话:Linux Foundation 下 2025 年 12 月成立的基金会,中立托管 MCP、goose、AGENTS.md、agentgateway、A2A。github.com/aaif 下的 technical-committee、foundation、project-proposals 及各工作组仓是治理,不是 runtime。
  2. 解决什么:协议若由单厂商私有,企业不敢押;竞品协议互不认。基金会把工具协议、代理协议、流量层放进同一伞下。
  3. 架构:Governing Board 管战略与会员,Technical Committee 管项目准入(白金会员各一票),各托管项目保持技术自治。提案进 project-proposals,绝对多数加 Board 批准。七个工作组(身份、安全、可观测等)。
  4. 核心机制:项目自治、基金会管伞;Growth 与 Impact 两级生命周期;工作组出共享词汇与景观,不代替各协议维护者。
  5. 值得借鉴:内部协议不要再发明第四套;对外用 MCP,agent 间用 A2A 任务模型。自建站内信保持私有实现,卡片字段向 A2A 对齐即可。
  6. 坑与失效:组织很新;“中立”仍是大厂董事会。工作组仓星数个位数,产出偏流程。有项目提交治理内核尚未被收。治理仓无产品 release 可跟。
  7. 状态:project-proposals 39 星(2026-09-06);technical-committee 10 星(2026-08-28);foundation 11 星(2026-08-04)。工作组 2026 年 9 月仍有更新。无统一版本号。
  8. 我们的关系:只当风向标。 第 1 课讲的“四层地图”里协议层归它管。读它的工作组词汇表,比读任何一家的博客更能知道行业在往哪对齐。
  1. 一句话:给编码 agent(Claude Code、Codex、OpenCode 等)用的跨终端总线,hooks 加本地库,让各会话互发消息、看 transcript、拉起或叉开对方。
  2. 解决什么:tmux 里多个 Claude 彼此失明,文件互踩、决策重复;官方跨会话消息只覆盖 Claude 且不能混 Codex。
  3. 架构:hcom claude 装 hooks,事件入本地库,对方的 hook 或 PTY 在工具后或空闲时注入;人类用 TUI;可选 relay 跨设备(预共享密钥加密)。
  4. 核心机制:不改 agent 本体,hook 注入;消息带 intent(request、inform、ack);同一文件 30 秒内双写发碰撞告警。
  5. 值得借鉴:空闲唤醒(Stop hook 或 PTY)比轮询站内信更接近“人在终端里”。碰撞告警可直接接到我们的文件锁。
  6. 坑与失效:relay token 泄漏约等于所有已加入设备的 shell。hooks 改 ~/.claude/settings.json;不信任仓库的 project hook 有远程执行先例(Claude 生态通病,非 hcom 独有)。第三方 skill 审计给过低分,需独立判断。最近一次 release 后 push 停在 8 月。
  7. 状态:486 星;v0.7.25(2026-08-09),49 个未关 issue。维护中等,不如头部仓日更。
  8. 我们的关系:你 8 月 15 日裁定单选,维持。 9 月的新情况只有一条要盯:作者 8 月 9 日后没再推送。如果 10 月仍无动静,路线图里“替 send-keys”那一步要准备退路,退路就是下面这个项目的形状。
  1. 一句话:“给编码 agent 的 Gmail”:FastMCP(HTTP)提供身份、收件箱、可搜线程、文件租约。Python 仓加更活跃的 Rust 重写(带 TUI 与 Web)。
  2. 解决什么:并行 agent 无身份、无审计、互改同一文件;把协调塞进 prompt 既贵又不可查。
  3. 架构:Agent 经 MCP tools 先写 SQLite(FTS5),再写每项目一份 Git 归档(人可读的邮件与租约 JSON)。可选 pre-commit 钩子按租约拦提交。
  4. 核心机制:双重持久化,SQLite 操作态加 Git 账本;租约是劝告锁加 TTL,不会死锁,提交钩子才硬拦;身份是项目内可读名(如 GreenCastle)。
  5. 值得借鉴:这几乎是我们栈的开源对照:站内信别只留 SQLite,并行一份 Git 可读归档;编辑前声明 glob 租约,过期自动释放。
  6. 坑与失效:租约可绕过(--no-verify)。Python 最新 tag v0.3.2(2026-04-16)落后于 Rust v0.3.35。GitHub 的 SPDX 显示 NOASSERTION(仓里有 LICENSE 文件)。HTTP-only,要单独跑端口。
  7. 状态:Python 2,136 星,release 停在 4 月,2026-09-06 仍有 push;Rust 161 星,v0.3.35(2026-09-09),当日 push。新功能看 Rust。
  8. 我们的关系:建议精读,作 aios-comm 的对照。 8 月的十一候选对比里它是“审计”那一栏的答案(见Agent 通信总线)。它的“SQLite 加 Git 双写”正是 7 月 29 日外部评审说“不要用真 git 做结构化状态真源”的边界案例:Git 只做人可读归档,真源仍在 SQLite,这是对的用法。
项目连的是谁和谁状态机对我们
MCPagent 与工具无会话,每请求自带能力已在用
A2Aagent 与 agent(黑盒)Task 七态抄字段名
AAIF协议与协议无风向标
hcom终端里的 agent 会话intent 三种已裁定单选,盯维护
mcp_agent_mail项目内 agent 邮箱线程加租约 TTL精读,对照 aios-comm
  • 对外用 MCP,agent 间用 A2A 的任务模型,内部实现保持私有。 不发明第四套协议,但字段名向标准对齐。
  • 站内信 SQLite 之外并行一份 Git 可读归档,编辑前声明租约。 这是 mcp_agent_mail 给的形状,也补上了第 2 课“审计”那一栏。