Symphony of One

Orquestra várias instân

Documentação

Symphony of One MCP - Sistema de Orquestração Multi-Agente

Um servidor Model Context Protocol (MCP) que permite que múltiplas instâncias do Claude colaborem por meio de um hub centralizado com espaço de trabalho compartilhado e comunicação em tempo real.

Arquitetura

User (Orchestrator) ← Central Hub Server → Shared Working Directory
         ↑                    ↓                        ↑
    Hub CLI Interface    Message Router           File Access
         ↑                    ↓                        ↓
Multiple Claude Code Instances via MCP Servers ← → Collaboration

Componentes

1. Servidor Central Hub (server.js)

  • Servidor Express + Socket.IO para coordenação de agentes
  • Sistema de chat baseado em salas para comunicação entre agentes
  • Sistema de gerenciamento e delegação de tarefas
  • Monitoramento de arquivos com notificações de alteração em tempo real
  • API REST para gerenciamento e orquestração de agentes

2. CLI do Orquestrador do Usuário (cli.js)

  • Interface de comando e controle para o usuário
  • Monitoramento de agentes e atribuição de tarefas
  • Transmissão de mensagens para grupos de agentes
  • Estatísticas do sistema em tempo real e gerenciamento de salas

3. Servidor MCP do Agente Claude (mcp-server.js)

  • Servidor MCP ao qual as instâncias do Claude Code se conectam
  • Acesso compartilhado ao sistema de arquivos com restrições de segurança
  • Participação em chat em tempo real com outros agentes
  • Execução de tarefas e relatório de progresso
  • Notificações de alteração de arquivos e sincronização de colaboração

Início Rápido

1. Instalar Dependências

npm install

2. Iniciar o Central Hub

npm run server

Isso inicia o servidor hub em http://localhost:3000 com um diretório compartilhado em ./shared

3. Iniciar CLI do Orquestrador do Usuário

npm run cli

Isso abre a interface do orquestrador para gerenciar agentes e tarefas.

4. Conectar Agentes Claude

Cada instância do Claude Code se conecta por meio do servidor MCP:

node mcp-server.js

Configuração

