Iteração rápida · APIs e docs podem mudar
Liri Logo

Liri

Linglong Bird · Assistente pessoal de IA · Local-first · Segurança integrada

v0.5.22 · licença MIT · Lançado em 2026-10-28 Iteração rápida · APIs e docs podem mudar
4,109 arquivos TS 69 ferramentas integradas 5 camadas de segurança 27 canais de mensagens 18 espécies de Buddy
$ git clone https://github.com/cocosoft/Liri.git
BUILD LOG

Uma estrada ainda em construção

Em 25 de maio de 2026 era só uma v0.1 com 100 commits. Cinco meses depois, são mais de 4.000 arquivos e 27 canais — e a conta que vem junto: um monólito de 7.000 linhas, 105 arquivos acima do limite que ninguém havia registrado e uma “limpeza de código morto” que apagou todo o subsistema de sandbox.

Nós restauramos tudo e depois transformamos exclusão, limites e vocabulários de estado em portões de CI, um por um. A estrada não está terminada.

156 dias 116 versões 20+ verificações de arquitetura
Ler a história completa

O que é o Liri

Liri é um assistente pessoal de IA construído sobre uma arquitetura de TypeScript + Rust.

Muito mais que um chatbot — ele entende a intenção, executa comandos, gerencia tarefas, chama ferramentas e até colabora com outros agentes de IA. Um único motor alimenta todos os pontos de entrada: terminal, desktop, IM e MCP.

71 subsistemas modulares, 4,109 arquivos TypeScript e 429 componentes de desktop — tudo cortável por variante de build.

Recursos

Oito recursos diferenciados, cada um verificável no código-fonte no GitHub

🧠
Núcleo

Motor de agente profundo

Um loop TAOR próprio, com estratégia, memória e checkpoints

  • Ciclo de decisão TAOR (Think-Act-Observe-Reason)
  • 4 estratégias de agente: geral / codificação / exploração / planejamento
  • Retomada por checkpoint mantém tarefas longas recuperáveis após interrupção
  • Janelas de contexto em camadas com compactação automática em três níveis
  • 8 motivos de término e disjuntor por rodada para impedir loops descontrolados
🛡️
Segurança

5 camadas de defesa em profundidade

Análise AST em Rust no tempo de compilação → cinco linhas de defesa → isolamento por sandbox com múltiplos backends

  • Análise de Bash em tempo de compilação via AST em Rust pela FFI
  • 37 regras de comandos perigosos + 14 regras de injeção
  • Motor de regras de política Guardrail
  • Classificador de risco AutoMode
  • Cobertura de sandbox: Landlock / macOS / Windows / Docker / SSH / PTY
🛠️
Amplitude

69 ferramentas integradas

23 categorias cobrindo arquivos, comandos, rede, mídia, código e colaboração

  • Execução de Bash em nível de AST em Rust
  • Inteligência de código com LSP
  • Coleta e busca na web
  • Processamento de notebook, imagem, áudio e vídeo
  • Suporte completo a cliente e servidor MCP
🌐
Multiplataforma

27 canais de mensagens

27 adaptadores de canal, com suporte a WeChat / WeCom / DingTalk / Feishu / QQ

  • Telegram / Discord / Slack / WhatsApp
  • WeChat / WeCom / DingTalk / Feishu / QQ / Yuanbao
  • Email / SMS / Webhook / IRC / Matrix
  • Catálogo unificado de canais com roteamento de gateway
  • Corte de canais em tempo de compilação para builds menores
📊
Observabilidade

Observabilidade de nível empresarial

Integração OpenTelemetry, alertas e verificações de saúde

  • Tracing + métricas alinhados às convenções semânticas OTel GenAI
  • Logs estruturados em níveis
  • Regras de alerta e gestão de incidentes
  • Verificações de saúde, backups e arquivamento de dados
  • Eventos de sessão reproduzíveis e auditáveis
🔌
Flexível

Arquitetura plugável

SDK de plugins, sistema de habilidades e quatro protocolos — cortáveis por variante de build

  • 5 variantes de build: core / personal / coding / enterprise / headless
  • Marketplace de plugins com carregamento a quente e verificação de assinatura
  • Três fontes de habilidades isoladas (integradas / do usuário / de terceiros)
  • Protocolos MCP / ACP / A2A / LSP
  • Inicialização em quatro estágios (T0–T3) com carregamento sob demanda
🏠
Privacidade

Local-first

Modelos locais via Ollama / llama.cpp, com os dados na sua máquina por padrão

  • Inferência local que roda totalmente offline
  • Um único arquivo SQLite que nunca sai do dispositivo
  • Sessões gravadas em events.jsonl somente em acréscimo
  • Provedores na nuvem como reforço opcional
  • Diretórios de sandbox isolados por workspace
🚦
Roteamento

