Techvoyage
Início
Um cartão tecnológico premium de 16:9 com detalhes em índigo profundo e âmbar ilustrando como conectar o DeepSeek Harness ao Block Buzz com uma ponte Nostr, apresentando um painel glassmorphic limpo e tipografia centrada.

Conectar DeepSeek Harness ao Buzz: O Gateway de Nostr

Integre o DeepSeek Harness ao Block Buzz com uma ponte Nostr. Configure auth NIP-42, streaming de mensagens in-place e espaços de trabalho de agentes de IA.

Sep 30, 2026 - 11 MIN DE LEITURA
Índice

O plugin do DeepSeek Harness (DSH), dsh-message-gateway, estende o assistente DeepSeek Harness a múltiplas plataformas de mensagens, como Discord, Telegram e WeChat. O repositório do plugin foi bifurcado e estendido para adicionar a plataforma Como auto-hospedar o Buzz do Block: Espaço para agentes de IA à lista. O repositório bifurcado está disponível no GitHub em https://github.com/Tech-Voyage-Dev/dsh-message-gateway.

Um cartão tecnológico premium de 16:9 com detalhes em azul profundo e laranja ilustrando como auto-hospedar o relay Buzz do Block em um VPS Ubuntu, apresentando um painel glassmorphic limpo com tipografia centrada.

Guia de pré-requisitos

Como auto-hospedar o Buzz do Block: Espaço para agentes de IA

Aprenda a auto-hospedar o relay Buzz da Block em um VPS Linux com Cloudflare. Crie um espaço de trabalho seguro baseado em Nostr para humanos e agentes IA.

12 MIN DE LEITURA

O assistente DSH ingressa em um relay do Buzz como membro, recebe mensagens diretas (DMs) e mensagens de canal onde é @mencionado, e responde pelo mesmo pipeline de agentes por chat utilizado na interface Web.

Arquitetura do plugin dsh-message-gateway

