Knowl

Memória local-first sempre atual para agentes de IA

Documentação

Knowl — the knowledge operating system for AI agents: memory, knowledge, context, continuity

Seu CLAUDE.md só cresce. Knowl aposenta fatos quando eles mudam.

npm CI license node MCP

Join the Knowl Discord

Scores 90 on MemoryAgentBench FactConsolidation single-hop at 262K 0 API keys needed 28 MCP tools 100% local, no egress

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:

Claude Code answers which database the project uses from memory, records the move to Postgres and retires the MySQL decision; Codex answers the same question from that memory in a second terminal; the Claude app answers from the same store over the hosted connector

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

Claude Code
Claude Code
MCP · ciclo de vida · gate
Codex
Codex
MCP · ciclo de vida · gate
Hermes Agent
Hermes
MCP · ciclo de vida · gate
OpenClaw
OpenClaw
em processo · plugin · gate
Copilot
Copilot
MCP · ciclo de vida · gate
Cursor
Cursor
MCP · ciclo de vida · gate
OpenHands
OpenHands
MCP · ciclo de vida · gate
Antigravity
Antigravity
MCP · ciclo de vida · gate
Windsurf
Windsurf
MCP · ciclo de vida · gate
Cline
Cline
MCP · ciclo de vida · plugin
Zed
Zed
MCP · captura · ACP
JetBrains
JetBrains
MCP · captura · ACP
OpenCode
OpenCode
MCP · loop manual
Claude Desktop
Claude Desktop
MCP · loop manual

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.

A write naming a subject the store already holds: the replacement takes the active lane, the predecessor is stamped superseded and moved into history, and a later query sweep matches only the current decision

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:

Conflict-resolution retrieval ablation: supersession on reached 98 percent top-1 with 2 stale returns; supersession off reached 47 percent top-1 with 62 stale returns
ConfiguraçãoTop-1Retornos desatualizadosÁtomos ativos
Substituição ATIVADA98,0%2 / 100306
Substituição DESATIVADA47,0%62 / 100455

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:

MemoryAgentBench FactConsolidation single-hop at 262K context, substring exact match, gpt-4o-mini reader: Knowl 90, agentmemory 79, GPT-4o long-context 60, HippoRAG-v2 54, BM25 48, GPT-4o-mini long-context 45, Qwen3-Embedding-4B 29, Cognee 28, MemGPT 28, Mem0 18, MIRIX 14, Zep 7
SistemaFactConsolidation-SH @262K
Knowl90
agentmemory79
GPT-4o (contexto longo)60
HippoRAG-v254
BM2548
GPT-4o-mini (contexto longo)45
Qwen3-Embedding-4B29
Cognee28
MemGPT28
Mem018
MIRIX14
Zep7

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:

Supersession ablation in MemoryAgentBench's own harness: at 262K context, supersession on scores 90 and off scores 73, a 17 point gap; at 6K context, on scores 94 and off scores 78, a 16 point gap
ContextoSubstituição ATIVADADESATIVADALacuna
262K9073+17
6K9478+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:

Terminal recording: knowl decide records a database decision, a second decide on the same subject reports Superseded older decision, and knowl status then reports one active item and one superseded

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.

The knowl.cloud explorer: every repository in the workspace on one graph, clustered by repo with unlinked atoms on the rim, filtered by category, status, freshness and owning repository, with graph, list and timeline views over a workspace-wide search

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:

CategoriaUse para
factVerdades estáveis do projeto, convenções e comportamento verificado
decisionUma opção selecionada com justificativa e alternativas
goalUm resultado pretendido que orienta o trabalho futuro
constraintUma regra ou limite que deve continuar valendo
architectureComo os componentes são organizados e interagem
stateProgresso atual, prontidão, bloqueios ou status operacional
skillUm procedimento reutilizável ou descrição de fluxo de trabalho aprendido
A decision atom with its governed fields: status, freshness, confidence, tags, source commit, affected paths, and evidence — one evidence locator shown gone stale

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:

  1. Consulte a memória com as palavras que nomeiam o assunto antes de ler arquivos do repositório.
  2. Use um resultado ativo diretamente; inspecione arquivos apenas em caso de erro, conflito ou resultado desatualizado.
  3. 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.

