Skip to main content
O ChatCLI implementa um sistema de detecção de staleness de arquivos que rastreia o estado dos arquivos entre operações de leitura e escrita. Quando um arquivo e modificado externamente (pelo usuário, IDE, ou outro processo) após o agente te-lo lido, o sistema emite um aviso antes de sobrescrever — prevenindo a perda silenciosa de alteracoes externas.

Como Funciona

O tracker registra o estado de cada arquivo após leitura e verifica antes de escrita:
1

Leitura (RecordRead)

Após cada operação read bem-sucedida, o tracker registra:
  • mtime: timestamp de modificacao do arquivo
  • SHA-256: hash criptografico do conteúdo completo
  • Size: tamanho em bytes
  • ReadAt: timestamp de quando a leitura ocorreu
2

Verificação (CheckStaleness)

Antes de cada operação write ou patch, o tracker verifica se o arquivo mudou.
3

Aviso ou Prosseguimento

Se o arquivo mudou, um aviso e injetado no resultado da ferramenta para que o modelo decida como proceder. Se não mudou, a escrita prossegue normalmente.

Verificação em 2 Etapas

A verificação usa uma estrategia otimizada de fast path seguida de full hash:
Primeiro, o tracker compara o mtime e size atuais com os registrados. Se ambos sao identicos, o arquivo não esta stale (retorno imediato, sem I/O adicional).
Essa otimização evita leitura e hash do arquivo na maioria dos casos, mantendo o overhead próximo de zero.

Mensagem de Aviso

Quando um arquivo stale e detectado, o sistema gera um aviso formatado:
O aviso instrui o modelo a:
  1. Re-ler o arquivo antes de fazer alteracoes
  2. Entender que continuar sobrescrevera as alteracoes externas

Cenarios Cobertos


Normalizacao de Aspas

O ChatCLI também normaliza aspas Unicode em arquivos de código para prevenir erros de compilacao causados por aspas tipograficas geradas por LLMs: A normalizacao e aplicada automaticamente em 60+ tipos de arquivo de código (.go, .py, .js, .ts, .java, .rs, .sh, .sql, .json, .yaml, etc.) e em nomes de arquivo especiais (Makefile, Dockerfile, .gitignore, etc.).
Arquivos de documentação (.md, .txt, .rst) não sao normalizados para preservar a tipografia intencional.

Ciclo de Vida do Tracking


Próximos Passos

Plugin @coder

Referência completa das operações de read/write/patch.

Permissoes

Sistema de permissões que protege operações de escrita.

Recuperação de JSON

Como argumentos de ferramenta sao corrigidos antes da execução.

Segurança do Coder

Validação de caminhos e protecoes de segurança.