O que a2a-protocol faz?
Habilidade do protocolo A2A (Agente-para-Agente) para OpenClaw — permite que agentes de IA descubram pares, enviem tarefas e troquem dados estruturados através do protocolo Google A2A
Visão Geral
Esta habilidade fornece uma implementação do protocolo Google A2A para a plataforma OpenClaw. Ela permite que agentes de IA se descubram, enviem tarefas e troquem dados estruturados de forma padronizada.
Funcionalidades
- Descoberta de Agentes: Enumere e descubra agentes disponíveis no mesmo registro.
- Envio de Tarefas: Envie tarefas para agentes remotos com estados definidos (pendente, em execução, concluída, falha).
- Troca de Dados: Troque payloads JSON entre agentes de forma segura.
- Integração Assíncrona: Suporte a tarefas assíncronas com polling de resultados.
Como Usar
Configuração
Adicione a habilidade ao seu projeto OpenClaw:
openclaw install wangjipeng977/a2a-protocol
Ou inclua no seu arquivo de configuração:
skills:
- wangjipeng977/a2a-protocol
Descoberta de Agentes
from a2a_protocol import discover_peers
peers = discover_peers()
for peer in peers:
print(f"Agente encontrado: {peer.name} em {peer.endpoint}")
Envio de Tarefas
from a2a_protocol import send_task
task = send_task(
agent_id="agente-exemplo",
task_type="pesquisar",
payload={"query": "últimas notícias de IA"}
)
print(f"Tarefa criada: {task.id} com status {task.status}")
Endpoints REST
| Método | Rota | Descrição |
|---|---|---|
GET | /peers | Lista todos os agentes disponíveis |
POST | /tasks | Cria uma nova tarefa |
GET | /tasks/{id} | Obtém o status de uma tarefa |
POST | /tasks/{id}/cancel | Cancela uma tarefa em andamento |
Especificação Técnica
A habilidade segue a especificação oficial do Google A2A, que define:
- Registro de Agentes: Um registro central (ou descentralizado) onde agentes se anunciam.
- Modelo de Tarefas: Cada tarefa possui um ID único, tipo, payload e status.
- Formato de Dados: Trocas são feitas via JSON com schema definido.
- Segurança: Autenticação opcional via tokens ou chaves API.
Exemplo Completo
Veja abaixo um exemplo de fluxo completo:
from a2a_protocol import discover_peers, send_task, get_task_status
# 1. Descobrir agentes
agentes = discover_peers()
if not agentes:
print("Nenhum agente disponível")
exit()
# 2. Enviar tarefa para o primeiro agente
task = send_task(agentes[0].id, "processar", {"dados": [1, 2, 3]})
# 3. Aguardar conclusão (polling)
while task.status not in ("completed", "failed"):
task = get_task_status(task.id)
time.sleep(1)
print(f"Tarefa concluída! Resultado: {task.result}")
Compatibilidade
- OpenClaw CLI
- OpenClaw SDK
- Cursor (em breve)
- Claude Code (em breve)
Contribuindo
Contribuições são bem-vindas! Siga as diretrizes de contribuição do repositório.
Licença
MIT — veja o arquivo LICENSE para mais detalhes.