2 pontos por nave94 2026-05-03 | 9 comentários | Compartilhar no WhatsApp

O Claude Code perde todo o contexto quando a sessão é encerrada. O CTX resolve esse problema com hooks do Claude Code.

Como funciona: no evento UserPromptSubmit, ele injeta automaticamente 3 tipos de contexto em menos de 1 ms.

  • G1: linha do tempo de decisões baseada em git log (por que essa decisão foi tomada ontem)
  • G2: busca BM25 em código/documentação (injeção automática de arquivos relacionados)
  • CM: vault de conversas passadas (SQLite FTS5 + vetor opcional)

Métricas medidas:

  • Precisão de recuperação de memória: 0.880 [0.762, 0.944] (MAB N=50, Wilson CI)
  • Baseline (sem isso): 0.00
  • Taxa de uso em mais de 10.000 turnos reais: 39.6%

Sem chamadas de LLM. Sem nuvem. Totalmente local.

Instalação:
pip install ctx-retriever && ctx-install
ou, dentro do Claude Code: /plugin install ctx@jaytoone

9 comentários

 
zihado 19 일 전

Ao instalar com /plugin, aparece assim
⎿ Marketplace "jaytoone" não encontrado

 
kurthong 2026-05-04

Achei a abordagem muito interessante. A ideia de fazer roteamento por classificação de triggers parece excelente.

Uma dúvida: me parece que o tokenizer da camada BM25 não está especificado no README; como vocês pretendem lidar com coreano? Se for o tokenizer padrão por espaços, "검색하다"/"검색하는" viram tokens separados, então o recall em buscas de comentários e docstrings em coreano deve cair bastante.
Existe o fallback com multilingual-e5-small, mas fiquei curioso sobre o plano para o tratamento de coreano (incluindo CJK) na própria camada BM25. (Eu também tive problemas com busca em CJK ao criar um app de wiki para LLM chamado seCall, e resolvi isso combinando Lindera ko-dic + Kiwi-rs; como o CTX tem uma estrutura de roteamento por triggers, imaginei que talvez haja espaço para uma abordagem diferente.)

 
nave94 2026-05-09

Você apontou exatamente o ponto. Atualmente, o tokenize() da camada BM25 separa por espaços + pontuação e depois decompõe adicionalmente caracteres coreanos/CJK em unidades de caractere individual. '검색하다'['검','색','하','다'] + o token completo '검색하다'. Isso permite correspondência parcial, mas de fato desfaz as unidades semânticas morfológicas.

Estamos vendo a integração com Kiwi/Lindera como uma candidata para a próxima etapa. Como o CTX detecta o idioma da consulta antes do roteamento por trigger, parece que daria para encaixar de forma relativamente limpa um desvio de coreano detectado → analisador morfológico.

Interessante saber que vocês resolveram isso no seCall com a combinação Lindera ko-dic + Kiwi-rs. Você poderia compartilhar como trataram texto misto em CJK (coreano + comentários de código em inglês)?

 
nave94 2026-05-09

Atualização v0.3.19 — envio automático ao encerrar a sessão:

A maior mudança: agora, após o ctx-install, mesmo usando normalmente sem nenhum comando, as estatísticas são enviadas automaticamente para o Turso ao encerrar a sessão.

Novos campos adicionados no schema v1.7:

  • project_type_id: fingerprint da stack tecnológica (python_ml/nextjs_react etc.) — ponto central para melhorias entre usuários
  • ctx_version: rastreamento de melhorias por versão
  • utility_by_qtype: mede, no nível da sessão, a diferença entre KEYWORD 16% e SEMANTIC 42%

Opt-out: crie o arquivo ~/.claude/ctx-telemetry-revoke para interromper o envio

 
nave94 2026-05-09

Atualização v0.3.16 e adição de demo ao vivo:

Dashboard ao vivo (HF Space): https://be2jay-ctx-dashboard-demo.hf.space

  • Estatísticas de sessão em tempo real, gráfico de utility_rate, visualização do grafo de conhecimento

Principais mudanças (v0.3.16):

  • Status: Alpha → Beta
  • Pipeline de upload do Stage 2 ativado (upload de session_aggregate com k-anonimato)
  • Adicionada exibição de orientação de opt-in ao executar ctx-install
  • Adicionados comentários do tokenizador BM25 CJK (previsto para refletir no README)

Medição real de taxa de utilização (n=1054 sessões):

  • Média geral de utility_rate: 39,6%
  • Bloco CM: 52,6% (o mais alto)
  • Consulta SEMANTIC: 42,0% vs KEYWORD: 16,0% (diferença de 42 pp)
 
nave94 2026-05-04

Aviso de atualização (v0.3.13):

Prioridade do método de instalação:

[Recomendado] Plugin do Claude Code (etapa 1):
/plugin install ctx@jaytoone

[Alternativa] pip:
pip install ctx-retriever && ctx-install

Mudanças no v0.3.13: venv isolado para o vec-daemon (evita conflitos de numpy/ABI), reranker BGE opcional via opt-in (CTX_BGE_ENABLE=1)

 
nave94 2026-05-03

Vídeo do funcionamento do dashboard (39 segundos): https://drive.google.com/file/d/…

Detalhes: https://dev.to/jaewon_jang_d63fddcf69ac2/…

 
nave94 19 일 전

Atualização v0.3.28 (2026-05-20): alcançou 6 ⭐ no GitHub e 2.726 downloads mensais no PyPI. Nesta release, houve reforço da transparência de privacidade — adição do PRIVACY.md (prova de que não é possível reverter hashes, base em GDPR/CCPA/PIPA), aviso único de telemetria na primeira execução e adição dos comandos ctx-telemetry disable/enable. Para usuários de versões antigas (v0.3.25 ou anteriores), recomenda-se pip install --upgrade ctx-retriever.

 
nave94 21 일 전

Atualização v0.3.27: agora, com uma única linha pip install ctx-retriever, o hook do Claude Code é conectado automaticamente (não é mais necessário executar ctx-install separadamente). Internamente, um arquivo .pth em site-packages instala o hook automaticamente na primeira execução do Python, e foram adicionados o hook SessionStart e uma fila de repetição, melhorando a estabilidade da coleta de dados de ~70% para ~93%. Já é possível instalar diretamente a versão v0.3.27 pelo PyPI.