Wenlan

Base de conhecimento de IA local-first e wiki para LLM com páginas citadas por fonte e acesso MCP para agentes de codificação.

Documentação

Wenlan: your source-backed knowledge base, built to compound.

Trabalho útil com IA não deveria desaparecer quando uma conversa termina. Wenlan constrói as páginas certas e as mantém atualizadas conforme as fontes mudam, perguntando apenas quando é necessário julgamento.

English | 简体中文 | 繁體中文 | Español

CI Latest release License: Apache-2.0 and AGPL-3.0

Começar · O que é isto? · Recursos · Fluxo de trabalho diário · Avaliação · Saiba mais

https://github.com/user-attachments/assets/d8b2ad4a-f97a-4a15-97a8-9105478de18a

Uma Página mantida no aplicativo de desktop: abra qualquer citação para inspecionar a Fonte ou a Memória por trás da afirmação.


Começar

Wenlan roda como um único daemon local. O aplicativo de desktop carrega esse daemon internamente; a instalação headless oferece o mesmo daemon sem janela. Seus clientes de IA acessam a mesma base de conhecimento de qualquer forma.

Aplicativo de desktop

Baixe na página de Releases:

  • macOS (Apple Silicon): abra o .dmg e arraste Wenlan para Applications. O aplicativo é assinado e notarizado, então não há aviso no primeiro lançamento. Pelo terminal, em vez disso: /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/7xuanlu/wenlan/main/scripts/install-macos-app.sh)" (baixa, verifica o SHA-256 e move para Applications).
  • Windows x64: execute o -setup.exe. Ele ainda não é assinado, então quando o SmartScreen disser "Windows protegeu seu PC", escolha "Mais informações" e depois "Executar mesmo assim".
  • Linux: ainda não há versão desktop; use o runtime headless abaixo.

O aplicativo inclui o daemon, a CLI e o conector MCP, inicia o daemon ao abrir e oferece conectar os clientes de IA que detecta: o plugin para Claude Code e Codex, e uma entrada MCP para os demais. Para atualizar, arraste o novo aplicativo sobre o antigo e abra-o (Wenlan 0.17.0 e versões anteriores devem ser fechados manualmente primeiro).

Configure com sua IA

Cole isto no Claude Code, Codex ou outra ferramenta que possa seguir um guia de configuração:

Set up Wenlan for this AI client by following:
https://raw.githubusercontent.com/7xuanlu/wenlan/main/docs/setup-with-ai.md

Install only what this client needs. Then verify the local runtime,
its Wenlan connection, and a capture/recall round trip.

O guia detecta qual cliente você está usando e mantém comandos específicos de cada cliente fora deste README. Ele não configura todas as ferramentas de IA, a menos que você peça.

Precisa apenas do runtime headless no macOS Apple Silicon?

npx -y wenlan setup

npx requer Node.js; sem ele, execute curl -fsSL https://raw.githubusercontent.com/7xuanlu/wenlan/main/install.sh | bash e depois wenlan setup --basic.

Isso baixa a CLI, o daemon e o conector MCP pré-compilados, inicia o runtime local e o verifica. Não é necessário toolchain Rust ou Cargo. Linux x64/ARM64 com glibc tem um caminho de configuração por shell automatizado; Windows x64 usa o arquivo correspondente de Releases. macOS Intel atualmente não tem instalação completa de runtime suportada.

Instruções manuais e específicas por cliente: Configuração assistida por IA · Plugin Claude Code · Plugin Codex · CLI e MCP.


O que é isto?

Wenlan transforma documentos, anotações e conversas passadas com IA em uma base de conhecimento com fontes rastreáveis que permanece atualizada conforme seu trabalho evolui. As fontes permanecem rastreáveis; decisões, lições e correções tornam-se memórias duráveis; ambas podem sustentar as mesmas Páginas mantidas.

Sources and memories independently support a maintained Page. Wenlan can rebuild a stale Page from its current support; optional conflict review can surface protected conflicts, and changes to human writing wait for the user.