Roteamento inteligente

19 classes de tarefa × 4 níveis × 5 etapas de decisão, mais cadeias de fallback entre provedores

  • 19 tipos de tarefa detectados automaticamente
  • 4 níveis: simple / medium / complex / reasoning
  • 5 etapas de decisão: interruptor → caminho rápido → aderência da sessão → julgamento do LLM → nível
  • FallbackChain entre provedores com políticas de nova tentativa
  • Preços e janelas de contexto lidos do banco

Em camadas, como um sistema operacional

Núcleo fino, limites entre subsistemas e portões de dependência; local-first é o padrão, não um interruptor.

Núcleo

@openliri/kernel é um pacote próprio que expõe apenas uma interface fina, protegida pelos portões K01–K08

Subsistemas

Ferramentas, canais, memória, roteamento, sandbox e tarefas têm cada um seus pontos de entrada e limites

Portões

Direção de dependência em 6 camadas + mais de 20 verificações de arquitetura — violação bloqueia a CI

Local-first

Os dados ficam na sua máquina por padrão; os modelos podem rodar totalmente local

Cinco camadas de defesa em profundidade

Da análise AST em tempo de compilação ao sandbox em tempo de execução: cada contagem de regras, limiar e política de degradação está no código-fonte

🦀

Análise AST em Rust no tempo de compilação

Tempo de compilação

A FFI em Rust faz análise de segurança em nível de AST antes de o código rodar, conferida contra 37 regras de comandos perigosos

  • A camada FFI em Rust analisa a AST do Bash
  • Análise da AST do Bash com 37 regras de comandos perigosos
  • Detecção de injeção por variáveis e bloqueio de travessia de caminho
  • Detecção de adulteração de argumentos com validação de comandos permitidos
🔍

Análise semântica em TypeScript

Tempo de execução

Comandos compostos são avaliados trecho a trecho em tempo de execução, com o motivo da recusa atrelado à instrução exata

  • Comandos somente leitura compostos passam trecho a trecho, em vez de serem recusados por inteiro
  • 14 padrões de injeção detectados, incluindo caracteres de largura zero e envenenamento de variáveis de ambiente
  • 10 regras específicas de shell (bash / PowerShell / cmd)
  • As mensagens de recusa apontam a causa real e a instrução infratora
⚙️

Motor de regras Guardrail

Política

Um sistema configurável de regras de política com autorização granular por ferramenta, canal e grupo de usuários

  • deny-by-default com listas de permissão
  • Granularidade de permissão: ferramenta → regra → impressão digital
  • Mudanças de regra valem na hora, sem reiniciar
  • Recusas informam a origem da regra e a instrução correspondida
🤖

Classificador AutoMode

Adaptativo

Avalia o risco pelo contexto da tarefa e da ferramenta e decide automaticamente entre permitir, perguntar e negar

  • Classificação de risco baseada na semântica do comando e no contexto da ferramenta
  • Comandos de baixo risco são permitidos automaticamente conforme a política
  • Comandos de alto risco vão para aprovação e caem na Inbox
  • Comandos não confiáveis perguntam por padrão, em vez de negar
🔒

Execução em sandbox

Isolamento

6 backends de isolamento — Landlock / macOS / Windows / Docker / SSH / PTY — para que comandos que extrapolam nunca toquem o host

  • Linux Landlock: restrições de sistema de arquivos em nível de núcleo
  • Sandbox do macOS / Windows Low IL + objeto Job como fallback
  • Docker: isolamento completo com políticas de recursos e de rede
  • Execução remota via SSH e caminhos de PTY controlados
  • Degradação honesta com aviso claro quando nenhum backend está disponível

Segurança em números

37
Regras de comandos perigosos
Correspondência em nível de AST em bash / PowerShell / cmd
14
Regras de detecção de injeção
Cobre caracteres de largura zero, envenenamento de variáveis de ambiente e mais
6
Backends de sandbox
Landlock / macOS / Windows / Docker / SSH / PTY
51
Arquivos de implementação do sandbox
Implementações TypeScript em app/src/sandbox

Análise AST em Rust no tempo de compilação · Análise semântica em TypeScript · Motor de regras Guardrail · Classificador AutoMode · Execução em sandbox

Roteamento inteligente

Escolhe um nível de modelo pelo tipo e pela dificuldade da tarefa e, quando o provedor principal está indisponível, recorre à ordem configurada

Detecta automaticamente 19 tipos de tarefa (8 comuns abaixo)

💻
Codificação
Geração, depuração e revisão de código
✍️
Escrita
Docs, textos, tradução
📊
Análise
Análise de dados, raciocínio, planejamento
🔧
Ferramentas
Arquivos, busca, operações do sistema
🌐
Tradução
Tradução multilíngue e localização
🔍
Busca
Busca na web e recuperação de informação
🎨
Criativo
Brainstorming, design, ideação
💬
Conversa
Conversa do dia a dia

