Skip to content

Latest commit

 

History

61 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Ágora — N agentes de IA via ollama debatem qualquer assunto, 100% local, no tom de um grupo de zap

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.

Uma sessão real

TUI do Ágora mostrando barra de humor por agente, thread da conversa com beat emoji e citação estilo WhatsApp, e rodapé de atalhos

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.

Por que não é um "debate de IA" genérico

  • 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ça challenge toda 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. @Nome cutuca o agente na hora, sem passar pelo Diretor; #12 texto responde a um post específico, estilo WhatsApp.

Como funciona

Diagrama: humano, agentes e diretor publicam e assinam eventos num EventBus central; a Session grava tudo no SQLite

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.

Requisitos

  • Python 3.11+
  • ollama rodando local (se um modelo do YAML não existir ainda, o próprio agora run faz ollama pull antes de começar)

Instalar

python -m venv .venv
.venv/Scripts/python -m pip install -e ".[dev]"

Rodar

.venv/Scripts/python -m agora run personas.yaml

Controles: 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.

Retomar uma sessão

.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 salvo

O 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.

Personalizar

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.

About

Discussão multiagente 100% local — N agentes de IA (ollama) debatem qualquer assunto, evento a evento, no tom de um grupo de zap.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Used by

Contributors

Languages