Feito para trabalho que continua. Wenlan é para pesquisadores, escritores, consultores, equipes de produto e equipes de software cujo conhecimento está espalhado por documentos, anotações e conversas com IA. Ele transforma esse material em Páginas inspecionáveis que podem melhorar ao longo de projetos e semanas, não outro histórico de chat ou armazenamento de memória isolado. Não é um sistema de gestão de vida nem um SDK de memória embutido em outro produto.

Um sistema de conhecimento, três papéis:

  • Fontes mantêm o material que Wenlan lê rastreável. Conversas importadas permanecem como registros capturados; arquivos registrados sincronizam seus conteúdos atuais conforme mudam.
  • Memórias preservam o que o trabalho ensina. Agentes capturam decisões atômicas, lições, correções e substituições com proveniência.
  • Páginas compilam conhecimento atual. Wenlan transforma Fontes e Memórias relevantes em Markdown com citações de fontes que você pode reutilizar, atualizar e revisar.

A fundação LLM-wiki, estendida:

  • LLM-wiki v1: Karpathy definiu Fontes imutáveis, um Wiki Markdown mantido por IA e um Schema de regras em coevolução para estruturá-lo e mantê-lo. Wenlan implementa essa fundação com campos de Memória tipados e regras integradas para estrutura de Página, proveniência, citações, atualização, propriedade e revisão.
  • LLM-wiki v2: Rohitg00 adicionou um ciclo de vida de memória. Wenlan torna essa direção concreta com Fontes rastreáveis, Memórias atômicas no estilo Zettelkasten capturadas por agentes (uma ideia completa cada) e Páginas mantidas construídas a partir de ambas.

Para o fluxo de trabalho completo, veja o guia de implementação LLM-wiki.

O movimento distintivo de Wenlan: Fontes e Memórias atômicas sustentam independentemente Páginas mantidas. O histórico de Memórias preserva como o conhecimento mudou; o histórico de Páginas mostra quais evidências atuais sustentam a síntese. Páginas mantidas por máquina podem ser reconstruídas a partir do suporte atual, enquanto mudanças em escrita humana aguardam como revisões revisáveis.

Um grafo de conhecimento que se torna mais útil com o tempo

O grafo de entidade-relação é uma parte do wiki conectado mais amplo de Wenlan. Páginas de Conhecimento contêm síntese mantida, Entidades ancoram pessoas, projetos e conceitos reutilizáveis, Páginas de Fonte tornam material importado ou sincronizado inspecionável, e Memórias atômicas preservam decisões e mudanças. Elas funcionam por meio de links explícitos e separados: wikilinks Página-a-Página, evidência de Página, links Memória-a-Entidade e relações direcionadas de Entidade.

Conceptual model of Wenlan's connected knowledge system, with Knowledge Pages, Source Pages, atomic Memories, and Entities connected through Page links, evidence, Memory-to-Entity links, and Entity relations.

Dentro do grafo de entidades, um modelo de enriquecimento configurado extrai Entidades tipadas, observações e relações direcionadas de Memórias. A vinculação e resolução de entidades reutiliza nós existentes em vez de tratar cada menção como nova; cada Memória mantém sua Fonte e pode vincular-se a múltiplas Entidades. Como o modelo conectado é armazenado ->

  • Significado e direção: Relações usam um vocabulário inicial como uses, part_of, contradicts e replaced_by; tipos desconhecidos caem para related_to e tornam-se propostas de vocabulário revisáveis.
  • Força e proveniência: Uma relação pode armazenar confiança, uma explicação e sua Memória de origem, para que afirmações mais fortes e mais fracas permaneçam distinguíveis e inspecionáveis.
  • Comunidades que se acumulam: Propagação de rótulos agrupa Entidades por densidade de relação, ponderada pela contagem de relações entre cada par. Esses grupos podem organizar resumos opcionais do corpus enquanto links de Entidade adicionam contexto de recuperação.
  • Correção sem apagamento: Afirmações relacionadas, correções e substituição explícita permanecem inspecionáveis juntas enquanto Fontes originais e histórico de Memórias permanecem.

Durante a recuperação, correspondência densa de entidades encontra entidades relevantes à consulta. Quando links de grafo elegíveis existem, o fluxo padrão de grafo-memória impulsiona Memórias vinculadas como um terceiro sinal de RRF. O caminho depende de dados e escopo, e limites de Espaço (Espaços são definidos em Recursos) ainda se aplicam. Como o caminho de grafo funciona ->