Pipeline de decisão em 5 camadas

1 L1: Interruptor do roteador Quando desligado, as requisições vão direto ao modelo padrão, sem verificações extras
2 L2: Caminho rápido Tarefas simples ou regras de prefixo vão direto ao modelo de nível baixo
3 L3: Aderência da sessão Mantém um modelo por conversa para não ficar trocando
4 L4: Classificador LLM Um modelo pequeno julga o tipo e a dificuldade da tarefa e atribui um nível
5 L5: Resolução de nível Mapeia os níveis simple/medium/complex/reasoning para modelos concretos

Cadeia de fallback entre provedores

Modelo principal fora → fallback automático → degradação sem interrupção

Principal Provedor principal · modelo do nível atual
Fallback 1 Provedor reserva do mesmo nível
Fallback 2 Provedor de fallback de outro nível
Fallback 3 Qualquer outro provedor configurado
Último recurso Ollama / llama.cpp local

Interação por voz

Mais que digitar — diga o que precisa, e o Liri entende, age e responde

🎤

Entrada de voz

faster-whisper ou SenseVoice local, ou OpenAI Whisper na nuvem

faster-whisper local
SenseVoice
OpenAI Whisper
Reconhecimento em streaming
🔊

Saída de voz

Piper local ou Edge / OpenAI na nuvem, ou seu próprio comando personalizado

Piper local
Edge TTS
OpenAI TTS
Comando personalizado
⚡

Nativa em ferramentas

A própria fala é uma ferramenta que o modelo pode chamar quando precisar

ferramenta tts
ferramenta audio_play
Entrada de voz
Reprodução da resposta
📱

Em todas as superfícies

Desktop e terminal compartilham o mesmo serviço de fala

Desktop Tauri
Terminal CLI
API HTTP

Operação sem as mãos · Multitarefa · Acessibilidade · Atalhos de voz · Diga em qualquer lugar, e está feito

O segundo cérebro

Base de conhecimento → Memória → Eventos de sessão: três camadas de contexto recuperáveis, todas armazenadas na sua máquina

Camada 1: Base de conhecimento

Base de conhecimento

Markdown em disco e indexação semântica, com fontes citadas em cada resultado

Markdown em disco Índice semântico JSONL Busca por palavra-chave Busca vetorial Fusão RRF
Camada 2: Memória

Sistema de memória

Memória em camadas e tabelas vetoriais SQLite, recuperadas com ponderação por relevância

Memória em camadas memory_vectors Ponderação por relevância Limpeza de memória Injeção de contexto
Camada 3: Fonte da verdade

Log de eventos de sessão

Tudo o que entra em uma requisição ao modelo vira um evento de sessão que você pode reproduzir

events.jsonl somente em acréscimo Persistir antes da escrita Reprodução de sessão Trilha auditável Registro em tempo de compilação

Organizar e governar

Curar conhecimento quando ocioso, comprimir contexto quando transborda — dois pipelines reais em segundo plano

Pipeline de cinco estágios do DreamEngine

01 Gather
Coletar
Reunir sessões e documentos aguardando curadoria
02 Analyze
Analisar
Extrair temas e conclusões reutilizáveis
03 Generate
Gerar
Produzir notas voltadas às camadas superiores
04 Write
Gravar
Gravar na base de conhecimento e na memória
05 Index
Indexar
Reconstruir os índices vetorial e de palavras-chave
🧠

Governança de contexto em camadas

Quando uma conversa longa transborda, os turnos mais antigos são descartados primeiro, reduzindo a memória em tempo de build de O(total) para O(janela). Um aviso de “texto original recuperável” sobrevive ao corte, os detalhes podem ser paginados de volta e marcas de tokens disparam a compactação automática.

Janela em camadas
Cortar turnos antigos primeiro quando o contexto transborda
Recuperar sob demanda
Paginar o texto original de volta
Compactação em três níveis
Tier 1/2 em linha + Tier 3 em segundo plano
🔄

Loop de autoaperfeiçoamento PDCA

Em tarefas de longa duração, o Liri executa o ciclo Plan-Do-Check-Act por conta própria: decompor a tarefa → executar etapas → revisar resultados → revisar o plano, até concluir ou atingir uma condição de parada.

Plan
Decomposição automática
Do
Execução passo a passo
Check
Revisão automática
Act
Correção automática

Cliente desktop

Feito com Tauri 2.11 + React 19 · 429 componentes TSX · 32 páginas de recursos · uma experiência completa de desktop

Liri Desktop · Tauri 2.11
💬
Painel de conversa
Liri · Linglong Bird
Olá! Eu sou o Liri. Como posso ajudar?
Me ajude a analisar os dados deste projeto
Claro, analisando agora...
Digite uma mensagem e pressione Enter para enviar...

