Knowl
Memória local-first sempre atual para agentes de IA
Documentação
Seu CLAUDE.md só cresce. Knowl aposenta fatos quando eles mudam.
Início rápido · Por que substituição · O que é armazenado · Recursos · Configuração do agente · Visualizador · Requisitos · Referência completa →
Seu agente começa cada sessão em branco, então você mantém um CLAUDE.md. Ele só cresce. Seis meses depois, ele ainda
menciona o banco de dados do qual você migrou na primavera passada, e agora o agente recebe as duas respostas.
Knowl é memória persistente para Claude Code, Cursor e Codex, via
MCP ou CLI. Quando um fato é substituído, o antigo é aposentado
em vez de competir com o novo. Nenhuma chave de API é necessária. Quando Knowl não tem certeza de que o novo fato
substitui o antigo, ele deixa ambos ativos e entrega a você o comando knowl supersede para que você decida.
Desative isso e a recuperação cai de 98% para 47%. De ponta a ponta, de 90 para 73. Como foi medido ↓
Quarenta segundos, uma decisão, três agentes:
Início rápido
Requer Node.js 22 ou posterior. macOS, Linux e Windows.
npm install -g @dat999zx/knowl
cd your-project
knowl init
Outros gerenciadores de pacotes
O pacote publicado é o mesmo em todos os casos; cada um destes o instala e coloca knowl
no seu PATH.
pnpm add -g @dat999zx/knowl
yarn global add @dat999zx/knowl
bun add -g @dat999zx/knowl
Ou execute sem instalar:
npx @dat999zx/knowl init
Knowl roda em Node.js em todos estes casos — Bun instala, Node executa. Ele inclui complementos nativos (SQLite, tree-sitter, o runtime de embeddings), portanto executar a CLI diretamente sob o runtime Bun ou Deno não é suportado.
knowl init cria .knowl/, instala os arquivos de orientação do projeto, atualiza .gitignore e
registra Knowl com quaisquer agentes que detectar. Ele também aquece um modelo de embedding local (~53 MB)
em segundo plano — init funciona de qualquer forma, e sem ele você ainda tem busca por palavras-chave.
Essa é toda a configuração. Você não registra memória manualmente: seu agente lê e escreve enquanto trabalha.
Conectando um agente
knowl init registra o servidor MCP para cada host que encontrar. Inicie uma nova sessão depois para que
o agente capture suas orientações, e ele consultará e gravará memória por conta própria.
gate significa que Knowl pode recusar uma edição que invalide código que outra sessão está mantendo.
Neovim e Kiro funcionam da mesma forma que Zed e JetBrains, via knowl acp. Cline precisa de uma
linha apontando para o plugin incluído. Hermes Agent recebe um plugin Python, instalado para você,
que funciona no terminal e no Hermes Desktop, e pode adicionalmente ser escolhido como
provedor de memória do Hermes. OpenClaw roda em processo dentro do seu gateway via um plugin de extensão,
avaliando gates de escrita sem overhead de subprocesso — knowl init openclaw o copia e imprime
os dois comandos que o registram. Qualquer outro cliente MCP funciona sem
integração alguma.
Executando agentes em paralelo? Cada git worktree resolve para o armazenamento do checkout principal —
workspaces do Conductor, isolation: "worktree" do Claude Code, ou seus
próprios scripts compartilham uma única memória, sem nada para configurar.
Como isso funciona, e seu único limite →
→ Cada host, e o que cada um pode fazer · Como os agentes usam · Ferramentas e recursos MCP
A ideia: memória que se aposenta sozinha
A maioria dos sistemas de memória é somente-acréscimo. Armazenar "migramos para SQLite" deixa "usamos PostgreSQL"
ativo e recuperável, então o agente recebe ambos e escolhe por classificação. Knowl trata uma escrita sobre o mesmo assunto
como uma correção: o predecessor é marcado como superseded, sai da recuperação normal e permanece
consultável via knowl timeline.
Esse único comportamento é a maior parte da diferença de precisão. No corpus de Resolução de Conflitos do MemoryAgentBench — 455 fatos, 100 perguntas sobre qual fato é atual, recuperação top-5, sem leitor LLM:
| Configuração | Top-1 | Retornos desatualizados | Átomos ativos |
|---|---|---|---|
| Substituição ATIVADA | 98,0% | 2 / 100 | 306 |
| Substituição DESATIVADA | 47,0% | 62 / 100 | 455 |
Mesmo corpus, mesmo classificador, mesmo caminho de consulta. A única variável é se o fato desatualizado ainda está ativo. Esta é uma medição em nível de recuperação no próprio harness do Knowl: ele pergunta se o fato atual volta primeiro, sem modelo no loop.
Verificado de ponta a ponta, no harness do próprio benchmark
Como um número que você mesmo pontua vale menos que um que outra pessoa pontua, a mesma afirmação foi re-executada dentro do harness do MemoryAgentBench, pontuada pelo próprio código dele, com um LLM lendo o que Knowl retornou — a configuração mais difícil, totalmente de ponta a ponta, no maior contexto que a tarefa oferece:
| Sistema | FactConsolidation-SH @262K |
|---|---|
| Knowl | 90 |
| agentmemory | 79 |
| GPT-4o (contexto longo) | 60 |
| HippoRAG-v2 | 54 |
| BM25 | 48 |
| GPT-4o-mini (contexto longo) | 45 |
| Qwen3-Embedding-4B | 29 |
| Cognee | 28 |
| MemGPT | 28 |
| Mem0 | 18 |
| MIRIX | 14 |
| Zep | 7 |
18.332 fatos, 100 perguntas, correspondência exata de substring. Cada linha usa gpt-4o-mini como leitor, incluindo o Knowl — o artigo declara isso para todos os agentes RAG e de memória, então estas são comparações justas. Knowl e agentmemory foram medidos aqui; todos os outros números são do artigo do MemoryAgentBench, arXiv 2507.05257v4, Tabela 3. agentmemory não é avaliado nesse artigo — seus números publicados são recall de recuperação do LongMemEval-S, uma tarefa diferente — então ele foi executado no mesmo harness com a mesma configuração, e ambos os adaptadores compartilham um caminho de código de leitor para que nenhum possa se desviar do manipulador RAG do próprio artigo. Método, mecanismo e etapas de reprodução: FINDINGS.md.
Caso contrário, são mostrados todos os sistemas de memória comerciais que o artigo avalia, além do maior pontuador de cada família de linha de base. A tabela do artigo mudou entre versões — BM25 marcou 56 na v1 e marca 48 na v4 — então a versão é citada, não apenas a tabela.
O 90 do Knowl foi medido em 2026-08-08 e reproduzido de forma independente em 89,0 em 2026-08-19 com o
adaptador incluído; o 79 do agentmemory é uma única execução. Cada número aqui é uma execução em
temperature: 0.7, e a lacuna de ablação moveu 4 pontos entre duas execuções da mesma célula de 6k, então
leia-os pelo ponto principal, não pela casa decimal.
Desligar a substituição nesse mesmo harness derruba Knowl para 73, e a lacuna se mantém em uma mudança de 40× no tamanho do corpus:
| Contexto | Substituição ATIVADA | DESATIVADA | Lacuna |
|---|---|---|---|
| 262K | 90 | 73 | +17 |
| 6K | 94 | 78 | +16 |
As duas seções medem coisas diferentes e não são comparáveis entre si: 98% é recuperação top-1 em 6K sem leitor, 90 é precisão de ponta a ponta em 262K com um. Apenas a segunda é comparável aos sistemas publicados acima. Veja benchmarks para o protocolo, os resultados incluídos e o que a tarefa não cobre — incluindo multi-hop, onde Knowl marca 7 contra um teto de recuperação de 14 pontos.
Substituição é uma correção, não uma exclusão: o item, suas afirmações e seu histórico sobrevivem.
Não é uma simulação — a mesma sequência contra a CLI publicada, gravada a partir de
demo.tape:
Compartilhando memória em uma equipe: knowl.cloud
Tudo acima é local e não requer conta. knowl.cloud é a camada opcional hospedada para quando uma máquina não é suficiente:
- Espaços de trabalho compartilhados. O conhecimento escrito em um checkout chega aos agentes dos colegas, com cada repositório ainda sendo dono do que publica.
- Agentes de navegador. claude.ai e chatgpt.com não conseguem executar um processo local, então eles se conectam por um endpoint MCP remoto com um token com escopo para um espaço de trabalho.
Somente local continua sendo uma forma de primeira classe de executar o Knowl. Nada aqui é necessário para usar qualquer coisa acima.
O que é armazenado
Cada átomo tem exatamente uma de sete categorias:
| Categoria | Use para |
|---|---|
fact | Verdades estáveis do projeto, convenções e comportamento verificado |
decision | Uma opção selecionada com justificativa e alternativas |
goal | Um resultado pretendido que orienta o trabalho futuro |
constraint | Uma regra ou limite que deve continuar valendo |
architecture | Como os componentes são organizados e interagem |
state | Progresso atual, prontidão, bloqueios ou status operacional |
skill | Um procedimento reutilizável ou descrição de fluxo de trabalho aprendido |
Junto ao conteúdo, cada átomo mantém um status (active, deprecated, rejected, archived,
superseded), um sinalizador de atualização, confiança, tags, commit de origem, caminhos afetados e
evidências opcionais apontando para arquivos, commits, testes, comandos, URLs ou símbolos de
código indexados. Evidências de arquivo e símbolo ficam desatualizadas sozinhas quando o código
muda, que é como um átomo admite que pode estar desatualizado em vez de afirmar uma versão do
repositório que não existe mais.
O que o Knowl deliberadamente não armazena são suas conversas. A captura do ciclo de vida registra eventos limitados e resumos — nunca prompts, transcrições, saída padrão ou variáveis de ambiente. A busca por transcrições brutas existe como um índice que você pode desativar sobre arquivos que o host já gravou.
→ Referência do modelo de conhecimento
Como os agentes usam
knowl serve expõe o armazenamento via MCP stdio; knowl init o registra para você. O fluxo de
trabalho que a orientação instalada pede que os agentes sigam é curto:
- Consulte a memória com as palavras que nomeiam o assunto antes de ler arquivos do repositório.
- Use um resultado ativo diretamente; inspecione arquivos apenas em caso de erro, conflito ou resultado desatualizado.
- Armazene descobertas duráveis, metas declaradas e diagnósticos recorrentes conforme avança, e corrija memória contradita em vez de duplicá-la.
Na prática, é assim que parece — uma nova sessão, sem contexto, nada colado:
You why did we pick SQLite over Postgres?
Agent → knowl_query "sqlite postgres database choice"
← decision · Use SQLite · active · fresh
"Keeps storage repository-local and simple to operate."
alternatives: PostgreSQL, MongoDB
tags: database, local-first
SQLite keeps the store repository-local and simple to operate.
Postgres and MongoDB were both considered and rejected on that
basis.
O agente respondeu antes de abrir um único arquivo, e sabia as opções que você rejeitou — o que o código não consegue dizer, porque alternativas rejeitadas não deixam rastro em um codebase.
| Host | MCP | Ciclo de vida automático | Portão de gravação | Cutucada de captura | Notas |
|---|---|---|---|---|---|
| Claude Code | Sim | Sim | Sim | Sim | A orientação de prompt também é instalada |
| Codex CLI | Sim | Sim | Sim | Sim | Hooks precisam de codex_hooks; não no Windows |
| GitHub Copilot | Sim | Sim | Sim | Sim | Reutiliza o formato de hook do Claude Code |
| OpenHands | Sim | Sim | Sim | Sim | Entrada MCP adicionada manualmente |
| Antigravity | Sim | Sim | Sim | Sim | Contexto via injectSteps |
| Windsurf | Sim | Sim | Sim | Sim | Cutucada via MCP; sem hook de parada |
| Cursor | Sim | Sim | Sim | Sim | Finaliza a cada turno |
| Cline | Sim | Sim | Não | Sim | Ciclo de vida via plugin incluído |
| Hermes Agent | Sim | Sim | Sim | Sim | Plugin Python, incl. Hermes Desktop; cutucada via pre_verify em turnos de edição |
| Zed, JetBrains, Neovim, Kiro | Sim | Sim | Não | Sim | Via knowl acp -- |
| Claude Desktop, OpenCode, Roo, … | Sim | Não | Não | Sim | MCP mais o loop de trabalho manual |
Detalhes completos, e por que cada lacuna existe, em docs/hosts.md.
Onde hooks estão disponíveis, eles controlam o ciclo de vida da sessão: bootstrap de contexto,
captura, checkpoints e finalização acontecem sem que o agente seja solicitado. Onde não estão,
knowl task run, task start, task checkpoint e task finish cobrem o mesmo terreno manualmente.
knowl init grava o registro MCP para cada host que detecta. Para conectar um manualmente, a
entrada é a mesma em todos os lugares:
{
"mcpServers": {
"knowl": { "command": "knowl", "args": ["serve"] }
}
}
Use knowl.cmd como comando no Windows. O Codex lê a mesma entrada sob mcp_servers.
→ Ferramentas e recursos MCP · Referência do ciclo de vida
Para que serve o Knowl
O Knowl faz um trabalho: manter o conhecimento consolidado de um projeto preciso para os agentes que trabalham nele. Não preferências de usuário, não histórico de chat — as decisões, restrições e arquitetura em que um projeto se apoia, e quais delas ainda são verdadeiras hoje. A maioria dos armazenamentos fica em um codebase, e as ferramentas de deriva e evidência são voltadas para isso, mas nada no modelo de conhecimento exige um.
Três escolhas decorrem disso:
- Tipado, não texto livre. Uma decisão carrega justificativa e as alternativas que você rejeitou.
Uma restrição é uma regra que deve continuar valendo. Um átomo
statedeve ficar desatualizado. A recuperação pode classificar com base nessas diferenças; não pode classificar com base em parágrafos em um arquivo de notas. - Governado, não somente anexação. Status, atualização, proveniência, identidade de conflito e substituição permitem que o armazenamento diga que algo deixou de ser verdade. Essa é toda a diferença entre memória e uma pilha crescente de notas.
- Local ao repositório, não um serviço. O banco de dados fica ao lado do projeto que descreve. Sem conta, sem egresso, sem fornecedor entre você e seu próprio histórico de projeto.
O Knowl deliberadamente não é uma camada de personalização. Não tem opinião sobre seus usuários e não mantém transcrições próprias.
Recursos
Tudo abaixo funciona pela CLI e por qualquer agente conectado via MCP, contra o mesmo banco de dados local. Sem conta, sem servidor, sem chave de API. Cada item linka para a referência completa para o detalhe — e para os limites.
|
♻️ Conhecimento que se corrige Sete tipos de átomo tipados, onde uma gravação sobre o mesmo assunto aposenta seu predecessor em vez de ficar ao lado dele. Esse único comportamento é a diferença 90-vs-73. Evidências anexadas a um arquivo ou símbolo ficam desatualizadas sozinhas quando o código muda.
|
🎯 Recuperação ajustada para agentes Primária por vetores com fallback limitado de BM25, reclassificada por atualização, status e confiança, para que a resposta atual vença em vez da meramente semelhante. O modelo de incorporação é local e opcional — sem ele você ainda tem recuperação por palavras-chave, e nada sai da máquina.
|
|
⏱️ Trabalho que sobrevive à sessão No Claude Code, Codex e Cursor, hooks controlam bootstrap, captura, checkpoints e finalização sem que o agente seja solicitado. Um encerramento limpo destila até oito candidatos duráveis. Estacione um fluxo de trabalho sob uma chave e retome-o em qualquer sessão, de qualquer diretório.
|
🔗 Espaços de trabalho Seu repositório de API aprendeu algo que o repositório do frontend precisa. Vincule-os e uma consulta se espalha, enquanto cada repositório mantém seu próprio banco de dados e seu próprio limite de propriedade. Abra um átomo de par compartilhado completo por id, ou termine o trabalho desse repositório daqui nomeando-o na chamada. O conhecimento que um repositório já possui é compartilhado apenas quando você o promove.
|
|
📦 Procedimentos reutilizáveis Empacote um procedimento com seus scripts sob
|
💾 Seus dados, e como recuperá-los Exportação e importação JSONL com soma de verificação e quatro políticas explícitas para quando o mesmo átomo mudou em dois lugares. A restauração verifica schema, tamanho, SHA-256 e integridade do SQLite antes de tocar em qualquer coisa, e tira um snapshot pré-restauração primeiro.
|
|
🛰️ As sessões nesta máquina podem se ver Vinte agentes em quatro repositórios, e nenhum deles sabia que os outros existiam — então dois atingem a mesma falha e ambos começam a corrigi-la, e um terceiro atualiza o motor em que os outros se apoiam. O Knowl registra em que cada sessão está, o que ela gravou neste turno e qual falha ela reivindicou, e então diz isso antes de a segunda sessão começar a mesma correção. Todo host com hooks do Knowl está nisso e eles se veem, Codex ao lado do Claude Code. Não imprime nada quando você é o único em execução.
| |
Os comandos que valem a pena conhecer no primeiro dia:
knowl query "auth design" # search project memory
knowl list --unread # browse it — and see what nothing ever reads
knowl edit <item-id> # open one memory in the viewer to fix it
knowl state # the active memory, as a hierarchy
knowl conflicts # items that contradict each other
knowl timeline <item-id> # every version an atom ever had
knowl context --token-budget 1500 # a fixed-size briefing for an agent
knowl pr --since origin/main # knowledge your diff may invalidate
knowl fleet # every agent session live on this machine, and what it is on
knowl config list # every setting, its value, and how to change it
knowl doctor # setup, retrieval, and registration
Conhecimento que se corrige — sete tipos de átomo tipados, e uma gravação que aposenta o que substitui
- **Sete tipos de átomos** — [listados acima](#what-gets-stored). Estrutura em vez de um único arquivo de notas que cresce. - **Substituição automática** — uma escrita sobre o mesmo assunto aposenta seu predecessor. Esta é a [diferença 90-vs-73](#the-idea-memory-that-retires-itself) acima. É protegida: uma escrita automática (captura, ingestão) nunca aposenta um fato verificado, uma escrita que omite a chave de um item exclusivo nunca aposenta esse item, e uma escrita que apenas remove os valores do fato antigo não aposenta nada. Esses são mantidos lado a lado, e `knowl conflicts` os lista com todo fato verificado aposentado nos últimos 14 dias. [As regras](docs/reference.md#governed-writes-and-current-truth) - **Identidade de conflito** — marque um átomo como exclusivo e o Knowl recusa uma segunda resposta ativa para a mesma pergunta, em vez de silenciosamente manter ambas. `knowl conflicts` - **Histórico completo** — toda versão que um átomo já teve sobrevive como uma asserção imutável. `knowl timeline ` - **Viagem no tempo** — pergunte o que o projeto acreditava em uma data passada: `knowl query "auth design" --as-of 2026-01-01T00:00:00Z` - **Evidências** — anexe arquivos, símbolos, commits, testes, comandos ou URLs a um átomo. Evidências de arquivo e símbolo ficam desatualizadas *por si mesmas* quando o código muda. - **Detecção de deriva** — `knowl pr --since origin/main` sinaliza conhecimento que seu diff pode ter invalidado, antes de você mesclá-lo, e `knowl_drift` faz a mesma pergunta de dentro do agente que escreveu o branch. O que ele relata é um caminho citado que *não existe mais*, não um meramente editado — essa distinção é o que mantém o sinal legível. - **A deriva que não alcança as alegações** — a deriva observa arquivos, e cerca de metade do armazenamento não cita nenhum. `knowl status` data esses em vez disso, por quanto tempo desde que alguém os *reafirmou* por último, e nomeia os que estão mais além do ritmo de sua própria categoria. Ele classifica em vez de sinalizar: para prosa, não há evidência de que uma alegação se tornou falsa, apenas a ausência de alguém a reafirmando. - **Inteligência de código** — índice incremental Tree-sitter sobre TypeScript, JavaScript, Python e Go, para que evidências possam apontar para localizadores `symbol://`, não apenas números de linha. `knowl index-code` - **Escritas seguras contra segredos** — toda escrita é rastreada em busca de segredos detectados, caminhos sensíveis e conteúdo superdimensionado antes de ser gravada. Memória de longo prazo é o último lugar onde uma credencial deveria acabar.
Recuperação ajustada para agentes — a resposta atual vence, não apenas a semelhante
- Classificação primária por vetores com um fallback limitado de BM25, reclassificada por frescor, status,
confiança e recência — para que a resposta atual vença, não apenas a semelhante. (Este é o
caminho agente/MCP; uma
knowl queryde repositório único a partir da CLI é lexical.) - Funciona offline. O modelo de incorporação é local e opcional; sem ele, você ainda obtém recuperação por palavras-chave. A recuperação nunca envia sua consulta para lugar nenhum.
- Cinco predefinições de incorporação incluídas, incluindo uma multilíngue que cobre mais de 200 idiomas, além de
custompara seu próprio modelo ONNX.knowl config set-model <model> - Suporte a identificadores exatos — nomes de arquivo, IDs de item e localizadores
symbol://ainda são encontrados mesmo quando a similaridade semântica é fraca. - Pacotes de contexto com orçamento de tokens — entregue a um agente um briefing de tamanho fixo com restrições fixadas
primeiro, para que regras inegociáveis nunca sejam truncadas:
knowl context --query "auth rollout" --token-budget 1500 - Feedback de uso — agentes relatam se um resultado ajudou, e
knowl accessmostra o que é muito usado, o que está desatualizado e o que continua causando correções.
Trabalho que sobrevive ao fim de uma sessão — hooks, loops de trabalho, bastões de handoff e chaves de retomada
- Ciclo de vida automático no Claude Code, Codex e Cursor — bootstrap, captura, checkpoints e finalização acontecem por meio de hooks sem que o agente seja solicitado.
- Loops de trabalho para todo o resto —
knowl task start,checkpoint,finish, ou envolva um único comando comknowl task run "Run tests" -- npm test. - Promoção no fim da sessão — um encerramento limpo destila até oito candidatos duráveis da
sessão, e um comando que teve sucesso três vezes se torna um átomo
skilldescrevendo-o. - Handoff — deixe um bastão para a próxima sessão neste repositório. Ele é entregue uma vez e depois arquivado.
- Chaves de retomada — estacione um fluxo de trabalho sob uma chave curta que você mantém e retome-o em qualquer sessão,
de qualquer diretório, quantas vezes quiser depois.
knowl resume <key> - Busca em transcrições — ativada por padrão, e desativada significa que nada existe no disco. Com ela ativada, a
prosa de sessões passadas é pesquisável, então uma falha de memória degrada para uma busca mais lenta em vez
de amnésia. A indexação por palavras-chave se mantém sozinha; a cobertura semântica é preenchida por
knowl reindex --transcripts, porque um modelo de incorporação não pertence a um hook por turno. - A lacuna de recall — com que frequência um agente editou um arquivo sobre o qual este armazenamento já sabia algo
sem nunca recuperá-lo. Invisível de dentro de uma sessão, porque um agente que nunca
recuperou um átomo não pode notar que o átomo existe. Contado em cada chamada de ferramenta, mostrado a ninguém além de
você, em
knowl status— e dividido entre o thread principal e subagentes, porque um subagente não recebe lembrete de prompt nem instruções do servidor, então sua parcela é a única leitura que você obtém sobre se o cartão de bootstrap sozinho carrega o hábito. - A própria pontuação do portão de escrita — com o impacto de mudanças ativado, o portão que recusaria uma edição em
código que outra sessão mudou executa primeiro em modo sombra, registrando cada recusa que reteve.
knowl statusimprime a precisão que isso produziu, ao lado da barra que precisa superar antes de ser permitido bloquear qualquer coisa (≥95% em ≥40 achados adjudicados) — para que a decisão de armá-lo seja tomada contra um número em vez de um palpite. Ausente completamente até que o portão tenha retido algo: um repositório que nunca o executou não pontuou 0%, ele não mediu nada.
As sessões nesta máquina podem se ver — um único registro, em todos os hosts
A outra metade do mesmo problema: não uma sessão ao longo do tempo, mas várias ao mesmo tempo. O Claude Code mantém um registro de suas sessões ativas e permite que uma mensagem alcance outra; ele não registra nada sobre o que qualquer uma delas está fazendo, e nenhum outro host registra qualquer coisa.
- Um registro no início da sessão — quem mais está executando, agrupado por repositório, o próprio repositório primeiro. Vazio quando você está sozinho, então um usuário de sessão única nunca vê uma linha sobre nada disso.
- Todo host com hooks do Knowl está nele, e eles se veem. Uma sessão do Codex aparece no registro de uma sessão do Claude e o inverso. A vivacidade vem do registro de sessão do próprio host onde ele publica um, e da recência onde não publica.
- "Outra sessão já está neste problema" — duas sessões nunca veem saída byte-idêntica, então falhas são correspondidas por uma assinatura normalizada em vez de texto bruto, e uma alegação é vinculada ao problema em vez do arquivo. O cartão nomeia o par, seus arquivos e a chamada exata a fazer; um anúncio nu de uma edição conflitante não é mensuravelmente melhor do que não dizer nada.
- Uma verificação pré-voo antes que uma superfície compartilhada se mova — hooks, configurações do host, migrações, arquivos de bloqueio
e a instalação
knowlque os hooks de todas as outras sessões estão executando. Conselho em um canal que o agente já recebe, nunca uma recusa. - Um empurrão no momento de parada quando as escritas deste turno invalidaram um arquivo que outra sessão ativa havia lido, unido pelo conjunto de leitura em vez de adivinhado. Sombra por padrão — ele registra o que teria dito, porque entregá-lo retém uma parada e isso custa um turno.
- Apenas pares alcançáveis são oferecidos como algo para mensagem. Uma sessão em outro host ou sob outro diretório de configuração é listada e marcada, e o cartão pergunta a você em vez disso — um cartão que disse ao agente para mensagem uma sessão que ele não pode endereçar ensina-o a pular a próxima.
- Nível de máquina, não por repositório.
~/.knowl/fleet.db, ao lado das chaves de retomada: uma sessão em~/work/apiatualizando o mecanismo é um fato que~/work/webprecisa.knowl fleetlê de qualquer terminal, dentro de um projeto ou não. fleet.enabledvem ativado, e os cartões também — o registro custa uma listagem de diretório e não diz nada quando você está sozinho, e um cartão é conselho em um canal que o agente já lê. O que vem silencioso é o que custaria algo a você: o resumo por turno e o empurrão no momento de parada que retém uma parada.
Workspaces: muitos repositórios, uma memória compartilhada — você decide o que cada repositório compartilha
Seu repositório de API aprendeu algo que o repositório de frontend precisa. Vincule-os, e uma consulta se espalha — enquanto cada repositório mantém seu próprio banco de dados e seu próprio limite de propriedade.
knowl workspace init product # create the workspace
knowl workspace add product # run inside each repo that joins it
# ...or --default-visibility repo to keep its writes private
knowl workspace promote # pick what to share from a list
knowl workspace promote --category decision --apply # or name it outright
Entrar em um workspace compartilha o que o repositório escreve a partir de então, e diz isso quando o faz; passe
--default-visibility repo para recusar. O que o repositório já sabe é compartilhado apenas quando você
promove. Resultados de pares são rotulados com o repositório que os possui, e um compartilhado pode ser aberto
na íntegra por id — sem seu affectedPaths ou evidências, que são resolvidos contra um checkout em que
você não está. Um par que está ausente ou ilegível é ignorado e divulgado, nunca um motivo para
sua busca local falhar.
Escrever em um repositório irmão é deliberado em vez de incidental. Um agente nomeia o repositório na chamada
e essa única chamada executa como aquele repositório — seu armazenamento, sua configuração, suas regras de propriedade, carimbado como
seu próprio — exatamente como cd-ing lá sempre se comportou para a CLI. Não nomeie nada e um id estrangeiro
é recusado como antes. De qualquer forma, o conhecimento privado de um repositório permanece privado até ser promovido.
Procedimentos reutilizáveis — habilidades baseadas em arquivos que você pode inspecionar antes de executarem
- Habilidades baseadas em arquivos — empacote um procedimento com seus scripts sob
.knowl/skills/, depois inspecione-o antes de executar.knowl skill list·read·run - Playbooks globais — um procedimento que é o mesmo em todos os lugares vive uma vez em
~/.knowl/skills/, e cada repositório fornece seus próprios comandos e caminhos por meio de uma vinculação em.knowl/config.json. Um playbook e uma vinculação são duas chaves: nenhum executa nada sozinho, um playbook não vinculado lista e lê, mas recusa executar, e uma habilidade de projeto com o mesmo nome sombreia a global. - O que executa é mostrado antes de executar — um manifesto declara seu
inputs, seucapabilitiesepreconditionscom falha fechada (clean_worktree,on_branch:,command_exists:), uma pré-condição não reconhecida recusa em vez de passar, e o banner de execução imprime o comando totalmente resolvido. Aprovação é por conjunto de bytes e re-verificada a cada execução; um repositório não pode enviar uma habilidade e sua própria aprovação. Capacidades são declarações, não uma sandbox, e dizem isso. - Síntese determinística — combine vários átomos em um resumo de arquitetura sem nenhum provedor de IA
envolvido:
knowl synthesize --scope storage
Seus dados, e como recuperá-los — exportação portátil, snapshots verificados e um comando de diagnóstico
- **Exportação/importação portátil** — JSONL com checksum e quatro políticas explícitas de divergência para quando o mesmo átomo mudou em dois lugares. `knowl export` · `knowl import --on-divergence newer` - **Snapshots verificados** — `knowl snapshot create` grava um manifesto de checksum; a restauração verifica versão do esquema, tamanho, SHA-256 e integridade do SQLite *antes* de tocar em qualquer coisa, e tira um snapshot pré-restauração primeiro. - **Coleta de lixo** que pré-visualiza por padrão e protege qualquer coisa usada recentemente. `knowl gc` - **`knowl doctor`** — um comando que verifica configuração, config, integridade, esquema, recuperação, cobertura de vetores, registro de agentes e saúde do workspace. - **IA opcional** — configure um provedor para `knowl ask` e ingestão de texto bruto. Todos os recursos acima funcionam sem um.
Veja na prática: o visualizador local
knowl view inicia um editor em 127.0.0.1 com um token de acesso novo a cada execução — saber a
porta não é suficiente para ler qualquer coisa, e escritas adicionalmente exigem que a requisição nomeie este
visualizador como sua origem, então outra página que você por acaso tenha aberta não pode escrever aqui.
knowl view
Deixe-o aberto enquanto trabalha e ele mostra o agente pensando. Uma recuperação acende os átomos
com os quais respondeu, em ordem de classificação, e remove o resto do grafo. Uma escrita chega em um
palco limpo. Uma aposentadoria fica escura e permanece escura. Cada átomo alterado tem uma legenda com o que
aconteceu com ele — NEW, UPDATED, SUPERSEDED.
Ele observa o banco de dados em vez do agente, então não faz diferença qual ferramenta está trabalhando:
Claude Code, Codex, Cursor, ou você executando knowl query em outro terminal — todos acendem o mesmo
grafo. Nada foi adicionado a nenhum caminho de escrita para fazer isso funcionar, então quando nenhum visualizador está aberto, nada disso roda.
É aqui também que você corrige o que seus agentes erraram. Abra qualquer átomo para ler suas evidências e linha do tempo, depois edite-o, arquive-o ou escreva um novo manualmente. Arquivar é reversível — Restaurar está no mesmo painel. Átomos aposentados permanecem no grafo como pontos escuros: eles são a história, e não afirmam mais ser atuais.
Ao lado do grafo há uma lista, com uma lente para o que nada jamais leu. Essa lente merece seu
lugar: a busca só alcança memória que você já suspeita existir, e um átomo sem
informação é exatamente aquele que ninguém pensa em procurar. Ordenada do mais antigo para o mais novo, ela
aparece por conta própria. knowl list --unread faz a mesma pergunta a partir do terminal.
O grafo liga átomos apenas por tags que poucos átomos compartilham — uma tag em dezenas deles é uma categoria, e a barra lateral já filtra por essas. Um átomo sobre o qual nada mais trata permanece sem ligação em vez de ser amarrado a um vizinho arbitrário. É um auxílio de navegação, não um grafo causal ou de evidências. Ele mostra conteúdo local completo em todos os status, então o binding de loopback é o limite de privacidade: não o coloque atrás de um proxy público ou túnel.
Memória que é verdadeira sobre você, não sobre um repositório
Algumas coisas não pertencem a nenhum repositório: que você prefere pnpm, que o driver desta máquina quebra no
CUDA 12, que todo projeto aqui usa commits convencionais. Knowl mantém essas coisas em um armazenamento
de toda a máquina em ~/.knowl/global.db, separado da memória de qualquer projeto.
knowl link global # this project may read and write it; reversible with --off
knowl store "I prefer pnpm over npm" --title "Package manager" --category constraint --namespace global
Seu projeto sempre responde primeiro. A vinculação nunca muda o que um repositório diz sobre si mesmo — entradas globais ficam atrás das do próprio projeto e nunca podem sufocá-las. E uma sessão sem repositório algum, como uma janela do Hermes Desktop sem pasta aberta, lê o armazenamento global sozinho em vez de não ter memória. Um projeto que existe mas falha ao abrir permanece um erro: global são padrões pessoais, nunca um fallback para um armazenamento quebrado.
Ele segue você para outra máquina. O armazenamento da máquina sincroniza com um workspace na nuvem da mesma forma que um projeto faz — não é um projeto, mas é endereçado como um:
knowl cloud connect --global # then push and pull with --global
Execute qualquer comando knowl cloud fora de um repositório e ele usa o armazenamento da máquina por conta própria,
dizendo isso. Essa inferência é estreita de propósito: somente quando não há projeto acima do diretório
de forma alguma. Um projeto cuja config não faz parsing é um erro sobre esse projeto, nunca
respondido silenciosamente a partir dos seus padrões pessoais.
→ Namespaces de memória e a camada global
Todo o resto
28 ferramentas MCP (mais 3 quando a busca de transcrições está ativa, 1 quando conectado a um workspace na nuvem, 2 quando vinculado a um workspace local, 1 quando o impacto de mudanças está ativo, 1 para consciência de frota a menos que esteja desligado, e 1 quando hooks rodam via MCP)
e dois URIs de recurso · a
CLI completa, de knowl status a knowl audit · uma auditoria de integridade somente leitura ·
avaliação de recuperação que você pode executar sozinho contra a governança versionada e as suítes de regressão
de 500 casos com knowl eval.
→ Referência da CLI · Ferramentas MCP · Benchmarks
Requisitos e dados locais
Node.js 22 ou posterior. Tudo o que Knowl grava para um projeto vive sob .knowl/, que knowl init
adiciona a .gitignore:
| Caminho | Contém |
|---|---|
.knowl/config.json | Configuração de projeto, busca, segurança, IA e workspace |
.knowl/knowl.db | Átomos, asserções, commits de conhecimento, índice de texto completo, feedback, embeddings |
.knowl/skills/ | Pacotes de habilidades baseados em arquivos |
Um pouco vive ao lado do seu diretório inicial, sob ~/.knowl/, porque é verdadeiro sobre a
máquina em vez de sobre qualquer repositório: o armazenamento de padrões pessoais de toda a máquina
(~/.knowl/global.db), chaves de retomada, o registro da frota das sessões rodando agora, sua credencial
na nuvem e o espelho local de um workspace na nuvem. Manifestos de workspace vivem fora dos repositórios
membros pelo mesmo motivo — seus caminhos de checkout são locais à máquina. Exportações e snapshots são
gravados somente quando você os solicita.
Documentação
Tudo acima é o resumo. A referência completa é um documento que cobre cada subsistema em profundidade — incluindo as partes que são deliberadamente limitadas, que é geralmente o que você realmente precisa saber.
| Se você quer saber… | Vá para |
|---|---|
| O que é um átomo e o que cada campo significa | Modelo de conhecimento |
| Como uma consulta é classificada e o que vence empates | Recuperação e contexto |
| O que um hook registra e quando | Tarefas, sessões, ciclo de vida |
| O que as outras sessões nesta máquina estão fazendo | A frota |
| Como um átomo percebe que o código mudou | Evidência e deriva |
| Como vários repositórios compartilham memória com segurança | Workspaces |
| Como um procedimento se torna reutilizável | Habilidades e síntese |
| Como exportar, tirar snapshot ou restaurar | Portabilidade e manutenção |
| Como ler, corrigir e adicionar memória manualmente | Visualizador local |
| Como as peças se encaixam e onde estão os limites de confiança | Arquitetura |
| Como conectar um host específico | Configuração de agentes |
| Como os números desta página foram medidos | Benchmarks |
| Todo comando e toda flag | Referência da CLI |
| Toda ferramenta e recurso MCP | Ferramentas MCP |
| O que precisa de um provedor e o que nunca precisa | IA opcional |
| Exatamente o que vai para o disco | Dados locais |
Contribuindo
Veja CONTRIBUTING.md para configuração, as verificações a executar antes de um pull request e as convenções que este código segue. Os contribuidores são solicitados a concordar com o Contrato de Licença de Contribuidor uma vez, no primeiro pull request.
Licença
Knowl é licenciado sob a Apache License 2.0. Apache-2.0 não concede direitos de marca registrada.