Documentação completa da API pública da engine de knowledge base.
Nota de escopo:
raw/,wiki/,outputs/ekb_state/são diretórios lógicos do corpus do usuário. No modelo recomendado atual, eles vivem emKB_DATA_DIR, fora do repositório principal.
kb [COMANDO] [OPÇÕES]Copia arquivos locais ou URLs para raw/.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
sources |
List[str] |
Sim | - | Caminhos locais ou URLs a adicionar em raw/ |
--compile |
Flag | Não | False |
Compilar os itens ingeridos logo após a ingestão |
--no-commit/--commit |
Flag | Não | --no-commit |
Escreve localmente por padrão; --commit versiona a execução atual |
Exemplo:
kb ingest documentos/notas.md
kb ingest /home/user/docs/artigo.txt
kb ingest https://example.com/post --commitRetorno:
- Sucesso: mensagem
Adicionado: raw/<nome_do_arquivo> - Código:
0
Importa um ou mais livros EPUB ou PDF textual para raw/books/ em arquivos Markdown por capítulo.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
paths |
List[Path] |
Sim | - | Um ou mais arquivos EPUB/PDF textual |
--output |
Path | Não | raw/books/<slug> |
Diretório de saída; ignorado com múltiplos arquivos |
--compile |
Flag | Não | False |
Compilar os capítulos importados após a importação |
--ocr |
Flag | Não | False |
Ativa OCR para PDFs de scan ou com texto corrompido |
--force |
Flag | Não | False |
Reimporta livros já existentes em raw/books/ |
--workers, -j |
int | Não | 4 |
Número de livros processados em paralelo |
--chunk-pages |
int | Não | 15 |
Páginas por chunk no fallback de PDFs sem TOC |
--no-commit/--commit |
Flag | Não | --no-commit |
Com --compile, mantém write local por padrão; --commit versiona |
Exemplo:
# Importar EPUB
kb import-book livros/python.epub
# Importar com diretório específico
kb import-book livros/ia.pdf --output raw/books/inteligencia-artificial
# Importar múltiplos livros em paralelo
kb import-book livros/python.epub livros/ia.pdf -j 2
# Importar PDF escaneado com OCR
kb import-book livros/scan.pdf --ocr --chunk-pages 10
# Importar e compilar automaticamente
kb import-book livros/clean-code.epub --compile
# Importar, compilar e versionar explicitamente
kb import-book livros/clean-code.epub --compile --commitRetorno:
- Sucesso:
<N> capítulos importados em <caminho> (metadata: metadata.json) - Erro: código
1com mensagem descritiva
Compila documentos de raw/ para a wiki em Markdown usando LLM.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
target |
str | Não | None (todos) |
Arquivo, diretório ou nome de livro já importado |
--update-index |
Flag | Não | True |
Atualizar _index.md após compilar |
--allow-sensitive |
Flag | Não | False |
Permite envio explícito de conteúdo sensível ao provider |
--no-commit/--commit |
Flag | Não | --no-commit |
Escreve localmente por padrão; --commit versiona |
Exemplo:
# Compilar todos os arquivos em raw/
kb compile
# Compilar arquivo específico
kb compile raw/notas-reuniao.md
# Compilar um diretório importado em raw/books/
kb compile raw/books/mathematics-for-machine-learning
# Compilar por nome parcial do livro
kb compile "Mathematics for Machine Learning"
# Compilar sem atualizar índice
kb compile --no-update-index
# Compilar e versionar explicitamente
kb compile --commitRetorno:
- Sucesso: lista de arquivos compilados com caminhos
- Aviso:
[yellow]Nenhum arquivo em raw/(código0)
Responde uma pergunta consultando a wiki.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
question |
str | Sim | - | Pergunta para a knowledge base |
--file-back, -f |
Flag | Não | False |
Arquivar resposta em outputs/ por padrão |
--to-wiki |
Flag | Não | False |
Arquivar resposta em wiki/ em vez de outputs/ |
--allow-sensitive |
Flag | Não | False |
Permite envio explícito de conteúdo sensível ao provider |
--no-traverse |
Flag | Não | False |
Desativa traversal de wikilinks |
--depth |
int | Não | 1 |
Profundidade de traversal quando --no-traverse não estiver ativo |
--no-commit/--commit |
Flag | Não | --no-commit |
Em file-back, escreve localmente por padrão; --commit versiona o arquivo |
Exemplo:
# Pergunta simples
kb qa "Quais são as principais vulnerabilidades OWASP?"
# Pergunta e arquivo a resposta
kb qa "Como funciona o pattern Singleton?" --file-back
# Pergunta, arquiva e versiona explicitamente
kb qa "Como funciona o pattern Singleton?" --file-back --commitRetorno:
- Sucesso: resposta em Markdown
- Com
--file-back: exibe caminho do arquivo salvo
Busca artigos na wiki por palavra-chave.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
query |
str | Sim | Termos de busca |
Exemplo:
kb search "async"
kb search dockerRetorno:
- Sucesso: lista de resultados com score e snippet
- Sem resultados:
[yellow]Nenhum resultado encontrado.(código0)
Formato do resultado:
<nome_do_arquivo> (<caminho_relativo>) score=<número>
<trecho encontrado>
Executa health checks LLM sobre a wiki (relatório apenas).
Parâmetros:
Nenhum.
Exemplo:
kb lintRetorno:
- Sucesso: relatório Markdown com:
- Inconsistências entre artigos
- Dados ausentes
- Wikilinks quebrados
- Oportunidades de novos artigos
- Sugestões de perguntas
Heal estocástico: processa N artigos aleatórios, corrige links, remove stubs, atualiza reviewed_at.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
--n, -n |
int | Não | 10 |
Número de arquivos aleatórios a processar |
--allow-sensitive |
Flag | Não | False |
Permite envio explícito de conteúdo sensível ao provider |
--no-commit/--commit |
Flag | Não | --no-commit |
Escreve localmente por padrão; --commit versiona a execução atual |
Exemplo:
# Heal padrão (10 arquivos)
kb heal
# Heal com 20 arquivos
kb heal --n 20
# Heal e versionamento explícito
kb heal --n 20 --commitRetorno:
- Sucesso: lista de ações realizadas com ícones:
✓(green): arquivo curado (healed)✗(red): stub deletado (deleted_stub)·(dim): revisado sem mudanças (reviewed_no_changes)
Executa discovery de fontes (arXiv + Google News), ingere conteúdos em raw/ e opcionalmente compila para wiki/ quando KB_API_KEY está disponível.
Parâmetros:
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|---|---|---|---|---|
--query |
List[str] |
Não | queries default | Query(s) de discovery; pode repetir a flag para múltiplos tópicos |
--max-per-source |
int | Não | 2 |
Limite de itens por fonte para cada query |
--compile/--no-compile |
Flag | Não | --compile |
Compila automaticamente os itens ingeridos quando houver provider configurado |
--allow-sensitive |
Flag | Não | False |
Permite processamento sensível durante compile |
--no-commit/--commit |
Flag | Não | --no-commit |
Mantém modo local por padrão; --commit versiona os artefatos |
Exemplo:
# Discovery padrão (queries canônicas)
kb discovery run
# Discovery com queries explícitas
kb discovery run --query "llm agents" --query "rag eval" --max-per-source 3
# Discovery sem compile
kb discovery run --no-compileRetorno:
- Sucesso: resumo com
discovered,ingested,compiled,skipped_seen,failureseseen_urls_path - Código:
0em sucesso,1em falha operacional
from kb.config import (
RAW_DIR,
WIKI_DIR,
API_KEY,
BASE_URL,
MODEL,
TOPICS,
is_supported_topic,
topic_prompt_options,
)Constantes:
| Nome | Tipo | Descrição |
|---|---|---|
ROOT |
Path | Raiz do projeto |
DATA_DIR |
Path | Diretório do corpus do usuário (KB_DATA_DIR) |
RAW_DIR |
Path | raw/ - documentos fonte |
WIKI_DIR |
Path | wiki/ - markdown compilado |
OUTPUTS_DIR |
Path | outputs/ - file-backs de QA |
STATE_DIR |
Path | kb_state/ - manifesto/knowledge/learnings |
API_KEY |
str | KB_API_KEY do .env |
BASE_URL |
str | Endpoint LLM (padrão: opencode.ai) |
MODEL |
str | Modelo LLM (padrão: kimi-k2.5) |
TOPICS |
list[str] | Tópicos configurados via KB_TOPICS ou default histórico |
from kb.client import get_client, chat, validate_provider_model_compatibilityRetorna uma instância do cliente OpenAI configurada.
Retorno: OpenAI
Exceções:
RuntimeError: KB_API_KEY não definidaRuntimeError: Dependênciaopenainão instalada
Envia mensagens para o LLM e retorna a resposta.
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
messages |
list[dict] | - | Lista de mensagens no formato OpenAI |
model |
str | MODEL (config) |
Modelo a usar |
**kwargs |
- | - | Argumentos adicionais para a API |
Retorno: str - conteúdo da resposta
Exceções:
ValueError: Modelo incompatível com OpenCode Go
Valida compatibilidade de modelo com o provedor.
Modelos suportados para OpenCode Go:
kimi-k2.5minimax-2.7glm-5
from kb.compile import compile_file, discover_compile_targets, update_indexCompila um documento bruto para a wiki.
Parâmetros:
| Parâmetro | Tipo | Descrição |
|---|---|---|
raw_path |
Path | Caminho do arquivo em raw/ |
Retorno: Path - caminho do arquivo compilado
Efeitos colaterais:
- Escreve arquivo em
wiki/do corpus do usuário - Persiste em
wiki/localmente; commit depende do caller passarno_commit=False
Descobre arquivos elegíveis para compilação.
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
base |
Path | RAW_DIR |
Diretório ou arquivo base |
Retorno: list[Path] - arquivos encontrados
Extensões suportadas: .md, .markdown, .txt, .rst
Regenera wiki/_index.md listando todos os artigos.
Retorno: None
Efeitos colaterais:
- Escreve
wiki/_index.md - Faz commit git automático
from kb.qa import answer, answer_and_fileResponde uma pergunta consultando a wiki.
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
question |
str | - | Pergunta a responder |
top_k |
int | 5 |
Número de artigos relevantes a considerar |
Retorno: str - resposta em Markdown
Responde e arquiva a resposta na wiki.
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
question |
str | - | Pergunta a responder |
top_k |
int | 5 |
Número de artigos relevantes |
Retorno: tuple[str, Path | None] - (resposta, caminho do arquivo salvo)
Efeitos colaterais:
- Escreve arquivo em
outputs/por padrão, ou emwiki/comto_wiki=True - Faz commit git automático, salvo com
no_commit=True
from kb.search import search, find_relevantBusca artigos na wiki por palavra-chave.
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
query |
str | - | Termos de busca |
top_k |
int | 10 |
Máximo de resultados |
Retorno: list[dict] com chaves:
path: Path - caminho do arquivoscore: int - pontuação de relevânciasnippet: str - trecho contendo os termos
Retorna artigos mais relevantes (para uso interno do Q&A).
Retorno: list[Path] - caminhos dos artigos
from kb.git import commitStageia arquivos da knowledge base (tipicamente em raw/, wiki/ e outputs/ sob KB_DATA_DIR) e cria commit quando houver mudanças staged.
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
message |
str | - | Mensagem de commit |
paths |
list[Path] | - | Arquivos da KB a serem stageados (em geral sob KB_DATA_DIR) |
enabled |
bool | True |
Quando False, não executa side effects |
Comportamento operacional:
- Internamente converte os
Pathinformados para relativo ao diretório git do projeto antes de executargit add - Idempotente quando não há mudanças staged (
git diff --cached --quiet) - Suprime falhas de git indisponível sem quebrar o fluxo principal
from kb.heal import healProcessa N arquivos aleatórios da wiki.
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
n |
int | 10 |
Número de arquivos a processar |
Retorno: list[dict] - log de ações com chaves:
file: str - nome do arquivoaction: str -healed,deleted_stub,reviewed_no_changes
Efeitos colaterais:
- Modifica/deleta arquivos em
wiki/ - Faz commit git automático
from kb.lint import lint_wikiExecuta health checks sobre a wiki.
Retorno: str - relatório em Markdown
from kb.book_import import (
import_epub,
default_output_dir,
extract_book_metadata,
BookImportError,
)Importa EPUB/PDF para capítulos Markdown.
Parâmetros:
| Parâmetro | Tipo | Padrão | Descrição |
|---|---|---|---|
source |
Path | - | Arquivo EPUB ou PDF |
output_dir |
Path | raw/books/<slug> |
Diretório de saída |
Retorno: tuple[list[Path], Path] - (arquivos de capítulo, metadata.json)
Exceções:
BookImportError: Erro na importação
Retorna diretório padrão para importação.
Retorno: Path - raw/books/<slug_do_nome>
Extrai metadados de um livro.
Retorno: dict com title, author, language
Funções de baixo nível para importação:
from kb.book_import_core import (
convert_book,
write_chapters,
write_metadata,
html_to_markdown,
slugify,
build_chapter_filename,
BookConversionError,
)from kb.git import commitStage paths e commita silenciosamente.
Parâmetros:
| Parâmetro | Tipo | Descrição |
|---|---|---|
message |
str | Mensagem do commit |
paths |
list[Path] | Arquivos a commitar |
from pathlib import Path
from kb.config import RAW_DIR
from kb.compile import compile_file, discover_compile_targets, update_index
# Adicionar documento
source = Path("documentos/meu-artigo.md")
dest = RAW_DIR / source.name
dest.write_bytes(source.read_bytes())
# Compilar
for target in discover_compile_targets():
compiled = compile_file(target)
print(f"Compilado: {compiled}")
update_index()from kb.qa import answer
from kb.search import search
# Buscar primeiro
results = search("async runtime", top_k=3)
for r in results:
print(f"{r['path'].name}: score={r['score']}")
# Responder pergunta
resposta = answer("Como funciona este corpus?", top_k=5)
print(resposta)from kb.heal import heal
from kb.lint import lint_wiki
# Ver saúde da wiki
relatorio = lint_wiki()
print(relatorio)
# Curar 5 arquivos
log = heal(n=5)
for entry in log:
print(f"{entry['file']}: {entry['action']}")from pathlib import Path
from kb.book_import import import_epub
livros_dir = Path("livros")
for livro in livros_dir.glob("*.epub"):
try:
capitulos, metadata = import_epub(livro)
print(f"{livro.name}: {len(capitulos)} capítulos importados")
except Exception as e:
print(f"Erro em {livro.name}: {e}")from kb.client import chat
resposta = chat(
messages=[
{"role": "system", "content": "Você é um assistente útil."},
{"role": "user", "content": "Explique o que é uma knowledge base."},
],
model="kimi-k2.5",
temperature=0.7,
)
print(resposta)| Código | Significado | Comandos |
|---|---|---|
0 |
Sucesso | Todos |
1 |
Erro de execução | import-book |
| Comando | Sucesso | Aviso | Erro |
|---|---|---|---|
ingest |
0 + mensagem |
- | Exceção Python |
import-book |
0 + contagem |
- | 1 + mensagem |
compile |
0 + lista |
0 + aviso |
Exceção Python |
qa |
0 + resposta |
- | Exceção Python |
search |
0 + resultados |
0 + sem resultados |
- |
lint |
0 + relatório |
- | Exceção Python |
heal |
0 + log |
0 + wiki vazia |
- |
| Exceção | Módulo | Causa |
|---|---|---|
RuntimeError |
client |
API key não definida, dependência ausente |
ValueError |
client |
Modelo incompatível com provedor |
BookImportError |
book_import |
Erro na importação de livro |
BookConversionError |
book_import_core |
Erro de conversão de formato |
| Variável | Descrição | Exemplo |
|---|---|---|
KB_API_KEY |
API key para acesso ao LLM | sk-... |
| Variável | Padrão | Descrição |
|---|---|---|
KB_BASE_URL |
https://opencode.ai/zen/go/v1 |
Endpoint da API LLM |
KB_MODEL |
kimi-k2.5 |
Modelo padrão a usar |
KB_DATA_DIR |
ROOT |
Diretório base do corpus do usuário |
KB_RAW_DIR |
KB_DATA_DIR/raw |
Override opcional para documentos fonte |
KB_WIKI_DIR |
KB_DATA_DIR/wiki |
Override opcional para wiki compilada |
KB_OUTPUTS_DIR |
KB_DATA_DIR/outputs |
Override opcional para file-backs de QA |
KB_STATE_DIR |
KB_DATA_DIR/kb_state |
Override opcional para manifesto/estado |
Crie um arquivo .env na raiz do projeto:
KB_API_KEY=sua-chave-aqui
KB_BASE_URL=https://opencode.ai/zen/go/v1
KB_MODEL=kimi-k2.5
KB_DATA_DIR=/caminho/para/seu/llm-wikiAs variáveis são carregadas automaticamente via python-dotenv no módulo kb.config.
<KB_DATA_DIR>/
├── raw/ # Documentos fonte (não processados)
│ └── books/ # Livros importados
├── wiki/ # Markdown compilado, versionado
│ ├── _index.md # Índice automático
│ ├── topic-a/
│ ├── topic-b/
│ └── summaries/
├── outputs/ # File-backs de QA
├── kb_state/ # Manifesto, knowledge, learnings
└── (repo kb) # Engine e pacote Python
Todo arquivo wiki gerado inclui frontmatter:
---
title: Título do Artigo
topic: general
tags: [tag1, tag2]
source: nome-do-arquivo-original.md
reviewed_at: 2024-01-15
---Campos:
title: Título do artigotopic: Tópico principal derivado do corpus (ougeneral)tags: Lista de tagssource: Arquivo fonte originalreviewed_at: Data da última revisão (adicionado pelo heal)
Use wikilinks para referenciar outros artigos:
Veja também [[Runtime Assíncrono]] para mais detalhes.
Conceitos relacionados:
- [[Threading]]
- [[Concurrency]]Links quebrados são detectados por kb lint.