Recuperação entre palavras, significado e conexões

A busca central de Wenlan é um pipeline híbrido local, não uma única consulta vetorial. Cada etapa tem um papel diferente:

  • Redação exata, SQLite FTS5: um índice de texto completo encontra termos literais, identificadores e frases.
  • Significado semelhante, FastEmbed + Qdrant/bge-base-en-v1.5-onnx-Q: um modelo inglês quantizado cria embeddings de 768 dimensões; libSQL cosine DiskANN os indexa para recuperação aproximada de vizinhos mais próximos.
  • Classificação combinada, RRF ponderado (k = 60): listas de classificação lexical e semântica são fundidas sem fingir que suas pontuações brutas compartilham uma escala; similaridade de cosseno também pondera a contribuição vetorial.
  • Contexto conectado, fluxo de grafo-memória: links de entidade elegíveis adicionam um terceiro sinal RRF enquanto o escopo de leitura ativo ainda filtra Memórias retornadas.
  • Precisão opcional, reclassificação por cross-encoder: ao contrário de embeddings, jinaai/jina-reranker-v1-turbo-en ou BAAI/bge-reranker-base lê cada par consulta-candidato e reordena o pool menor; a reclassificação está desativada por padrão.

Canais de Página, episódico e factual são opcionais e degradam para os sinais de busca restantes se indisponíveis. Espaço ainda limita o escopo de leitura. Métodos, padrões e limitações ->

Dois ciclos de vida, um sistema de conhecimento mantido

Um wiki gerado pode ficar desatualizado; um armazenamento de memória pode fragmentar-se em fatos desconectados. Wenlan conecta dois ciclos de vida sem colapsá-los em uma única camada.

An earlier memory remains linked after an explicit superseding capture. When a Page is stale, Wenlan rebuilds it from current Sources and Memories, records the revision, and stages changes to human writing for review.

Memória Atômica

CAPTURE -> CLASSIFY -> ENRICH -> LINK -> RECONCILE

Captura e substituição explícita são centrais. Etapas baseadas em modelo rodam apenas quando o modelo correspondente está configurado, e a passada de reconciliação está desativada por padrão.

OperaçãoO que Wenlan faz
CapturaAgentes escrevem uma ideia completa e autocontida por Memória, seguindo o princípio de nota atômica Zettelkasten em vez de salvar a conversa inteira.
ClassificaçãoCom o modelo no dispositivo, Wenlan atribui identity, preference, decision, lesson, gotcha ou fact; um tipo preciso fornecido pelo chamador permanece autoritativo.
EnriquecimentoCom o modelo no dispositivo, adiciona campos estruturados, pistas de recuperação, datas de evento, qualidade, importância e tags quando disponíveis.
VinculaçãoRetém proveniência e, quando o enriquecimento está ativado, conecta Memórias a entidades e relações no grafo de conhecimento.
ReconciliaçãoSubstituições explícitas preservam uma cadeia supersedes. Uma substituição de um agente cujo nível de confiança está abaixo do total entra automaticamente na fila de revisão humana, sem necessidade de sinalização. Uma passada opcional no dispositivo também pode colocar conflitos protegidos em revisão em vez de sobrescrever o histórico; essa passada está desativada por padrão e deve ser explicitamente ativada.

Configuração avançada: defina WENLAN_ENABLE_DUAL_POOL_RESOLVE=1 para ativar essa passada de reconciliação.

Página Mantida

DISTILL -> CITE -> TRACK -> REFRESH -> REVIEW

OperaçãoO que o Wenlan faz
DestilarCompila Sources e Memories relacionadas em uma única Page em Markdown.
CitarMantém registros de citação e status de verificação; a atualização automática descarta um rascunho quando a verificação de suporte de citação falha.
RastrearRegistra quais evidências sustentam a Page, por que ela ficou desatualizada e um changelog limitado.
AtualizarQuando uma Page é marcada como desatualizada, reconstrói a Page elegível mantida por máquina a partir das evidências atuais.
RevisarTransforma alterações em uma Page que você editou em uma revisão proposta, em vez de uma reescrita silenciosa.

