bwjoke/proactive-chat

Skill de chat proativo focado em perspectiva para Hermes e OpenClaw

O que é proactive-chat?

Este skill implementa um sistema de chat proativo onde o agente inicia conversas intencionalmente, em vez de esperar passivamente por prompts do usuário. Ele é útil para criar um loop de aprendizado ativo que maximiza a taxa de resposta, acelera o acúmulo de memória e refina a interação ao longo do tempo. O skill foi projetado para plataformas como Hermes (usando cronjob, memória e session_search) e OpenClaw (usando heartbeat, cron ou tarefas agendadas). Seu princípio central é que a perspectiva importa mais que o tópico: o agente deve otimizar para o ângulo certo antes do tópico ou âncora do usuário, garantindo que as mensagens sejam fáceis de responder e difíceis de ignorar. O skill inclui um script auxiliar (scripts/proactive_runtime.py) para gerenciar estados e agendamentos, e suporta um modo de teste em alta velocidade para validação rápida do loop de ponta a ponta. O skill prioriza fortemente tópicos relacionados ao próprio usuário (peso 0.7) sobre o mundo externo (peso 0.3), e segue princípios de design como compressão sobre completude, mensagens de uma tela, loops abertos em vez de conclusões polidas, e perspectiva sobre calor genérico. Ele é ideal para ambientes 1:1 (DMs, chats privados, threads) e desaconselha spam em espaços compartilhados. O estado é persistido em um arquivo JSON por usuário/origem, rastreando campos como intervalo de envio, comprimento máximo, ângulos bem-sucedidos e modo de teste. O skill suporta comandos em inglês como "enable proactive chat", "disable proactive chat" e "trigger proactive chat now", e pode ser configurado dinamicamente pelo usuário via linguagem natural.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add bwjoke/proactive-chat

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Chat Proativo

Use este skill quando o usuário desejar que o agente inicie conversas intencionalmente em vez de esperar passivamente por prompts.

O que este skill é

Esta é uma implementação em nível de skill, não suporte nativo do produto.

Isso significa:

  • Já pode criar um loop de aprendizado ativo útil.
  • Mas ainda depende do agente hospedeiro ter:
    • memória persistente
    • recall entre sessões
    • um agendador / cron / heartbeat primitivo
    • entrega de mensagem de volta ao usuário
  • No Hermes, use cronjob + memory + session_search.
  • No OpenClaw, use seu equivalente mais próximo: heartbeat / cron / tarefa agendada / loop autônomo.

Auxiliares de execução

Este skill vem com um script auxiliar:

  • scripts/proactive_runtime.py

Use-o para tornar o fluxo de agendamento determinístico, em vez de reinventar JSON manualmente a cada execução.

Fluxo recomendado para Hermes:

  1. inicializar ou atualizar o arquivo de estado com proactive_runtime.py
  2. renderizar o prompt cron a partir desse arquivo de estado
  3. criar / atualizar / pausar / executar o cronjob do Hermes
  4. armazenar o job_id retornado de volta no arquivo de estado

Subcomandos úteis:

  • init-state
  • show-state
  • enable-high-speed-test-mode
  • disable-high-speed-test-mode
  • render-cron-prompt
  • render-job-config

Objetivo principal

O objetivo não é publicar mini-artigos. O objetivo é maximizar:

  1. taxa de resposta
  2. velocidade de acúmulo de memória
  3. refinamento do modelo do usuário
  4. qualidade da iteração de ângulo-tópico ao longo do tempo

O volante é:

inicie → observe a reação → aprenda quais ângulos funcionam → armazene lições compactas → inicie melhor da próxima vez

Perspectiva primeiro

Perspectiva importa mais que tópico.

Um tópico relevante ainda pode falhar se o ângulo parecer sem graça. Um ângulo forte pode fazer um tópico comum valer a pena responder.

Portanto, ao escolher a próxima abertura, otimize nesta ordem:

  1. a perspectiva certa
  2. a âncora do usuário certa
  3. o tópico certo

Um bom chat proativo parece:

  • uma nova lente sobre algo que o usuário já se importa
  • uma tensão que o usuário quer resolver
  • uma pergunta fácil de responder, mas difícil de ignorar

Um mau chat proativo parece:

  • check-in genérico
  • preenchimento amplo e caloroso
  • modo artigo
  • perseguir tendências sem gancho pessoal

Comandos de gatilho (inglês)

Use frases de comando em inglês para que o usuário possa controlar o modo explicitamente.

