MCP 让 Agent 调用工具,但谁负责持续协调?Harmovela 的协议定位
MCP 推动了 Agent 与工具之间的标准化连接。Agent 可以发现服务器提供的工具和资源,通过统一协议发起调用并获得结果。
但同步工具调用只是自治系统协作的一部分。
当任务跨越多个 Agent、工具、记忆系统和运行环境,并持续数分钟、数小时甚至更久时,系统还需要回答:
- 一个任务当前处于什么阶段?
- 谁已经接受委派?
- 状态是否仍然新鲜?
- 记忆更新后,哪些决策需要失效?
- 执行中断后应重试、重放还是补偿?
- 取消上游任务时,如何向下传播?
- 多个运行时如何维持一致的治理和审计语义?
Harmovela 是面向自治系统的开放协调协议。它与 MCP 互补,而不是替代 MCP。
两者的基本分工可以概括为:
- MCP 处理同步的能力发现和调用;
- Harmovela 处理异步、增量、可重放的持续协调。
Harmovela 覆盖七个主要维度。
Event 描述发生了什么,包括发布、订阅、关联、确认和重放。
Task 描述正在执行什么,包括提交、接受、执行、进度、完成、失败和取消等生命周期状态。
State 描述现在什么是真的,并引入版本、新鲜度窗口、失效和变更传播。
Context/Memory 描述哪些信息正在影响决策,包括上下文更新、来源、检索就绪状态和记忆失效。
Delegation 描述谁负责什么,包括任务分配、接受、转交、升级和取消传播。
Recovery 描述故障发生后怎么办,包括幂等、重试、重放、检查点、中断和补偿。
Governance 描述谁被允许做什么,包括身份、授权、审计、租户隔离和策略集成。
例如,一个 Agent 可以通过 MCP 调用外部工具;Harmovela 则可以携带与这次调用相关的任务进度、状态变化、结果流、失败事件和恢复动作。即使实际工具不是 MCP 工具,Harmovela 仍然可以用于协调浏览器、机器人、IDE、云运行时和多 Agent 平台。
协议当前还增加了 Tool、Agent、Environment、Adaptation、Command 和 Query 等维度模块,并提供 Harness、Runtime、CLI、Conformance 和 MCP Bridge 等基础设施模块。
截至当前公开版本,仓库提供:
- TypeScript、Python、Go、Java 四种产品化实现;
- 每种实现包含 Runtime Daemon、CLI、HTTP API 和 MCP Bridge;
- stdio、WebSocket、SSE、gRPC、NATS、Kafka、Redis Streams 七种传输绑定;
- SQLite 与 PostgreSQL Delivery Store;
- Retry、Dead Letter 和 Replay 机制;
- 跨语言一致性验证样例;
- 约700项测试。
Harmovela 的价值不在于再发明一种消息队列。通用消息系统能够传输数据,却不知道一条消息代表任务接受、状态失效、委派转移还是补偿完成。
协议层需要定义自治参与者共同理解的语义,而不仅是消息如何从 A 到达 B。
这也是 Agent 基础设施正在出现的分层:
- 模型 API 提供推理;
- MCP 提供同步能力调用;
- Harmovela 提供跨参与者的异步协调;
- 具体运行时和业务系统负责执行与状态权威。
当 Agent 从单次工具调用走向长期、多主体和跨系统运行时,“协调”会像调用一样成为独立的协议问题。
项目地址:https://github.com/axisrobo/harmovela
