wesleymatosdev/ce-pickup

Extraia resumos de sessões anteriores sem usar tokens de modelos de fronteira.

O que é ce-pickup?

O **ce-pickup** é uma skill para agentes (como Claude Code, Cursor, Codex) que extrai documentos de retomada de sessão (`ce-handoff/v1`) do histórico local de sessões do Hermes usando um modelo **local** via Ollama. O objetivo é evitar o custo de tokens de modelos de fronteira ao retomar uma sessão antiga; em vez de reenviar todo o histórico para um modelo pago, a skill processa a conversa localmente, gerando um arquivo Markdown com resumo estruturado (objetivo, trabalho concluído, estado atual, bloqueios, próximos passos). O uso é simples: execute o script bash `ce-pickup.sh` passando os IDs das sessões desejadas e, em seguida, use `/ce-handoff resume <caminho>` para retomar. A skill é implementada puramente em shell (`sqlite3`, `curl`, `jq`, `awk`), evitando triggers de TCC no macOS e mantendo zero custo de inferência de ponta. Inclui também um watchdog opcional que monitora o contexto de sessões ativas e dispara alertas ou extrações automáticas conforme limites pré-definidos.

Funciona com~Claude Code~Codex CLI~Cursor✓Antigravity
npx skills add https://github.com/wesleymatosdev/skills/tree/main/workflow/ce-pickup

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

O que ce-pickup faz?

Extrai documentos ce-handoff/v1 de sessões passadas do Hermes usando um modelo local. Custo zero de tokens de fronteira. A saída é Markdown ce-handoff/v1 padrão, então /ce-handoff resume <caminho> funciona imediatamente.

Use isto em vez de executar /ce-handoff em uma sessão fria que queimaria cota de assinatura apenas para se atualizar.

Quando usar

  • O usuário deseja retomar uma sessão que deixou inacabada sem gastar tokens de fronteira para relê-la
  • Você precisa de um resumo de uma ou mais sessões passadas, mas a janela de contexto já está carregada
  • O usuário pede um "pickup" ou "catch-up" de uma sessão antiga
  • Executar /ce-handoff em uma sessão fria grande seria caro

Início rápido

bash ~/.hermes/scripts/ce-pickup.sh ID_DA_SESSAO[,ID_DA_SESSAO,...]

A saída vai para /tmp/compound-engineering-$(id -u)/ce-pickup/ por padrão.

Em seguida, retome de qualquer arquivo de saída:

/ce-handoff resume /tmp/compound-engineering-<uid>/ce-pickup/<slug>.md

Argumentos

  • Arg 1 (obrigatório): IDs de sessão separados por vírgula (de session_search ou navegação do Hermes)
  • Arg 2 (opcional): nome do modelo Ollama — padrão hf.co/ornith-ai/Ornith-1.5-35B-A3B-GGUF:Q5_K_M
  • Arg 3 (opcional): diretório de saída personalizado