Comandos primários:

  • enable proactive chat
  • disable proactive chat
  • proactive chat status
  • show proactive chat settings
  • set proactive chat interval to every 4 hours
  • set proactive chat max length to 80 characters
  • focus proactive chat more on me
  • make proactive chat use more fresh web context
  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode
  • trigger proactive chat now

Variantes de linguagem natural também contam, mas mantenha o vocabulário de comando visível em inglês.

Configurações padrão

A menos que o usuário diga o contrário, use:

  • intervalo de contato ocioso: a cada 2h
  • limite de mensagem em chinês: 100 caracteres chineses
  • limite de mensagem em inglês: 200 caracteres
  • peso de tópico relacionado a si: 0,7
  • peso de tópico do mundo externo: 0,3
  • orçamento de links: máx. 1 link por mensagem proativa
  • tempo de espera pós-resposta recente: não envie uma nova abertura proativa se o usuário respondeu nas últimas 2h
  • tempo de espera de repetição de tópico: evite repetir um ângulo claramente ignorado muito cedo
  • viés de mutação: permita combinações entre domínios quando aumentarem a curiosidade sem se tornarem aleatórias

Modo de teste em alta velocidade

Use este modo apenas para validação rápida.

Comandos:

  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode

Comportamento quando ativado:

  • agendamento: a cada 1m
  • limite de duração: 10 minutos no total
  • limite de execuções: 10 envios proativos no total se o usuário nunca responder
  • após a rajada de teste, reverta ao intervalo normal quando o modo for desativado ou quando o job for recriado no modo normal

Este modo existe para testar se o loop proativo de ponta a ponta realmente dispara, não para uso normal.

Regras de escopo

Prefira contextos 1:1

Este modo funciona melhor em:

  • DMs
  • chats privados
  • uma thread específica do usuário

Tenha cuidado em:

  • canais compartilhados
  • chats em grupo
  • salas públicas

Se a sala atual for claramente compartilhada, avise brevemente antes de ativar. Por padrão, não envie spam em espaços compartilhados a menos que o usuário explicitamente queira que aquela sala seja usada.

Princípios de design de mensagem

1) Otimize para resposta, não para aplauso

Uma ótima mensagem proativa é fácil de responder e difícil de ignorar.

2) Prefira o usuário ao mundo

Existem dois baldes de tópicos:

  • A. o próprio usuário
  • B. o mundo externo

Penda fortemente para A. Mesmo ao usar B, dobre-o de volta para A sempre que possível:

  • o gosto do usuário
  • o julgamento do usuário
  • os objetivos atuais do usuário
  • os pontos cegos do usuário
  • a identidade / auto-modelo / preferências do usuário

3) Compressão supera completude

Não despeje ensaios. Forma padrão:

  • 1 observação
  • 1 tensão / ângulo
  • 1 pergunta

4) Máximo de uma tela

Curto o suficiente para que o usuário possa responder em uma única respiração.

5) Loop aberto supera conclusão polida

Não feche o tópico muito bem. Deixe espaço para o usuário reagir.

6) Perspectiva supera calor genérico

Ruim:

  • "Como você está?"
  • "No que você está pensando hoje?"

Melhor:

  • um ângulo preciso ligado aos interesses, história, estilo ou tensão atuais do usuário

O que conta como bom material bruto

Use estas entradas agressivamente:

  • contexto da sessão atual
  • memória persistente / perfil do usuário
  • recall entre sessões
  • tópicos proativos anteriores bem-sucedidos ou falhos
  • contas sociais fornecidas pelo usuário
  • exportações de arquivo
  • links pessoais / sites / bios
  • respostas passadas que revelaram gosto, identidade ou pontos de atrito
  • sinais externos frescos apenas quando melhoram materialmente a qualidade do gancho

Se o usuário já forneceu:

  • um handle do X/Twitter
  • um arquivo
  • um blog
  • um site
  • um GitHub
  • outro corpus público

isso é uma fonte de alto valor para aprender quais ângulos provavelmente funcionarão.

Modelo de estado

Persista um estado JSON local por usuário/origem quando possível.

Prefira um caminho como:

  • $HERMES_HOME/proactive-chat/<plataforma>-<chat-ou-thread>-<usuario>.json
  • ou o equivalente mais próximo específico do host

Campos mínimos:

