Token导航 LogoToken导航

Agent Skill · 研究检索

a2a-server(A2A 服务器)

a2a-server 用于查找、检索和筛选相关信息,适合在 OpenClaw 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

a2a-server 是研究检索类 Agent Skill,可用宿主为 OpenClaw,通过ClawHub获取,权限为调用外部服务;许可证为 MIT-0,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 16,956。

总安装 6,889周安装 276GitHub Stars 公开资料未说明下载 2,230核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT-0
版本
0.1.0

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:a2a-server(A2A 服务器)
来源仓库:https://github.com/yuyonghao-123/a2a-server
安装命令:
openclaw skills install a2a-server
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 OpenClaw 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

ClawHubOpenClaw
openclaw skills install a2a-server

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

基于 WebSocket 的多智能体 P2P 通信服务器,支持 Agent 注册、低延迟消息转发、RPC 调用、发布/订阅、能力发现及离线消息。

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 OpenClaw;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 openclaw skills install a2a-server;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要调用外部服务,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

a2a-server 怎么安装?

在终端执行 openclaw skills install a2a-server。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

a2a-server 支持哪些 AI 工具?

公开资料标注支持 OpenClaw。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

a2a-server 需要什么权限?

权限级别是调用外部服务。该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

a2a-server 是免费的吗?

来源标注的许可证是 MIT-0。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

a2a-server 用的人多吗?

公开数据是累计安装 6,889 次,近一周安装 276 次,下载 2,230 次。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

a2a-server 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 专注 OpenClaw 一种宿主,触发方式和使用习惯不用来回切换。
  • 许可证明确为 MIT-0,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 OpenClaw,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
a2a-server

A2A 服务器 · 本页

6,889—调用外部服务MIT-0通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

a2a-server

Agent-to-Agent (A2A) Communication Server - 基于 WebSocket 的多智能体 P2P 通信系统

描述

实现 AI Agent 之间的实时通信和协作:

  • P2P 消息转发 - Agent 间直接通信,低延迟(~10ms)
  • RPC 调用 - 请求/响应模式,支持超时控制
  • 发布/订阅 - 频道广播,支持多订阅者
  • 能力发现 - 按能力搜索 Agent,动态路由
  • 离线消息 - 支持离线 Agent,消息队列存储
  • 心跳机制 - 自动检测离线,自动清理

功能

  • ✅ Agent 注册与发现 - 动态注册、能力公告、元数据管理
  • ✅ P2P 消息转发 - WebSocket 双向通信、低延迟
  • ✅ RPC 调用 - correlationId 追踪、超时控制、错误处理
  • ✅ 发布/订阅 - 频道管理、多订阅者支持
  • ✅ 能力发现 - 按能力/元数据筛选、实时查询
  • ✅ 离线消息队列 - 内存存储、大小限制(100 条)、自动投递
  • ✅ 心跳机制 - 定期心跳、超时检测(90 秒)、自动清理
  • ✅ 自动重连 - 指数退避、最大尝试次数、连接恢复
  • ⏳ 信任链授权 - 待实现
  • ⏳ 消息签名 - 待实现

安装

# 从 ClawHub 安装(待发布)
clawhub install a2a-server

# 或手动克隆
git clone https://github.com/YOUR_GITHUB/skills/a2a-server
cd skills/a2a-server
npm install

快速开始

1. 启动服务器

npm start
# 或
node src/server.js

# 环境变量
# A2A_PORT=8080
# A2A_HOST=localhost
# A2A_VERBOSE=true

2. 客户端连接

const { A2AClient } = require('./src/client');

const client = new A2AClient('ws://localhost:8080', {
  agentId: 'my-agent',
  capabilities: ['search', 'analyze'],
  metadata: { version: '1.0.0' },
  verbose: true,
});

await client.connect();
console.log('✅ 已连接并注册');

3. RPC 调用

// 调用远程 Agent
const result = await client.call('remote-agent', {
  action: 'search',
  query: 'AI trends'
});

console.log(result);

4. 发布/订阅

// 订阅频道
await client.subscribe('notifications');

client.on('message', (payload, from) => {
  console.log(`收到 ${from}:`, payload);
});

