Repositório dedicado à documentação e reprodução do processo de identificação de padrões arquiteturais no software Screenpipe, contendo o tutorial completo, código e artefatos necessários para a execução da atividade.
Python
0
38 commits
updated Nov 15, 2025
Repositório dedicado à documentação e reprodução do processo de identificação de padrões arquiteturais no software Screenpipe, contendo o tutorial completo, código e artefatos necessários para a execução da atividade.
Este repositório documenta o processo de identificação de padrões arquiteturais no software Screenpipe, utilizando quatro modelos do Hugging Face:
O Screenpipe é uma plataforma open-source que transforma todo o histórico do seu desktop em uma fonte de contexto contínuo para aplicações de Inteligência Artificial. Ele captura, processa, indexa e disponibiliza (localmente) tudo o que acontece na tela e no microfone, permitindo que agentes de IA entendam o que o usuário está fazendo e construam automações sobre isso. Um script que ajuda a rodar e processar o Screenpipe está descrito em Script
“AI app store powered by 24/7 desktop history open source.
100% local, uses 10% CPU, 4 GB ram, 15 gb/m.
Plugin system called ‘pipe’ which lets you create desktop apps in Next.js in a sandboxed environment within Rust.
24/7 screen and mic recording — recording reality, one pixel at a time.
Store includes Stripe integration enabling devs to monetize their apps.”
Toda a nossa arquitetura utilizada, incluindo hardwares e sistemas online estão descritos no documento de Infraestrutura
Esta seção explica como preparar o ambiente para executar os modelos e reproduzir a análise arquitetural.
# 1. Clonar o repositório ScreenPipe
git clone https://github.com/mediar-ai/screenpipe.git
cd screenpipe
# 2. Criar e ativar ambiente virtual
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# 3. Instalar Dependências Necessárias
PARA INSTALAR AS DEPENDENCIAS CITADAS ABAIXO, SE FAZ NECESSARIO RODAR APENAS O COMANDO: `pip install -r requirements.txt`.
pip install sentence-transformers
pip install transformers
pip install accelerate
pip install torch
pip install huggingface_hub
screenpipe/
├── screenpipe-core → captura (tela/áudio), ffmpeg, pipes
├── screenpipe-server → API HTTP + WebSocket, streaming, busca
├── screenpipe-db → armazenamento e consultas
├── screenpipe-events → sistema de eventos
├── screenpipe-audio → pipeline de áudio
├── screenpipe-vision → OCR/visão computacional
└── screenpipe-app-tauri → interface desktop (Tauri)
Task: Feature Extraction
Antes de analisar qualquer padrão arquitetural, é necessário entender quais partes do repositório realmente importam.
O Screenpipe é um monorepo com vários módulos (core, server, db, vision, audio, events, etc.), e localizar manualmente os arquivos relevantes exigiria muito tempo.
Por isso, escolhemos o modelo BGE Base, especializado em gerar representações vetoriais (embeddings) de texto e código.
Esses embeddings permitem comparar arquivos por similaridade semântica, ajudando a identificar:
Modelo de embeddings, ótimo para descoberta de arquivos relevantes, não para explicação de código.
BGE Base identificou os arquivos mais relevantes do projeto para compreender a arquitetura do servidor:
=== TOP ARQUIVOS MAIS RELEVANTES PARA ARQUITETURA ===
0.6225 | /content/screenpipe/screenpipe-audio/README.md | módulo: screenpipe-audio
0.6184 | /content/screenpipe/screenpipe-app-tauri/components/ui/icons.tsx | módulo: screenpipe-app-tauri
0.6176 | /content/screenpipe/screenpipe-server/tests/endpoint_test.rs | módulo: screenpipe-server
0.6050 | /content/screenpipe/screenpipe-server/Cargo.toml | módulo: screenpipe-server
0.6015 | /content/screenpipe/screenpipe-core/src/operator/platforms/windows.rs | módulo: screenpipe-core
0.5986 | /content/screenpipe/screenpipe-audio/tests/accuracy_test.rs | módulo: screenpipe-audio
0.5984 | /content/screenpipe/screenpipe-app-tauri/components/onboarding.tsx | módulo: screenpipe-app-tauri
0.5976 | /content/screenpipe/screenpipe-vision/src/apple.rs | módulo: screenpipe-vision
0.5928 | /content/screenpipe/screenpipe-app-tauri/components/settings/ai-presets.tsx | módulo: screenpipe-app-tauri
0.5913 | /content/screenpipe/screenpipe-app-tauri/src-tauri/src/icons.rs | módulo: screenpipe-app-tauri
Também realizamos buscas adicionais com o BGE Base para identificar arquivos relevantes em cada camada do sistema (core, servidor, storage, visão computacional e áudio).
Os resultados completos podem ser consultados no seguinte arquivo do repositório:
📄 Análises completas do BGE Base
O BGE Base foi essencial como primeira etapa da análise. Ele permitiu:
Task: Text Generation / Code Understanding
Após o modelo BGE Base identificar os arquivos mais relevantes do repositório (especialmente em screenpipe-server, screenpipe-core e screenpipe-db), era necessário analisar arquiteturalmente cada módulo encontrado.
Para isso utilizamos o Mistral-7B-Instruct, um modelo treinado para seguir instruções e interpretar código. Ele foi usado como um “arquiteto de software virtual”, capaz de explicar responsabilidades, papéis e interações de cada módulo.
O prompt utilizado foi:
Você é um arquiteto de software experiente. Analise o código/trecho abaixo do projeto Screenpipe e responda:
- Qual é a responsabilidade principal desse módulo?
- Em que parte da arquitetura ele se encaixa (core/captura, server/API, pipes/plugins, storage/db)?
- Com quais outros componentes ele provavelmente interage?
- Explique como o módulo gerencia pipes/plugins, incluindo download, execução, logs e watchdog.
Esse conjunto de perguntas força o modelo a responder sempre em termos arquiteturais (responsabilidade, camada, interações e, quando aplicável, gerenciamento de plugins/pipes).
Usar o Mistral-7B-Instruct para:
Essa etapa complementa o BGE Base, que identifica “onde olhar”, enquanto o Mistral explica “o que o módulo faz”.
📌 Arquivo: screenpipe-server/src/server.rs
Responsabilidade principal
O módulo implementa a camada de API REST e streaming do Screenpipe, incluindo:
PipeManagerAudioManager)Camada arquitetural
➝ server/API
Componentes relacionados
screenpipe_core — captura de tela, UI e pipesscreenpipe_db — banco de dados e buscascreenpipe_audio — gerenciamento de áudioscreenpipe_vision — OCR e visão computacionalscreenpipe_events — subsistema de eventosscreenpipe_video_cache — cache de quadrosembedding_endpoint — geração de embeddingsStreaming e busca identificados
WebSocketUpgrade → endpoints de streaming de eventos e framesSearchQuery → endpoints de busca com paginação e múltiplos filtros📌 Arquivo: screenpipe-core/src/ffmpeg.rs
Responsabilidade principal
Localizar o executável FFmpeg no sistema e retornar seu caminho para uso pelos módulos de captura.
Camada arquitetural
➝ core / infraestrutura de captura
Componentes relacionados
ffmpeg_sidecarwhichonce_cell::synclogProcesso identificado O módulo busca o FFmpeg em:
PATH)$HOME/.local/bin no macOSObservação: o módulo apenas localiza o binário, não realiza instalação.
O modelo Mistral apresentou:
Ele se mostrou eficaz para transformar trechos de código em conhecimento arquitetural claro, fornecendo insights diretamente utilizáveis na documentação do projeto.
Task: Text Generation / Code Understanding
Após utilizar:
BGE Base → para identificar os arquivos mais relevantes no repositório
Mistral-7B-Instruct → para análises profundas e respostas arquiteturais completas
o próximo passo foi testar o StarCoder2-3B, um modelo menor e mais leve, com o objetivo de verificar:
consistência das interpretações
rapidez na análise de módulos simples
capacidade de compreender responsabilidades básicas do código
O foco não era obter uma análise arquitetural profunda, mas sim validar o pipeline e medir até onde um modelo pequeno pode ajudar no entendimento geral.
Usar o StarCoder2-3B para:
O modelo foi usado como um validador leve, e não como fonte primária de arquitetura.
Resultado resumido da identificação
O StarCoder2-3B analisou corretamente o módulo e descreveu:
A descrição, embora simples, está alinhada funcionalmente com o papel do arquivo.
Mesmo sem usar a nomenclatura formal (“core / server / pipes”), o modelo identificou que o código:
O modelo identificou implicitamente que o módulo depende de:
Mesmo sem nomear os módulos explicitamente, reconheceu corretamente o fluxo de dependências.
O modelo entendeu que:
Essa leitura está correta: este arquivo realmente não gerencia lifecycle completo, apenas a invocação.
O modelo, mesmo sendo pequeno (3B), conseguiu:
Embora não forneça análises profundas como o DeepSeek, ele é útil como:
Task: Text Generation
Após os modelos Mistral-7B e StarCoder2-3B identificarem o padrão Microkernel/Plugin (Core em Rust, Plugins em Next.js/TypeScript), a etapa final da atividade exige uma avaliação crítica da adequação desse padrão. Utilizamos o Llama 3.1, um modelo robusto, com alta capacidade de raciocínio e especializado em seguir instruções, para atuar como um Engenheiro de Software Sênior na análise das QNFs.
O objetivo foi alimentar o Llama 3.1 com o padrão arquitetural identificado e as QNFs cruciais para o Screenpipe (Performance e Extensibilidade), e forçá-lo a responder em termos de engenharia de software sobre a validade da arquitetura e seus trade-offs.
📂 Resultados da Análise com Llama 3.1 (Análise Crítica de QNFs)
A análise do Llama 3.1 validou a arquitetura híbrida como uma escolha intencional para balancear Performance e Extensibilidade.
O Llama 3.1 validou que o Rust no Core garante Performance através de:
Paralelismo: Suporte a concorrência eficiente, permitindo aproveitar múltiplos núcleos para captura de tela e processamento de OCR.
O modelo confirmou que a estrutura Microkernel/Plugin (Pipes) em Next.js/TypeScript maximiza a Extensibilidade:
O Llama 3.1 identificou corretamente a Complexidade de Integração como o principal trade-off.
A necessidade de comunicar o Kernel em Rust com os Plugins em TypeScript (que rodam em um ambiente de execução diferente) introduz complexidade nas interfaces de comunicação (APIs/FFI). Este custo de engenharia é aceito em troca da Performance e Extensibilidade.
O Llama 3.1-8B foi o modelo mais efetivo para a tarefa de avaliação arquitetural crítica. Ele demonstrou que a arquitetura do Screenpipe é adequada e intencional, pois prioriza a Performance (no Kernel de baixo nível) e a Extensibilidade (na camada de Plugins), enquanto gerencia ativamente o trade-off da Complexidade de Integração.
| Modelo | Task HF / Tipo | Onde foi usado no projeto | Pontos fortes | Limitações | Papel na atividade |
|---|---|---|---|---|---|
| BAAI/bge-base-en-v1.5 | Feature Extraction / Text Embedding | Repositório completo (screenpipe-*) | Excelente para encontrar arquivos relevantes via similaridade semântica. | Não explica código; não interpreta arquitetura. | Descoberta de contexto: ajuda a identificar onde olhar. |
| Mistral-7B-Instruct-v0.3 | Text Generation / Code Understanding | Análise do Server e Core (server.rs, ffmpeg.rs) | Análise profunda; entende responsabilidades, camadas e interações arquiteturais. | Modelo pesado; depende de prompts bem escritos. | “Arquiteto virtual”: descreve camadas, módulos e padrões. |
| StarCoder2-3B-GGUF | Text Generation focado em código | Funções específicas (capture_loop.rs, Core) | Leve e rápido; ótimo para explicar funções e dependências simples. | Menos contexto; análise arquitetural menos completa. | Validador leve e analisador de consistência. |
| Meta-Llama-3.1-8B-Instruct | Text Generation / Raciocínio Lógico | Análise do padrão Microkernel/Plugin | Raciocínio crítico de nível sênior; articula a adequação de padrões a QNFs e trade-offs. | Mais lento para inferência do que Mistral/StarCoder2; exige prompt estruturado. | Avaliação crítica: valida padrões e trade-offs de performance e extensibilidade. |
Repositório dedicado à documentação e reprodução do processo de identificação de padrões arquiteturais no software Screenpipe, contendo o tutorial completo, código e artefatos necessários para a execução da atividade.
Python
0
38 commits
updated Nov 15, 2025
Repositório dedicado à documentação e reprodução do processo de identificação de padrões arquiteturais no software Screenpipe, contendo o tutorial completo, código e artefatos necessários para a execução da atividade.
Este repositório documenta o processo de identificação de padrões arquiteturais no software Screenpipe, utilizando quatro modelos do Hugging Face:
O Screenpipe é uma plataforma open-source que transforma todo o histórico do seu desktop em uma fonte de contexto contínuo para aplicações de Inteligência Artificial. Ele captura, processa, indexa e disponibiliza (localmente) tudo o que acontece na tela e no microfone, permitindo que agentes de IA entendam o que o usuário está fazendo e construam automações sobre isso. Um script que ajuda a rodar e processar o Screenpipe está descrito em Script
“AI app store powered by 24/7 desktop history open source.
100% local, uses 10% CPU, 4 GB ram, 15 gb/m.
Plugin system called ‘pipe’ which lets you create desktop apps in Next.js in a sandboxed environment within Rust.
24/7 screen and mic recording — recording reality, one pixel at a time.
Store includes Stripe integration enabling devs to monetize their apps.”
Toda a nossa arquitetura utilizada, incluindo hardwares e sistemas online estão descritos no documento de Infraestrutura
Esta seção explica como preparar o ambiente para executar os modelos e reproduzir a análise arquitetural.
# 1. Clonar o repositório ScreenPipe
git clone https://github.com/mediar-ai/screenpipe.git
cd screenpipe
# 2. Criar e ativar ambiente virtual
python -m venv venv
source venv/bin/activate # Linux/Mac
venv\Scripts\activate # Windows
# 3. Instalar Dependências Necessárias
PARA INSTALAR AS DEPENDENCIAS CITADAS ABAIXO, SE FAZ NECESSARIO RODAR APENAS O COMANDO: `pip install -r requirements.txt`.
pip install sentence-transformers
pip install transformers
pip install accelerate
pip install torch
pip install huggingface_hub
screenpipe/
├── screenpipe-core → captura (tela/áudio), ffmpeg, pipes
├── screenpipe-server → API HTTP + WebSocket, streaming, busca
├── screenpipe-db → armazenamento e consultas
├── screenpipe-events → sistema de eventos
├── screenpipe-audio → pipeline de áudio
├── screenpipe-vision → OCR/visão computacional
└── screenpipe-app-tauri → interface desktop (Tauri)
Task: Feature Extraction
Antes de analisar qualquer padrão arquitetural, é necessário entender quais partes do repositório realmente importam.
O Screenpipe é um monorepo com vários módulos (core, server, db, vision, audio, events, etc.), e localizar manualmente os arquivos relevantes exigiria muito tempo.
Por isso, escolhemos o modelo BGE Base, especializado em gerar representações vetoriais (embeddings) de texto e código.
Esses embeddings permitem comparar arquivos por similaridade semântica, ajudando a identificar:
Modelo de embeddings, ótimo para descoberta de arquivos relevantes, não para explicação de código.
BGE Base identificou os arquivos mais relevantes do projeto para compreender a arquitetura do servidor:
=== TOP ARQUIVOS MAIS RELEVANTES PARA ARQUITETURA ===
0.6225 | /content/screenpipe/screenpipe-audio/README.md | módulo: screenpipe-audio
0.6184 | /content/screenpipe/screenpipe-app-tauri/components/ui/icons.tsx | módulo: screenpipe-app-tauri
0.6176 | /content/screenpipe/screenpipe-server/tests/endpoint_test.rs | módulo: screenpipe-server
0.6050 | /content/screenpipe/screenpipe-server/Cargo.toml | módulo: screenpipe-server
0.6015 | /content/screenpipe/screenpipe-core/src/operator/platforms/windows.rs | módulo: screenpipe-core
0.5986 | /content/screenpipe/screenpipe-audio/tests/accuracy_test.rs | módulo: screenpipe-audio
0.5984 | /content/screenpipe/screenpipe-app-tauri/components/onboarding.tsx | módulo: screenpipe-app-tauri
0.5976 | /content/screenpipe/screenpipe-vision/src/apple.rs | módulo: screenpipe-vision
0.5928 | /content/screenpipe/screenpipe-app-tauri/components/settings/ai-presets.tsx | módulo: screenpipe-app-tauri
0.5913 | /content/screenpipe/screenpipe-app-tauri/src-tauri/src/icons.rs | módulo: screenpipe-app-tauri
Também realizamos buscas adicionais com o BGE Base para identificar arquivos relevantes em cada camada do sistema (core, servidor, storage, visão computacional e áudio).
Os resultados completos podem ser consultados no seguinte arquivo do repositório:
📄 Análises completas do BGE Base
O BGE Base foi essencial como primeira etapa da análise. Ele permitiu:
Task: Text Generation / Code Understanding
Após o modelo BGE Base identificar os arquivos mais relevantes do repositório (especialmente em screenpipe-server, screenpipe-core e screenpipe-db), era necessário analisar arquiteturalmente cada módulo encontrado.
Para isso utilizamos o Mistral-7B-Instruct, um modelo treinado para seguir instruções e interpretar código. Ele foi usado como um “arquiteto de software virtual”, capaz de explicar responsabilidades, papéis e interações de cada módulo.
O prompt utilizado foi:
Você é um arquiteto de software experiente. Analise o código/trecho abaixo do projeto Screenpipe e responda:
- Qual é a responsabilidade principal desse módulo?
- Em que parte da arquitetura ele se encaixa (core/captura, server/API, pipes/plugins, storage/db)?
- Com quais outros componentes ele provavelmente interage?
- Explique como o módulo gerencia pipes/plugins, incluindo download, execução, logs e watchdog.
Esse conjunto de perguntas força o modelo a responder sempre em termos arquiteturais (responsabilidade, camada, interações e, quando aplicável, gerenciamento de plugins/pipes).
Usar o Mistral-7B-Instruct para:
Essa etapa complementa o BGE Base, que identifica “onde olhar”, enquanto o Mistral explica “o que o módulo faz”.
📌 Arquivo: screenpipe-server/src/server.rs
Responsabilidade principal
O módulo implementa a camada de API REST e streaming do Screenpipe, incluindo:
PipeManagerAudioManager)Camada arquitetural
➝ server/API
Componentes relacionados
screenpipe_core — captura de tela, UI e pipesscreenpipe_db — banco de dados e buscascreenpipe_audio — gerenciamento de áudioscreenpipe_vision — OCR e visão computacionalscreenpipe_events — subsistema de eventosscreenpipe_video_cache — cache de quadrosembedding_endpoint — geração de embeddingsStreaming e busca identificados
WebSocketUpgrade → endpoints de streaming de eventos e framesSearchQuery → endpoints de busca com paginação e múltiplos filtros📌 Arquivo: screenpipe-core/src/ffmpeg.rs
Responsabilidade principal
Localizar o executável FFmpeg no sistema e retornar seu caminho para uso pelos módulos de captura.
Camada arquitetural
➝ core / infraestrutura de captura
Componentes relacionados
ffmpeg_sidecarwhichonce_cell::synclogProcesso identificado O módulo busca o FFmpeg em:
PATH)$HOME/.local/bin no macOSObservação: o módulo apenas localiza o binário, não realiza instalação.
O modelo Mistral apresentou:
Ele se mostrou eficaz para transformar trechos de código em conhecimento arquitetural claro, fornecendo insights diretamente utilizáveis na documentação do projeto.
Task: Text Generation / Code Understanding
Após utilizar:
BGE Base → para identificar os arquivos mais relevantes no repositório
Mistral-7B-Instruct → para análises profundas e respostas arquiteturais completas
o próximo passo foi testar o StarCoder2-3B, um modelo menor e mais leve, com o objetivo de verificar:
consistência das interpretações
rapidez na análise de módulos simples
capacidade de compreender responsabilidades básicas do código
O foco não era obter uma análise arquitetural profunda, mas sim validar o pipeline e medir até onde um modelo pequeno pode ajudar no entendimento geral.
Usar o StarCoder2-3B para:
O modelo foi usado como um validador leve, e não como fonte primária de arquitetura.
Resultado resumido da identificação
O StarCoder2-3B analisou corretamente o módulo e descreveu:
A descrição, embora simples, está alinhada funcionalmente com o papel do arquivo.
Mesmo sem usar a nomenclatura formal (“core / server / pipes”), o modelo identificou que o código:
O modelo identificou implicitamente que o módulo depende de:
Mesmo sem nomear os módulos explicitamente, reconheceu corretamente o fluxo de dependências.
O modelo entendeu que:
Essa leitura está correta: este arquivo realmente não gerencia lifecycle completo, apenas a invocação.
O modelo, mesmo sendo pequeno (3B), conseguiu:
Embora não forneça análises profundas como o DeepSeek, ele é útil como:
Task: Text Generation
Após os modelos Mistral-7B e StarCoder2-3B identificarem o padrão Microkernel/Plugin (Core em Rust, Plugins em Next.js/TypeScript), a etapa final da atividade exige uma avaliação crítica da adequação desse padrão. Utilizamos o Llama 3.1, um modelo robusto, com alta capacidade de raciocínio e especializado em seguir instruções, para atuar como um Engenheiro de Software Sênior na análise das QNFs.
O objetivo foi alimentar o Llama 3.1 com o padrão arquitetural identificado e as QNFs cruciais para o Screenpipe (Performance e Extensibilidade), e forçá-lo a responder em termos de engenharia de software sobre a validade da arquitetura e seus trade-offs.
📂 Resultados da Análise com Llama 3.1 (Análise Crítica de QNFs)
A análise do Llama 3.1 validou a arquitetura híbrida como uma escolha intencional para balancear Performance e Extensibilidade.
O Llama 3.1 validou que o Rust no Core garante Performance através de:
Paralelismo: Suporte a concorrência eficiente, permitindo aproveitar múltiplos núcleos para captura de tela e processamento de OCR.
O modelo confirmou que a estrutura Microkernel/Plugin (Pipes) em Next.js/TypeScript maximiza a Extensibilidade:
O Llama 3.1 identificou corretamente a Complexidade de Integração como o principal trade-off.
A necessidade de comunicar o Kernel em Rust com os Plugins em TypeScript (que rodam em um ambiente de execução diferente) introduz complexidade nas interfaces de comunicação (APIs/FFI). Este custo de engenharia é aceito em troca da Performance e Extensibilidade.
O Llama 3.1-8B foi o modelo mais efetivo para a tarefa de avaliação arquitetural crítica. Ele demonstrou que a arquitetura do Screenpipe é adequada e intencional, pois prioriza a Performance (no Kernel de baixo nível) e a Extensibilidade (na camada de Plugins), enquanto gerencia ativamente o trade-off da Complexidade de Integração.
| Modelo | Task HF / Tipo | Onde foi usado no projeto | Pontos fortes | Limitações | Papel na atividade |
|---|---|---|---|---|---|
| BAAI/bge-base-en-v1.5 | Feature Extraction / Text Embedding | Repositório completo (screenpipe-*) | Excelente para encontrar arquivos relevantes via similaridade semântica. | Não explica código; não interpreta arquitetura. | Descoberta de contexto: ajuda a identificar onde olhar. |
| Mistral-7B-Instruct-v0.3 | Text Generation / Code Understanding | Análise do Server e Core (server.rs, ffmpeg.rs) | Análise profunda; entende responsabilidades, camadas e interações arquiteturais. | Modelo pesado; depende de prompts bem escritos. | “Arquiteto virtual”: descreve camadas, módulos e padrões. |
| StarCoder2-3B-GGUF | Text Generation focado em código | Funções específicas (capture_loop.rs, Core) | Leve e rápido; ótimo para explicar funções e dependências simples. | Menos contexto; análise arquitetural menos completa. | Validador leve e analisador de consistência. |
| Meta-Llama-3.1-8B-Instruct | Text Generation / Raciocínio Lógico | Análise do padrão Microkernel/Plugin | Raciocínio crítico de nível sênior; articula a adequação de padrões a QNFs e trade-offs. | Mais lento para inferência do que Mistral/StarCoder2; exige prompt estruturado. | Avaliação crítica: valida padrões e trade-offs de performance e extensibilidade. |