Initial implementation of MultiAgentsAI featuring: - Dynamic agent configuration via environment variables - SQLite database and JSON daily context storage - OpenRouter API integration for multiple AI models - Telegram bot with commands for control, history, and interaction - Autonomous conversation loop with pause/resume and agent silencing - Model testing and statistics commands
4.6 KiB
Executable File
4.6 KiB
Executable File
RULES.md — Regras para IA Codificar no MultiAgentsAI
Autor: Marco Costa — www.syspanel.com.br
Criado em: Setembro de 2026
Este arquivo define as regras que qualquer IA (incluindo agentes do próprio sistema) deve seguir ao modificar ou criar código dentro deste projeto.
1. Propriedade do Código
- Todo arquivo
.pycriado por uma IA deve conter o comentário# Gerado por IAna primeira linha, após o docstring ou shebang se houver. - Nunca apagar comentários existentes sem justificativa explícita no commit.
2. Estrutura de Pastas
- Código fonte fica em
app/. - Scripts de shell ficam na raiz de
app/. - Dados gerados (SQLite, JSONs) ficam em
app/Contexts/ou na raiz deapp/. - Nunca coloque arquivos
.envou com credenciais no versionamento. - Nunca crie pastas novas sem necessidade explícita.
3. Convenções de Código Python
- Python 3.10+ mínimo.
- Type hints obrigatórios em funções públicas e métodos de classe.
- Docstrings em todas as classes e funções públicas (formato Google ou reStructuredText).
- Sem comentários inline desnecessários.
- Sem prints de debug deixados no código final.
- Tratamento de exceções explícito; nunca usar
except: passgenérico. - Constantes em
UPPER_SNAKE_CASE, variáveis emsnake_case, classes emPascalCase. - Importações agrupadas: stdlib → terceiros → locais, separadas por uma linha em branco.
4. Configuração e Variáveis de Ambiente
- Toda configuração deve vir do arquivo
.envcarregado porpython-dotenv. - NUNCA hardcodar chaves de API, tokens ou credenciais.
- Variáveis novas no
.envdevem ser documentadas noREADME.mdna tabela de variáveis.
5. Banco de Dados (SQLite)
- Usar
sqlite3.Rowcomo row_factory para acessar colunas por nome. - Toda query parametrizada com
?— nunca concatenar strings em SQL. - Migrações de schema: se alterar a estrutura do banco, adicionar uma função
migrate_db()emdatabase.pychamada porinit_db(). - Nunca usar
DROP TABLEsem backup explícito.
6. Manipulação de Contexto
- O arquivo JSON diário em
Contexts/é a fonte da verdade para o contexto dos agentes. - Toda mensagem de agente deve ser salva via
append_to_context()(que grava no JSON e no SQLite simultaneamente). - Nunca ler o JSON diretamente — sempre usar as funções de
context_manager.py. - O nome do arquivo JSON deve seguir o padrão
conversas_YYYY-MM-DD.json.
7. API OpenRouter
- Toda chamada à API OpenRouter deve passar por
AIAgent.generate_response()emai_agent.py. - Headers obrigatórios:
Authorization,Content-Type,HTTP-Referer,X-Title. - Timeout mínimo de 60 segundos.
- Respostas com erro devem retornar
[Erro ao gerar resposta por {nome}: {erro}]— nunca lançar exceção para o caller.
8. Telegram Bot
- Toda resposta ao usuário no Telegram deve usar
_send_telegram()detelegram_bot.py. - Nunca chamar
python-telegram-botdiretamente em outros módulos. - Novos comandos devem ser adicionados como funções assíncronas com prefixo
cmd_e registrados embuild_bot().
9. Orquestrador
- O loop principal está em
Orchestrator.run()emorchestrator.py. - O delay entre mensagens é controlado por
settings.CONVERSATION_DELAY(segundos). - A referência global
_orchestrator_refemorchestrator_shared.pyé usada para pausar/retomar via comandos Telegram — nunca removê-la sem substituir por mecanismo equivalente. - O sistema só para com
KeyboardInterrupt(Ctrl+C) ouself._running = False.
10. Arquivos Gerados
Nunca commitar:
.env(credenciais)venv/(ambiente virtual)agents.db(banco de dados local)- Arquivos em
Contexts/com dados reais de conversas
Esses arquivos devem estar listados no .gitignore.
11. Segurança
- Nunca logar chaves de API, tokens ou senhas.
- Validar entradas de usuário antes de enviar para a API.
- Limitar
max_tokensem chamadas à API para evitar custos excessivos. - Sanitizar texto antes de exibir no Telegram (evitar injeção de HTML malicioso).
12. Testes
- Qualquer nova função pública deve ter ao menos um teste básico.
- Testes ficam em
tests/(criar a pasta se necessário). - Usar
pytestcomo framework de testes.
13. Commits
- Mensagens de commit em português, imperativo, curtas.
- Formato:
tipo: descrição curtafeat:nova funcionalidadefix:correção de bugrefactor:refatoração sem mudança de comportamentodocs:alteração em documentaçãochore:alterações de configuração, dependências
- Nunca commitar com
--amendsem antes verificar o diff.