Sobrescritas por variável de ambiente (para testes e hosts alternativos): CE_PICKUP_DB (padrão ~/.hermes/state.db), CE_PICKUP_OLLAMA_URL (padrão http://localhost:11434/api/chat), CE_PICKUP_MAX_CHARS (padrão 24000).

Roteamento de modelo

Padrão: Ornith-1.5-35B-A3B-GGUF:Q5_K_M — qualidade de extração verificada, execução local.

Se Ornith não estiver carregado, qualquer modelo Ollama local capaz funciona. NÃO use um modelo de fronteira (isso anula o propósito).

Verifique o que está disponível: ollama list

Como funciona

  1. Lê ~/.hermes/state.db via sqlite3 — sem Python, sem prompts TCC
  2. Extrai mensagens user + assistant ordenadas por timestamp
  3. Trunca a transcrição para 24.000 caracteres (~6k tokens) — o suficiente para extração significativa
  4. Chama Ollama /api/chat via curl com um prompt de extração estruturado
  5. Escreve o frontmatter ce-handoff/v1 + corpo do modelo no diretório de saída
  6. O nome do arquivo é um slug do título da sessão; sufixo numérico em caso de colisão

Formato de saída

Todo arquivo de saída é ce-handoff/v1 válido com:

  • Frontmatter artifact_contract: "ce-handoff/v1"
  • session_id, cwd, branch, repository quando disponíveis
  • Extração cobrindo: objetivo, trabalho concluído, estado atual, decisões/restrições, bloqueadores, abordagens falhas, referências, próximos passos

Watchdog de limite de contexto (companheiro)

scripts/context-ceiling-watchdog.sh é um monitor determinístico, sem agente, para contexto de sessão ativa. Ele estima o contexto atual de cada sessão ativa (conteúdo da mensagem active=1 ÷ 4 caracteres/token — nunca use sessions.input_tokens, que é o volume de faturamento cumulativo incluindo releituras de contexto) e impõe:

  • >= 50k LEMBRETE — cutucada de uma linha, repete a cada hora
  • >= 70k ALERTA — aviso de checkpoint, repete a cada 30m
  • >= 80k EXTRAIR — executa ce-pickup localmente e relata o caminho ce-handoff/v1; após a extração, só re-alerta se a sessão subir mais ~10k (CRÍTICO)

Ele é silencioso (stdout vazio) a menos que um limite seja acionado, então se encaixa diretamente em um trabalho cron sem agente com detecção de mudanças. O estado fica em ~/.cache/context-ceiling-watchdog/ (TSV simples — sem memória LLM, sem continuidade recursiva). Ele nunca escreve na configuração ou estado de execução do Hermes; state.db é aberto com sqlite3 -readonly.

Teste sem um modelo real: bash scripts/mock-ollama.sh 21143 & depois bash scripts/test-watchdog.sh (DB de fixture + limites dimensionados, 20 verificações).

Armadilhas

Diálogos TCC do Python (macOS Sequoia+): Executar Python como subprocesso de um aplicativo com autorizações amplas pode acionar prompts TCC para iCloud Drive ou Documentos — mesmo quando apenas lê ~/.hermes/state.db. O script shell usa apenas sqlite3 + curl + jq + awk e NÃO aciona TCC. Nunca use uma implementação Python deste fluxo de trabalho a menos que o usuário aceite explicitamente prompts TCC.

Truncamento de transcrição: 24k caracteres cobrem a maioria das sessões. Sessões muito longas (200+ mensagens com grandes saídas de ferramentas) são truncadas no final. Se o resumo parecer superficial, divida em consultas mais específicas.

Modelos de raciocínio + num_predict: num_predict do Ollama limita o total de tokens gerados INCLUINDO message.thinking. Um modelo de raciocínio (Ornith é um) pode queimar todo o orçamento no canal de raciocínio e retornar message.content vazio ou truncado — que o script lê exclusivamente. Sintoma: "resposta vazia do Ollama" ou um resumo que para no meio da frase, parecendo um problema de qualidade do modelo quando é um bug de payload. O script envia think:false (com um fallback sem a flag para modelos que a rejeitam). Nota de escopo de Wesley: essa flag está correta APENAS para este trabalho de extração mecânica — o raciocínio do Ornith é um ativo no uso de engenharia agentiva, e uma execução de extração não diz nada sobre capacidade agentiva. Não generalize uma extração ruim para um veredito sobre o modelo.

Ollama deve estar em execução: Verifique com ollama list antes de invocar.

A saída está em /tmp: O SO pode recuperar na reinicialização. Copie para um caminho estável se for retomar entre reinicializações.

Script

A implementação canônica é scripts/ce-pickup.sh nesta skill — chame-a pelo caminho da skill. Uma cópia no host historicamente existia em ~/.hermes/scripts/ce-pickup.sh (documentada como um link simbólico); em máquinas onde essa cópia existe mas NÃO é um link simbólico, ela está desatualizada — confie no diretório da skill.

Veja também: skill ce-handoff para o fluxo de retomada depois que o documento de resumo existir.

Individual skills in this repo

This repo contains 2 individual skills — each has its own dedicated page.

Habilidades Relacionadas