← projetos

projeto

Moodle Chat Bot — Assistente de Programação em C no Chat do Moodle

em Projeto pessoal

Moodle Chat Bot — Assistente de Programação em C no Chat do Moodle

Uma extensão de navegador que transforma o chat do Moodle em um compilador e tutor de C com IA.

O que é

Uma extensão de navegador (Chrome/Firefox) que monitora o chat de mensagens do Moodle e o transforma em um assistente acadêmico de programação em C. Direto do chat da disciplina, é possível compilar e rodar código C, interagir com o programa em execução (inclusive fornecer entradas via scanf), pedir para uma IA explicar erros ou corrigir bugs, e manter um histórico de conversas e execuções anteriores — tudo sem sair da interface do curso.

Como funciona

Um content script injetado na página do Moodle observa o chat em busca de comandos que começam com !, enviados por um usuário autorizado. Cada comando é repassado para um backend local em Flask, que roteia a mensagem: se for código C, ele é compilado com GCC e executado em um subprocesso, com um sistema de filas e threads para capturar saída em tempo real e detectar quando o programa está esperando entrada do usuário. Se for uma pergunta, a mensagem — junto com o contexto de execuções anteriores escolhido pelo usuário — é enviada para a IA do Google Gemini, com fallback automático entre modelos em caso de limite de cota. Todo o histórico de mensagens, respostas e execuções fica salvo em um banco DuckDB local.

Stack técnica

  • JavaScript (extensão de navegador, Manifest V3)
  • Python + Flask (backend local)
  • Google Gemini API
  • DuckDB para persistência
  • GCC para compilação e execução de C

Destaques técnicos

  • Runner de C interativo, com suporte a scanf em tempo real através de um "timer de silêncio" que decide quando entregar a saída ao usuário
  • Inferência automática de #include: quando o chat do Moodle corrompe símbolos como #, o bot reconhece as funções usadas (printf, malloc, sqrt...) e injeta os headers corretos
  • Sistema de contexto para a IA com granularidade fina — desde "última execução" até um ID específico de conversa, com regras sobre incluir só a pergunta, só a resposta, ou ambas
  • Fallback em cascata entre modelos Gemini para contornar limites de cota gratuita
  • Arquitetura em camadas no backend (rotas, execução, IA, inferência de headers, banco de dados), mantendo cada responsabilidade isolada

Este site usa cookies essenciais (tema, preferências) e, com sua permissão, cookies de análise (Google Analytics) para entender como o site é usado. saiba mais