Sobre o projeto
ohmyboring é um sistema de memória pessoal auto-hospedado para agentes de programação. Ele captura como você resolveu as coisas no Claude Code, no Kimi Code e em sessões elegíveis do Codex, destila cada sessão em uma nota markdown curada armazenada em um vault local e traz essas notas de volta quando você pergunta "como eu fiz isso da última vez?". Tudo roda localmente: embedding e síntese passam por um servidor LLM local (Ollama, LM Studio ou outro endpoint compatível com OpenAI), sem APIs externas nem tokens.
Como a memória entra:
- Automático ao fim da sessão: um hook SessionEnd destila a transcrição e a armazena; um hook UserPromptSubmit pareado injeta até três trechos relevantes do passado em novos prompts, cada um carregando afirmações consolidadas.
- Worker do Codex: como o Codex não tem hook SessionEnd, um worker no host varre ~/.codex/sessions a cada 20 minutos e ingere transcrições elegíveis.
- Backfill: `make collect` semeia um vault vazio a partir do histórico passado do Claude Code (do mais recente para o mais antigo, idempotente, N por execução); `make collect-kimi` faz o mesmo para o Kimi Code.
- Em meio à sessão: `make distill-now` re-destila a transcrição atual, e `make remember M="..."` salva uma nota explícita.
A memória é markdown-first: notas simples, legíveis por humanos e diffáveis com git em vault/wiki, que podem ser abertas diretamente como um vault do Obsidian para visualização de grafo, backlinks, tags e busca em texto completo. Um acelerador pgvector opcional (BORING_VECTOR=on) adiciona busca por similaridade e GraphRAG quando a escala exige.
A arquitetura separa uma porta de leitura rápida e sem LLM (`make ask`, recall.py, MCP recall) de uma porta de escrita controlada (distill-session.py chama o LLM local e escreve por meio de uma ferramenta MCP remember determinística). Um portão de duplicatas pula notas duplicadas, mas permite que uma nota mais rica reescreva o mesmo arquivo do wiki. Um contrato de grafo de workflow tipado do lado Rust em drudge/src/workflow.rs define o vocabulário de nós/arestas para descoberta de sessão, destilação, verificação, reparo, remember, atualização de marcador, registro de eventos e projeção de prontidão, enquanto hooks e workers em Python ainda executam I/O no host.
A configuração fica em boring.json (a partir de boring.example.json): idioma das notas, provedor LLM/base_url/modelo/modelo de embedding e dimensão, regras de origem do repositório e adaptadores de transcrição de agentes. Trocar de backend é um bloco de configuração; `make up` despacha para scripts de bootstrap específicos do provedor. Mudar o modelo de embedding altera a dimensão do vetor, então llm.embed_dim deve ser atualizado e `make reset` executado. Um arquivo .env guarda segredos e sobrescritas de runtime como BORING_VECTOR, sobrescritas de LLM, limites de destilação, contagens de afirmações de recall e medição de relevância, configurações de sink/spool de eventos, janelas de prontidão e um token de proprietário para chamadas de escrita.
O ferramental operacional inclui `make verify-llm` (provedor, ids de modelo, dimensão de embedding), `make doctor` (stack, hooks, worker/fila do Codex, última ingestão), `make readiness` (portão estrito de pré-briefing), `make peek` (página local somente leitura mostrando quais notas o recall injetou e até onde o retriever chegou) e `make usage` (uso de tokens e modelos agregado a partir de transcrições locais). Um portão de PII/dados sensíveis em vault/rules/pii.yaml suporta ações de block, redact e flag com marcadores de isenção por linha. Integrações opcionais incluem um assistente Slack e workers cron Hermes para briefings matinais.
Os requisitos são Docker, Python 3, jq, curl, git, make e um servidor LLM local. Um clone novo começa com um vault vazio, então o recall do primeiro dia não encontra nada até que o histórico seja preenchido via backfill. O projeto tem licença MIT e documenta orientações de pareamento de modelos locais por RAM da máquina, comandos de benchmark e comportamento medido de destilação/embedding.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.