⏰ Cron Jobs de Ingestão
Automação elimina a dependência de memória humana. Configure cron jobs no SOUL.md para que o vault se mantenha atualizado em segundo plano — sem precisar lembrar de ingerir manualmente.
⏰ Schedule completo de automações
## Cron Jobs
cron:
# Verificar inbox toda hora
- schedule: "0 * * * *"
name: check_inbox
action: |
count = filesystem.count("raw/inbox/*.md")
if count > 0:
exec("claude ingest raw/inbox/")
notify(f"✓ {count} docs ingeridos")
# Briefing diário às 8h
- schedule: "0 8 * * *"
name: daily_briefing
action: send_daily_briefing
channel: telegram
# Lint semanal domingo 9h
- schedule: "0 9 * * 0"
name: weekly_lint
action: run_lint_report
channel: telegram
# Export de conversas às 23h
- schedule: "0 23 * * *"
name: export_chats
action: export_to_raw_inbox
#!/usr/bin/env python3
# scripts/check_inbox.py
import os
import subprocess
from pathlib import Path
VAULT = Path("/home/user/vault")
INBOX = VAULT / "raw" / "inbox"
def check_and_ingest():
pending = list(INBOX.glob("*.md"))
if not pending:
return # nada a fazer
print(f"📥 {len(pending)} docs pendentes")
result = subprocess.run(
["claude", "ingest", str(INBOX)],
cwd=VAULT,
capture_output=True,
text=True
)
if result.returncode == 0:
print("✓ Ingestão concluída")
# Move docs processados para raw/processed/
for doc in pending:
doc.rename(VAULT / "raw" / "processed" / doc.name)
else:
print(f"✗ Erro: {result.stderr}")
if __name__ == "__main__":
check_and_ingest()
🐙 Integração GitHub → Wiki via OpenClaw
Cada PR mergeado carrega decisões técnicas e contexto que devem estar no segundo cérebro. Com um webhook do GitHub para o OpenClaw, isso acontece automaticamente — sem esforço adicional.
🐙 Fluxo GitHub → raw/ → wiki/
## Webhooks
webhooks:
github_pr:
path: /webhook/github
secret: "${GITHUB_WEBHOOK_SECRET}"
events: ["pull_request"]
filter:
action: "closed"
merged: true
handler: |
pr = payload.pull_request
title = pr.title
body = pr.body or ""
diff_url = pr.diff_url
number = pr.number
repo = pr.base.repo.name
# Cria arquivo raw
content = f"""
# PR #{number}: {title}
Repositório: {repo}
Merge: {pr.merged_at}
## Descrição
{body}
## Diff
{fetch(diff_url)[:3000]}
"""
path = f"raw/inbox/github-pr-{number}.md"
filesystem.write(path, content)
exec(f"claude ingest {path}")
notify(f"🐙 PR #{number} do {repo} adicionado ao wiki")
# Via ngrok (dev)
ngrok http 3000
# Via domínio próprio (prod)
# Configure seu DNS e nginx
Settings → Webhooks → Add webhook
URL: https://seu-dominio.com/webhook/github
Content type: application/json
Events: Pull requests
Crie e mergeie um PR de teste. Verifique raw/inbox/ e a notificação no Telegram.
🌅 Daily Briefing
O daily briefing transforma o segundo cérebro de passivo para ativo. Em vez de você consultar o wiki, ele vem até você toda manhã com o que é relevante para o dia.
Conteúdo do briefing diário
Total de páginas wiki, últimas adições, tamanho do raw/inbox/ pendente
Páginas wiki atualizadas nas últimas 24h, via leitura do log.md
Páginas não atualizadas há mais de X dias, inbox com muitos pendentes
Uma página wiki aleatória para revisão — mantém o conhecimento vivo
Exemplo de briefing real
☀️ Bom dia! Briefing de 09/04/2026
📊 Vault: 342 páginas wiki · 3 pendentes em inbox
🔄 Ontem: github-pr-147.md, python-async.md atualizados
⚠️ Atenção: 3 docs em raw/inbox/ aguardam ingestão
💡 Revise hoje: strangler-fig-pattern.md (adicionado há 14 dias, ainda não revisado)
Responda "ingerir" para processar o inbox agora.
## Ação: send_daily_briefing
actions:
send_daily_briefing:
steps:
# 1. Coletar métricas do vault
- name: stats
exec: |
wiki_count = filesystem.count("wiki/*.md")
inbox_count = filesystem.count("raw/inbox/*.md")
# 2. Páginas modificadas nas últimas 24h
- name: recent
exec: |
log_content = filesystem.read("log.md")
recent = extract_last_24h(log_content)
# 3. Páginas desatualizadas (>30 dias)
- name: stale
exec: |
stale = filesystem.find_older_than("wiki/", days=30)
# 4. Sugestão aleatória para revisão
- name: suggestion
exec: |
pages = filesystem.list("wiki/*.md")
suggestion = random.choice(pages)
# 5. Montar e enviar briefing
- name: send
message: |
☀️ *Briefing {date}*
📊 *Vault:* {wiki_count} páginas · {inbox_count} pendentes
🔄 *Recentes:* {recent}
⚠️ *Desatualizadas:* {stale}
💡 *Revise:* {suggestion}
channel: telegram
📅 Workflow de Revisão Semanal
O lint semanal é a operação de manutenção preventiva do wiki. O OpenClaw executa a auditoria automaticamente e entrega o relatório via Telegram para revisão humana — sem você precisar iniciar nada.
A diz X, B diz não-X sobre o mesmo conceito
Existe em wiki/ mas não referenciada em index.md
[[link]] que aponta para página inexistente
Acima de 3000 tokens — candidatas a divisão
Referenciados em múltiplas páginas mas sem entrada própria no wiki
🔧 Relatório Semanal de Wiki — 06/04/2026
✅ 342 páginas auditadas
⚠️ 2 contradições detectadas:
• python-async.md diz "use asyncio.run()" mas event-loop.md diz "evite asyncio.run() em libs"
• sql-patterns.md contradiz orm-patterns.md sobre lazy loading
🔗 3 links quebrados em wiki/
📄 1 página órfã: strangler-fig-advanced.md
Responda com o número de um problema para ver detalhes e opções de correção.
Após receber o relatório, você responde "1" para ver a contradição em detalhes. O agente mostra os dois trechos conflitantes e oferece opções: "corrigir A", "corrigir B", "marcar como ambos válidos (contexto diferente)". Você decide; o agente executa.
🚨 Notificações de Degradação
Degradação silenciosa é o maior inimigo do segundo cérebro. Sem alertas proativos, o wiki acumula problemas que só aparecem quando você mais precisa de uma informação — e ela está desatualizada ou errada.
## Alertas de Degradação
health_checks:
# Inbox acumulando
inbox_overload:
condition: "count(raw/inbox/) > 10"
severity: warning
message: "⚠️ {count} docs no inbox há mais de 24h"
cooldown: 4h
# Página crítica desatualizada
stale_critical_page:
condition: |
any(page.days_since_update > 30
for page in wiki/ if page.tag == "critical")
severity: error
message: "🔴 Página crítica desatualizada: {page}"
immediate: true
# Muitas páginas órfãs
orphan_explosion:
condition: "count(orphan_pages) > 5"
severity: warning
message: "📄 {count} páginas órfãs detectadas"
cooldown: 7d # máximo 1 alerta por semana
# Falha na ingestão
ingestion_failure:
condition: "last_ingestion.status == 'failed'"
severity: critical
message: "🔴 Falha na ingestão: {error}"
immediate: true
Notificação imediata + som. Falhas de ingestão, dados corrompidos.
Notificação com cooldown. Inbox cheio, páginas antigas.
Incluído no digest matinal. Sugestões de melhoria, estatísticas.
Responda "/snooze inbox 2h" para silenciar o alerta de inbox por 2 horas. Útil quando você está consciente do acúmulo e vai resolver depois.
🔄 Construindo seu Pipeline Completo
O pipeline completo conecta todos os módulos da trilha em um sistema coeso e autônomo. Do raw/ ao celular, do celular ao wiki, do wiki ao briefing matinal — o segundo cérebro que funciona enquanto você dorme.
🔄 Pipeline end-to-end
# SOUL.md — Segundo Cérebro (Produção)
## Identidade
name: Cleo
personality: "direto, conciso, cita fontes, nunca inventa"
language: pt-BR
## Knowledge Base
knowledge_base:
vault_root: /home/user/vault/
index_file: /home/user/vault/index.md
wiki_path: /home/user/vault/wiki/
inbox_path: /home/user/vault/raw/inbox/
max_context_tokens: 8000
cite_format: "↗ wiki/{filename}"
not_found: "Não tenho isso registrado. Criar tarefa?"
## Skills
skills:
- name: filesystem
read: ["/vault/wiki/", "/vault/index.md"]
write: ["/vault/raw/inbox/"]
audit_log: true
- name: cron
- name: http
allowed_hosts: ["api.github.com"]
- name: exec
allowed_commands: ["claude"]
## Channels
channels:
telegram: { token: "${TELEGRAM_TOKEN}", role: owner }
slack: { token: "${SLACK_TOKEN}", channel: "#wiki" }
## Cron
cron:
- "0 * * * *" → check_inbox
- "0 8 * * *" → daily_briefing (telegram)
- "0 9 * * 0" → weekly_lint (telegram + slack)
- "0 23 * * *" → export_chat_logs
## Webhooks
webhooks:
- path: /webhook/github
event: pull_request[merged]
action: save_to_inbox + ingest
## Alertas
health_checks:
inbox_overload: count > 10 → warning (cooldown 4h)
ingestion_fail: status=fail → critical (imediato)
✓ Checklist de produção
- □OpenClaw rodando como serviço (pm2/systemd)
- □Backup do vault configurado (rclone/rsync diário)
- □Webhook GitHub registrado e testado
- □Primeiro daily briefing recebido
- □Primeiro lint semanal executado
- □Alertas de degradação configurados
- □Documentar o SOUL.md no próprio wiki
📈 Evolução incremental
Instalar, conectar Telegram, primeira consulta ao wiki
Ativar captura mobile + cron de ingestão horária
Daily briefing + alertas de degradação
Webhook GitHub + lint semanal + multi-canal