3.9 KiB
3.9 KiB
Phase 4 Context — OpenClaw Embutido
Generated in --auto mode on 2026-03-26. All decisions auto-selected with recommended defaults.
Phase Goal
Skills emergentes criadas automaticamente a partir de padrões detectados em skill_executions.
Prior Context Applied
- Stack de IA: Ollama local via LiteLLM — usar
llama3.1:8bpara geração de drafts (leve, rápido) - Backend-first: API definida antes do frontend
- Auditoria imutável: todas as execuções registradas com SHA-256
- Schema já existe:
detected_patternseskill_suggestionsemshared/schema.ts— usar sem alterar
Decisions
1. O que constitui um "padrão"?
[auto] Mesma skill executada ≥3 vezes em 30 dias com confiança ≥80%
- Fonte de dados: tabela
skill_executions - Agrupamento:
skillId + userId(por usuário, não global) - Confiança calculada como:
(frequency / max_frequency_in_window) * 100 - Janela:
lastSeenAt - firstSeenAt ≤ 30 dias - Thresholds alinhados com o roadmap: min 3 ocorrências, 30 dias, 80% confiança
2. Trigger do PatternDetector
[auto] Cron job a cada hora (setInterval no servidor Node.js)
- Sem dependência de infraestrutura externa (sem Redis, sem Bull)
- Ao iniciar, PatternDetector registra no startup do servidor
- Execuções recentes analisadas em lote; padrões gravados em
detected_patterns - Se padrão já existe (mesmo skillId + userId): atualiza frequency + lastSeenAt
3. Geração do body da skill emergente
[auto] AI via llama3.1:8b (LiteLLM) gera o body do DRAFT
- Ao atingir threshold: PatternDetector cria entrada em
skill_suggestions(status:pending) - Skill DRAFT gerada automaticamente em
arcadia_skills(status:draft, source:openclaw) - Body gerado via prompt para llama3.1:8b descrevendo o padrão detectado
- DRAFT aguarda aprovação — não é executável até ser
published
4. Widget de notificação
[auto] Badge no header global + painel slide-in
- Badge no ícone de notificações existente no header (sem criar novo componente de header)
- Ao clicar: slide-in panel lateral mostrando lista de sugestões pendentes
- Cada sugestão mostra: nome sugerido, padrão detectado, frequência, confiança, body preview
- Ações inline: "Aceitar" → promove para skill publicada | "Rejeitar" → status
rejected
5. Aprovação — onde?
[auto] Tab "Sugestões" em /skills (página existente) — Dev Center completo na Phase 6
- Sem criar nova rota — adicionar tab na página
/skillsjá existente - Tab lista
skill_suggestionscom statuspending - Fluxo: aceitar → cria skill publicada a partir do DRAFT | rejeitar → arquiva sugestão
- Dev Center completo (Phase 6) herdará esse fluxo
Reusable Assets Identified
shared/schema.ts—detectedPatterns,skillSuggestionsjá definidos (Phase 1)server/skills/engine.ts— SkillEngine para criar DRAFT skills programaticamenteserver/skills/routes.ts— rota/api/skillsexistente, adicionar sub-rotas de sugestõesserver/skills/versioning.ts— SHA-256 audit logging (reusar padrão)client/src/pages/BiWorkspace.tsx— referência de como adicionar tabs a uma página existentedocker/litellm-config.yaml— llama3.1:8b já configurado como Tier 2
Scope Boundary
Incluído nesta fase:
- PatternDetector backend (cron + análise de skill_executions)
- Geração de DRAFT via AI
- Widget de notificação + slide-in
- Tab "Sugestões" em /skills com aprovação/rejeição
Fora de escopo (phases futuras):
- Dev Center completo (Phase 6)
- Detecção de padrões em outras fontes além de skill_executions
- Pattern sharing entre tenants
Plan Breakdown Suggested
- 04-01: PatternDetector service (backend) — cron, análise, gravação em detected_patterns + skill_suggestions + DRAFT creation via AI
- 04-02: API routes + frontend widget (badge + slide-in) + tab "Sugestões" em /skills