-
Notifications
You must be signed in to change notification settings - Fork 0
Como contribuir
Guia para quem quer corrigir bugs, melhorar o RAG/UI ou actualizar documentação. Não é necessário conhecer todo o stack — escolha uma área abaixo.
Última revisão: junho/2026.
| Repo | Papel | Contribuições típicas |
|---|---|---|
| KernelBot | API, BM25, gates, frontend, wiki | Código Python/JS, testes, docs/wiki/
|
| ISS | Aulas Markdown, JSONs, pipeline ingest | Conteúdo pedagógico, keywords B2, workflow CI |
Links: substituir pelos URLs GitHub reais do projecto quando publicar.
- Issue ou alinhamento — para mudanças grandes, abra issue ou comente no PR o «porquê».
-
Branch — crie a partir de
main(ou branch acordada):fix/…,feat/…,docs/…. - Staging local — valide que o chat sobe e responde (ver abaixo).
-
Testes —
pytest -qverde antes do PR. - Diff focado — uma preocupação por PR quando possível (ex.: docs separado de refactor grande).
- Python 3.11+ (ou versão do projecto)
- Docker (MySQL staging na porta 3307)
- Chave do provider LLM no
.env:CURSOR_API_KEY(defaultACL_LLM_PROVIDER=cursor) ouOPENROUTER_API_KEY(seACL_LLM_PROVIDER=openrouter) - Repositório ISS em
../ISS(ingest completo opcional)
cd KernelBot
chmod +x bin/*.sh
./bin/staging-setup.sh # uma vez — E2E deve terminar com SIM
./bin/staging-serve.sh # deixar aberto — http://127.0.0.1:8001Não uses python main.py directo se o .env apontar para produção — usa sempre ./bin/staging-serve.sh.
Guia completo: TESTE-LOCAL · wiki Staging e testes.
cd KernelBot
source .venv/bin/activate # se aplicável
pytest -qSuites relevantes por área:
| Área | Ficheiros (exemplos) |
|---|---|
| Histórico de conversa | tests/test_conversation_history.py |
| Pin / scope hints |
tests/test_scope_hint.py, tests/test_pin_context.py
|
| Grounding anchored | tests/test_post_generation_anchored.py |
| Chat provider | tests/test_chat_provider_post_gen.py |
Depois de mudanças em retrieval, UI ou contexto:
| Bateria | Ficheiro | Foco |
|---|---|---|
| Escopo, pin, advisory | Smoke escopo/pin | 10 turnos rápidos |
| Memória multi-turno | Smoke histórico de chat | 3 turnos H1–H3 |
URL: http://127.0.0.1:8001 · hard refresh após deploy local.
| Quer alterar… | Comece em |
|---|---|
| Gates / advisory pós-LLM |
engine/retrieval.py, engine/chat_provider.py
|
| Prompt / mensagens / pin | engine/context.py |
API /chat, SSE |
api/routes.py, docs/wiki/07-apis-e-sse.md
|
| UI, histórico, Nova conversa |
frontend/src/ui.js, frontend/src/utils/history.js
|
| BM25 / chunking |
engine/database.py, docs/wiki/05-bm25-chunking.md
|
| Variáveis de ambiente |
.env.staging.example, docs/wiki/12-configuracao.md
|
| Wiki |
docs/wiki/*.md (SSOT — espelhar para GitHub Wiki depois) |
Estrutura completa: Estrutura do código.
- Editar Markdown em ISS (
content/<disciplina>/…). - Exportar JSON (
lesson-json-export.mjs). - Ingerir para MySQL (
ingest-knowledge.py/./bin/staging-ingest-iss.sh). -
/reloadno KernelBot (POST /chatcommessage: "/reload"+Authorization: Bearer $ACL_RELOAD_BEARER_TOKEN).
Pipeline: Integração ISS (Fase 5b).
Documentos meta (sobre o bot, faculdade) — rascunhos em KernelPlanner corpus-meta/; mesma pipeline quando prontos.
| Acção | Onde |
|---|---|
| Wiki técnica |
docs/wiki/ — actualizar índice em Home
|
| Camada pública |
00-inicio-publico.md, 18-contribuir.md, 19-faq-usuario.md
|
| Entrada curta na raiz |
documentation.md (aponta para a wiki) |
| Prompt agente doc (Fase 6) | Prompt agente documentação |
Ao adicionar página nova: incluir no índice da wiki e, se for pública, linkar a partir de Início — guia público.
- Seguir padrões existentes no ficheiro que editas (naming, imports, testes).
- Commits: mensagem clara no imperativo («fix advisory when [Fonte:] present»).
- Não commitar
.env, credenciais ou dumps MySQL. - Documentar variáveis novas em Configuração.
- FAQ — utilizador — linguagem para alunos (útil ao escrever UX)
- Segurança e logs — redacção de segredos
- Backlog — débitos conhecidos
KernelBot — tutor de estudo sobre o material das aulas.
Índice · Home · FAQ · Como contribuir · Visão geral · Backlog · Repositório