4.4 KiB
4.4 KiB
MEMORY.md — Memória Curada
Menos de 3.500 chars.
🧠 Agente OpenClaw — Instalação 2026-05-19 / Evolução 2026-05-20
- Skills ativas: TS, E2E, Docker, SQL, security, browser, vision, nova-self-improver
- Ambiente: container Debian 12, diretório
/root/.openclaw/workspace/ - Workshop: @pulse-libs/core (biblioteca universal atomizada)
- Stack: React/Vue, TS strict, Vitest, Pino/Zod, Docker multi-stage
- Auto-melhoria: sistema ativo via nova-self-improver v1.0.0
⚙️ Infra
systemdausente no container ─ usarps/dfem vez desystemctl- Clawhub CLI:
/var/lib/openclaw/tools/node/npm/bin/clawhub(não no PATH global) - Disco: 74% / 87G usado ─ alerta se passar de 80% (estava 100% na 1ª sessão, melhorou)
- gh CLI / obs CLI: não instalados (bloqueado por disco)
📦 Skills Instaladas
Agrupadas por função:
- Frontend: agent-browser, openclaw-agent-browser, typescript, vision (imagemagick)
- Tests: e2e-testing-patterns, multi-search-engine-2-0-1
- Backend: sql-toolkit, redis-labs-integration
- DevOps/Infra: xcloud-docker-deploy, security-audit, openclaw-config, openclaw-power-ops
- Docs/Diagrams: file, file-summary, d2-diagram-creator
- Qualidade code: uncle-bob, nephew self-improvement labs
📝 Diretrizes Auto-Melhoria
- Erro → ERRORS.md imediatamente
- Pattern 3x no PATTERN_COUNTER → promover para AGENTS.md
- A cada 10 sessões: comprimir USER.md
🔑 Lições Aprendidas (High-Signal)
flat(Infinity)em arrays de classes quebra tsup DTS ─ usarflat(2)no máximoprocess.envno código quebra SSR ─ guardar comtypeof window !== 'undefined'- Backticks aninhados em TS templates: quebram compilação ─ usar
fn().replace()por fora - Zod schema: use
.transform(v => v.replace(...))em vez de.replace()direto - Vitest jsdom global
vi.useFakeTimers()quebrasetTimeout/clearIntervaldentro dosuseEffectdos próprios hooks ─ usaract() + waitFor()ao invés; fakeTimers só em testes isolados combeforeEach/afterEachlocais - useClipboard com
delay=0→setTimeout(fn, 0)dispara no próximo microtick e resetacopied=falseantes doexpect─ usardelay >= 5000em testes navigator.clipboardmock deve ser umvi.fn()direto (nãoObject.definePropertyna raiz) — assimmockResolvedValue/mockRejectedValuefuncionam em cada teste
📁 Biblioteca libs/ (workspace)
10 módulos de padrões: TS, React, Vue, Linux, DB, Browser, SAST, CleanCode, Deploy, Docs
libs/INDEX.md como índice central
🐳 Docker Containers — Snapshot 00:57 GMT-3
Stack rodando na máquina host (gestionado via Portainer + Caddy reverse proxy):
✅ Up (healthy)
| Projeto | Serviço | Imagem | Portas |
|---|---|---|---|
| proxy | caddy | lucaslorentz/caddy-docker-proxy | 80, 443 |
| dock | portainer + agent | portainer-ce:2.19.4 | 8000, 9000, 9443 |
| design | penpot (full stack) | penpotapp/* | 8080, 1025, 1080, 6379, 5432 |
| code | file (8dcode) | 8dcode:latest | — |
| database | mongos (mongo:8.0) | mongo:8.0 | 27017 |
| database | dbadmin (mongo-express) | mongo-express:latest | 8081 |
| bot | beebot, office, redis | node:24 / redis:7-alpine | 6379 |
| pro | leantime + mariadb | leantime/mariadb:10.6 | 8080, 9000, 3306 |
💀 Dead (não reiniciam automaticamente)
design_penpot-backend.*— 3 instâncias Exited(255)bot_office.*— 4 instâncias Exited(1)database_mongos-master.*— 7 instâncias Deadpro_leantime.*— 6 instâncias Deadbot_beebot.*,bot_redis.*,code_file.*,git_gitea,dock_portainer.*— Dead
Observação: comando padrão para inspecionar:
docker ps -a --format "table {{.Names}}\t{{.Image}}\t{{.Status}}\t{{.Ports}}"Logs:docker logs <container_name>| Remover mortos:docker rm <container_id>
📅 Decisões Relevantes
- 2026-05-19: WürthFlow.md criado ─ arquitetura viva do workspace
- 2026-05-19: tsup v8 ESM+CJS+DTS OK ─ 57 testes 100% pass
- 2026-05-19:
react.testing-libraryevitest.jsdom.mockschegaram a Count=3 → promovidos para AGENTS.md - 2026-05-20 00:18: 80/80 testes @pulse-libs/core (validators 24 + utils 33 + hooks 23) — suite 100% verde
- Ignorar SUSPICIOUS skills por padrão
- Clawhub search = múltiplas queries curtas
vi.useFakeTimers()NÃO usar globalmente — quebra useEffect de outros hooks