O sistema de bootstrap e memoria esta totalmente conectado ao fluxo de system prompt. Os arquivos sao carregados automaticamente e injetados em todas as interacoes — tanto no modo chat quanto nos modos
/agent e /coder.Arquivos Bootstrap
Os arquivos bootstrap sao documentos Markdown carregados automaticamente no system prompt do agente. Eles definem quem o assistente e, como ele se comporta e quais regras deve seguir.Arquivos Suportados
O ChatCLI carrega exatamente 5 arquivos bootstrap, nesta ordem. Todos sao opcionais — se nao existirem, sao simplesmente ignorados:| Arquivo | Proposito | Quando usar |
|---|---|---|
AGENTS.md | Definicoes de sub-agentes e seus papeis | Quando voce quer instruir o orquestrador sobre quais agents existem e como usa-los |
SOUL.md | Personalidade, tom e estilo do assistente | Para definir “quem” e o assistente — como ele fala, pensa e se comporta |
USER.md | Preferencias e contexto do usuario/projeto | Para informar o stack, convencoes, ferramentas preferidas e contexto do projeto |
IDENTITY.md | Identidade e capacidades do agente | Para definir “o que” o assistente e — nome, capacidades, limitacoes |
RULES.md | Regras e restricoes explicitas | Para guardrails rigidos — o que ele DEVE e NAO DEVE fazer |
Prioridade de Carregamento
Os arquivos sao buscados em dois niveis, com o workspace tendo prioridade:
Se o mesmo arquivo existe em ambos os niveis, o do workspace prevalece. Arquivos globais servem como fallback.
Exemplos Detalhados
- SOUL.md
- USER.md
- IDENTITY.md
- RULES.md
- AGENTS.md
Define personalidade e tom. Coloque em
~/.chatcli/SOUL.md (global) ou ./SOUL.md (projeto):Onde Colocar os Arquivos
Cache Inteligente
Os arquivos bootstrap usam cache baseado em mtime (modification time):- Na primeira leitura, o conteudo e cacheado em memoria
- Leituras subsequentes verificam se o mtime mudou
- Se o arquivo foi modificado, o cache e invalidado automaticamente
IsStale()verifica se algum arquivo mudou desde o ultimo carregamento
Memoria Persistente
O sistema de memoria mantem contexto entre sessoes do ChatCLI, permitindo que o agente “lembre” de fatos, decisoes e padroes ao longo do tempo.Estrutura de Armazenamento
Toda a memoria fica em~/.chatcli/memory/:
As notas diarias ficam diretamente em subdiretorios
YYYYMM/ dentro de ~/.chatcli/memory/, nomeadas como YYYYMMDD.md. Nao existe subdiretorio daily/.MEMORY.md — Memoria de Longo Prazo
O~/.chatcli/memory/MEMORY.md armazena fatos persistentes que o agente recebe em toda interacao:
Notas Diarias — Journaling Temporal
As notas diarias registram o que aconteceu em cada dia. O ChatCLI carrega automaticamente as ultimas 3 notas no prompt. Cada entrada recebe um timestamp automatico (hora:minuto):Como as Memorias sao Criadas
As memorias sao gravadas automaticamente por um worker em background. O usuario nao precisa fazer nada.Anotacao Automatica (Background Memory Worker)
O ChatCLI roda um worker em background que analisa periodicamente o historico da conversa e usa a IA para extrair anotacoes:- Apos cada resposta da IA (em qualquer modo: chat, agent, coder), o worker e “cutucado”
- Se houver 4+ novas mensagens desde a ultima extracao e pelo menos 2 minutos desde a ultima execucao, o worker dispara
- O worker envia as mensagens novas para a IA com um prompt de extracao estruturada
- A IA retorna dois blocos: DAILY (o que foi feito) e LONGTERM (fatos novos para lembrar)
- Os resultados sao gravados automaticamente em
MEMORY.mde na nota diaria - Um indicador sutil
⟳ updating memory...aparece brevemente (apenas quando o prompt esta ocioso)
O processo e totalmente transparente — voce nao precisa intervir. A IA decide sozinha o que e importante anotar. Fatos ja existentes no MEMORY.md nao sao duplicados.
Comando /memory — Consultar e Carregar Notas
Use /memory para ver e carregar anotacoes:
| Subcomando | Descricao |
|---|---|
/memory ou /memory today | Mostra as notas de hoje |
/memory yesterday | Mostra as notas de ontem |
/memory 2026-03-04 | Mostra notas de uma data especifica |
/memory week | Mostra notas dos ultimos 7 dias |
/memory longterm | Mostra o conteudo do MEMORY.md |
/memory list | Lista todos os arquivos de memoria |
/memory load <data> | Carrega notas de um dia no contexto da conversa atual |
/memory load e especialmente util para retomar trabalho de dias anteriores:
O que vai no MEMORY.md vs notas diarias?
O que vai no MEMORY.md vs notas diarias?
- MEMORY.md: Fatos estaveis e duradouros — decisoes arquiteturais, padroes do projeto, convencoes de equipe, preferencias confirmadas. Acumulativo ao longo de muitas sessoes.
- Notas diarias (
YYYYMM/YYYYMMDD.md): Registros temporais e especificos — o que foi feito naquele dia, erros encontrados, arquivos modificados, tarefas em progresso.
Posso editar as memorias manualmente?
Posso editar as memorias manualmente?
Sim! Os arquivos sao Markdown puro — edite com qualquer editor:As alteracoes sao captadas automaticamente na proxima interacao (cache invalida por mtime).
Quais informacoes a IA extrai automaticamente?
Quais informacoes a IA extrai automaticamente?
O worker de extracao pede para a IA identificar:Notas diarias (DAILY):
- Arquivos lidos, modificados ou criados (com paths)
- Comandos executados e seus resultados
- Erros encontrados e como foram resolvidos
- Tarefas completas ou em progresso
- Decisoes arquiteturais tomadas
- Padroes ou convencoes descobertos/estabelecidos
- Preferencias expressas pelo usuario
- Insights sobre estrutura do projeto
- Gotchas e restricoes tecnicas
O que e Injetado no Prompt
O ContextBuilder monta o seguinte bloco e injeta como prefixo do system prompt:Configuracao
- Variaveis de Ambiente
- Via Helm Chart
Boas Praticas
SOUL.md global, USER.md por projeto
Mantenha sua personalidade preferida globalmente e contexto tecnico por projeto.
MEMORY.md conciso
Mantenha apenas fatos estaveis e confirmados — nao sessao-especificos.
Notas diarias para journaling
Use para registrar decisoes, problemas resolvidos e contexto temporal.
Nao duplique CLAUDE.md
Se voce ja usa CLAUDE.md ou instrucoes do projeto, evite duplicar no bootstrap.
Otimizacao de Contexto (Cache de Prompt)
O ChatCLI otimiza o custo de tokens quando contextos estao attached usando tres estrategias complementares:System Prompt Unificado com Cache
Contextos attached via/context attach sao injetados como system prompt, nao como mensagens de usuario. Isso permite que providers apliquem cache automatico:
| Provider | Mecanismo | Desconto |
|---|---|---|
| Anthropic | cache_control: ephemeral | ~90% |
| OpenAI | Prompt caching automatico | ~50% |
| Context caching API | Variavel |
- Bootstrap (SOUL.md, USER.md, etc.)
- Memory (MEMORY.md + notas diarias)
- Contextos Attached (novo — antes era user message)
- K8s Watcher (se ativo)
Compactacao Inteligente
Mensagens de contexto injetado (/memory load, contextos summarizados) sao automaticamente truncadas durante a compactacao (Level 1 — trimming). Isso evita que contexto referencial antigo consuma budget precioso.
Visibilidade de Tokens
O comando/context attached agora mostra:
- Estimativa de tokens por contexto
- Total de tokens por turno
- Dicas de cache por provider
- Alertas para contextos muito grandes
/context attach, o feedback inclui a estimativa de custo por turno.