Ilustração da estrutura da interface — não é uma captura de tela real

💬
Painel de conversa
Conversas com vários turnos
🤖
Gestão de modelos
Trocar entre modelos
📚
Base de conhecimento
Recuperação de arquivos
🧠
Memória
Rever o histórico
⏰
Tarefas agendadas
Agendamento com Cron
🔌
Integração MCP
Descobrir e instalar servidores
💰
Central de custos
Registros de uso e gastos
🎭
Buddy
Aparência e dados de crescimento

27 canais de mensagens

Cada um dos 27 canais vem com um adaptador correspondente. Defina as variáveis de ambiente do canal para ativá-lo, ou remova-o no momento do build.

Mensageria
Telegram
Discord
Slack
WhatsApp
Signal
Matrix
IRC
Line
Zalo
Plataformas na China
WeChat
WeCom
DingTalk
Feishu
QQ
Yuanbao
Colaboração e social
Microsoft Teams
Google Chat
Mattermost
Facebook Messenger
Twitter/X
Outros canais
Email
SMS
Webhook
Nostr
Claude
iMessage
Acesso móvel

27 canais no total · um catálogo unificado · ativação por canal · corte em tempo de compilação

Ecossistema

Marketplace de plugins + marketplace MCP + três fontes de habilidades + marketplace de modelos = um ecossistema Liri combinável

🔌

Marketplace MCP

5 adaptadores de fonte, uma única busca

GitHub
npm
Registro oficial
Smithery
Serviços incluídos
🧩

Marketplace de plugins

Registros local, npm e remoto

SDK de plugins + adaptadores
Ciclo de vida e recarregamento a quente
Verificação de assinatura
Endpoints de configuração + CLI
5 variantes de build
⚡

Três fontes de habilidades

Integradas, do usuário e de terceiros — fisicamente isoladas

11 habilidades integradas
Habilidades definidas pelo usuário
Fonte de terceiros ClawHub
Orquestração condicional
Composição e correspondência de habilidades
📚

Modelos e protocolos

Modelos de agente e de documento, prontos para usar

Marketplace de modelos de agente
Marketplace de modelos de documento
MCP / ACP / A2A / LSP
Plugins e habilidades combináveis
Reuso de modelos parametrizados

Mais que uma lista de recursos

Três coisas fáceis de esquecer e usadas todos os dias.

🐣

Persona Buddy

Não é uma ferramenta — é um companheiro. A aparência é gerada de forma determinística a partir de uma semente, então o mesmo Buddy sempre parece igual; o estado de crescimento é persistido e acumula entre sessões.

18 espécies 8 chapéus 6 olhos 5 níveis de raridade
🧾

Custos transparentes

Preços lidos do banco, atribuição ao nome real do modelo informado pelo provedor, cada chamada gravada em cost_records; orçamentos avisam, depois comprimem e por fim bloqueiam.

preços em model_registry uso real registro por chamada orçamento diário
🎯

Quatro tipos de usuários

Desenvolvedores executam comandos e editam código; responsáveis por segurança têm bloqueio em nível de AST e trilhas de auditoria; equipes de operação rodam como serviço; todo o resto acessa pelo aplicativo de mensagens.

Desenvolvedores Responsáveis por segurança Equipes de operação Todos

Limitações atuais

O que ainda não está pronto durante a iteração rápida — escrito aqui para você não descobrir do jeito difícil.

A segurança aguarda auditoria externa

Aguardando auditoria externa

5 camadas de defesa e 6 backends de sandbox estão implementados, com 51 arquivos relacionados a sandbox que você pode revisar um a um — mas nenhuma auditoria de segurança de terceiros foi concluída ainda.

Interações do desktop ainda em polimento

Em polimento

429 componentes TSX e 32 páginas estão prontos; atalhos, animações e casos de borda ainda estão sendo ajustados.

Catálogo do marketplace ainda pequeno

Em construção

O marketplace de plugins, o marketplace MCP e as fontes de habilidades funcionam de ponta a ponta, mas o catálogo instalável ainda está crescendo.

Começar

Três passos: instalar dependências → configurar sua chave de API → rodar o dev

1

Instalar dependências

$ git clone https://github.com/cocosoft/Liri.git
$ cd Liri/app && bun install
2

Configurar sua chave de API

$ cp .env.example .env
$ # edite o .env e adicione sua chave de API
3

Iniciar o Liri

$ bun run dev

Código aberto · Comunidade

O Liri é um projeto de código aberto e todo colaborador é bem-vindo

GitHub

Acompanhe o projeto no GitHub, abra issues ou envie PRs

github.com/cocosoft/liri

Junte-se à comunidade

Participe das discussões, abra issues ou envie PRs