ctx-handoff: sessões longas do Claude Code sem dor de cabeça
Mantém o cache aquecido, transforma suas instruções em notas do projeto e passa adiante um contexto cheio.
Permissões
- Lê arquivosPode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
- Grava arquivosPode criar ou sobrescrever arquivos na sua máquina ($.fs.write).
- Chama o modelo (usa sua cota)Pode enviar suas próprias requisições ao Claude, que contam no uso do seu plano ($.model.* / $.agent.spawn).
- Intercepta chamadas de ferramentasVê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
- Lê seus promptsPode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
- Altera a interfaceDesenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
- Adiciona comandos/ferramentasRegistra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
- Armazena dadosGuarda dados entre sessões no armazenamento privado do plugin ($.store.*).
- testado com
- v2.1.303
- último teste
- requer
- Claude Code ≥ 2.1.287
- superfícies
- acima do prompt, status, notificação
- código-fonte
- CabLate (cablate) (MIT)
Instale dentro do Claude Code:
/plugin install ctx-handoff --marketplace cablate/ctx-handoff-modO que este mod faz?
ctx-handoff é um mod da comunidade criado por CabLate (cablate) para as sessões longas do Claude Code, ou seja, conversas que duram horas. Ele reúne várias tarefas que surgem nelas: enquanto você está fora, envia uma requisição minúscula para o cache do prompt não expirar; transforma suas instruções repetidas em notas por projeto, carregadas nas conversas novas; e dá um aviso ao Claude quando ele repete uma ferramenta que falha ou diz «pronto» sem ter verificado nada.
Duas funções maiores são menos automáticas. Um handoff opcional escreve um resumo do trabalho, limpa a conversa e continua numa nova quando o contexto chega a um limite; ele vem desativado. Guardas são verificações de chamadas de ferramentas que o mod rascunha a partir de regras que você repete, e só valem depois que você as aprova. Um painel acima do prompt (/handoff panel) lista guardas, memórias, regras, a última atualização de notas e todas as configurações.
O README do autor mira assinaturas do Claude e sessões longas com contexto grande. Com chave de API, Bedrock ou Vertex o cache dura só cinco minutos, então o autor sugere /handoff refresh off.
Demonstração
A gravação inicia o Claude Code com o mod carregado no pequeno projeto de demonstração. O rodapé mostra logo ctx-handoff: 30 more messages until notes update, a contagem regressiva até a próxima atualização de notas em segundo plano. Em seguida roda /handoff guard, que imprime Guards: none com as condições em que guardas são rascunhadas, e /handoff refresh, que imprime Currently on. Usage: /handoff refresh on|off. O clipe não faz nenhuma requisição ao modelo e não abre o painel, porque ele mostra o caminho completo do arquivo de notas.
Instalação
Use qualquer um dos métodos do bloco de instalação; eles instalam direto do marketplace do próprio autor. Inicie uma sessão nova e execute /handoff. A contagem regressiva do rodapé aparece quando a sessão começa.
$ install ctx-handoff
Requer Claude Code ≥ 2.1.287
Instala a partir do marketplace do autor: cablate/ctx-handoff-mod
1.Uma linha, dentro do Claude Code
/plugin install ctx-handoff --marketplace cablate/ctx-handoff-modCole em uma sessão em andamento (v2.1.275+). O Claude Code pede primeiro para adicionar o marketplace.
2.Pelo seu shell
claude plugin marketplace add cablate/ctx-handoff-mod claude plugin install ctx-handoff@ctx-handoff-modDepois execute /reload-plugins em qualquer sessão que já esteja aberta.
3.Experimente sem instalar
git clone https://github.com/cablate/ctx-handoff-mod claude --plugin-dir ./ctx-handoff-modCarrega o mod só para uma sessão. Nada é adicionado às suas configurações.
Como funciona
Tudo é registrado a partir de um único módulo, hooks/register.ts. Cada turno concluído reinicia um temporizador de ociosidade. Quando ele dispara e o contexto está acima de min_tokens, o mod envia uma requisição fork mínima para ler a conversa em cache e agenda a próxima. Esta é a função de agendamento, de hooks/register.ts:
async function schedule($: EngineInterface, delay = cfg.idleMs) {
rt.idle?.cancel()
if (await awayPaused($)) { rt.idle = undefined; await update($, idleState, () => null); return }
rt.idle = $.clock.after(delay, () => void onIdle($))
const due = (await $.clock.now()) + delay
await update($, idleState, () => ({ due, refreshes: rt.refreshes }))
}Por padrão a ociosidade é de 50 minutos e há no máximo 3 atualizações; depois disso um handoff de ausência é salvo sem limpar. A cada 30 mensagens do usuário, ou antes de um handoff, uma requisição separada, sem histórico, envia só a parte nova da conversa a um modelo de notas (claude-sonnet-5-5, esforço baixo). As ações em JSON dele são validadas em código, as citações do usuário precisam aparecer nas suas mensagens reais, e linhas que parecem segredos são descartadas antes de qualquer gravação. As notas são injetadas nas conversas novas por meio de prompt.context.
Personalize
O mod não declara userConfig. As configurações ficam na aba de configurações do painel (/handoff panel e depois a tecla 5), e o mod também lê pluginConfigs["ctx-handoff@<marketplace>"].options do settings.json; o valor do painel prevalece. Elas incluem auto_handoff (desativado por padrão), threshold (600000 tokens), idle_minutes (50), max_refresh (3), min_tokens (30000), distill_every (30), notes_model, retry_nudge, done_check, reply_language e language. Os comandos com barra cobrem o resto: /handoff now, dry, distill on|off, refresh on|off, away pause|resume, guard, resume, continue e resend.
Permissões e segurança
Lemos o manifesto, hooks/hooks.json, hooks/register.ts por inteiro e os módulos de configurações, notas, handoff, guardas, laços, idioma, promoção e o prompt de destilação. Os demais arquivos, principalmente as strings de i18n, a visão do painel e pequenos auxiliares de registros, foram verificados por buscas para detectar efeitos colaterais, sem leitura linha a linha. O repositório não tem package.json, script de instalação, binário nem código minificado. tools/ contém scripts do autor que o plugin não carrega e que não executamos. Não há caracteres Unicode ocultos.
O que você deve saber:
- Requisições ao modelo, nenhuma outra rede. Não há
fetch, chamadas de processo nem código de rede. O mod chama$.model.forke$.model.complete, que usam sua cota do Claude. O texto da conversa é enviado para as notas e os resumos de handoff, do mesmo jeito que a própria conversa. - Grava fora do próprio armazenamento.
$.fs.writecria e atualiza<pasta de configuração do claude>/projects/<espaço de trabalho>/memory/ctx-handoff.mde grava um backup em.ctx-handoff-backup/antes de apagar uma nota pelo painel. As atualizações de notas em segundo plano vêm ativadas, mas são puladas quando a sessão começa na sua pasta pessoal. Ele não mexe em settings.json, arquivos de shell nem LaunchAgents, e lêHOME,USERPROFILEeCLAUDE_CONFIG_DIR. - Injeta texto no modelo.
prompt.contextadiciona às conversas novas suas notas, um memorando de progresso opcional e perguntas sobre guardas, marcados com[ctx-handoff]. Resultados de ferramentas podem trazer lembretes. Quando uma regra se repete 3 vezes em um repositório git, o texto injetado manda o Claude escrevê-la no repositório (CLAUDE.md,.claude/skills, hooks) sem perguntar, mas sem fazer commit. As notas são resumos das suas conversas escritos pelo modelo, então confira o arquivo de vez em quando. - Hooks que condicionam.
tool.callsó pode negar uma chamada por causa de uma guarda que você aprovou.classic.Stoppode bloquear uma resposta de «pronto» por turno quando arquivos foram editados e nenhuma verificação rodou (done_check, ativado por padrão).prompt.submitretém suas mensagens enquanto um handoff está em andamento. Se você ativar o handoff automático, o mod executa/cleare envia o resumo sozinho. - Sem daemon e sem telemetria. Os temporizadores existem só no processo do Claude Code. As estatísticas de uso ficam no armazenamento do plugin.
- Ambientes gerenciados. Segundo o
claude plugin validate, os hooksprompt.contexteclassic.Stopnão rodam em um plugin instalado pelo usuário quando uma organização gerencia o Claude Code. - Licença. MIT, com arquivo LICENSE.
O claude plugin validate não relatou erros. O único aviso é que o CLAUDE.md na raiz do repositório não é carregado como contexto do plugin. Os 290 testes do autor, em 15 arquivos, passaram no Claude Code 2.1.303.
- Lê arquivos
- Pode ler arquivos e listar diretórios na sua máquina ($.fs.read / list / stat / exists).
- Grava arquivos
- Pode criar ou sobrescrever arquivos na sua máquina ($.fs.write).
- Chama o modelo (usa sua cota)
- Pode enviar suas próprias requisições ao Claude, que contam no uso do seu plano ($.model.* / $.agent.spawn).
- Intercepta chamadas de ferramentas
- Vê cada chamada de ferramenta que o Claude faz (tool.call / tool.check) e pode bloqueá-la ou alterá-la.
- Lê seus prompts
- Pode ver o que você digita e a transcrição da conversa (prompt.* / session.append / session.messages).
- Altera a interface
- Desenha na interface do Claude Code: faixas, painéis, texto de status, notificações (ui.render / $.ui.*).
- Adiciona comandos/ferramentas
- Registra novos comandos de barra ou ferramentas que você ou o Claude podem acionar ($.command.register / $.tool.register).
- Armazena dados
- Guarda dados entre sessões no armazenamento privado do plugin ($.store.*).
Compatibilidade e solução de problemas
Verificado com o Claude Code 2.1.303 no macOS (validate, testes e a gravação). O README do autor exige 2.1.287 ou posterior. Se /handoff não fizer nada:
claude --versioné 2.1.287 ou posterior e você iniciou uma sessão nova depois de instalar.- Pode já existir outro comando
/handoff; nesse caso o mod registra/ctx-handoff. - A contagem regressiva do rodapé não aparece se as atualizações de notas estiverem desativadas ou se você iniciou o Claude Code na sua pasta pessoal.
- As atualizações de cache só ajudam onde o cache dura uma hora, então com chave de API desative-as com
/handoff refresh off. - Execute
/handoffpara ver o estado atual, incluindo a última falha e o caminho do arquivo de notas.
Perguntas frequentes
- O ctx-handoff gasta minha cota do Claude?
- Sim. Ele não tem servidores próprios, mas faz requisições ao modelo pelo seu login do Claude Code. Uma atualização de cache é uma requisição minúscula, uma atualização de notas envia só a parte nova da conversa ao Sonnet 5.5 com esforço baixo, e um handoff completo é uma requisição.
- Onde ele grava arquivos?
- As notas do projeto vão para ctx-handoff.md, na pasta memory do espaço de trabalho dentro de ~/.claude/projects/ (ou CLAUDE_CONFIG_DIR). O resto fica no armazenamento próprio do plugin. Antes de apagar uma nota pelo painel, o arquivo antigo recebe um backup.
- Ele limpa minha conversa sozinho?
- Só se você ativar auto_handoff, que vem desativado. Com ele desativado, o compact do próprio Claude Code cuida de um contexto cheio. Os handoffs de ausência são salvos sem limpar, e você decide se continua a partir deles.
- Ele pode bloquear as chamadas de ferramentas do Claude?
- Apenas por meio de guardas. O mod as rascunha a partir de regras que você repete, e nada vale até você aprovar uma guarda. Separadamente, uma verificação ativada por padrão pode segurar uma vez uma resposta de «pronto» se arquivos foram editados e nada foi testado.
- Como desativo as partes em segundo plano?
- Use /handoff distill off para as notas, /handoff refresh off para as atualizações de cache, ou abra /handoff panel e use a aba de configurações para os avisos e o idioma de resposta.
# Mods relacionados
DestaqueProject Sentinel
Faixa de status, handoff de contexto, cache de prompt e regras de permissão para execuções longas do Claude Code.
- acima do prompt
- painel
- spinner
- status
- notificação
- Lê arquivos
- Executa comandos
- Chama o modelo (usa sua cota)
- Intercepta chamadas de ferramentas
- Lê seus prompts
- Altera a interface
- Adiciona comandos/ferramentas
- Armazena dados
testado com v2.1.296
DestaqueCache Clock
Uma linha do cache de prompt sob a barra de status: tempo restante, taxa de acertos e tokens recacheados a frio.
- status
- Lê arquivos
- Grava arquivos
- Executa comandos
- Adiciona comandos/ferramentas
testado com v2.1.296
DestaqueWhere Am I
Um resumo acima do prompt do Claude Code: objetivo, o que acontece agora, o que espera por você e o próximo passo.
- acima do prompt
- Lê arquivos
- Chama o modelo (usa sua cota)
- Intercepta chamadas de ferramentas
- Lê seus prompts
- Altera a interface
- Adiciona comandos/ferramentas
testado com v2.1.303