Kg
Grafo de conhecimento leve
Documentação
kg - grafo de conhecimento local para seus assistentes de IA
Beta - As APIs ainda podem mudar e alguns bugs ainda são esperados.
kg dá ao seu assistente de IA memória de projeto persistente, estruturada e editável, armazenada localmente como um grafo de conhecimento.
Em vez de depender apenas da recuperação de trechos de documentos, você pode manter arquitetura, decisões, incidentes, regras, dependências e fluxos de trabalho em um grafo que é legível, revisável e amigável ao Git.
Use-o quando quiser que seu assistente entenda um projeto existente entre sessões — não comece do zero toda vez.
Por que usar
- Memória persistente — mantenha o conhecimento do projeto entre conversas
- Estruturado, não vago — inspecione nós, arestas, fatos e lacunas diretamente
- Editável e revisável — armazene grafos como arquivos
*.kgcom diffs legíveis - Local-first — a memória do seu projeto permanece na sua máquina em formato amigável ao Git
- Funciona com clientes MCP — conecte-o como um servidor MCP stdio local
Por que não apenas RAG
RAG clássico é bom para recuperar trechos de texto de documentos.
kg-mcp é melhor quando você quer:
- memória de projeto estável em vez de recuperação repetida
- fatos, relações e dependências explícitos
- atualizações do grafo durante o trabalho real com o assistente
- algo que você possa inspecionar, versionar, comparar e melhorar ao longo do tempo
Instalação
A partir do crates.io
cargo install kg-cli
A partir do script
Instalação recomendada:
curl -sSL https://raw.githubusercontent.com/nnar1o/kg/master/install.sh | sh
Você também pode baixar um binário pronto das Releases do GitHub.
Conecte kg-mcp ao Seu Cliente de IA
Adicione kg-mcp como um servidor MCP stdio local.
Exemplo de configuração:
{
"mcpServers": {
"kg": {
"command": "/absolute/path/to/kg-mcp"
}
}
}
Depois disso:
- reinicie seu cliente de IA,
- confirme que o servidor MCP
kgestá disponível, - comece a usar os prompts abaixo.
Configuração completa e referência MCP: docs/mcp.md
Início rápido com SCL
kg entende comandos curtos em inglês com verbo primeiro (SCL — Simple Command Language).
O grafo ativo é resolvido automaticamente a partir da sua configuração.
find "compressor defrost"
get concept:refrigerator
add concept:smart_fridge --name "Smart Fridge" --description "Connected refrigerator"
modify concept:smart_fridge --importance 0.9
remove concept:old_idea
connect process:compressor_control TRIGGERS process:auto_defrost
disconnect process:compressor_control TRIGGERS process:auto_defrost
list nodes
stats
use fridge
help
Verbos principais
| Verbo | O que faz |
|---|---|
find <query> | busca nós por texto |
get <id> | busca um nó por id |
add <id> --name "Name" | cria um nó (tipo inferido do prefixo do id) |
modify <id> --field value | atualiza campos do nó |
remove <id> | exclui um nó |
connect <src> <REL> <dst> | cria uma aresta (alias: add edge) |
disconnect <src> <REL> <dst> | exclui uma aresta (alias: remove edge) |
list nodes|edges|types|relations|graphs | lista o conteúdo do grafo |
stats | mostra estatísticas do grafo |
use <graph> | alterna o grafo ativo |
help [verb] | obtém ajuda para um verbo ou todos |
feedback <uid> yes|no|nil|pick <n> | dá feedback sobre resultados de busca |
strict | desativa padrões para as linhas seguintes |
IDs
Formato: <type>:snake_case — por exemplo, concept:fridge, bug:door_seal, process:compressor_cycle.
Relações
HAS USES STORED_IN TRIGGERS CREATED_BY AFFECTED_BY AVAILABLE_IN DOCUMENTED_IN DEPENDS_ON TRANSITIONS DECIDED_BY GOVERNED_BY READS_FROM
Dicas
- As flags vêm depois dos argumentos posicionais. Coloque valores com várias palavras entre aspas.
- Separe comandos com
;ou novas linhas. Linhas que começam com#são comentários. - Use
use <graph>para alternar grafos dentro de um script. - Comandos canônicos
kg <graph> node find ...ainda funcionam como fallback. - Referência completa do SCL:
docs/scl.md
Gerar um Grafo
Este é o primeiro fluxo de trabalho para um novo projeto: peça ao assistente para criar ou estender um grafo a partir da sua documentação.
Por padrão, os grafos são armazenados em ~/.kg/graphs como arquivos *.kg.
Prompt mínimo:
You are connected to kg-mcp.
Project graph name: payments
Build or extend this graph from the project documentation I provide.
Use `payments` as the graph name for all graph operations.
Only add facts grounded in source material.
If an important fact is missing and can be inferred safely from the provided docs, update the graph.
If something is ambiguous, ask or record it as a note instead of inventing facts.
Exemplo de prompt com documentos:
Use kg-mcp to build or extend the `payments` graph from these documents:
- docs/payments/overview.md
- docs/payments/retries.md
- docs/payments/providers.md
Only add facts grounded in the documents.
If something is ambiguous, keep it out of the graph or record it as a note.
When you finish, summarize what was added, what remains unclear, and what document should be ingested next.
Prompt mais longo para este fluxo de trabalho: docs/ai-prompt-graph-from-docs.md
Para um exemplo de repositório pronto, execute cargo run --bin repo-example para gerar repo-example.kg a partir deste repositório.
Grafo automático para um diretório
kg pode transformar uma pasta existente em um grafo automaticamente. Ele escaneia a árvore de diretórios, reconhece muitos tipos de arquivo comuns, extrai símbolos para Rust, Java, JavaScript/TypeScript, Python e C/C++, e mantém a estrutura gerada separada do grafo manual.
Para documentos semelhantes a markdown, ele também cria nós de documento (GDOC) e capítulo (GSEC) com o conteúdo das seções.
É uma maneira rápida de obter um mapa útil de um codebase ou workspace sem modelar tudo manualmente. O índice gerado é local, atualizável e seguro para ignorar no git.
Exemplo:
cargo run --bin repo-example
Isso gera repo-example.kg a partir deste repositório como uma demonstração local.
Pergunte ao Assistente Sobre Fatos no Grafo
Uma vez que o grafo existe, o fluxo de trabalho normal é pedir ao assistente para inspecioná-lo e responder perguntas a partir dele.
Exemplo de prompt:
Use kg-mcp to inspect my existing `payments` graph.
I want to understand:
- how payment authorization works,
- what triggers retries,
- which external providers are involved,
- which datastore reads and writes are part of the flow.
If the graph is missing critical information, say exactly what is missing.
Outras perguntas úteis:
- "Quais regras controlam tentativas no grafo
payments?" - "Quais sistemas escrevem no armazenamento de dados de pedidos?"
- "O que está faltando ou fraco neste grafo?"
- "Quais nós e arestas explicam o fluxo de autorização?"
Adicionar ou Atualizar Fatos Através do Assistente
Você também pode pedir ao assistente para melhorar o grafo enquanto trabalha.
Exemplo de prompt:
Use kg-mcp to review my existing `payments` graph.
Find:
- missing important nodes,
- weak descriptions,
- missing facts,
- suspicious or low-value edges.
Apply safe improvements where possible.
Only add facts grounded in the graph, the provided docs, or the current discussion.
If something is ambiguous, leave it out or add a note.
When you finish, summarize:
- what was wrong,
- what you changed,
- what still needs manual review.
Isso funciona melhor quando o prompt principal do sistema ou o prompt do projeto já informa ao assistente qual grafo pertence ao projeto.
Prompt mínimo no nível do projeto:
You are connected to kg-mcp.
Project graph name: payments.
Use this graph for relevant reads and updates in this project.
If you notice important missing information that is grounded in the available docs or conversation context, update the graph as part of your work.
If uncertain, ask or add a note instead of inventing facts.
Dicas
Configuração do projeto (.kg.toml)
kg procura por .kg.toml no diretório atual e em seus diretórios pais.
Exemplo:
backend = "json" # json backend writes native .kg files by default
graph_dir = ".kg/graphs"
graph_dirs = ["../shared-graphs", "../team-graphs"]
nudge = 20
user_short_uid = "dev_01"
[graphs]
payments = "graphs/payments.kg"
Notas:
backend = "json"é o padrão e prefere grafos de texto.kg.backend = "redb"armazena grafos em arquivos.db.graph_dirdefine um diretório principal de grafos.graph_dirsadiciona diretórios extras escaneados porkg liste resolução de grafos.
Mantenha Grafos no Git
O diretório padrão de grafos é ~/.kg/graphs.
Você pode colocar esse diretório sob o git.
Abordagem recomendada:
- mantenha os arquivos de grafo principais
*.kgno git, - ignore sidecars gerados e arquivos operacionais locais,
- trate snapshots de backup e logs de eventos como histórico local da máquina, a menos que você queira versioná-los explicitamente.
Sugestão de .gitignore:
*.kglog
*.kgindex
*.event.log
*.migration.log
*.bak
*.bck.*.gz
Na prática:
*.kgé o arquivo de grafo principal que você geralmente quer revisar e commitar,*.kglogé um log local de acesso/feedback,*.kgindexé um índice local gerado,*.event.logé uma linha do tempo local de alterações somente anexação,*.baké a versão anterior em disco da última gravação,*.bck.*.gzsão snapshots de backup compactados periódicos,*.migration.logé um relatório de migração quando grafos mais antigos são convertidos.
*.kg é amigável ao Git e intencionalmente estruturado para tornar os diffs legíveis e os merges mais fáceis quando várias pessoas trabalham no mesmo grafo.
Exportar um Grafo para HTML
Para gerar uma visualização HTML interativa de um grafo:
kg graph payments export-html --output payments.html
Você pode manter o HTML gerado como um snapshot visual compartilhável do grafo atual.
Documentação
docs/mcp.md- Configuração do MCP e referência de ferramentasdocs/ai-prompt-graph-from-docs.md- prompt mais longo para ingestão de documentosdocs/build-graph-from-docs.md- fluxo de trabalho de construção de grafos a partir de documentosdocs/troubleshooting.md- problemas comuns
Contato
Para perguntas ou feedback: nnar10@proton.me