Spaces:
Runtime error
title: Agent Memory
emoji: 🧠
colorFrom: blue
colorTo: purple
sdk: docker
app_port: 7860
pinned: false
Agent Memory — Fase 1 (Baseline)
PoC de memória observável: chat à esquerda, armazém de memórias à direita.
Use case: bot de atendimento de provedor de internet/TV/telefonia que armazena falas de clientes (como foram ditas) para extrair aprendizados bons ou ruins e ajudar em conversas futuras — sem CRM, RAG ou integrações externas.
Estrutura
agent_memory/
├── main.py # FastAPI app
├── agent.py # Lógica do agente + OpenRouter API
├── memory_store.py # ChromaDB + decay heurístico
├── models.py # Pydantic models
├── seeds.py # Memórias seed (falas de clientes fictícios)
├── requirements.txt
├── Dockerfile # Deploy em Hugging Face Spaces
├── .env.example
└── static/
└── index.html # UI do armazém
Deploy no Hugging Face Spaces
1. Criar o Space
- Acesse huggingface.co/new-space
- Space name: ex.
agent-memory - SDK: Docker
- Hardware: CPU basic (grátis)
- Visibility: Public ou Private
2. Conectar ao GitHub (recomendado)
Na aba Settings do Space:
- Repository → conecte
EriqueSouza/agent_memory(branchclaude_agentoumain) - Faça push deste repositório com o
Dockerfilee o frontmatter YAML noREADME.md
Ou faça push direto para o git do Space:
git remote add space https://huggingface.co/spaces/SEU_USUARIO/agent-memory
git push space claude_agent:main
3. Configurar secrets
Em Settings → Repository secrets do Space, adicione:
| Secret | Valor |
|---|---|
OPENROUTER_API_KEY |
sua chave OpenRouter |
OPENROUTER_MODEL |
ex. nvidia/nemotron-3-super-120b-a12b |
OPENROUTER_API_URL |
https://openrouter.ai/api/v1 |
O Space reinicia automaticamente após salvar os secrets.
4. Acessar
URL pública: https://huggingface.co/spaces/SEU_USUARIO/agent-memory
A UI abre na raiz (/). O build inicial pode levar alguns minutos (download do modelo de embedding do ChromaDB).
Limitações no tier gratuito: disco efêmero — memórias criadas no chat somem se o Space reiniciar; os seeds são recarregados automaticamente.
Setup
1. Criar ambiente
conda create -n agent_memory python=3.11 -y
conda activate agent_memory
2. Instalar dependências
cd agent_memory
pip install -r requirements.txt
ChromaDB vai baixar um modelo de embedding (~80MB) na primeira execução.
3. Configurar API key
cp .env.example .env
# editar .env com sua OPENROUTER_API_KEY e OPENROUTER_MODEL
4. Rodar
python main.py
Abrir: http://localhost:8000
Se o armazém já foi populado com seeds de outro domínio, use o botão RESET na UI (ou
POST /api/memories/reset) para recarregar os seeds de atendimento ISP.
Tipos de memória
| Tipo | Cor | Decay/dia | Uso (neste use case) |
|---|---|---|---|
| episódica | azul | 0.03 | Situação específica que um cliente relatou |
| semântica | roxo | 0.005 | Padrão recorrente inferido de várias falas |
| estado | laranja | 0.15 | Algo que clientes disseram sobre condição atual (volátil) |
| procedimental | verde | 0.002 | Lição sobre o que ajudou ou irritou no atendimento |
As memórias seed em seeds.py incluem de propósito relatos bons, ruins, contraditórios e desatualizados para exercitar o armazém observável.
Features da UI
- Chat com o agente em português (atendimento ISP)
- Armazém mostra todas as memórias como cards com barra de relevância
- Cards piscam (dourado) quando a memória foi usada na última resposta
- Cards novos entram com animação verde
- Clique no pill
mem:idno chat para ir direto ao card no armazém - Filtros por tipo + ordenação por data/relevância/acessos
- Botão ✕ para arquivar memórias individuais
- Botão RESET para voltar ao estado seed
Fase 2 (próximo)
- Scoring por Information Gain (Shannon entropy)
- Shannon Surprise para detecção de obsolescência
- Decay functions substituídas por cálculo entrópico
- Logits do modelo para distribuição de decisão
- Comparação experimental Fase 1 vs Fase 2