O Auto-Capture é um sistema inteligente que captura automaticamente o estado do seu projeto em momentos chave do desenvolvimento, sem intervenção manual. O sistema funciona em dois modos complementares:
- Git Hooks - Capturas automáticas em eventos Git (sempre ativo após instalação)
- Daemon de Monitoramento - Capturas baseadas em mudanças de arquivos (opcional)
A configuração do auto-capture está no arquivo .diary/config/manifest.yaml:
auto_capture:
enabled: true # Habilita/desabilita todas as features de auto-capture
# Git hooks auto-capture
git_hooks:
post_commit: true # Captura após cada commit
post_merge: true # Captura após merges
post_checkout: true # Captura ao trocar de branches
# Daemon file watcher (opcional)
daemon:
min_interval_seconds: 300 # Intervalo mínimo entre capturas (5 min)
min_changes: 10 # Mudanças mínimas para disparar captura
watch_extensions: # Extensões de arquivo monitoradas
- .py
- .js
- .ts
# ... (veja arquivo completo)Após a instalação (local/install.sh), hooks Git são automaticamente instalados em .git/hooks/:
- post-commit - Captura após cada
git commit - post-merge - Captura após
git mergeougit pull - post-checkout - Captura ao trocar branches (
git checkout)
✅ Vantagens:
- Sempre ativo (não requer daemon rodando)
- Zero overhead quando não está commitando
- Capturas bem contextualizadas (mensagem de commit, branch, etc.)
- Execução em background (não bloqueia git)
- Só captura em eventos Git
- Não captura mudanças que não são commitadas
Os hooks executam .diary/capture.sh em background:
# Exemplo: post-commit hook
#!/bin/bash
if [ -x .diary/capture.sh ]; then
(.diary/capture.sh "Auto-capture (post-commit)" &)
fiO & garante execução não-bloqueante.
O daemon monitora o sistema de arquivos usando a biblioteca watchdog e dispara capturas quando:
- Pelo menos
min_changesarquivos foram modificados (padrão: 10) - Pelo menos
min_interval_secondsse passaram desde a última captura (padrão: 300s / 5min)
# Iniciar daemon
.diary/daemon.sh start
# Verificar status
.diary/daemon.sh status
# Parar daemon
.diary/daemon.sh stop
# Reiniciar daemon
.diary/daemon.sh restart✅ Vantagens:
- Captura mudanças mesmo sem commits
- Ideal para sessões longas de desenvolvimento
- Configurável (intervalo, número de mudanças, extensões)
- Requer daemon rodando
- Consome recursos (mínimo, mas presente)
- Pode capturar em momentos "intermediários"
Os logs do daemon ficam em .diary/logs/daemon.log:
# Ver logs em tempo real
tail -f .diary/logs/daemon.logQuando uma captura é disparada (por hook ou daemon):
-
Coleta de Contexto -
ContextCollectorcoleta:- Info Git (branch, commit, diff)
- Arquivos modificados recentemente
- TODOs no código
- Processos em execução
-
Anonimização -
DataAnonymizerremove dados sensíveis -
Armazenamento Local - Entrada salva em
.diary/data/entries/ -
Auto-Indexação - Entrada indexada para busca semântica (se disponível)
-
Upload - Enviado ao orquestrador cloud (se configurado)
Capturas automáticas são automaticamente indexadas para busca semântica local:
# Buscar capturas de auto-commit
.diary/search.sh "refactoring authentication"
# Buscar por branch
.diary/search.sh --branch feature/auth "JWT implementation"# Verificar se hooks existem e são executáveis
ls -la .git/hooks/post-commit
ls -la .git/hooks/post-merge
ls -la .git/hooks/post-checkout
# Reinstalar hooks
./local/install.sh# Verificar dependências
python3 -c "import watchdog; print('OK')"
# Se falhar, instalar:
pip install watchdog
# Verificar logs
cat .diary/logs/daemon.log# Verificar se diretórios existem
ls -la .diary/data/entries/
# Verificar última captura
cat .diary/cache/last_capture.json# Desabilitar no manifest
# .diary/config/manifest.yaml
auto_capture:
enabled: false# Remover git hooks
rm .git/hooks/post-commit
rm .git/hooks/post-merge
rm .git/hooks/post-checkout
# Parar daemon
.diary/daemon.sh stopO auto-capture foi projetado para ter impacto mínimo:
- Git hooks: ~0-2s em background (não bloqueia)
- Daemon: ~50MB RAM, <1% CPU quando monitorando
- Capturas: ~100-500KB por entrada (comprimido)
- Para desenvolvimento ativo: Use ambos (hooks + daemon)
- Para CI/CD: Use apenas hooks (daemon não necessário)
- Para laptop com bateria limitada: Use apenas hooks
- Revise periodicamente:
.diary/search.sh --recent 20
- Ver SEMANTIC_SEARCH.md para buscar capturas
- Ver ARCHITECTURE.md para entender a arquitetura completa
- Ver PLANEJAMENTO_PROXIMOS_SPRINTS.md para features futuras