Variáveis de Ambiente

  • CHAT_SERVER_URL: URL do servidor hub (padrão: http://localhost:3000)
  • SHARED_DIR: Diretório do espaço de trabalho compartilhado (padrão: ./shared)
  • AGENT_NAME: Nome de exibição do agente (padrão: gerado automaticamente)
  • PORT: Porta do servidor hub (padrão: 3000)

Integração com Claude Code

Adicione à sua configuração MCP:

{
  "mcpServers": {
    "claude-gateway": {
      "command": "node",
      "args": ["path/to/Symphony-of-One-MCP/mcp-server.js"],
      "env": {
        "CHAT_SERVER_URL": "http://localhost:3000",
        "SHARED_DIR": "/path/to/shared/workspace",
        "AGENT_NAME": "Claude-Agent-1"
      }
    }
  }
}

Ferramentas Disponíveis (MCP)

Gerenciamento de Salas

  • room_join - Entrar em uma sala de chat para colaboração
  • room_send - Enviar mensagens para outros agentes (suporta @menções)
  • room_history - Obter histórico de conversa
  • room_list - Listar todas as salas ativas
  • room_leave - Sair da sala atual

Coordenação de Tarefas

  • task_create - Criar tarefas para coordenação de agentes
  • task_list - Visualizar todas as tarefas da sala
  • Atribuição de tarefas e acompanhamento de status

Sistema de Arquivos (Espaço de Trabalho Compartilhado)

  • file_read - Ler arquivos do diretório compartilhado
  • file_write - Gravar arquivos no diretório compartilhado
  • file_list - Listar conteúdo do diretório
  • file_delete - Remover arquivos
  • Notificações automáticas de alteração para todos os agentes

Memória e Notificações do Agente

  • memory_store - Armazenar informações persistentes com expiração opcional
  • memory_retrieve - Recuperar memórias armazenadas por chave ou tipo
  • notifications_get - Obter menções e alertas para este agente
  • notification_read - Marcar notificações como lidas

Comandos do Orquestrador

Gerenciamento de Salas

  • /join <room> - Entrar/criar uma sala
  • /rooms - Listar todas as salas
  • /agents - Mostrar agentes na sala atual
  • /history [n] - Mostrar mensagens recentes

Orquestração de Agentes

  • /broadcast <msg> - Enviar mensagem para todos os agentes
  • /assign <agent> <task> - Atribuir tarefa a um agente específico
  • /tag <agent> <msg> - Enviar mensagem marcada para um agente específico (@menção)
  • /monitor [room] - Monitorar atividade da sala
  • /stats - Mostrar estatísticas do sistema

Gerenciamento de Tarefas

  • /task create - Criar novas tarefas
  • /task list - Visualizar todas as tarefas
  • /task update <id> - Atualizar status da tarefa

Memória e Notificações

  • /memory list - Visualizar uso de memória do sistema
  • /notifications - Visualizar notificações e menções recentes
  • /logs [type] - Visualizar registros de atividade do sistema

Casos de Uso

Desenvolvimento Multi-Agente

  • Múltiplas instâncias do Claude trabalham em diferentes partes de um código-fonte
  • Notificações de alteração de arquivos em tempo real mantêm todos os agentes sincronizados
  • Delegação de tarefas e acompanhamento de progresso
  • Espaço de trabalho compartilhado evita conflitos

Análise Colaborativa

  • Agentes podem se especializar em diferentes domínios de análise
  • Coordenação baseada em chat para resolução de problemas complexos
  • Edição e revisão compartilhada de documentos
  • Atribuição de tarefas com base nas capacidades dos agentes

Fluxos de Trabalho Orquestrados

  • O usuário define metas de alto nível e delega aos agentes
  • Agentes se autocoordenam por meio do sistema de chat e tarefas
  • Compartilhamento e revisão de entregáveis baseados em arquivos
  • Monitoramento de progresso e capacidades de intervenção

Endpoints da API

Operações Principais

  • POST /api/join/:room - Agente entra na sala
  • POST /api/send - Enviar mensagem de chat
  • GET /api/messages/:room - Obter histórico de mensagens
  • GET /api/rooms - Listar todas as salas

Gerenciamento de Tarefas

  • POST /api/tasks - Criar tarefa
  • GET /api/tasks/:room - Obter tarefas da sala
  • POST /api/tasks/:id/update - Atualizar tarefa

Memória e Notificações

  • POST /api/memory/:agentId - Armazenar memória do agente
  • GET /api/memory/:agentId - Recuperar memória do agente
  • GET /api/notifications/:agentId - Obter notificações do agente
  • POST /api/notifications/:id/read - Marcar notificação como lida

Orquestração

  • GET /api/stats - Estatísticas do sistema
  • POST /api/broadcast/:room - Transmitir mensagem
  • GET /api/agents/:room - Listar agentes da sala

Novos Recursos Adicionados

🏷️ Marcação e Menções de Agentes

  • Use @agentName em mensagens para marcar agentes específicos
  • Agentes marcados recebem notificações em tempo real
  • O orquestrador pode usar /tag <agent> <message> para comunicação direta
  • Armazenamento e gerenciamento persistente de notificações

💾 Armazenamento Persistente e Memória

  • Banco de dados SQLite para todas as mensagens, tarefas e dados de agentes
  • Sistema de memória do agente com expiração opcional
  • Sistema de notificações persistente com status lido/não lido
  • Registro abrangente com Winston
  • Os dados sobrevivem a reinicializações do servidor

📊 Monitoramento e Registro Aprimorados

  • Monitoramento de atividade em tempo real
  • Registro persistente de mensagens e eventos
  • Estatísticas do sistema e rastreamento de uso de memória
  • Métricas de atividade e desempenho dos agentes

Recursos de Segurança

  • Proteção contra travessia de caminho para operações de arquivo
  • Acesso ao diretório compartilhado em sandbox
  • Declarações e validação de capacidades dos agentes
  • Autenticação WebSocket e isolamento de salas
  • Armazenamento seguro de memória com expiração
  • Trilha de auditoria para todas as ações dos agentes

Melhorias Futuras

  • Autenticação e permissões de agentes
  • Bloqueio de arquivos para acesso concorrente
  • Dependências de tarefas e fluxos de trabalho
  • Descoberta de agentes e correspondência de capacidades
  • Monitoramento e análise avançados
  • Limpeza e otimização de memória
  • Canais de notificação e roteamento