A arquitetura do plugin dsh-message-gateway é dividida em duas camadas principais:

  • Host (Node): gateway-store (credenciais em ~/.dsh/gateway.json), platforms.ts (definições de plataformas e testes de conexão), routes.ts (endpoints /gateway/*) e bridge-manager.ts (as pontes residentes: sessões de agentes independentes por chat e respostas em streaming).
  • Cliente (navegador): a página "Message platforms" na barra lateral, onde você salva credenciais, testa conexões e monitora o status do serviço.

Adicionar uma nova plataforma envolve as seguintes etapas:

  1. Uma classe de ponte (bridge): implementando os métodos start/stop/status e o callback onText(text, frame), espelhando o padrão de wecom-bridge.ts.
  2. Integração no bridge-manager: reaproveitar o pipeline existente por conversa (ensureAgentForKey + pendingMap) e conectar o coletor de respostas da plataforma.
  3. Persistência e rotas: em /gateway/save e /gateway/delete: salvar credenciais inicia a ponte, excluí-las a encerra — complementado por uma flag autoStartXxx para que o dsh web reconecte automaticamente no boot.

Implementação da ponte do Buzz: Protocolo Nostr e ciclo de vida de eventos

O DeepSeek Harness foi utilizado para implementar a ponte do Buzz. A implementação atende rigorosamente às seguintes especificações do protocolo Nostr:

TransporteUm único WebSocket autenticado via NIP-42; padrão ws://localhost:3000; http(s):// é normalizado para ws(s)://
AutenticaçãoEvento AUTH kind 22242, tags [["relay", url], ["challenge", challenge]], conteúdo vazio, assinado com a chave do agente
InscriçõesPor canal: REQ {"kinds":[9], "#h":[<uuid>]} — um REQ por canal. Um REQ global kinds:[9] recebe EOSE mas nunca distribui eventos; filtro #h multivalorado não funciona
DescobertaREQ {kinds:[39000]} histórico para metadados de canal (type == "dm" marca canal de mensagem direta)
AssociaçãoREQ {kinds:[44100,44101], "#p":[nossa pubkey], since: now-60s} ao vivo — 44100 = adição, 44101 = remoção, com p+h; atualiza inscrições sem reconectar
Eventos de chatkind 9 com tags ["h", canal], opcional ["e", replyTo], ["p", menção]
Edições in-placekind 40003 com h + e→alvo; substituição de conteúdo; limite do relay de 64 KB → manter payloads ≤ 60.000 B; respostas longas são fragmentadas — chunk 0 na edição, o restante adicionado como mensagens kind 9 encadeadas (e→raiz)
Quadros CLOSEDauth-required antes de AUTH é normal durante o bootstrap (completar AUTH e reabrir inscrições); após AUTH → retentativa delimitada (3 tentativas, backoff 0/1/2 s); reconexão reconstrói tudo
Limites do relay≤ 2000 eventos históricos por inscrição, ordenados do mais recente para o mais antigo, mesmo utilizando since
Filtro de mençõesProcessa kind 9 de entrada apenas quando: (a) tag p inclui nossa pubkey, (b) o canal é DM, ou (c) a raiz e pertence ao nosso agente. Ignora a própria pubkey (anti-loop)
Menções de saídaTexto publicado sem alterações — o relay não valida tokens @; tags p incluem o autor de origem mais até 7 outras pubkeys mencionadas (máx. 8)
Mensagens diretasCanais de texto simples no escopo do relay (metadados type: "dm") — sem criptografia NIP-04/44 nesta ponte
Anexos (entrada)NIP-92 imeta (url, sha256, m) → download http(s), verificação de SHA-256, limite de 20 MB, máx. 4 por mensagem; imagens de saída não suportadas

O diagrama abaixo ilustra o fluxo de inicialização (bootstrap) da ponte do Buzz:

Streaming em tempo real via edições in-place do Nostr (Kind 40003)

Como o Nostr não possui indicador nativo de digitação e seus eventos são estritamente cumulativos (append-only), a ponte do Buzz simula streaming por meio de edições in-place:

  • A ponte do Buzz publica primeiro um evento placeholder kind 9, depois o reescreve progressivamente com edições in-place kind 40003 com taxa controlada e grava a edição final quando o agente conclui a resposta. Esse mecanismo segue o mesmo padrão consagrado das pontes do Telegram e Discord.

Conexão de workspaces do DeepSeek Harness via comandos de chat

O recurso de "Workspaces" na interface Web do DSH é gerenciado pelo serviço workspaceRegistry (@deepseek-ai/dsh-workspace):

const existing = await ctx.workspaceRegistry.resolveByPath(request.path);

A ponte do Buzz disponibiliza o comando de chat /workspace <pasta>, que registra uma pasta existente no DSH. Qualquer nova sessão criada pelo gateway é anexada a essa pasta e exibida na interface Web.

Três regras de projeto essenciais:

  • Mudar de pasta = nova sessão. O valor de cwd é gravado no cabeçalho da sessão no momento da criação e não pode ser alterado posteriormente.
  • A pasta deve existir previamente. O método create rejeita caminhos inexistentes.
  • Comando com sensibilidade de segurança. Toda sessão opera sob uma política de auto-aprovação, concedendo acesso aos arquivos da pasta de destino.

Guia passo a passo de instalação e configuração

  1. Execute os seguintes comandos no terminal:
dsh plugin --profile web add https://github.com/Tech-Voyage-Dev/dsh-message-gateway.git

# Start DSH web
dsh web
  1. Assim que a interface Web do DSH abrir no navegador, clique no ícone "Message platforms":

  1. Selecione "Buzz" no painel esquerdo:

  1. Clique em "Generate keypair" para gerar o par de chaves Nostr. Guarde a chave pública npub em local seguro.
  2. Preencha a Relay URL e os Channels (a lista autorizada de UUIDs dos canais que serão assinados).
  3. Clique no botão "Save".

Ao salvar o formulário, as credenciais são armazenadas e a ponte é iniciada. A chave privada nsec é protegida como segredo e gravada exclusivamente em ~/.dsh/gateway.json.

Registro do par de chaves do agente no relay Nostr do Buzz

Adicione o assistente DSH ao relay como membro. Utilize a chave npub gerada na etapa anterior:

docker compose exec relay buzz-admin add-member --pubkey npub123123123

Adicione o assistente a um canal específico. Apenas registrar o membro no relay não o torna visível nem pesquisável nos canais. Para adicioná-lo via buzz-cli, lembre-se de que o parâmetro --pubkey deve estar no formato HEX, e não npub (o comando buzz-admin add-member exibe a chave HEX correspondente):

buzz channels add-member --channel <CHANNEL_UUID> --pubkey <AGENT_HEX> --role member
Um cartão tecnológico premium de 16:9 com detalhes em azul profundo e laranja ilustrando como auto-hospedar o relay Buzz do Block em um VPS Ubuntu, apresentando um painel glassmorphic limpo com tipografia centrada.

Guia da CLI

Como instalar e usar o buzz-cli

Instruções passo a passo para instalar e configurar o buzz-cli para gerir canais Nostr, chaves de membros e permissões de agentes de IA.

5 MIN DE LEITURA

Atualize o perfil do assistente no relay Nostr definindo um nome amigável com o buzz-cli:

Envie uma saudação Wave (a saudação padrão de DM do Buzz) para o assistente. O retorno confirma a operação:

Enviando uma Wave por mensagem direta para o assistente DSH — a ponte está ativa.

Habilitando o acesso a pastas locais com /workspace

Como a configuração allowWorkspace vem desativada (false) por padrão, o comando /workspace será inicialmente recusado:

Ative a funcionalidade em ~/.dsh/profiles/web/cordis.patch.yml e reinicie o dsh web:

- id: ui-message-gateway
  config:
    allowWorkspace: true

Após reiniciar:

Dica importante: o sistema presume que a pasta do workspace (TechVoyage nas capturas) esteja no diretório padrão do usuário. Caso contrário, informe o caminho absoluto. Qualquer nova sessão criada sob este workspace pelo Buzz também aparecerá na interface Web do DeepSeek Harness.

Comandos disponíveis no Buzz

Todos os comandos disponíveis nas demais plataformas suportadas funcionam normalmente no Buzz:

ComandoO que faz
/workspace <folder>Registra uma pasta existente como o workspace da conversa (requer habilitação nas configurações)
/helpLista os comandos disponíveis
/timeMostra a hora atual do sistema
/newInicia uma nova sessão de conversa limpa
/clearLimpa o histórico da conversa atual
/statusExibe o status operacional da ponte
/statsMostra a contagem de conversas e linhas de status por ponte (todas as plataformas, incluindo Buzz)
/commandsLista descritiva com todos os comandos
@path/to/fileFunciona exatamente como menções de arquivos na Web: o modelo lê o arquivo relativo ao workspace; @, @prefixo ou /files <prefixo> retornam arquivos e pastas correspondentes
/model[provider model effort] — valida contra o catálogo ativo de LLMs; /model lista as opções disponíveis e /model reset restaura os padrões
/effort<id> ajusta apenas o esforço de raciocínio do modelo; /effort reset restaura o valor padrão

Resumo das medidas de segurança

  • A chave privada nsec reside unicamente em ~/.dsh/gateway.json (permissões 0600, gravação atômica) — nunca sendo exposta em /gateway/list nem em logs.
  • Todo evento de entrada passa por validação de assinatura criptográfica (verifyEvent), desduplicação, filtro de mensagens próprias e controle de menções antes de alcançar o agente.
  • O registro de workspaces é bloqueado por configuração (allowWorkspace: false por padrão), garantindo controle total contra acesso indevido aos arquivos da máquina.

Conclusão: Colaboração com agentes de IA descentralizados no Buzz

O maior desafio ao incorporar o Buzz ao dsh-message-gateway esteve na conformidade com o protocolo Nostr. Como a base do plugin já contava com uma sólida arquitetura de sessões por conversa e despacho de comandos, a integração correu de maneira muito fluida assim que a manipulação de eventos e o streaming foram resolvidos.

Referências:

Artigos relacionados