HostMCPCiclo de vida automáticoPortão de gravaçãoCutucada de capturaNotas
Claude CodeSimSimSimSimA orientação de prompt também é instalada
Codex CLISimSimSimSimHooks precisam de codex_hooks; não no Windows
GitHub CopilotSimSimSimSimReutiliza o formato de hook do Claude Code
OpenHandsSimSimSimSimEntrada MCP adicionada manualmente
AntigravitySimSimSimSimContexto via injectSteps
WindsurfSimSimSimSimCutucada via MCP; sem hook de parada
CursorSimSimSimSimFinaliza a cada turno
ClineSimSimNãoSimCiclo de vida via plugin incluído
Hermes AgentSimSimSimSimPlugin Python, incl. Hermes Desktop; cutucada via pre_verify em turnos de edição
Zed, JetBrains, Neovim, KiroSimSimNãoSimVia knowl acp --
Claude Desktop, OpenCode, Roo, …SimNãoNãoSimMCP mais o loop de trabalho manual

Detalhes completos, e por que cada lacuna existe, em docs/hosts.md.

Session lifecycle: bootstrap injects relevant memory, capture records bounded events, checkpoints record milestones, finalization distills durable candidates

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.

One question answered four times over two years: append-only keeps every answer true forever so a query today matches four contradicting ones, while a governed store ends each replaced answer and matches one

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 state deve 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.

conflicts · timeline · query --as-of · pr --since · index-code

🎯 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.

query · context --token-budget · config set-model · access

⏱️ 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.

knowl posture maximal ativa a metade vigilante em um comando — buscando sessões passadas em caso de erro, sinalizando átomos cujos arquivos mudaram e perguntando de vez em quando em que a sessão está se apoiando, mas nunca verificou. Tudo desligado até você pedir.

task run · handoff · park · resume <key> · posture

🔗 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.

workspace init · workspace add · workspace promote --apply

📦 Procedimentos reutilizáveis

Empacote um procedimento com seus scripts sob .knowl/skills/ e leia-o antes de ele executar. Reúna vários átomos em um resumo de arquitetura determinístico, sem nenhum provedor de IA envolvido.

skill list · skill read · skill run · synthesize

💾 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.

export · import --on-divergence · snapshot create · gc · doctor

🛰️ 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.

fleet · knowl_fleet

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.

→ Modelo de conhecimento · Evidências e deriva

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 query de 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 custom para 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 access mostra o que é muito usado, o que está desatualizado e o que continua causando correções.

→ Recuperação e contexto

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 com knowl 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 skill descrevendo-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 status imprime 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.

→ Tarefas, sessões e ciclo de vida

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 knowl que 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/api atualizando o mecanismo é um fato que ~/work/web precisa. knowl fleet lê de qualquer terminal, dentro de um projeto ou não.
  • fleet.enabled vem 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.

→ Quem mais está executando

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.

→ Workspaces

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, seu capabilities e preconditions com 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

→ Habilidades e síntese

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.

→ Portabilidade e manutenção · IA opcional

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

The Knowl local viewer: the memory graph, each atom a lit point coloured by kind, linked only through tags few atoms share, with unlinked atoms scattered on the rim The Knowl local viewer list: every atom with an unread mark in the margin, and one atom open in the inspector with its markdown, tags and timeline rendered

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.

The Knowl viewer during a supersede: the retired atom marked SUPERSEDED and drawn dark at the edge of the graph, its replacement marked NEW and lit at the lower right, and a feed naming both events

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.

→ Visualizador local

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:

CaminhoContém
.knowl/config.jsonConfiguraçã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 significaModelo de conhecimento
Como uma consulta é classificada e o que vence empatesRecuperação e contexto
O que um hook registra e quandoTarefas, sessões, ciclo de vida
O que as outras sessões nesta máquina estão fazendoA frota
Como um átomo percebe que o código mudouEvidência e deriva
Como vários repositórios compartilham memória com segurançaWorkspaces
Como um procedimento se torna reutilizávelHabilidades e síntese
Como exportar, tirar snapshot ou restaurarPortabilidade e manutenção
Como ler, corrigir e adicionar memória manualmenteVisualizador local
Como as peças se encaixam e onde estão os limites de confiançaArquitetura
Como conectar um host específicoConfiguração de agentes
Como os números desta página foram medidosBenchmarks
Todo comando e toda flagReferência da CLI
Toda ferramenta e recurso MCPFerramentas MCP
O que precisa de um provedor e o que nunca precisaIA opcional
Exatamente o que vai para o discoDados 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.


knowl MCP server