Por exemplo, importe um documento de design e capture uma decisão de depuração no Codex. O Wenlan pode compilar uma única Page que cita ambos. Quando essa Page é atualizada, ela é reconstruída a partir do suporte atual; se você a editou, a alteração proposta aguarda revisão.

Markdown local que funciona com Obsidian

Sua síntese durável permanece como arquivos comuns, em vez de um formato proprietário de editor:

  • Arquivos simples: Pages e notas de sessão permanecem como Markdown em ~/.wenlan/.
  • Histórico inspecionável: Fluxos de destilação e handoff podem confirmar lotes lógicos de arquivos em um repositório git local.
  • Coexistência com Obsidian: O Wenlan lê um vault existente como fonte. Crie um symlink de ~/.wenlan/pages/ para o vault ou exporte uma Page do aplicativo desktop; suas edições permanecem de propriedade humana, e atualizações de máquina posteriores tornam-se revisões revisáveis.

O histórico local é diretamente inspecionável:

$ git -C ~/.wenlan log --oneline
a1b2c3d distill: 4 pages
9f8e7d6 session: embedding-work

Capacidades

  • Importação de chat: Traga ZIPs de exportação do ChatGPT ou Claude; o Wenlan ignora automaticamente conversas já importadas.
  • Sources de documentos: Ingira um arquivo .md, .txt ou .pdf com extração de texto; percorra recursivamente uma pasta deles; ou indexe Markdown de um vault do Obsidian.
  • Sincronização incremental: Sources regulares de arquivos e pastas rastreiam alterações em segundo plano; vaults do Obsidian permanecem somente leitura e ressincronizam sob demanda.
  • Memória atômica: Clientes MCP salvam uma decisão, lição, correção, preferência ou fato completo, com proveniência e substituição registrando de onde veio e o que substitui.
  • Enriquecimento tipado: Um modelo configurado classifica cada Memory e adiciona os campos estruturados definidos para seu tipo, além de datas, tags, pistas de recuperação e links de grafo.
  • Pages com suporte de fonte: Destile Sources e Memories relacionadas em Pages em Markdown com referências de fonte e [[wikilinks]]; o daemon pode verificar e registrar citações por afirmação.
  • Atualização com gate de citação: A atualização automática rejeita rascunhos com poucas citações; Pages de máquina atualizam enquanto edições humanas tornam-se revisões revisáveis.
  • Recuperação híbrida: FTS5 encontra palavras exatas, embeddings BGE locais encontram significado e RRF funde suas classificações; links de grafo podem adicionar contexto.
  • Canais de recuperação: Canais opcionais de Page, episódicos e por fato ampliam a recordação; reranking com cross-encoder pode melhorar a precisão.
  • Grafo de conhecimento: Entidades, relações e observações tipadas conectam pessoas, projetos, afirmações e Memories de suporte.
  • Revisão com humano no loop: Trabalho rotineiro permanece automático; conflitos protegidos, revisões de Page, fusões de entidades e novo vocabulário aguardam julgamento.
  • Espaços: Mantenha conhecimento de trabalho, pessoal, de clientes e de repositórios dentro de um escopo explícito de recuperação.
  • Daemon local + MCP: Um daemon Rust leve permanece como fonte local de verdade. O aplicativo desktop e a CLI o chamam diretamente; clientes de IA usam pequenos conectores MCP para alcançar o mesmo conhecimento.
  • Integrações personalizadas: A API HTTP localhost aceita texto preparado, conteúdo de páginas web e Memories de outros fluxos de captura.
  • Manutenção em segundo plano: O daemon continua funcionando após o aplicativo desktop fechar, executando sincronização configurada, enriquecimento, trabalho de citação e atualização de Pages elegíveis.
  • Escolha de modelo: A recuperação base permanece local; enriquecimento e síntese podem usar Qwen no dispositivo, um endpoint local ou um modelo de nuvem configurado.
  • Propriedade inspecionável: Memories e dados de grafo permanecem em libSQL local; Markdown, citações, revisões, histórico git e exportações do Obsidian permanecem inspecionáveis.
  • Verificações de saúde somente leitura: doctor verifica o runtime; lint encontra citações malformadas, links órfãos, embeddings quebrados e problemas de integridade do índice de busca ou grafo sem reescrever conhecimento.

