Como Funciona
O tracker registra o estado de cada arquivo após leitura e verifica antes de escrita: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
Verificação (CheckStaleness)
Antes de cada operação
write ou patch, o tracker verifica se o arquivo mudou.Verificação em 2 Etapas
A verificação 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 não 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 não modificado | Não stale | mtime e size identicos |
touch sem edicao | Não stale | mtime muda mas SHA-256 identico |
| Edicao real por usuário/IDE | Stale | mtime e hash diferentes |
| Arquivo deletado | Stale | Arquivo não existe mais |
| Arquivo nunca lido | Não stale | Sem registro para comparar |
| Erro ao verificar | Não stale | Assume não-stale para não bloquear |
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:| 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 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.