Actualização derivada da restauração do LightRAG-HKU no gateway (ver Hub/04-Stack/CHANGELOG.md sessão 3 extensão). A v2.1.0 tinha sido escrita assumindo FastMCP file-based com 11 tools (lightrag_query, lightrag_stats, etc) porque outra sessão tinha migrado temporariamente o backend. Essa migração foi revertida e o stack voltou ao LightRAG-HKU 1.4.13 completo com 17 tools originais. Mudanças: - Router Família A agora usa mcp__lightrag__query_document (não lightrag_query) - Documentada a lista completa de 17 tools MCP (query, insert, pipeline, graph edit) - Referência à UI rag.descomplicar.pt/webui - PG storage notado (331 docs workspace default) - Graceful fallback para mcp__memory-supabase__ quando MCP indisponível Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
15 KiB
name, description
| name | description |
|---|---|
| knowledge | Router de conhecimento Família A/B. Família A (operacional interna) consultada em paralelo para qualquer pergunta sobre processos, projectos, decisões, histórico. Família B (NotebookLM externa) só para conhecimento conceptual/teórico. v2.1.1 |
/knowledge — Router Família A/B v2.1.1
Correcção arquitectural 08-04-2026: a v2.0.0 tratava NotebookLM como fonte primária. Isso estava errado — NotebookLM não vê operações, não vê estado real, só tem ebooks e transcripts. Em
~/.claude/projects/-media-ealmeida-Dados-Hub/memory/feedback_knowledge-router-arquitectura.mdestá o racional completo.
Princípio de routing
Não é fallback linear. É router por tipo de pergunta:
- Operacional / processual / histórico / decisões / projectos / código interno → Família A em paralelo, consolidar com citação de origem.
- Conceptual / teórico / externo / research / mercado / ebooks → Família B (NotebookLM) com routing por tema (tabela em baixo).
- Ambíguo → perguntar ao utilizador qual o tipo.
Família A — Operacional interna (paralelo, complementares)
| Fonte | Tool | Conteúdo |
|---|---|---|
| LightRAG | mcp__lightrag__query_document (modo hybrid) |
Knowledge graph interno. LightRAG-HKU 1.4.13 completo — REST API + WebUI em rag.descomplicar.pt + PG storage (workspace default) + AGE graph extension. 17 tools MCP disponíveis (ver lista abaixo). 331 docs no Postgres (135 processed + 194 pending + 2 processing + 6 failed). |
| memory-supabase | mcp__memory-supabase__search_memories(query, threshold=0.7, limit=10) |
Memórias persistentes cross-sessão com embeddings. Decisões, contexto, lacunas anteriores. |
| Memória CC cross-projecto | Grep recursivo em ~/.claude/projects/*/memory/*.md |
101 ficheiros em 34 projectos (~261kB). Harness só carrega automaticamente a memória do cwd — este grep é obrigatório para não perder contexto de outros projectos. |
| Obsidian / Hub | Grep em /media/ealmeida/Dados/Hub/**/*.md |
PROCs, QRs, INDEX, frontmatter, procedimentos, histórico. |
| Desk CRM | mcp__desk-crm-v3__* (tasks, projects, tickets, customers) |
Fonte de verdade operacional: tarefas, projectos, clientes, tickets, horas. |
Workflow Família A
1. Classificar pergunta como operacional (default para queries internas)
2. Disparar em PARALELO (mesma mensagem, vários tool calls):
- mcp__lightrag__query_document(query, mode="hybrid")
- mcp__memory-supabase__search_memories(query, threshold=0.65, limit=8) [graceful se MCP indisponível]
- Grep ~/.claude/projects/*/memory/*.md
- Grep Hub/**/*.md (limitar a pastas relevantes quando possível)
- Desk CRM search (se query menciona cliente/projecto/tarefa)
3. Consolidar resposta citando origem de cada fragmento
4. Se Família A insuficiente → perguntar ao utilizador ou escalar para Família B
17 tools MCP LightRAG-HKU disponíveis
Consulta / leitura:
query_document(query, mode)— RAG query. Principal para router. Modos:naive,local,global,hybrid,mix(default:hybrid).get_documents()— lista docs com status (processed/pending/processing/failed) e metadata.get_pipeline_status()— estado do pipeline de ingestão (busy, job, batchs).get_graph_labels()— entity types no knowledge graph.check_lightrag_health()— health check do server.
Ingestão:
insert_document(text)— insere texto único, extrai entidades + relações.insert_batch(texts[])— batch de textos.insert_file(path)— insere ficheiro local.upload_document(file)— upload binário.scan_for_new_documents()— trigger scan doINPUT_DIR(/root/mcp-lightrag/inbox/).
Edição de grafo:
create_entities,edit_entities,delete_by_entities,merge_entitiescreate_relations,edit_relationsdelete_by_doc_ids— remove doc + entidades órfãs.
UI web: https://rag.descomplicar.pt/webui/ com autenticação (AUTH_ACCOUNTS no .env do gateway).
Nota sobre graceful fallback: as tools mcp__* podem estar indisponíveis em sessões específicas por razões de auto-discovery do harness. Se a chamada falhar com "No such tool available", continuar o paralelismo com as outras fontes e reportar a lacuna no output final.
Formato de resposta Família A
## [pergunta]
**LightRAG:** [excerto] _(entidade X, score Y)_
**memory-supabase:** [excerto] _(id N, tags)_
**memory/<projecto>:** [excerto] _(ficheiro)_
**Hub:** [excerto] _(caminho:linha)_
**Desk CRM:** [excerto] _(task #N, projecto #M)_
**Síntese:** [consolidação em 2-3 frases citando as fontes mais fortes]
Regra: nunca responder sem citar fonte. Se 0 fontes, dizer "sem hits em Família A" explicitamente.
Família B — Conhecimento externo (NotebookLM)
Quando usar: só para perguntas conceptuais, teóricas, de research externo ou mercado. Nunca para operacional.
Exemplos de queries Família B:
- "Quais são as melhores práticas de Core Web Vitals em 2025?"
- "Como funciona o algoritmo de ranking do YouTube Shorts?"
- "Arquétipos de Jung aplicados a branding"
- "Stoicismo na gestão de equipas"
Workflow Família B:
- Classificar tema → tabela de routing
- Consultar max 3 notebooks (performance)
mcp__notebooklm-mcp__notebook_query({ notebook_id, query })- Se score <70 → fallback a Context7 (docs bibliotecas)
Routing por tema (65 notebooks)
Inventário completo:
~/.claude/projects/-media-ealmeida-Dados-Hub/memory/notebooklm-inventory.md
WordPress/Web
| Keywords | Notebook | ID |
|---|---|---|
| wordpress, wp-cli, config | WordPress Config CLI | fb2f26bd-8cb0-4d4c-bafc-4f1ebb51c51d |
| elementor, templates, widgets | WordPress e Elementor | 5be0d1a6-00f2-4cd9-b835-978cb7721601 |
| woocommerce, loja, produtos | Documentacao WooCommerce | bd06acff-4b9d-44aa-b3f7-60434bbd6b49 |
| kivicare, ehr, clinica | KiviCare EHR WP | 78621405-a5bc-433f-856f-296260a80bd9 |
| seguranca wp, malware, hardening | Ciberseguranca WordPress | 5f60adfd-2435-4725-8c12-9c11c5f51d75 |
Marketing e Conteúdo
| Keywords | Notebook | ID |
|---|---|---|
| marketing, digital, campanha, funil | Marketing Digital PT | 4c595973-ba10-420a-a3bf-e4389e424ad3 |
| marketing avancado, ads, growth | Marketing Digital Avancado | 76647e0f-3ae2-4c00-a0a8-f457aebf5655 |
| seo, keywords, ranking, serp | Marketing Digital PT | 4c595973-ba10-420a-a3bf-e4389e424ad3 |
| copywriting, persuasao, texto | Copywriting e Persuasao | 7b8fec17-d34f-4e3f-a8c6-8231e51f6323 |
| social media, branding, instagram | Social Media e Branding | 9053d0e8-dd39-460b-b5ea-e67af3e9a675 |
| video, producao, youtube | Producao de Video e Youtube | 058a896e-6c9a-4e51-ae7d-9adb2738bc5f |
| youtube, monetizacao, compliance | YouTube Monetizacao e Compliance | 60a209a7-e205-4d57-a6f3-fef3de61e87a |
| podcast, audio | Podcast Descomplicar | a5bef96b-a1af-4293-9979-5da46f8d2301 |
| ecommerce, loja online | E-commerce Pratico | 226e384e-d4bc-48f4-bb82-7927360436cc |
| ecommerce portugal, marketplace | E-Commerce Portugal | 8a430cf2-ed99-413d-b4bf-a1400deaf49e |
Desenvolvimento / Código (externo)
| Keywords | Notebook | ID |
|---|---|---|
| programacao externa, padroes, api design | Programacao | 24947ffa-0019-448a-a340-2f4a275d2eb1 |
| claude code, mcp dev externo | Claude Code | 2876d1fe-5cea-4d98-8140-b0e1a81c6bc4 |
| mcp protocolo | Desenvolvimento de MCPs | 73102308-70ef-403e-9be9-eae0cfc62d55 |
| ai editor, cursor, copilot | AI Code Editors | 57d9c6c9-48ba-4d83-8f71-cc890f348a53 |
| github trends | GitHub Trends | 922b7532-ddf3-4dba-9d3c-6d5f83b89378 |
| open source, foss | Open Source Software and Platforms | cabf9821-c1ff-44cb-9bfd-59bda3599792 |
| n8n, workflow automacao | n8n | f2c809b8-1cb5-4dd0-aa7e-be2cfb6704d1 |
| perfex dev, hooks externos | Dev PerfexCRM | 80606de8-2783-4d36-b08d-5825e6f9a8da |
| remotion, video code | Remotion | f2b75baa-1ab1-48d3-8f7c-a6a9e516934c |
Nota: código do projecto (
/Dev/*, plugins locais, MCPs desenvolvidos internamente) é Família A (grep Hub + filesystem), não Família B.
Infraestrutura
| Keywords | Notebook | ID |
|---|---|---|
| cwp externo | CWP | 0ded7bd6-69b3-4c76-b327-452396bf7ea7 |
| cloud, devops patterns | Cloud e Infraestrutura TI | f9a79b5a-649f-4443-afaf-7ff562b6c2e7 |
| proxmox | Proxmox | 276ccdde-6b95-42a3-ad96-4e64d64c8d52 |
Design/UX
| Keywords | Notebook | ID |
|---|---|---|
| design, branding externo | Design Profissional AItomatizado | b568b13b-0eed-48c9-b513-5c5b7ec0b102 |
| ui, ux, wcag | UI/UX Design | 081ca512-8279-4850-b2b9-dff090267482 |
| tipografia, cores | Tipografia e Cor para Web | f97a0d2b-a5b3-4640-b941-3cbb184b1b81 |
Gestão e Estratégia
| Keywords | Notebook | ID |
|---|---|---|
| gestao projectos, agile, scrum | Gestao de Projectos e Agile | 0c9c079c-a426-486c-99eb-1564d42d37ad |
| operacoes externas, kpi | Gestao de Operacoes | f9dc59c2-718b-4b12-bd06-095d4bfa3e34 |
| estrategia, empreendedorismo | Estrategia e Empreendedorismo | 79d43410-0e29-4be1-881d-84db6bdc239a |
| transformacao digital, ia negocio | Transformacao Digital e IA | ab876d0d-12a8-43d9-bc62-59c1c8e9d0f8 |
| ai automation stack | AI Automation Stack | 929ef67b-c131-4f01-abd0-8b078491a6b7 |
| ai agents curso | AI Agents Intensive Course | f4be0e3f-4d9e-4c5c-a743-9f14427f2e43 |
Produtos externos / Mercado
| Keywords | Notebook | ID |
|---|---|---|
| zaia, chatbot | Zaia | 087d76f1-e929-49da-9e3c-4edc22b42b3f |
| zender, whatsapp api | Zender 3 | 7095e5fa-1465-4496-b1a3-48f2e6e07f79 |
| solar, fotovoltaico | Solar FV Engenharia | 03d54e00-aefa-45dc-ba01-f3864a7c3112 |
| opensolar | OpenSolar | 0082bcaf-1e17-4b84-87cc-2256b1719b55 |
Pessoal / SelfRescueProtocol (só se explicitamente pessoal)
| Keywords | Notebook | ID |
|---|---|---|
| jung, arquetipos | Jung | d5c67d7f-7fe8-4542-9e5c-22403f3193ee |
| taoismo, wu wei | Taoism | aea85baf-9ddf-4d79-bf07-81391a275b09 |
| adhd, phda | ADHD | a4ff3fd7-fb7c-49a1-94ff-0433193e2338 |
| autismo | Autismo | 66eff78e-318f-4a8b-a3c7-039a4124b1ad |
| heroi, jornada | Essencia de Heroi | 6dcd08e8-79d9-4ae0-b6bf-b2ee96717bf2 |
| kintsugi | Auto Kintsugi | 82a95c2f-be56-4c4a-a96f-96f6677a6991 |
| somatica, trauma | Psicologia Somatica | 3410893b-16a3-4178-9091-42650a41086f |
| estoicismo | Marcus Aurelius / Stoic | 4b986ad4-49da-4604-a423-4fcdf20dd9da |
Classificador de pergunta (heurística)
Usar estes sinais para decidir Família A vs B:
| Sinal na pergunta | Família |
|---|---|
| Nome de cliente, projecto, tarefa #N, ticket #N | A |
| "quando", "histórico", "última vez", "decisão", "porque fizemos" | A |
| Nome de ficheiro, path, skill, plugin, MCP interno | A |
| "como funciona (abstracto)", "melhores práticas", "teoria de" | B |
| Nome de biblioteca externa + versão | B (+ Context7) |
| Pessoal explícito (jung, adhd, estoicismo, …) | B pessoal |
| Ambíguo | perguntar |
Comandos
| Comando | Uso |
|---|---|
/knowledge [pergunta] |
Router automático A/B com paralelismo |
/kb [pergunta] |
Alias curto |
/kb-save [conteúdo] |
Guardar na fonte adequada (LightRAG se operacional, Supabase se decisão, NotebookLM source_add se externo) |
/kb-gaps |
Listar lacunas detectadas em memory-supabase |
Gravar conhecimento (/kb-save)
Router inverso por tipo:
| Tipo | Destino | Tool |
|---|---|---|
| Decisão / contexto / lacuna | memory-supabase | mcp__memory-supabase__save_memory com tags |
| Entidade / relação / doc interno | LightRAG | mcp__lightrag__insert_document(text) ou insert_batch(texts) |
| Procedimento operacional | Hub/06-Operacoes/Procedimentos/ | Write PROC-*.md |
| Conhecimento externo | NotebookLM notebook adequado | mcp__notebooklm-mcp__source_add |
Detecção e reporte de lacunas
Quando query retorna 0 hits úteis em Família A (o caso relevante) ou <30% score em Família B:
mcp__memory-supabase__save_memory({
content: `LACUNA: "${query}" — Família A 0 hits, classificada como ${classificacao}.`,
tags: ["lacuna-kb", classificacao],
metadata: { query, timestamp, source_families: ["A","B"] }
});
Depois sugerir acção: criar PROC, adicionar ao LightRAG, adicionar fonte ao notebook adequado.
Regras operacionais
- Família A é default. Só escalar para B quando classificador sinalizar externo.
- Paralelismo obrigatório em Família A. Todas as tools na mesma mensagem (regra global #1: "NEVER run independent tool calls sequentially").
- Grep cross-projecto obrigatório em
~/.claude/projects/*/memory/*.md— o harness só carrega a memória docwd, este grep compensa esse gap. - Nunca responder sem citar fonte. Se 0 hits, dizer explicitamente.
- Max 3 notebooks por query Família B.
- PT-PT sempre na consolidação.
- Se a pergunta é sobre estado presente (tarefas abertas, tickets, horas, facturas), ir directo ao Desk CRM, não a LightRAG/NotebookLM.
Anti-patterns
- ❌ Começar por NotebookLM para perguntas operacionais (era o erro da v2.0.0)
- ❌ Só consultar o
cwde ignorar memory cross-projecto - ❌ Responder sem citar fonte
- ❌ Chamar Família A em série — tem de ser paralelo
- ❌ Classificar "como funciona o nosso router /knowledge?" como Família B (é Família A — é sobre infra interna)
- ❌ Fallback linear A→B quando a pergunta é claramente externa (vai directo a B)
Referências
references/routing-guide.md— mapeamento detalhado de routing (pendente v2.1 — actualizar)~/.claude/projects/-media-ealmeida-Dados-Hub/memory/feedback_knowledge-router-arquitectura.md— decisão arquitectural~/.claude/projects/-media-ealmeida-Dados-Hub/memory/notebooklm-inventory.md— inventário completo 65 notebooks04-Stack/CHANGELOG.mdsessão 3 de 08-04-2026 — recuperação LightRAG e clarificação tools reais
Healing log
{"date":"2026-04-08","issue":"v2.0.0 tratava NotebookLM como fonte primaria para tudo","fix":"v2.1.0 router Familia A/B — NotebookLM so para externo","source":"user"}
{"date":"2026-04-08","issue":"v2.1.0 assumia FastMCP file-based (11 tools lightrag_*) apos migracao temporaria da outra sessao","fix":"v2.1.1 restaurado para LightRAG-HKU completo com 17 tools originais (query_document, insert_document, get_pipeline_status, etc), UI em rag.descomplicar.pt, PG storage 331 docs","source":"user"}
{"date":"2026-04-08","issue":"memoria Claude Code fragmentada em ~/.claude/projects/*/memory/ (101 ficheiros, 34 projectos)","fix":"grep cross-projecto obrigatorio no router Familia A","source":"user"}
{"date":"2026-04-08","issue":"mcp__memory-supabase__search_memories pode estar indisponivel no harness","fix":"graceful fallback no router — continuar paralelismo com outras fontes e reportar lacuna","source":"auto"}
v2.1.1 | 08-04-2026 | LightRAG-HKU restaurado com 17 tools reais, UI rag.descomplicar.pt, PG storage 331 docs, graceful fallback para MCPs indisponíveis