Documentação oficial desta página · v0.20.6
Yuanbao
Conecte o Hermes ao Yuanbao, a plataforma de mensagens corporativas da Tencent. O adaptador usa um gateway WebSocket para entrega de mensagens em tempo real e funciona tanto em conversas diretas (C2C) quanto em grupos.
O Yuanbao é uma plataforma de mensagens corporativas usada principalmente dentro da Tencent e em ambientes empresariais. Ela usa WebSocket para comunicação em tempo real, autenticação baseada em HMAC, e aceita mídia rica, incluindo imagens, arquivos e mensagens de voz.
Pré-requisitos
- Uma conta no Yuanbao com permissão para criar bots
- APP_ID e APP_SECRET do Yuanbao (fornecidos pelo administrador da plataforma)
- Pacotes Python:
websocketsehttpx - Para suporte a mídia:
aiofiles
Instale as dependências necessárias:
pip install websockets httpx aiofiles
Configuração
1. Crie um bot no Yuanbao
- Baixe o app do Yuanbao em https://yuanbao.tencent.com/
- No app, vá em PAI → My Bot e crie um bot novo
- Depois de criado, copie o APP_ID e o APP_SECRET
2. Rode o assistente de configuração
O jeito mais fácil de configurar o Yuanbao é pelo assistente interativo:
hermes gateway setup
Escolha Yuanbao quando for perguntado. O assistente vai:
- Pedir o seu APP_ID
- Pedir o seu APP_SECRET
- Salvar a configuração automaticamente
A URL do WebSocket e o domínio da API já vêm com padrões razoáveis embutidos. Você só precisa informar APP_ID e APP_SECRET para começar.
3. Configure as variáveis de ambiente
Depois da configuração inicial, confira estas variáveis no ~/.hermes/.env:
# Obrigatórias
YUANBAO_APP_ID=seu-app-id
YUANBAO_APP_SECRET=seu-app-secret
YUANBAO_WS_URL=wss://api.yuanbao.example.com/ws
YUANBAO_API_DOMAIN=https://api.yuanbao.example.com
# Opcional: ID da conta do bot (normalmente obtido automaticamente do sign-token)
# YUANBAO_BOT_ID=seu-bot-id
# Opcional: ambiente de roteamento interno (ex.: test/staging/production)
# YUANBAO_ROUTE_ENV=production
# Opcional: canal principal para cron e notificações (formato: direct:<conta> ou group:<group_code>)
YUANBAO_HOME_CHANNEL=direct:bot_account_id
YUANBAO_HOME_CHANNEL_NAME="Bot Notifications"
# Opcional: restringir acesso (legado, veja Controle de acesso abaixo para políticas mais finas)
YUANBAO_ALLOWED_USERS=user_account_1,user_account_2
4. Suba o gateway
hermes gateway
O adaptador conecta no gateway WebSocket do Yuanbao, se autentica com assinaturas HMAC e começa a processar mensagens.
Recursos
- Gateway WebSocket — comunicação bidirecional em tempo real
- Autenticação HMAC — assinatura segura de requisições com APP_ID/APP_SECRET
- Mensagens C2C — conversas diretas entre usuário e bot
- Mensagens em grupo — conversas em grupos
- Suporte a mídia — imagens, arquivos e mensagens de voz via COS (Cloud Object Storage)
- Formatação Markdown — as mensagens são fatiadas automaticamente para respeitar os limites de tamanho do Yuanbao
- Deduplicação de mensagens — evita processar a mesma mensagem duas vezes
- Heartbeat/keep-alive — mantém a conexão WebSocket estável
- Indicador de digitação — mostra "digitando…" enquanto o agente processa
- Reconexão automática — lida com quedas do WebSocket usando backoff exponencial
- Consultas de informações de grupo — busca detalhes do grupo e listas de membros
- Suporte a figurinhas e emoji — envia figurinhas TIMFaceElem e emoji nas conversas
- Suporte a histórico de conversa encaminhado do WeChat — quando alguém encaminha um pacote de histórico do WeChat para o Yuanbao, o adaptador decodifica os registros encaminhados (apelidos dos remetentes, texto e entradas multimídia, inclusive encaminhamentos aninhados) e os injeta na conversa, para o agente ler a thread encaminhada inteira
- Auto-sethome — o primeiro usuário a escrever para o bot vira automaticamente o dono do canal principal
- Aviso de resposta demorada — manda uma mensagem de espera quando o agente demora mais que o esperado
Opções de configuração
Formatos de ID de conversa
O Yuanbao usa identificadores com prefixo, conforme o tipo de conversa:
| Tipo de conversa | Formato | Exemplo |
|---|---|---|
| Mensagem direta (C2C) | direct:<account> | direct:user123 |
| Mensagem de grupo | group:<group_code> | group:grp456 |
Envio de mídia
O adaptador do Yuanbao cuida sozinho do envio de mídia via COS (Tencent Cloud Object Storage):
- Imagens: aceita JPEG, PNG, GIF, WebP
- Arquivos: aceita todos os tipos comuns de documento
- Voz: aceita WAV, MP3, OGG
As URLs de mídia são validadas e baixadas automaticamente antes do envio, para prevenir ataques de SSRF.
Canal principal
Use o comando /sethome em qualquer conversa do Yuanbao (DM ou grupo) para designá-la como canal principal. As tarefas agendadas (cron) entregam os resultados nesse canal.
Se não houver canal principal configurado, o primeiro usuário a escrever para o bot vira automaticamente o dono do canal principal. Se o canal principal atual for um grupo, a primeira DM o substitui por um canal direto.
Você também pode definir isso na mão no ~/.hermes/.env:
YUANBAO_HOME_CHANNEL=direct:user_account_id
# ou, para um grupo:
# YUANBAO_HOME_CHANNEL=group:group_code
YUANBAO_HOME_CHANNEL_NAME="My Bot Updates"
Exemplo: definir o canal principal
- Inicie uma conversa com o bot no Yuanbao
- Envie o comando:
/sethome - O bot responde: "Home channel set to [chat_name] with ID [chat_id]. Cron jobs will deliver to this location."
- Os próximos cron jobs e notificações vão para esse canal
Exemplo: entrega de cron job
Crie um cron job:
/cron "0 9 * * *" Verifique o status do servidor
A saída agendada é entregue no seu canal principal do Yuanbao todo dia às 9h.
Dicas de uso
Começar uma conversa
Mande qualquer mensagem para o bot no Yuanbao:
olá
O bot responde na mesma thread da conversa.
Comandos disponíveis
Todos os comandos padrão do Hermes funcionam no Yuanbao:
| Comando | Descrição |
|---|---|
/new | Começa uma conversa nova |
/model [provider:model] | Mostra ou troca o modelo |
/sethome | Define esta conversa como canal principal |
/status | Mostra informações da sessão |
/help | Mostra os comandos disponíveis |
Enviar arquivos
Para mandar um arquivo para o bot, basta anexá-lo direto na conversa do Yuanbao. O bot baixa e processa o anexo automaticamente.
Você também pode mandar uma mensagem junto com o anexo:
Analise este documento, por favor
Receber arquivos
Quando você pede ao bot que crie ou exporte um arquivo, ele envia o arquivo direto na sua conversa do Yuanbao.
Resolução de problemas
O bot está online, mas não responde às mensagens
Causa: a autenticação falhou durante o handshake do WebSocket.
Correção:
- Confira se APP_ID e APP_SECRET estão corretos
- Verifique se a URL do WebSocket está acessível
- Garanta que a conta do bot tem as permissões adequadas
- Revise os logs do gateway:
tail -f ~/.hermes/logs/gateway.log
Erro "Connection refused"
Causa: a URL do WebSocket está inacessível ou errada.
Correção:
- Confira o formato da URL do WebSocket (deve começar com
wss://) - Verifique a conectividade de rede com o domínio da API do Yuanbao
- Confirme que o firewall permite conexões WebSocket
- Teste a URL com:
curl -I https://[YUANBAO_API_DOMAIN]
O envio de mídia falha
Causa: as credenciais do COS são inválidas ou o servidor de mídia está inacessível.
Correção:
- Confira se o API_DOMAIN está correto
- Verifique se as permissões de upload de mídia estão habilitadas para o seu bot
- Garanta que o arquivo de mídia está acessível e não está corrompido
- Confira a configuração do bucket COS com o administrador da plataforma
As mensagens não chegam ao canal principal
Causa: o formato do ID do canal principal está errado, ou o cron job não disparou.
Correção:
- Confira se YUANBAO_HOME_CHANNEL está no formato correto
- Teste com o comando
/sethomepara detectar o formato correto automaticamente - Confira o agendamento do cron job com
/status - Verifique se o bot tem permissão de envio na conversa de destino
Desconexões frequentes
Causa: a conexão WebSocket está instável ou a rede não é confiável.
Correção:
- Procure padrões de erro nos logs do gateway
- Aumente o tempo limite do heartbeat nas configurações de conexão
- Garanta uma conexão de rede estável com a API do Yuanbao
- Considere habilitar log detalhado:
hermes gateway run -vv
Controle de acesso
O Yuanbao aceita controle de acesso fino, tanto para DM quanto para conversas em grupo:
# Política de DM: open (padrão) | allowlist | disabled
YUANBAO_DM_POLICY=open
# IDs de usuário separados por vírgula que podem mandar DM ao bot (só usado quando DM_POLICY=allowlist)
YUANBAO_DM_ALLOW_FROM=user_id_1,user_id_2
# Política de grupo: open (padrão) | allowlist | disabled
YUANBAO_GROUP_POLICY=open
# Códigos de grupo separados por vírgula que são permitidos (só usado quando GROUP_POLICY=allowlist)
YUANBAO_GROUP_ALLOW_FROM=group_code_1,group_code_2
Isso também pode ser definido no config.yaml:
platforms:
yuanbao:
extra:
dm_policy: allowlist
dm_allow_from: "user1,user2"
group_policy: open
group_allow_from: ""
Configuração avançada
Fatiamento de mensagens
O Yuanbao tem um tamanho máximo de mensagem. O Hermes fatia respostas grandes automaticamente, com uma divisão consciente de Markdown (respeita blocos de código, tabelas e limites de parágrafo).
Parâmetros de conexão
Os parâmetros de conexão a seguir estão embutidos no adaptador, com padrões razoáveis:
| Parâmetro | Valor padrão | Descrição |
|---|---|---|
| Tempo limite de conexão do WebSocket | 15 segundos | Tempo de espera pelo handshake WS |
| Intervalo de heartbeat | 30 segundos | Frequência de ping para manter a conexão viva |
| Máximo de tentativas de reconexão | 100 | Número máximo de tentativas de reconexão |
| Backoff de reconexão | 1s → 60s (exponencial) | Tempo de espera entre tentativas de reconexão |
| Intervalo de heartbeat de resposta | 2 segundos | Frequência de envio do status RUNNING |
| Tempo limite de envio | 30 segundos | Tempo limite para mensagens WS de saída |
Hoje esses valores não são configuráveis por variáveis de ambiente. Eles estão ajustados para implantações típicas do Yuanbao.
Log detalhado
Habilite o log de depuração para investigar problemas de conexão:
hermes gateway run -vv
Integração com outros recursos
Cron jobs
Agende tarefas que rodam no Yuanbao:
/cron "0 */4 * * *" Relate a saúde do sistema
Os resultados são entregues no seu canal principal.
Tarefas em segundo plano
Rode operações longas sem travar a conversa:
/background Analise todos os arquivos do arquivamento
Mensagens entre plataformas
Envie uma mensagem da CLI para o Yuanbao:
hermes chat -q "Send 'Hello from CLI' to yuanbao:group:group_code"
Documentação relacionada
- Visão geral do gateway de mensagens
- Referência de comandos de barra
- Cron Jobs
- Sessões em segundo plano