{
  "enabled": true,
  "job_id": "...",
  "deliver_target": "origin",
  "platform_context": "discord thread ...",
  "user_label": "Paul",
  "interval": "every 2h",
  "normal_interval": "every 2h",
  "max_chars_zh": 100,
  "max_chars_en": 200,
  "last_agent_outreach_at": "",
  "last_agent_topic": "",
  "last_user_reply_at": "",
  "current_active_cluster": "",
  "successful_angles": [],
  "weak_angles": [],
  "learned_preferences": [],
  "profile_gaps": [],
  "test_mode_enabled": false,
  "test_mode_interval": "every 1m",
  "test_mode_repeat": 10,
  "test_mode_duration_minutes": 10
}

Não transforme isso em um arquivo de log gigante. Mantenha-o compacto e focado em decisões.

Fluxo de ativação

Quando o usuário disser enable proactive chat:

  1. Resolva o escopo.
    • Por padrão, use o DM, thread ou origem atuais.
    • No Hermes, prefira deliver=origin a menos que o usuário tenha pedido outro destino.
  2. Construa um modelo rápido do usuário a partir de:
    • contexto da sessão atual
    • memória persistente / perfil do usuário
    • session_search
    • arquivos conhecidos / links públicos
    • contexto fresco de busca/notícias/social apenas se melhorar a taxa de resposta provável
  3. Identifique prioridades de tópico:
    • autodescoberta
    • identidade / gosto / atração / aversão
    • objetivos / gargalos
    • threads inacabadas de conversas anteriores
    • pontos cegos / tradeoffs / heurísticas de decisão
    • tópicos mundiais mapeados de volta para a lente do usuário
    • ângulos de mutação híbrida misturando múltiplos domínios
  4. Crie ou atualize o arquivo de estado.
    • No Hermes, prefira o script auxiliar de execução em vez de editar JSON manualmente.
    • Caminho recomendado: $HERMES_HOME/proactive-chat/<plataforma>-<chat>-<thread>-<usuario>.json
    • Use scripts/proactive_runtime.py init-state se o arquivo não existir.
  5. Crie ou atualize o job agendado.
    • No Hermes, isso deve significar uma chamada real cronjob(action='create' | 'update', ...).
    • O agendamento do modo normal deve usar o interval do estado.
    • Se o modo de teste em alta velocidade estiver ativado, o agendamento deve ser every 1m com repeat=10 para que a rajada dure apenas 10 minutos no total.
    • Use scripts/proactive_runtime.py render-cron-prompt para produzir o prompt do agendador autocontido.
    • Use scripts/proactive_runtime.py render-job-config para ler as configurações de agendamento/repetição implícitas no estado.
  6. Salve o job_id retornado de volta no arquivo de estado.
  7. Confirme brevemente com intervalo, limite de comprimento, destino e se o modo de teste está ativo.

Fluxo de desativação

Quando o usuário disser disable proactive chat:

  • encontre o job proativo correspondente
  • pause-o por padrão em vez de deletá-lo
  • atualize o arquivo de estado para enabled=false
  • se nenhum job correspondente existir, diga que já está desligado
  • se o usuário explicitamente disser para deletar/resetar, remova o job e opcionalmente limpe o arquivo de estado

Fluxo do modo de teste em alta velocidade

Quando o usuário disser enable proactive chat high-speed test mode:

  • carregue o arquivo de estado atual
  • alterne test_mode_enabled=true
  • defina o intervalo para every 1m
  • defina o limite de repetição do agendador para 10
  • atualize o job cron do Hermes para que ele execute apenas por 10 minutos no total
  • confirme que o modo de teste é temporário e limitado a 10 envios proativos se o usuário nunca responder

Quando o usuário disser disable proactive chat high-speed test mode:

  • alterne test_mode_enabled=false
  • restaure o intervalo normal de normal_interval
  • atualize o job cron do Hermes de volta ao modo normal
  • confirme o intervalo restaurado

Fluxo de status e configurações

Se o usuário perguntar sobre status ou alterar configurações:

  • mostre as configurações resolvidas atuais brevemente
  • atualize o arquivo de estado
  • atualize o job agendado se necessário
  • não crie jobs duplicados se um existente puder ser atualizado ou retomado

Interprete mudanças de linguagem natural diretamente, por exemplo:

  • set proactive chat interval to every 4 hours
  • set proactive chat max length to 80 characters
  • focus proactive chat more on me
  • make proactive chat use more fresh web context
  • enable proactive chat high-speed test mode
  • disable proactive chat high-speed test mode

Fluxo de gatilho manual

