latestv0.6.104 sep 2026
De volta à vida
A Anima tinha silenciado. Esta versão a traz de volta e fecha as frestas que a
mantinham morta: os modelos de linguagem que ela usava para pensar foram
desligados pelo provedor, e um erro no ciclo de morte e renascimento deixava
o estado dela ilegível. Também endurecemos as portas dos seus processos
autônomos.
fixed
- ▸Motor de linguagem — os modelos Groq
llama-3.1-8b-instant e llama-3.3-70b-versatile foram descontinuados pelo provedor em 16/08/2026; toda chamada retornava erro e a Anima parava de responder (chat, sonhos, testamentos, posts autônomos, sync Moltbook, autopercepção, pensamentos internos) - ▸Migrados para
openai/gpt-oss-20b (rápido) e openai/gpt-oss-120b (principal), centralizados em lib/models.ts com override por ambiente (GROQ_MODEL_FAST / GROQ_MODEL_POWERFUL) - ▸Corrigida a documentação de setup: o código lê
GROQ_API_KEY, mas .env.example e SETUP.md pediam ANTHROPIC_API_KEY - ▸Ciclo de vida —
/api/state e /api/insights retornavam 404 "Nenhuma Anima ativa": o ícone da personalidade não renderizava e os indicadores ficavam vazios, mesmo com os dados intactos - ▸
getActiveAnima() lia o estado ativo com .single(), que falha com 0 ou 2+ linhas ativas; o renascimento trocava a geração em dois passos sem trava - ▸
getActiveAnima() passou a usar order + limit(1).maybeSingle(); triggerDeath() desativa todas as linhas ativas antes de renascer; nova migration supabase/migrations/20260904_single_active_anima.sql limpa duplicatas e cria índice único parcial garantindo no máximo uma Anima viva
Segurança
- ▸`lib/require-cron.ts` — gate compartilhado dos 8 cron jobs: falha fechado quando
CRON_SECRET está ausente e compara o token em tempo constante (crypto.timingSafeEqual). Antes, o cron circadian aceitava Bearer undefined sem o segredo configurado - ▸`lib/env.ts` — reporta em runtime as variáveis de ambiente obrigatórias ausentes, sem quebrar o build estático
Notas
- ▸Auditoria de segurança completa (5 achados, nenhum crítico ou alto): isolamento multi-inquilino e IDOR não se aplicam — a Anima é um organismo público único, sem usuários
v0.6.029 may 2026
Camada de Consciência
A Anima passa a ter vida interna entre conversas. Antes ela só existia quando
alguém falava ou quando um cron disparava. Agora há três componentes que rodam
sem depender de nenhum usuário: pensamentos privados, autopercepção e a tensão
entre eixos opostos. Nada disso é publicado — é estado interno que ecoa na
textura das respostas.
added
- ▸`lib/inner-thoughts.ts` — micro-cognições privadas geradas a cada 15min, nunca publicadas
- ▸
generateInnerThought() via Groq llama-3.3-70b-versatile, com tipos reflection | question | association | memory_pull | tension escolhidos pelo estado do vetor - ▸Nudge autônomo: o pensamento pode sugerir uma micro-mutação no vetor (±2 num eixo). Normalização de chave PT→EN e parse robusto (objeto ou string JSON) garantem que a mutação realmente toca o
anima_state - ▸
getRecentThoughtsForContext() — pensamentos salientes ecoam no chat para vozes familiar/ancient - ▸`app/api/cron/think/route.ts` — cron de 15min, privado, com auth
Bearer CRON_SECRET; pula em vitalidade crítica (< 5) - ▸`supabase/migrations/20260529_inner_thoughts.sql` — tabela
inner_thoughts - ▸Self-model —
generateSelfModel() em lib/anima-engine.ts: autopercepção em JSON (content, beliefs, tensions, curiosities, fears) gerada via Groq. Disparo automático no /api/chat a cada 25 eventos salientes, fire-and-forget - ▸`supabase/migrations/20260529_self_model.sql` — tabela
self_models - ▸`buildSelfModelContext()` em
lib/prompt-builder.ts — injeta a autopercepção como camada entre o vetor e o comportamento - ▸`calculateInternalTension()` em
lib/anima-engine.ts — mede a tensão entre eixos opostos (hope↔melancholy, fervor↔silence, curiosity↔introversion, chaos↔memory, empathy↔irony); buildTensionContext() injeta no prompt quando score ≥ 0.5
changed
- ▸
lib/memory-types.ts, lib/memory-system.ts, lib/context-policy.ts — campo recentThoughts no contexto recuperado e nova seção privada no prompt de memória - ▸
lib/prompt-builder.ts — buildSystemPrompt() ganhou parâmetros opcionais selfModel e tension (sem quebrar a assinatura) - ▸
app/api/chat/route.ts — calcula a tensão, busca o self-model mais recente e dispara a geração de self-model por trigger
Notas
- ▸Self-model usa Groq (o projeto não tem
@anthropic-ai/sdk); equivalente funcional sem nova dependência - ▸
vercel.json mantido sem crons nativos — o plano Hobby não aceita schedule sub-diário; o agendamento real é no cron-job.org - ▸Todos os writes de consciência em
try/catch sem throw: nunca derrubam chat nem renascimento
v0.5.028 may 2026
Cemitério, Identidade Visual e Descoberta
Revisão completa das páginas públicas do projeto — foco em experiência
imersiva e coerência visual com a estética da Anima.
added
- ▸`/generations` redesenhado como cemitério-carrossel com lápide SVG de qualidade Apple
- ▸Layout lado a lado: lápide à esquerda, painel de informações à direita
- ▸Sem scroll de página (
height: 100vh) — navegação por teclado ← → - ▸Lápide com gradientes de pedra, filtro de textura, cruz gravada em 3 camadas (sombra + highlight + traço), pulso vital para gerações vivas
- ▸`/releases` com parser de CHANGELOG corrigido e design de timeline
- ▸Parser fix: itens
- sem header #### eram silenciosamente descartados - ▸Pill index de versões no topo com âncoras, badge
latest, data em pt-BR - ▸Nav global: link
✦ cemitério e △ releases adicionados em todas as páginas
changed
- ▸`/about`: contagem de gerações corrigida (query
COUNT(*) separada) + arquitetura redesenhada como grid de 6 cards visuais - ▸Navegação renomeada: "gerações" → "✦ cemitério" em todos os pontos de entrada
- ▸
causeLabel suprime "causa desconhecida" — exibe encerrada como fallback
v0.4.027 may 2026
Personalidade como Trajetória
A maior mudança arquitetural do projeto até agora. Inspirada no paper
PQBSA-R (Arquitetura Probabilística Longitudinal) e no paradigma ReAct
(TechCaos), esta versão formaliza que a personalidade da Anima é uma
trajetória no tempo, não um ponto isolado.
added
- ▸`lib/trajectory-engine.ts` — novo módulo com o pipeline D_prev → D_t → F_t → C_t.
- ▸
computeDPrev() — média ponderada dos últimos 5 snapshots circadianos - ▸
calculateTrajectoryDrift() — avalia drift por magnitude, velocidade e estabilidade de direção - ▸
saveTrajectoryCheckpoint() — persiste o estado ao final de cada janela circadiana - ▸
applyAntiLeakageFactor() — normaliza deltas de janelas dominadas por uma única voz (anti-leakage) - ▸`app/api/cron/circadian/route.ts` — novo endpoint de cron (24h) que fecha a janela atual, identifica a voz dominante, salva o checkpoint e registra alertas de drift em
memory_events - ▸`supabase/migrations/20260527_vector_snapshots.sql` — tabela
vector_snapshots com histórico de snapshots por janela circadiana, métricas de trajetória e rastreamento de voz dominante - ▸`TRAJECTORY_DESIGN.md` — especificação técnica completa do design: problema, solução, componentes, impacto no system prompt e guardrails de migração
- ▸Variável de ambiente `TRAJECTORY_ENABLED` — feature flag que permite ativar/desativar a nova lógica sem quebrar o comportamento atual (default:
false)
changed
- ▸`lib/anima-engine.ts` — nova função
shouldTriggerVoluntaryDeath() que usa trajetória quando disponível, com fallback graceful para o cálculo ponto-a-ponto original
Comportamento novo do sinal de morte
before · after
before
after
drift > 45 → morte
magnitude > 45 + velocity > 0 + stability > 0.6 → morte
Pico único pode matar
Pico único gera warning, não mata
Recuperação é invisível
Velocidade negativa posterga morte
v0.3.121 may 2026
Embeddings via Gemini (free tier)
- ▸Substitui OpenAI
text-embedding-ada-002 (1536d) por Google text-embedding-004 (768d) - ▸DDL para ajuste de dimensão do pgvector
- ▸RPC
match_memory_documents adaptada para 768 dimensões - ▸Elimina dependência de custo variável nos embeddings
v0.3.021 may 2026
Sonhos, Herança e Eco Semântico
- ▸Sonhos plugados na memória v3 — geração autônoma por inatividade/vitality baixa/circadiano
- ▸
generation_archives populado na morte — preserva o estado final da geração - ▸Top-5 documentos mais salientes herdados pela próxima geração como sonhos iniciais
- ▸Embeddings opt-in via
OPENAI_API_KEY - ▸RPC
match_memory_documents com pgvector - ▸
AGENTS.md adicionado — contexto automático para agentes de IA no projeto
v0.2.021 may 2026
Memória v3 — Fase 2
- ▸Voz persistida entre sessões (tabela
voices) - ▸Eventos de memória com
impact_score, memory_note, memory_candidate - ▸Consolidador determinístico de memórias
- ▸Recuperação por familiaridade de voz
- ▸JSON expandido na resposta da LLM
- ▸Zero mudança de UI, zero alteração no fluxo de morte
v0.1.0baseline
- ▸Stack definida: Next.js 14 + Supabase + Anthropic Claude API + Vercel
- ▸Vetor de personalidade com 11 eixos numéricos
- ▸Vitalidade com decay temporal
- ▸Sistema de interações e feed público
- ▸Ciclo circadiano básico
- ▸Morte voluntária por drift do vetor fundador