// 发布消息
await client.publish('notifications', {
  type: 'task-complete',
  taskId: '123'
});

5. 能力发现

// 发现所有 Agent
const agents = await client.discover();

// 按能力发现
const searchAgents = await client.discover({
  capability: 'search'
});

console.log(`找到 ${searchAgents.length} 个搜索 Agent`);

配置选项

Server 配置

选项类型默认值说明
portnumber8080WebSocket 端口
hoststring'localhost'监听地址
verbosebooleanfalse详细日志
heartbeatIntervalnumber30000心跳间隔(毫秒)

Client 配置

选项类型默认值说明
agentIdstring自动生成Agent 唯一标识
capabilitiesarray[]能力列表
metadataobject{}元数据
callTimeoutnumber30000调用超时(毫秒)
maxReconnectAttemptsnumber10最大重连次数
reconnectDelaynumber1000重连延迟(毫秒)
verbosebooleanfalse详细日志

API 参考

A2AServer

constructor(options)

创建服务器实例。

start()

启动服务器,返回 Promise。

stop()

停止服务器,关闭所有连接。

getStats()

获取统计信息:

{
  totalConnections: 100,
  totalMessages: 500,
  activeAgents: 10,
  uptime: 3600,
  memoryUsage: {...}
}
getAgents()

获取已注册 Agent 列表:

[
  {
    agentId: 'agent-1',
    capabilities: ['search'],
    metadata: {...},
    registeredAt: Date,
    lastHeartbeat: Date
  }
]
broadcast(payload, exclude)

广播消息给所有 Agent。

A2AClient

constructor(serverUrl, options)

创建客户端实例。

connect()

连接服务器,自动注册。

disconnect()

断开连接。

call(targetAgentId, payload, options)

RPC 调用:

  • targetAgentId - 目标 Agent
  • payload - 调用参数
  • options.timeout - 超时(默认 30s)
  • 返回:Promise<result>
publish(channel, payload)

发布消息到频道。

subscribe(channel)

订阅频道。

unsubscribe(channel)

取消订阅。

discover(options)

能力发现:

  • options.capability - 按能力筛选
  • options.filter - 按元数据筛选
  • 返回:Promise<Agent[]>
heartbeat()

发送心跳。

getStatus()

获取连接状态:

{
  connected: true,
  registered: true,
  agentId: 'my-agent',
  reconnectAttempts: 0
}
on(event, listener)

事件监听:

  • connected - 连接成功
  • disconnected - 断开连接
  • registered - 注册成功
  • reconnecting - 重连中
  • reconnected - 重连成功
  • message - 收到频道消息

使用场景

场景 1: 多智能体协作

// Planner Agent
const planner = new A2AClient('ws://localhost:8080', {
  agentId: 'planner',
  capabilities: ['planning', 'analysis']
});
await planner.connect();

// Executor Agent
const executor = new A2AClient('ws://localhost:8080', {
  agentId: 'executor',
  capabilities: ['execution', 'tool-use']
});
await executor.connect();

// Planner 调用 Executor
const result = await planner.call('executor', {
  action: 'execute',
  task: 'analyze code'
});

场景 2: 分布式搜索

// Search Agent 注册
const searchAgent = new A2AClient('ws://localhost:8080', {
  agentId: 'search-001',
  capabilities: ['web-search', 'tavily']
});
await searchAgent.connect();

// 发现搜索 Agent
const agents = await client.discover({ capability: 'web-search' });

// 调用搜索
const result = await client.call(agents[0].agentId, {
  query: 'AI trends 2026'
});

场景 3: 通知系统

// 订阅通知
await client.subscribe('system-alerts');

client.on('message', (payload, from) => {
  if (payload.type === 'alert') {
    console.log(`⚠️ 告警:${payload.message}`);
  }
});

// 发布告警
await client.publish('system-alerts', {
  type: 'alert',
  level: 'warning',
  message: 'High CPU usage detected'
});

与现有系统集成

集成 Multi-Agent

const { MultiAgentOrchestrator } = require('../multi-agent');
const { A2AClient } = require('../a2a-server');

const a2a = new A2AClient('ws://localhost:8080', {
  agentId: 'planner-agent',
  capabilities: ['planning']
});
await a2a.connect();

