> ## Documentation Index
> Fetch the complete documentation index at: https://chatcli.edilsonfreitas.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Controle de Conversa

> Comandos /compact e /rewind para gerenciar o contexto da conversa: compactar histórico inteligentemente e voltar a pontos anteriores da conversa.

O ChatCLI oferece dois mecanismos poderosos para controle do histórico de conversa: **compactação inteligente** para reduzir o tamanho do contexto sem perder informações críticas, e **rewind** para restaurar a conversa a um ponto anterior.

***

## /compact — Compactação de Contexto

O comando `/compact` reduz o tamanho do histórico de conversa para que ele caiba dentro da janela de contexto do modelo, preservando as informações mais importantes.

### Modos de Uso

<Tabs>
  <Tab title="Automático">
    Sem argumentos, executa o pipeline de compactação de 3 níveis:

    ```bash theme={"system"}
    /compact
    ```

    O pipeline automático segue está ordem:

    1. **Nivel 1 — Trimming** (quase sem perda): remove tags `<reasoning>`, compacta XML, elimina duplicatas
    2. **Nivel 2 — Sumarização estruturada**: extrai fatos (arquivos lidos, modificados, comandos executados, decisoes) em formato bullet point
    3. **Nivel 3 — Truncamento de emergencia**: descarta mensagens do meio, mantendo system prompt e mensagens recentes

    Durante o pipeline, o terminal exibe **feedback ao vivo** de cada fase (não trava mais em silêncio como antes):

    ```text theme={"system"}
    │ 📦 Compactando histórico (23 msgs, 4.2 MB → alvo 2.9 MB)
    │ 🧹 Trim: removendo reasoning/dedup (sem LLM)…
    │ 🧠 Resumindo mensagens antigas via LLM (pode levar 30-90s — ESC cancela)…
    │ ✓ Resumo aplicado (23 → 9 msgs, 4.2 MB → 1.8 MB)
    ```

    Pressione **ESC** ou **Ctrl+C** para abortar o Nivel 2 (LLM). O cancelamento propaga via contexto e preserva o histórico intacto (sem cair para Nivel 3 cegamente).
  </Tab>

  <Tab title="Guiado">
    Com uma instrução, você diz a IA **o que preservar**:

    ```bash theme={"system"}
    /compact preservar a arquitetura do modulo auth e os erros encontrados
    ```

    ```bash theme={"system"}
    /compact manter todos os caminhos de arquivo e decisoes de refatoracao
    ```

    O modo guiado envia sua instrução como diretiva para a IA sumarizadora, garantindo que as informações que você considera críticas sejam mantidas na compactação.
  </Tab>
</Tabs>

### Como Funciona

```mermaid theme={"system"}
flowchart TD
    A["/compact instrução"] --> B{Instrução fornecida?}
    B -->|Sim| C[Guided Compact]
    B -->|Não| D[Auto Compact - 3 níveis]

    C --> E[Separa: system + meio + recentes]
    E --> F[LLM sumariza o meio com instrução]
    F --> G[Reconstroi: system + resumo + recentes]

    D --> H[Nivel 1: Trim]
    H --> I{Cabe no budget?}
    I -->|Sim| J[Pronto]
    I -->|Não| K[Nivel 2: Sumarização]
    K --> L{Cabe no budget?}
    L -->|Sim| J
    L -->|Não| M[Nivel 3: Truncamento]
    M --> J
```

### Preservacao de Mensagens

Em ambos os modos:

* **System messages** são sempre preservadas integralmente
* **Ultimas mensagens** (4 no guiado, 10 no automático) são mantidas verbatim
* Apenas o **bloco do meio** e sumarizado ou removido
* Metadados indicam que a mensagem e um resumo (`IsSummary: true`)

### Exemplo de Saida

Após compactação, uma mensagem de resumo substitui as mensagens do meio:

```text theme={"system"}
[GUIDED COMPACT — covering 42 earlier messages | instruction: "preservar arquitetura auth"]

## Files Read
- pkg/auth/handler.go (120 lines) - HTTP handlers for authentication
- pkg/auth/middleware.go (85 lines) - JWT validation middleware

## Files Modified
- pkg/auth/handler.go:45-60 - Added refresh token endpoint

## Key Decisions
- JWT tokens expire in 15 minutes with refresh token rotation
- Middleware validates at gateway level, not per-service

## Errors & Resolutions
- "token expired" panic in middleware → added nil check on claims
```

***

## /rewind — Voltar no Tempo

O `/rewind` permite restaurar a conversa a um ponto anterior, desfazendo mensagens e respostas indesejadas.

### Como Funciona

O ChatCLI salva automaticamente **checkpoints** da conversa antes de cada chamada ao LLM. Você pode voltar a qualquer um desses pontos.

```bash theme={"system"}
/rewind
```

Isso exibe um menu interativo:

```text theme={"system"}
  REWIND — Select a checkpoint to restore
  ─────────────────────────────────────────
  [1]  14:32:05  28 msgs  implemente o endpoint de refresh token
  [2]  14:28:12  24 msgs  corrija o bug no middleware JWT
  [3]  14:25:01  20 msgs  análise o modulo de autenticação
  [4]  14:20:33  16 msgs  (start)

  Select [1-4] or (q)uit:
```

Selecione o número do checkpoint para restaurar. O histórico e revertido ao estado exato daquele ponto, incluindo todas as mensagens e contexto.

### Atalho de Teclado: Esc+Esc

Pressione **Esc** duas vezes rapidamente (menos de 500ms entre pressionamentos) para abrir o menu de rewind diretamente do prompt, sem precisar digitar `/rewind`.

### Limites

* Máximo de **20 checkpoints** são mantidos (os mais antigos são descartados)
* Checkpoints existem apenas na sessão atual (não são persistidos em disco)
* Ao fazer rewind, checkpoints posteriores ao ponto restaurado são removidos

***

## Histórico Unificado

O ChatCLI usa um **unico array de histórico** compartilhado entre todos os modos (chat, agent, coder). Isso significa que:

* A troca entre `/agent`, `/coder` e chat **preserva todo o contexto**
* A IA não "esquece" o que foi feito em outro modo
* `/compact` e `/rewind` operam sobre o histórico completo, independente do modo

<Info>
  Sessões salvas com versões anteriores do ChatCLI que usavam historicos separados por modo são automaticamente convertidas ao carregar — os historicos são mesclados em ordem cronologica.
</Info>

***

## Quando Usar

<CardGroup cols={2}>
  <Card title="/compact (automático)" icon="compress">
    Quando o ChatCLI avisar que o contexto está grande, ou quando perceber respostas degradadas.
  </Card>

  <Card title="/compact <instrução>" icon="crosshairs">
    Quando você sabe exatamente quais informações são críticas e não podem ser perdidas na compactação.
  </Card>

  <Card title="/rewind" icon="rotate-left">
    Quando a IA tomou um caminho errado, gerou código incorreto, ou você quer tentar uma abordagem diferente.
  </Card>

  <Card title="Esc+Esc" icon="keyboard">
    Atalho rápido para rewind sem sair do fluxo de digitacao.
  </Card>
</CardGroup>

***

## Próximos Passos

<CardGroup cols={2}>
  <Card title="Gerenciamento de Sessões" icon="floppy-disk" href="/pt/features/session-management">
    Salve e reutilize conversas entre projetos.
  </Card>

  <Card title="Bootstrap e Memória" icon="memory" href="/pt/features/bootstrap-memory">
    Personalize a IA e mantenha contexto de longo prazo entre sessões.
  </Card>
</CardGroup>
