Como Funciona
O tracker registra o estado de cada arquivo apos leitura e verifica antes de escrita:Leitura (RecordRead)
Apos cada operacao
read bem-sucedida, o tracker registra:- mtime: timestamp de modificacao do arquivo
- SHA-256: hash criptografico do conteudo completo
- Size: tamanho em bytes
- ReadAt: timestamp de quando a leitura ocorreu
Verificacao (CheckStaleness)
Antes de cada operacao
write ou patch, o tracker verifica se o arquivo mudou.Verificacao em 2 Etapas
A verificacao usa uma estrategia otimizada de fast path seguida de full hash:- Etapa 1: mtime + size (rapida)
- Etapa 2: SHA-256 (completa)
Primeiro, o tracker compara o
mtime e size atuais com os registrados. Se ambos sao identicos, o arquivo nao esta stale (retorno imediato, sem I/O adicional).Mensagem de Aviso
Quando um arquivo stale e detectado, o sistema gera um aviso formatado:- Re-ler o arquivo antes de fazer alteracoes
- Entender que continuar sobrescrevera as alteracoes externas
Cenarios Cobertos
| Cenario | Resultado | Descricao |
|---|---|---|
| Arquivo nao modificado | Nao stale | mtime e size identicos |
touch sem edicao | Nao stale | mtime muda mas SHA-256 identico |
| Edicao real por usuario/IDE | Stale | mtime e hash diferentes |
| Arquivo deletado | Stale | Arquivo nao existe mais |
| Arquivo nunca lido | Nao stale | Sem registro para comparar |
| Erro ao verificar | Nao stale | Assume nao-stale para nao bloquear |
Normalizacao de Aspas
O ChatCLI tambem normaliza aspas Unicode em arquivos de codigo para prevenir erros de compilacao causados por aspas tipograficas geradas por LLMs:| Caracter | Descricao | Substituicao |
|---|---|---|
' ' | Aspas simples curvas | ' |
" " | Aspas duplas curvas | " |
' | Primo | ' |
" | Duplo primo | " |
<< >> | Aspas angulares | << >> |
.go, .py, .js, .ts, .java, .rs, .sh, .sql, .json, .yaml, etc.) e em nomes de arquivo especiais (Makefile, Dockerfile, .gitignore, etc.).
Arquivos de documentacao (
.md, .txt, .rst) nao sao normalizados para preservar a tipografia intencional.Ciclo de Vida do Tracking
Proximos Passos
Plugin @coder
Referencia completa das operacoes de read/write/patch.
Permissoes
Sistema de permissoes que protege operacoes de escrita.
Recuperacao de JSON
Como argumentos de ferramenta sao corrigidos antes da execucao.
Seguranca do Coder
Validacao de caminhos e protecoes de seguranca.