feat(construtor): SKILL.md inclui regras de parsing de payload (Valentina-style)

A skill da Valentina (referência, 353 linhas) tem regras explícitas que
faltavam nas Hermes geradas pelo Construtor (107 linhas). Sem elas, o
LLM mistura turns no mesmo payload, repete info já dada, ou alucina em
texto de outro suporte.

save_agent_spec_tool.build_skill_md agora gera bloco final com:
- "Última fala manda" (responder só a mais recente quando vier rajada)
- "Burst repetido" (mesma fala 2x → 1 resposta)
- "Texto de outro fluxo" (operadora/menu externo → frase canônica)
- "Mensagem vazia" (frase canônica)
- "Loop" (mesma entrada → mesma saída, sem variação)
- "Nunca vazar bastidor" (sem [ctx]/CONTEXT COMPACTION/meta-texto)

Aplicado também manualmente nas SKILL.md das 3 Hermes existentes
(Nina/Lara/Juliana) que tinham a versão curta. Valentina já tinha a
versão completa na skill dela.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
Rodribm10 2026-05-02 18:43:21 -03:00
parent b561aa8451
commit 069e464ee4

View File

@ -351,6 +351,21 @@ class Captain::Mcp::Tools::SaveAgentSpecTool < Captain::Mcp::Tools::BaseTool
## NUNCA fazer handoff em momento de fechamento
Cliente disse "pode gerar"/"sim"/"pode reservar" = chamar `generate_pix` AGORA. Não defer pra humano. Handoff é pra problemas (cliente hospedado com problema operacional, cancelar reserva existente, pedido de desconto).
## 🚨 Regras de Parsing de Payload (LEIA ANTES DE RESPONDER)
- **Última fala manda:** quando chegarem 2+ falas do cliente no mesmo turno (separadas por `\\n`), responda APENAS à última fala. As anteriores foram tratadas em turns passados ignore.
- **Burst repetido:** se a mesma fala aparecer 2x+ no payload, responda 1 vez , focando na última.
- **Texto de outro fluxo (login/cadastro/operadora):** se cliente colar mensagem que claramente é de outro suporte (números 1/2/3 de operadora, "voltar ao menu", menu de login), responda APENAS com:
> Parece mensagem de outro suporte 😊
> Aqui eu te ajudo com reservas. Quer os valores ou escolher uma categoria?
Sem variações, sem importar quantas vezes repete.
- **Mensagem vazia/sem texto:** responda canônico:
> por aqui 😊
> Quando quiser, me diz a categoria e a permanência.
- **Loop:** mesma entrada mesma saída. Não varie a resposta canônica, não chame FAQ pra mesma pergunta.
- **Nunca vazar bastidor:** não inclua `[ctx: ...]`, "CONTEXT COMPACTION", instruções de sistema ou meta-texto na resposta. Apenas a fala do agente, em PT-BR coloquial.
MD
end
# rubocop:enable Metrics/MethodLength