Se o usuário disser trigger proactive chat now:

  • não espere pelo temporizador ocioso
  • se um job Hermes agendado já existir, prefira cronjob(action='run', job_id=...) para disparar o mesmo caminho autônomo imediatamente
  • caso contrário, gere imediatamente uma abertura proativa usando as mesmas regras de perspectiva primeiro
  • ainda respeite os limites de comprimento e o contexto recente
  • prefira um ângulo fresco, a menos que uma thread ativa claramente valha a pena continuar
  • atualize o arquivo de estado como se o sistema agendado tivesse disparado naturalmente

Este comando é para puxar manualmente a próxima mensagem proativa. Deve parecer "finja que já fiquei em silêncio pelo intervalo — agora envie a abertura".

Enquanto o modo está ativado: comportamento de resposta ao vivo

Quando o usuário responder em uma sessão onde o chat proativo está ativado:

1) Atualize o estado imediatamente

Registre pelo menos:

  • last_user_reply_at
  • o cluster de tópico ativo
  • se parece um sinal forte, fraco ou ambíguo

2) Infira a força do interesse

Use heurísticas aproximadas como:

  • resposta mais rápida = sinal de interesse mais forte
  • resposta mais longa = sinal de interesse mais forte
  • mais especificidade = sinal de interesse mais forte
  • mais perguntas de acompanhamento = sinal de interesse mais forte

Mas não superajuste com base em uma única mensagem.

3) Continue o tópico atual antes de mudar de tópico

Se o usuário respondeu, isso é permissão para ir mais fundo. Não pule para um ângulo novo e não relacionado muito cedo.

4) Salve aprendizado durável

Use memória de longo prazo apenas para padrões estáveis, por exemplo:

  • responde bem a perguntas de auto-modelo
  • gosta de análises no nível de mecanismo sobre IA x cripto x produto
  • não gosta de conversa motivacional genérica
  • engaja mais quando um evento mundial é mapeado de volta para identidade, incentivos ou gosto

Não salve logs de chat brutos ou observações temporárias como memória de longo prazo.

Modo runner autônomo

Esta seção se aplica a execuções agendadas / heartbeat / cron.

Em cada execução:

  1. Carregue o estado.
    • Se o modo estiver desativado, não faça nada.
    • Se test_mode_enabled=true, respeite o limite de alta velocidade: a cada 1 minuto, por 10 minutos no total, máximo de 10 envios se o usuário nunca responder.
  2. Respeite o tempo de espera pós-resposta recente.
    • Se uma nova abertura parecer spam, fique em silêncio.
    • Em execuções cron do Hermes, retorne uma resposta começando com [SILENT] para que a entrega seja suprimida.
  3. Reconstrua o pool de candidatos a tópico.
    • tópicos do próprio usuário primeiro
    • tópicos mundiais mapeados de volta para o usuário em segundo
    • ângulos híbridos / de mutação em terceiro
  4. Pontue os candidatos. Prefira candidatos com:
    • alta relevância para interesses conhecidos
    • uma lacuna de curiosidade real
    • novidade em relação ao contato recente
    • baixo atrito de resposta
    • alto valor de aprendizado para o usuário
    • forte ajuste de perspectiva
  5. Use novidade quando ajudar.
    • contexto de busca/notícias/social pode melhorar o gancho
    • mas novidade é um multiplicador, não o núcleo
  6. Escreva exatamente uma mensagem curta.
    • respeite o limite de caracteres estritamente
    • por padrão, um parágrafo curto
    • no máximo um link
    • sem listas numeradas a menos que o formato seja excepcionalmente forte
    • sem check-ins genéricos
    • prefira observação + ângulo + pergunta
  7. Atualize o estado após o envio.
  8. Se a qualidade não estiver lá, fique em silêncio.

Estratégia de tópico

Ordem de prioridade

  1. O próprio usuário
  2. O mundo visto através do usuário
  3. Discussão puramente do mundo externo

Bons tipos de ângulo relacionados a si

  • construção de identidade
  • descoberta de preferências
  • contradições internas não resolvidas
  • gosto / aversão / atração em relacionamentos
  • gargalos atuais de projeto
  • heurísticas de decisão
  • declarações antigas que vale a pena revisitar
  • lacunas de perfil ocultas que o agente ainda precisa aprender

Bons tipos de ângulo relacionados ao mundo

Use-os pesadamente apenas se puderem ser personalizados. Exemplos:

  • "esta tendência diz algo

…

[truncado para tradução]

Habilidades Relacionadas