AutoDev A2A 新能力下的云端 Agent 路径思考,从扩展到协作

过去的一个多月里,一直在为毕业生进行软件工程与 AI 开发能力培训,直到最近才有空为 AutoDev 完善 A2A 能力的支持。顺带一提,毕业生 对于 AI 的热情远比大部分工作多年的开发者强烈得多,也怪不得有些公司老是要裁员去招新人,以重塑团队结构。

在最近,终于在假期附近可以抽出时间,为 AutoDev 添加上之前心心念念的 A2A 协议支持。

简述 A2A => 任务委托与协作,更好的架构

A2A(Google 推出的 Agent-to-Agent 协议)协议的出现,旨在解决 AI 智能体生态系统中的一个根本性难题, 并为构建一个真正互联互通的智能网络提供基础。

其工作方式可以用几行简单的代码来直观展示:

Message message = A2A.toUserMessage("tell me a joke");
jokeClient.sendMessage(message);

通过 A2A 协议,你可以将任务以 message 的形式委托给其它的智能体来完成。这种机制与 基于 LLM 的路由(LLM-based Routing)有一定的相似性。 只是 Routing 更适合在单个智能体系统内进行任务分配,而 A2A 更适合于跨智能体、跨系统的协作。

因此,A2A 会带来更好的架构设计,即解耦系统中的各种直接依赖,让代码更加模块化易于用 AI 生成和重写。

AutoDev A2A 与 MCP 共生:智能即 Tool

在过去的实现里,AutoDev 已经实现了双向 MCP 的能力,AutoDev 作为一个 MCP 服务端,可以被任何 Agent Tool 调用;同时,AutoDev 作为一个 MCP 客户端,可以调用任何 MCP Tool。

而现在引入了 A2A 则是将其作为现有 Tool 的补充,即在 AutoDev Sketch 可以将任务委托给一个 MCP Tool,也可以由其它的智能体来完成。 A2A 和 MCP(Model Context Protocol)在这里相当于互补而非竞争:

  • MCP: 负责规范 Coding 智能体与工具之间的通信。可以直接连接并使用外部工具、API 和数据源 。
  • A2A: 负责规范 Coding 智能体与智能体之间的通信。可以接入远程的各类 AI Agent,以简化现有的 MCP 调用参数容易出错。

AutoDev A2A 实现

在 AutoDev 中 A2A 的实现逻辑如下:

  • 提示词组装。在 A2ASketchToolchainProvider 将 AgentCard 转换为 AgentTool,就可以变为统一的 Tool,提供提示词给 AI。
  • 工具调用。在调用的时候,通过 A2AInsCommand 将 message 发送到对应的 AI Agent 然后由 AI Agent 执行。

即也是基于现有的 Tool 抽象来的实现,以将 MCP Tool 和 A2A 统一管理。

AutoDev A2A 使用

在使用时,与 MCP 的配置是类似的,有区别的是配置的方式:

{
  "mcpServers": {
    "weather": {
      "command": "java",
      "args": [
        "-jar",
        "/Volumes/source/ai/autodev-mcp-test/java-mcp/target/mcp-0.0.1-SNAPSHOT.jar"
      ]
    }
  },
  "a2aServers": {
    "remote-example": {
      "url": "http://localhost:9999"
    }
  }
}

即现在需要在 AutoDev 的配置文件中,添加 a2aServers 的配置,即可将对应的 AI Agent 添加到 AutoDev 中。然后,就可以直接在 DevInsCommand 中使用

/a2a:remote-example
```json
{
  "agent": "Hello World Agent",
  "message": "Please review this code for potential security vulnerabilities"
}
```

AutoDev A2A Debugger

相似的,我们也为 A2A 添加了 Debugger 的能力。只需要创建同样的 *.mcp.json 文件,然后点击切换 A2A 就可以进行简单的测试了:

可以查看详细信息,并发送消息进行测试。

总结

虽然 AutoDev 作为开源 AI 编程工具仍以插件形态存在,功能上暂时落后于商业化产品,但这也正赋予了它独特的优势:

  • 实验前沿架构模式:通过引入 A2A 与 MCP 的协作机制,AutoDev 可以尝试跨智能体、跨系统的任务分发与协作,这是闭源商业工具难以轻易实现的。
  • 可持续演进与重构空间:开源特性允许社区不断优化架构,探索更模块化、解耦化的 AI 编程方式,为自动化生成和重写代码提供理想实验场。
  • 开源生态探索:AutoDev 可以成为不同智能体、工具与协议的互操作平台,为构建真正互联互通的智能网络提供实践样板。

换句话说,AutoDev 不只是追赶商业工具,而是在开源环境下探索下一代 AI 编程架构与协作模式的试验田。


或许您还需要下面的文章:

关于我

Github: @phodal     微博:@phodal     知乎:@phodal    

微信公众号(Phodal)

围观我的Github Idea墙, 也许,你会遇到心仪的项目

QQ技术交流群: 321689806