Fluxo de trabalho diário

O sistema acima torna-se um pequeno loop diário: comece com conhecimento relevante, capture o que importa enquanto trabalha, feche com um handoff e deixe o Wenlan refinar o que deve retornar na próxima vez. Cada passagem deixa a mesma base de conhecimento mais nítida, em vez de criar outra história desconectada.

O loop tem quatro etapas:

  1. Capture e encontre conhecimento enquanto trabalha. /capture <thing> salva uma decisão, lição, pegadinha ou fato com sua fonte. /recall <query> recupera apenas o que é relevante, em vez de carregar todo o seu histórico.
  2. Encontre conhecimento atual. Abra uma Page relevante, pesquise ou use /recall <query>; /brief [topic] lê o Brief — o snapshot contínuo de projeto do Espaço, primeiro escrito por /handoff — e um tópico anexa contexto rotulado separadamente desse mesmo Espaço. Clientes sem comandos de plugin usam as ferramentas equivalentes de página, busca, recordação e brief.
  3. Feche o loop. /handoff registra o que mudou e aplica atualizações tipadas por item ao Brief atual do Espaço.
  4. Mantenha a wiki atualizada. /distill cria ou atualiza páginas deliberadamente. Entre sessões, passagens opcionais baseadas em modelo podem enriquecer capturas, conectar entidades relacionadas e atualizar páginas elegíveis. /lint verifica a saúde do conhecimento; /curate traz revisões propostas e itens de revisão de conflito criados pela passagem opcional de reconciliação para você.

Fila offline (outbox)

Se o daemon local estiver inacessível, wenlan capture e wenlan brief update escrevem suas solicitações em uma outbox local durável e saem com sucesso. Quando o daemon retorna, ele drena essas escritas pelas rotas HTTP normais; inspecione a fila com wenlan outbox status ou solicite uma reprodução imediata com wenlan outbox drain. Uma escrita que o daemon rejeita diretamente (um 4xx, como falhar no gate de qualidade de conteúdo) vai para outbox/failed/ com um recibo em vez de tentar para sempre; uma falha de transporte ou erro de servidor (5xx) a deixa na fila para o próximo dreno, que roda automaticamente a cada 60 segundos.

Modelos e privacidade

  • Recuperação base local: O modelo de embedding BGE roda via FastEmbed na sua máquina para busca híbrida e não precisa de chave de API.
  • Síntese opcional no dispositivo: Enriquecimento e síntese de Pages podem usar Qwen3 4B ou Qwen3.5 9B selecionados pelo usuário via llama.cpp. O Wenlan não baixa ou ativa um modelo de linguagem até você escolher um.
  • Outros provedores: Um endpoint local compatível com OpenAI, como Ollama ou LM Studio, ou um provedor de nuvem configurado, pode fornecer enriquecimento e síntese baseados em modelo.
  • Divulgação de nuvem: Se o endpoint de modelo selecionado for remoto, o Wenlan envia os prompts de sistema e usuário dessa tarefa para ele. Recuperação local e síntese no dispositivo permanecem na sua máquina.
  • Estatísticas de uso opcionais: Desativadas por padrão. Se você optar, o Wenlan envia contagens limitadas de operações, versão e plataforma — não seu conteúdo de conhecimento ou um ID de instalação. Veja privacidade.

Referência completa do fluxo de trabalho: plugin/skills. Papéis técnicos de modelo: fundamentos técnicos.

Seus dados e desinstalação

Nada está bloqueado. Pages e notas de sessão são Markdown em ~/.wenlan/; memórias vivem em um banco de dados libSQL sob o diretório de dados da plataforma (~/Library/Application Support/wenlan/ no macOS, ~/.local/share/wenlan/ no Linux, %LOCALAPPDATA%\wenlan\ no Windows). Copie essas duas pastas para fazer backup ou mover um Wenlan. Uma instalação atualizada do Origin ainda mantém uma cópia completa de seus dados em ~/.origin/ e na pasta de dados irmã origin (~/Library/Application Support/origin/ no macOS, ~/.local/share/origin/ no Linux, %LOCALAPPDATA%\origin\ no Windows); exclua ou copie essas duas também.