const orchestrator = new MultiAgentOrchestrator();

// 注册远程工具
orchestrator.registerTool('remote-execute',
  async (params) => {
    const agents = await a2a.discover({ capability: 'execution' });
    return await a2a.call(agents[0].agentId, params);
  },
  { description: '远程执行', keywords: ['执行', '远程'] }
);

集成 ReAct Orchestrator

const { ReActOrchestrator } = require('../react-orchestrator');
const { A2AClient } = require('../a2a-server');

const orchestrator = new ReActOrchestrator();
const a2a = new A2AClient('ws://localhost:8080', {
  agentId: 'react-agent',
  capabilities: ['reasoning']
});
await a2a.connect();

// 注册远程工具
orchestrator.registerTool('remote-search',
  async (params) => {
    const agents = await a2a.discover({ capability: 'search' });
    return await a2a.call(agents[0].agentId, params);
  },
  { description: '远程搜索', keywords: ['搜索', '远程'] }
);

测试

# 运行所有测试
npm test

# 运行测试并监视
npm run test:watch

# 调试模式运行
npm run test:debug

测试框架

  • 测试运行器: Jest v29.7.0
  • 覆盖率目标: >80%
  • 测试超时: 30秒(可配置)

测试覆盖

  • ✅ 服务器基础功能(启动/停止/统计)
  • ✅ Agent 注册/注销/心跳
  • ✅ RPC 调用/响应(在线/离线/超时)
  • ✅ 发布/订阅(单订阅者/多订阅者)
  • ✅ 能力发现(全部/按能力/按元数据)
  • ✅ 离线消息队列
  • ✅ 错误处理
  • ✅ 并发连接

测试文件

  • test/a2a.test.js - 完整 Jest 测试套件
  • TEST-STATUS.md - 详细测试状态

消息协议

注册消息

{
  "type": "register",
  "agentId": "planner-001",
  "capabilities": ["planning", "analysis"],
  "metadata": { "version": "1.0.0" }
}

RPC 调用

{
  "type": "call",
  "from": "planner-001",
  "to": "executor-001",
  "correlationId": "uuid-123",
  "payload": { "action": "execute", "task": "..." }
}

RPC 响应

{
  "type": "response",
  "to": "planner-001",
  "correlationId": "uuid-123",
  "payload": { "result": "success" }
}

发布消息

{
  "type": "publish",
  "channel": "notifications",
  "from": "system",
  "payload": { "type": "alert", "message": "..." }
}

性能基准

延迟(本地)

操作延迟
连接建立~5ms
Agent 注册~10ms
RPC 调用~15ms
发布/订阅~10ms
能力发现~20ms

并发

Agent 数量消息/秒CPU内存
1010005%50MB
50500015%100MB
1001000030%200MB

已知限制

  • ⚠️ 离线消息 - 内存存储,重启丢失(未来用 Redis)
  • ⚠️ 认证授权 - 尚未实现(信任链待开发)
  • ⚠️ 消息签名 - 尚未实现(防止伪造)
  • ⚠️ 集群支持 - 单服务器(未来支持多节点)

依赖

  • Node.js >= 18.0.0
  • ws ^8.16.0
  • uuid ^9.0.0

版本历史

v0.1.0 (2026-03-18)

  • ✅ 初始版本
  • ✅ WebSocket 服务器
  • ✅ A2A Client
  • ✅ RPC 调用
  • ✅ 发布/订阅
  • ✅ 能力发现
  • ✅ 心跳机制

许可证

MIT

作者

小蒲萄 (Clawd) 🦞

贡献

欢迎提交 Issue 和 PR!

参考资料

  • README.md - 使用指南
  • IMPLEMENTATION-NOTES.md - 实施笔记
  • A2A-RESEARCH.md - 调研报告

平台分布

OpenClaw

90.86%
按下载量换算2,026

安全审计

VirusTotal

通过

ClawScan

通过

Static analysis

通过

权限和风险

调用外部服务

该 Skill 可能调用第三方服务、云服务或外部模型 API,使用前需要确认账号、额度、数据发送范围和服务条款。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills