LocalLens
Setup

Correr la CLI

Indexa una carpeta y haz una pregunta — sin navegador, sin servidor.

La CLI es la forma más rápida de probar que el pipeline funciona. Toma una carpeta, construye un cerebro temporal, haz una pregunta, imprime la respuesta con citas y borra el cerebro al salir.

Córrelo

bun run cli examples/sample-brain "Why does LocalLens use QWEN3_1_7B_INST_Q4?"

Un run exitoso se ve así:

LocalLens uses QWEN3_1_7B_INST_Q4 because it offers a strong balance of answer
quality and local resource use [1]. A 600M fallback is wired in for slimmer
machines [2].

Sources:
- locallens.md#0
- qvac-notes.md#1

El primer run hace una pausa de varios segundos mientras cargan los modelos de chat y embeddings. Los runs siguientes son mucho más rápidos — los pesos están en caché.

Qué pasa bajo el capó

src/cli.ts es intencionalmente corto. Léelo una vez y tienes todo el workflow:

const app = new LocalLensApp();
let brain: Brain | undefined;

try {
  brain = await app.createBrainFromFolder({
    name: folderPath.split(/[\\/]/).filter(Boolean).at(-1) ?? "cli-brain",
    folderPath,
  });

  const result = await app.askBrain(brain.id, question);
  console.log(`\n${result.answer}\n`);

  if (result.citations.length > 0) {
    console.log("Sources:");
    for (const citation of result.citations) {
      console.log(`- ${citation.relativePath}#${citation.chunkIndex}`);
    }
  }
} finally {
  if (brain) await app.deleteBrain(brain.id).catch(() => undefined);
  await app.close();
}

Tres cosas para señalar:

  1. El cerebro se borra en finally. La CLI es one-shot. No deja entradas JSON detrás. El camino del navegador mantiene cerebros alrededor. Esa es la diferencia real entre los dos puntos de entrada.
  2. await app.close() importa. Desmonta QVAC. Sáltatelo y el proceso del modelo puede quedarse en background.
  3. El nombre del cerebro viene del nombre de la carpeta. Solo lo suficiente para mantener el store JSON legible mientras el cerebro existe brevemente.

Hacer varias preguntas

La CLI reindexa cada vez. Si quieres hacer varias preguntas a la misma carpeta, usa la app del navegador. Esa mantiene cerebros alrededor entre requests.

Errores que podrías ver

  • Folder not found — la ruta que pasaste no es un directorio. Revisa la ortografía y que estés en la raíz del repo.
  • Choose a folder with supported text files — la carpeta existe pero nada dentro califica. Las extensiones soportadas viven en src/files.ts. Los archivos binarios y los archivos de más de 2 MB se saltan.
  • Una pausa larga seguida de un error de modelo — el modelo de 1.7B falló al cargar. El gateway hace fallback a 600M automáticamente. Si ese también falla, probablemente necesitas más memoria.

On this page