Para desinstalar: o alternador Run Wenlan in background at login do aplicativo remove o registro de inicialização — desligue-o, saia e exclua Wenlan.app ou execute o desinstalador do Windows, depois exclua as pastas acima. wenlan background off apenas para o daemon e desativa o autostart; ele não remove o registro de inicialização, então uma instalação somente CLI deve seguir o bullet de desinstalação do daemon em PRIVACY.md. Os caminhos que o Wenlan escreve estão listados lá.


Avaliação

Este é um snapshot somente de recuperação, não uma afirmação sobre a qualidade da resposta de ponta a ponta. Método, recibos de ambiente e o fluxo de trabalho de atualização vivem em docs/eval.

BenchmarkRecall@5MRRNDCG@10
LME_Oracle (500 Q)93.6%0.8570.883
LME_S (deep, 90 Q)87.7%0.8150.822

Saiba mais

Documentação mais detalhada, conceitos e comparações:

Documentação

Guias de fluxo de trabalho

Conceitos

Comparações


Contribuindo

Correções de bugs, casos de avaliação, documentação e recursos são bem-vindos. Instalar o Wenlan não requer compilar a partir do código-fonte. Para desenvolvimento local, execute estes comandos a partir da raiz deste repositório:

# daemon crates (default-members — the desktop app is not compiled)
cargo build
cargo test

# desktop app (Cargo target and root-level frontend tooling)
pnpm install
pnpm dev:all
pnpm build:all

pnpm dev:all é o ponto de entrada de desenvolvimento suportado para o aplicativo de desktop. Ele mantém portas de desenvolvimento, dados, propriedade de processos, identidade do aplicativo, sockets MCP e estado de Acesso Remoto separados do runtime de produção instalado; um aplicativo de depuração iniciado sem essa isolamento se recusa a executar. Consulte o AGENTS.md e o CONTRIBUTING.md deste repositório, além do app/AGENTS.md na árvore, para o fluxo de trabalho completo de desenvolvimento. Relatórios de segurança: SECURITY.md. Política de privacidade: PRIVACY.md. Leia também o Código de Conduta.


Política de assinatura de código

Assinatura de código gratuita fornecida pela SignPath.io, certificado pela SignPath Foundation.

  • Autores: @7xuanlu, que podem fazer commit neste repositório sem revisão adicional.
  • Revisores: @7xuanlu. Toda alteração de alguém que não é committer chega como pull request e é revisada antes de ser mesclada.
  • Aprovadores: @7xuanlu, que aprovam cada solicitação de assinatura e, portanto, decidem qual versão é assinada.

A autenticação multifator é exigida de todo mantenedor, no GitHub e no SignPath, e ninguém é adicionado a nenhum deles sem ela. As versões são construídas apenas pelo fluxo de trabalho de versão marcada neste repositório, em runners hospedados no GitHub, a partir do commit para o qual a tag aponta.

Política de privacidade: PRIVACY.md — o que o Wenlan armazena, onde o armazena e cada caso que conhecemos em que ele alcança a rede. Como cada plataforma é assinada: docs/code-signing.md.

O aplicativo SignPath está pendente. Os instaladores do Windows ainda não estão assinados.


Licença

O Wenlan usa duas licenças, uma por parte do repositório.

  • Apache-2.0 (LICENSE) cobre o runtime local, CLI, servidor MCP, tipos compartilhados e os arquivos de plugin do Claude Code e Codex. Construa livremente sobre eles.
  • AGPL-3.0-only (app/LICENSE) cobre o aplicativo de desktop: o crate app/ e o frontend React que ele inclui. Se você executar uma versão modificada do aplicativo como um serviço de rede, o AGPL pede que você ofereça esse código-fonte modificado aos seus usuários.

A divisão é deliberada. O código Apache-2.0 pode ser usado dentro de um programa AGPL-3.0, então o aplicativo de desktop é construído sobre o runtime sem que nenhuma das licenças seja violada.


Linhagem e pares

Wenlan (文瀾) recebe seu nome de 文瀾閣, uma biblioteca imperial que abrigava 四庫全書 como parte de uma das maiores coleções de livros da China.

O modelo llm-wiki v2 do Wenlan é sua própria direção de produto, informada pelas linhagens LLM-wiki e agent-memory: