Discussão multiagente 100% local. N agentes de IA (via ollama) debatem um assunto de forma event-driven — sem debate formal forçado, no tom de um grupo de zap de gente que se conhece. Você participa ativamente pela TUI (texto), a qualquer momento.
Cada linha acima é um recurso real: marcador colorido estável por autor, emoji do beat (💢 desafio, 🤝 concessão, ❓ pergunta, 😂 piada, 📖 história, 🔥 muda assunto, 👍 apoio), citação estilo WhatsApp quando a resposta pula pra trás na conversa (#12 texto), e humor por agente atualizado a cada rodada.
- Sem debate forçado. O Diretor só escolhe quem fala e qual beat combina com o que foi dito — se o papo for ameno, o beat também é (
support,joke,tell_story), não forçachallengetoda hora. - Humor de verdade, por agente. Paciência, confiança, irritação e interesse mudam com o que acontece na conversa (
EmotionChanged) e aparecem na tela — um agente pode ficar irritado com você ou com outro agente, e isso influencia o que ele fala depois. - Memória entre sessões. Cada agente escreve, em segundo plano, um pensamento privado sobre como a conversa está indo — persiste entre sessões diferentes (mesmo trocando de assunto), ninguém mais vê isso.
- Menção e resposta direta.
@Nomecutuca o agente na hora, sem passar pelo Diretor;#12 textoresponde a um post específico, estilo WhatsApp.
Nenhuma peça chama outra diretamente — todas publicam e assinam eventos (Post, SpeakerChosen, AgentThinking, EmotionChanged, DiscussionEnded) no mesmo EventBus. O Diretor decide quem fala e o beat via um LLM pequeno rodando em paralelo; a Session só numera posts, grava tudo no SQLite e encerra a discussão por limite de posts, silêncio prolongado ou comando manual.
- Python 3.11+
- ollama rodando local (se um modelo do YAML não existir ainda, o próprio
agora runfazollama pullantes de começar)
python -m venv .venv
.venv/Scripts/python -m pip install -e ".[dev]".venv/Scripts/python -m agora run personas.yamlControles: digite e Enter para participar · #12 texto responde direto à mensagem #12 (estilo WhatsApp — mostra a citação na tela quando não é óbvio) · /encerrar ou Ctrl+C encerra a discussão (gera recap por IA + exporta) · Ctrl+N nova sessão · Ctrl+E exportar transcript · Ctrl+H exportar momento marcante · Ctrl+Q sair.
.venv/Scripts/python -m agora run --resume # retoma a última sessão do --db (agora.db por padrão)
.venv/Scripts/python -m agora run --resume 3 # retoma a sessão de id 3
.venv/Scripts/python -m agora run outro.yaml --resume # força um YAML diferente do que foi salvoO YAML usado fica salvo na própria sessão — não precisa repetir o caminho do config pra retomar (só se quiser trocar por outro). Recarrega o histórico de posts daquela sessão (memória dos agentes, diretor e tela) e continua a numeração dali — sem repetir o assunto inicial.
Cada discussão é um YAML (veja personas.yaml como exemplo): agentes com nome, modelo (ollama), persona, objetivos e pontos fracos de debate; regras gerais da conversa; e limites (max_posts, ritmo entre falas, quantos posts seguidos os agentes podem emendar antes de esperar o humano). Campos obrigatórios e valores padrão estão documentados em agora/config.py.