@fabioforest/openclaw 3.0.0 → 3.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/openclaw.js +37 -8
- package/lib/cli/assist.js +84 -0
- package/lib/cli/doctor.js +37 -3
- package/lib/cli/ide.js +218 -0
- package/lib/cli/init.js +135 -79
- package/lib/cli/inspect.js +58 -0
- package/lib/cli/orchestrate.js +43 -15
- package/lib/cli/update.js +113 -47
- package/lib/context/collector.js +104 -0
- package/lib/context/index.js +75 -0
- package/lib/router/match.js +107 -0
- package/lib/setup/config_wizard.js +2 -0
- package/package.json +2 -2
- package/templates/.agent/agents/workflow-automator.md +31 -0
- package/templates/.agent/rules/CONSENT_FIRST.md +24 -0
- package/templates/.agent/rules/DEV_MODE.md +18 -0
- package/templates/.agent/rules/ROUTER_PROTOCOL.md +22 -0
- package/templates/.agent/rules/WEB_AUTOMATION.md +52 -0
- package/templates/.agent/skills/content-sourcer/SKILL.md +48 -0
- package/templates/.agent/skills/context-flush/SKILL.md +30 -0
- package/templates/.agent/skills/drive-organizer/SKILL.md +40 -0
- package/templates/.agent/skills/linkedin-optimizer/SKILL.md +48 -0
- package/templates/.agent/skills/mission-control/SKILL.md +37 -0
- package/templates/.agent/skills/openclaw-assist/SKILL.md +30 -0
- package/templates/.agent/skills/openclaw-dev/SKILL.md +26 -0
- package/templates/.agent/skills/openclaw-inspect/SKILL.md +21 -0
- package/templates/.agent/skills/openclaw-installation-debugger/scripts/debug.js +16 -2
- package/templates/.agent/skills/openclaw-router/SKILL.md +34 -0
- package/templates/.agent/skills/openclaw-security/SKILL.md +21 -0
- package/templates/.agent/skills/site-tester/SKILL.md +49 -0
- package/templates/.agent/skills/smart-router/SKILL.md +116 -0
- package/templates/.agent/skills/web-scraper/SKILL.md +51 -0
- package/templates/.agent/state/MEMORY.md +8 -0
- package/templates/.agent/state/mission_control.json +34 -0
- package/templates/.agent/workflows/ai-capture.md +39 -0
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openclaw-assist
|
|
3
|
+
description: Assistente geral do OpenClaw AI OS. Menu de ações (instalar, reparar, melhorar, dev mode) com plan/apply e auditoria.
|
|
4
|
+
triggers:
|
|
5
|
+
- assist
|
|
6
|
+
- assistente
|
|
7
|
+
- help
|
|
8
|
+
- reparar
|
|
9
|
+
- melhorar
|
|
10
|
+
- instalar
|
|
11
|
+
- dev
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Assistente Geral
|
|
15
|
+
|
|
16
|
+
Sempre:
|
|
17
|
+
1) openclaw-inspect (read-only)
|
|
18
|
+
2) Propor opções
|
|
19
|
+
3) Gerar plano
|
|
20
|
+
4) Pedir autorização
|
|
21
|
+
5) Aplicar e auditar
|
|
22
|
+
|
|
23
|
+
Opções sugeridas:
|
|
24
|
+
- Instalação no projeto (IDE)
|
|
25
|
+
- Reparar instalação existente
|
|
26
|
+
- Atualizar templates com merge
|
|
27
|
+
- Criar skill/agent/workflow (Dev Mode)
|
|
28
|
+
- Mission Control (multiagentes)
|
|
29
|
+
- Smart Router (economia)
|
|
30
|
+
- Context Flush (economia)
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openclaw-dev
|
|
3
|
+
description: Modo Devin-like para criar features, skills, backend, frontend e UX/UI com consentimento e auditoria.
|
|
4
|
+
triggers:
|
|
5
|
+
- feature
|
|
6
|
+
- backend
|
|
7
|
+
- frontend
|
|
8
|
+
- ux
|
|
9
|
+
- ui
|
|
10
|
+
- endpoint
|
|
11
|
+
- api
|
|
12
|
+
- tela
|
|
13
|
+
- componente
|
|
14
|
+
- refatorar
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
# Dev Mode
|
|
18
|
+
|
|
19
|
+
Sempre:
|
|
20
|
+
1) inspect (read-only)
|
|
21
|
+
2) plano (arquivos, diffs, riscos)
|
|
22
|
+
3) consentimento explícito
|
|
23
|
+
4) aplicar + auditar
|
|
24
|
+
|
|
25
|
+
Preferência:
|
|
26
|
+
- criar commits/PRs e mostrar diffs antes de aplicar no workspace
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openclaw-inspect
|
|
3
|
+
description: Inspeção read-only do projeto/ambiente/IDE/OpenClaw. Nunca altera nada.
|
|
4
|
+
triggers:
|
|
5
|
+
- inspecionar
|
|
6
|
+
- analisar
|
|
7
|
+
- diagnosticar
|
|
8
|
+
- contexto
|
|
9
|
+
- status
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
# Inspect (read-only)
|
|
13
|
+
|
|
14
|
+
Coletar:
|
|
15
|
+
- SO (win/mac/linux/wsl), docker/vps/local
|
|
16
|
+
- IDE (cursor/vscode/antigravity/jetbrains)
|
|
17
|
+
- existência de OpenClaw (openclaw.json, .agent, docker compose, systemd)
|
|
18
|
+
- skills disponíveis
|
|
19
|
+
- riscos e sugestões
|
|
20
|
+
|
|
21
|
+
Regra: **não criar nem editar arquivos**.
|
|
@@ -5,6 +5,7 @@ const path = require("path");
|
|
|
5
5
|
const os = require("os");
|
|
6
6
|
const dns = require("dns").promises;
|
|
7
7
|
const https = require("https");
|
|
8
|
+
const http = require("http");
|
|
8
9
|
const { execSync } = require("child_process");
|
|
9
10
|
|
|
10
11
|
/**
|
|
@@ -29,11 +30,12 @@ function fail(msg) { log(`❌ ${msg}`, colors.red); }
|
|
|
29
30
|
function info(msg) { log(`ℹ️ ${msg}`, colors.blue); }
|
|
30
31
|
|
|
31
32
|
/**
|
|
32
|
-
* Verifica conectividade HTTP
|
|
33
|
+
* Verifica conectividade HTTP/HTTPS
|
|
33
34
|
*/
|
|
34
35
|
function checkHttp(url) {
|
|
35
36
|
return new Promise((resolve) => {
|
|
36
|
-
const
|
|
37
|
+
const lib = url.startsWith("https") ? https : http;
|
|
38
|
+
const req = lib.get(url, { timeout: 5000 }, (res) => {
|
|
37
39
|
if (res.statusCode >= 200 && res.statusCode < 400) {
|
|
38
40
|
resolve({ ok: true, status: res.statusCode });
|
|
39
41
|
} else {
|
|
@@ -150,6 +152,18 @@ async function runDebug() {
|
|
|
150
152
|
warn("Não foi possível ler configurações do NPM.");
|
|
151
153
|
}
|
|
152
154
|
|
|
155
|
+
// 5. Control UI (OpenClaw Server)
|
|
156
|
+
info("\nChecando Control UI (OpenClaw Server)...");
|
|
157
|
+
const uiCheck = await checkHttp("http://127.0.0.1:18789");
|
|
158
|
+
if (uiCheck.ok) {
|
|
159
|
+
success("Control UI acessível: http://127.0.0.1:18789");
|
|
160
|
+
report.installation.ui = "ok";
|
|
161
|
+
} else {
|
|
162
|
+
warn(`Control UI inacessível (Status: ${uiCheck.status || uiCheck.error})`);
|
|
163
|
+
info(" -> Se o OpenClaw não estiver rodando, isso é normal.");
|
|
164
|
+
report.installation.ui = "offline";
|
|
165
|
+
}
|
|
166
|
+
|
|
153
167
|
log("\n🏁 Debug concluído.", colors.bold);
|
|
154
168
|
return report;
|
|
155
169
|
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openclaw-router
|
|
3
|
+
description: Roteador central chat-first que escolhe a skill certa e força INSPECT → PLAN → CONSENT → APPLY → AUDIT.
|
|
4
|
+
triggers:
|
|
5
|
+
- instalar
|
|
6
|
+
- configurar
|
|
7
|
+
- criar
|
|
8
|
+
- corrigir
|
|
9
|
+
- melhorar
|
|
10
|
+
- refatorar
|
|
11
|
+
- debug
|
|
12
|
+
- tokens
|
|
13
|
+
- modelo
|
|
14
|
+
- equipe
|
|
15
|
+
- tarefas
|
|
16
|
+
- fila
|
|
17
|
+
- sprint
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Router Master
|
|
21
|
+
|
|
22
|
+
## Regra Suprema
|
|
23
|
+
READ-ONLY por padrão.
|
|
24
|
+
|
|
25
|
+
## Procedimento
|
|
26
|
+
1) Rodar **openclaw-inspect** (somente leitura)
|
|
27
|
+
2) Escolher skill pelo melhor match de triggers/description
|
|
28
|
+
3) Apresentar plano e pedir autorização
|
|
29
|
+
4) Executar somente após confirmação
|
|
30
|
+
5) Registrar auditoria
|
|
31
|
+
|
|
32
|
+
## Nunca
|
|
33
|
+
- alterar arquivos sem pedido explícito
|
|
34
|
+
- apagar/sobrescrever sem explicar e pedir confirmação reforçada
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: openclaw-security
|
|
3
|
+
description: Hardening do OpenClaw e do workspace. VPN-first, bind localhost, token obrigatório, bloqueios destrutivos.
|
|
4
|
+
triggers:
|
|
5
|
+
- segurança
|
|
6
|
+
- hardening
|
|
7
|
+
- firewall
|
|
8
|
+
- token
|
|
9
|
+
- bind
|
|
10
|
+
- wireguard
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Security Mode
|
|
14
|
+
|
|
15
|
+
Foco:
|
|
16
|
+
- validar bind localhost + token
|
|
17
|
+
- sugerir VPN (WireGuard) para acesso remoto
|
|
18
|
+
- checar portas e exposição
|
|
19
|
+
- reforçar hooks e regras
|
|
20
|
+
|
|
21
|
+
Sempre: plano → consentimento → aplicar → auditoria.
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: site-tester
|
|
3
|
+
description: Testa páginas (performance, SEO, acessibilidade, regressão visual) com Lighthouse/LHCI + Playwright em sandbox (Docker).
|
|
4
|
+
triggers:
|
|
5
|
+
- testar site
|
|
6
|
+
- lighthouse
|
|
7
|
+
- pagespeed
|
|
8
|
+
- performance
|
|
9
|
+
- seo
|
|
10
|
+
- acessibilidade
|
|
11
|
+
- teste de performance
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
# Site Tester
|
|
15
|
+
|
|
16
|
+
## Objetivo
|
|
17
|
+
Auditar páginas web em termos de performance, SEO, acessibilidade e PWA usando Lighthouse, PageSpeed Insights API e Playwright em ambiente isolado (sandbox/Docker).
|
|
18
|
+
|
|
19
|
+
## Contexto necessário
|
|
20
|
+
- URLs alvo
|
|
21
|
+
- Ambiente (staging/prod)
|
|
22
|
+
- Se exige login (sim/não)
|
|
23
|
+
- Thresholds desejados (ex: performance > 90)
|
|
24
|
+
|
|
25
|
+
## Fluxo (inspect → plan → consent → apply → audit)
|
|
26
|
+
|
|
27
|
+
1. **INSPECT**: Validar URLs e verificar robots.txt/ToS do domínio
|
|
28
|
+
2. **PLAN**: Definir métricas, thresholds e escolher ferramentas:
|
|
29
|
+
- PageSpeed Insights API (dados de campo CrUX + laboratório Lighthouse)
|
|
30
|
+
- Lighthouse local (mais controle, permite autenticação)
|
|
31
|
+
- Playwright (regressão visual, interação, screenshots)
|
|
32
|
+
3. **CONSENT**: Confirmar carga e execução (impacto em tráfego)
|
|
33
|
+
4. **APPLY**: Executar auditorias; salvar relatórios em `.agent/state/site-tests/`
|
|
34
|
+
5. **AUDIT**: Registrar resultados e recomendações priorizadas
|
|
35
|
+
|
|
36
|
+
## Ferramentas suportadas
|
|
37
|
+
|
|
38
|
+
| Ferramenta | Uso | Requer setup |
|
|
39
|
+
|-----------|-----|-------------|
|
|
40
|
+
| PageSpeed Insights API | Dados CrUX + Lighthouse web | API Key |
|
|
41
|
+
| Lighthouse CLI | Auditoria completa local | Node.js |
|
|
42
|
+
| Lighthouse CI (LHCI) | CI/CD + servidor auto-hospedado | Docker/Node |
|
|
43
|
+
| Playwright | Screenshots, regressão visual, login flow | Docker recomendado |
|
|
44
|
+
|
|
45
|
+
## Requisitos de segurança
|
|
46
|
+
- ✅ Executar em sandbox (Docker) quando possível
|
|
47
|
+
- ✅ Se exige login: usuário autoriza método (cookie storage state ou manual)
|
|
48
|
+
- ❌ Nunca armazenar credenciais de login no state
|
|
49
|
+
- ❌ Nunca executar contra domínios sem autorização do dono
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: smart-router
|
|
3
|
+
description: Roteia solicitações para perfis de modelo (cheap/smart/coding) para economizar tokens. Não altera config sem consentimento.
|
|
4
|
+
triggers:
|
|
5
|
+
- economizar
|
|
6
|
+
- tokens
|
|
7
|
+
- modelo
|
|
8
|
+
- router
|
|
9
|
+
- roteador
|
|
10
|
+
- barato
|
|
11
|
+
- caro
|
|
12
|
+
- provedor
|
|
13
|
+
- gemini
|
|
14
|
+
- groq
|
|
15
|
+
- openai
|
|
16
|
+
- claude
|
|
17
|
+
- fallback
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
# Smart Model Router (Roteador Econômico)
|
|
21
|
+
|
|
22
|
+
## Objetivo
|
|
23
|
+
Escolher o perfil e provedor adequado para cada solicitação, priorizando **free-first** e subindo para paid somente com autorização.
|
|
24
|
+
|
|
25
|
+
## Perfis e classificação
|
|
26
|
+
|
|
27
|
+
| Perfil | Quando usar | Objetivo |
|
|
28
|
+
|--------|------------|---------|
|
|
29
|
+
| **cheap** | Tarefas simples, formatação, reescrita curta, extração, resumo | Throughput e custo mínimo |
|
|
30
|
+
| **smart** | Planejamento, raciocínio multi-etapas, decisões com tradeoffs, texto longo | Qualidade e robustez |
|
|
31
|
+
| **coding** | Geração/correção de código, debug, refactor, testes, patches | Precisão em engenharia |
|
|
32
|
+
|
|
33
|
+
### Sinais para classificação (sem usar LLM — economiza tokens)
|
|
34
|
+
- **coding**: bloco de código, nomes de arquivo, stack traces, "bug", "refatorar", "compile", "SQL", "regex", "diff", "teste"
|
|
35
|
+
- **smart**: "planejar", "analisar", "comparar", "decidir", "estratégia", múltiplas etapas
|
|
36
|
+
- **cheap**: tudo que não se encaixa nos acima
|
|
37
|
+
|
|
38
|
+
## Provedores e chains de fallback
|
|
39
|
+
|
|
40
|
+
### cheap (free-first, alto volume)
|
|
41
|
+
1. Gemini 2.5 Flash-Lite (free) → 2. Groq free → 3. OpenRouter free → 4. Cohere Trial → 5. OpenAI GPT-5 mini (pago, se permitido)
|
|
42
|
+
|
|
43
|
+
### smart (raciocínio)
|
|
44
|
+
1. Gemini 2.5 Pro (free) → 2. Claude Sonnet (pago, se permitido) → 3. OpenRouter ZDR → 4. OpenAI GPT-5.2 (pago)
|
|
45
|
+
|
|
46
|
+
### coding (engenharia)
|
|
47
|
+
1. Gemini 2.5 Pro (free, forte em coding) → 2. Claude Sonnet (pago) → 3. OpenAI GPT-5.2 (pago) → 4. Mistral Scale (pago)
|
|
48
|
+
|
|
49
|
+
## Tabela de provedores
|
|
50
|
+
|
|
51
|
+
| Provedor | Free tier | Rate limits | Privacidade (treino) | Tipo de API |
|
|
52
|
+
|---------|---------|------------|---------------------|------------|
|
|
53
|
+
| Gemini Developer API | Sim (vários modelos) | Por modelo/região | Free: **Sim** treina / Paid: **Não** | REST (x-goog-api-key) |
|
|
54
|
+
| Groq | Sim (sem cartão) | RPM/RPD/TPM/TPD por modelo | Não especificado | OpenAI-compatível |
|
|
55
|
+
| OpenRouter | 50 req/dia + 20 rpm | Explícitos no free | Não armazena (salvo opt-in) | OpenAI-compatível |
|
|
56
|
+
| Cohere | Trial: 1.000 calls/mês | 20 req/min (trial) | 30 dias + ZDR possível | REST + Compatibility API |
|
|
57
|
+
| HuggingFace | Credits (não especificado) | Por plano/provedor | Não armazena body de req | SDK HF |
|
|
58
|
+
| Mistral | Experiment (free, tel. verificado) | Conservadores (free) | Experiment treina (opt-out); Scale não | REST (Bearer) |
|
|
59
|
+
| OpenAI | Não especificado (PAYG) | Por plano | Não treina por padrão; ZDR possível | REST (Bearer) |
|
|
60
|
+
| Anthropic | Créditos iniciais (pequenos) | Por tier | 30 dias; ZDR possível | REST (Messages API) |
|
|
61
|
+
|
|
62
|
+
## Configuração de privacidade
|
|
63
|
+
|
|
64
|
+
- **standard**: qualquer provedor permitido (priorizando free)
|
|
65
|
+
- **strict**: somente provedores com ZDR ou que não treinam por padrão
|
|
66
|
+
|
|
67
|
+
## Técnicas de economia
|
|
68
|
+
|
|
69
|
+
### Context caching
|
|
70
|
+
Reutilizar contexto fixo (system prompt, policies). Provedores com desconto em cache: OpenAI, Anthropic, Gemini.
|
|
71
|
+
|
|
72
|
+
### Batch API
|
|
73
|
+
Para tarefas não-interativas (embeddings, lint em lote). OpenAI e Gemini oferecem 50% de desconto.
|
|
74
|
+
|
|
75
|
+
### Compaction/Sumarização
|
|
76
|
+
Quando o contexto exceder o teto do perfil, sumarizar histórico antes de continuar:
|
|
77
|
+
- cheap: max ~2k tokens de entrada
|
|
78
|
+
- smart: max ~12k tokens
|
|
79
|
+
- coding: max ~24k tokens
|
|
80
|
+
|
|
81
|
+
### Cache semântico
|
|
82
|
+
Hash do prompt normalizado + parâmetros → evita chamadas duplicadas.
|
|
83
|
+
|
|
84
|
+
## Prompts otimizados por perfil
|
|
85
|
+
|
|
86
|
+
### cheap
|
|
87
|
+
```
|
|
88
|
+
Tarefa: Responda em pt-BR com no máximo 6 linhas.
|
|
89
|
+
Formato: 3 bullets curtos + 1 linha "Próxima ação sugerida: ...".
|
|
90
|
+
Restrições: Não invente fatos; se faltar dado, pergunte 1 coisa só.
|
|
91
|
+
Pedido: {{USER_REQUEST}}
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
### smart
|
|
95
|
+
```
|
|
96
|
+
Você é um analista cuidadoso.
|
|
97
|
+
Objetivo: propor solução e explicar tradeoffs em pt-BR.
|
|
98
|
+
Saída: 1) Resumo (2-3 linhas) 2) Opções A/B com prós/contras 3) Recomendação final
|
|
99
|
+
Contexto: {{SUMMARY_CONTEXT}}
|
|
100
|
+
Pedido: {{USER_REQUEST}}
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
### coding
|
|
104
|
+
```
|
|
105
|
+
Você é um engenheiro de software.
|
|
106
|
+
Regra: não altere arquivos; gere plano e patch unificado.
|
|
107
|
+
Saída: Diagnóstico + Patch (unified diff) + Comandos de teste + Riscos
|
|
108
|
+
Código/erro: {{PASTE_ERROR_OR_CODE}}
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
## Regras de segurança
|
|
112
|
+
- ❌ Não alterar `openclaw.json` automaticamente
|
|
113
|
+
- ❌ Não gastar créditos pagos sem autorização explícita
|
|
114
|
+
- ✅ Em modo IDE, apenas recomendar perfil e provedor
|
|
115
|
+
- ✅ Tratar 429/timeout como evento normal → fallback
|
|
116
|
+
- ✅ Registrar provedor/modelo/tokens/custo em audit
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: web-scraper
|
|
3
|
+
description: Extrai conteúdo de sites de forma responsável (respeitando robots.txt/ToS), usando Playwright ou um serviço (Browserless/Firecrawl) em sandbox.
|
|
4
|
+
triggers:
|
|
5
|
+
- scraping
|
|
6
|
+
- extrair tabela
|
|
7
|
+
- coletar dados
|
|
8
|
+
- baixar conteúdo
|
|
9
|
+
- crawler
|
|
10
|
+
- web scraping
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
# Web Scraper
|
|
14
|
+
|
|
15
|
+
## Objetivo
|
|
16
|
+
Extrair dados estruturados de páginas web de forma responsável, respeitando robots.txt, ToS e limites de taxa, usando ferramentas em sandbox.
|
|
17
|
+
|
|
18
|
+
## Contexto necessário
|
|
19
|
+
- Lista de URLs alvo
|
|
20
|
+
- Formato de saída desejado (markdown/json/csv)
|
|
21
|
+
- Política de respeito a robots.txt (verificar antes)
|
|
22
|
+
|
|
23
|
+
## Fluxo (inspect → plan → consent → apply → audit)
|
|
24
|
+
|
|
25
|
+
1. **INSPECT**: Verificar robots.txt e se há API oficial alternativa ao scraping
|
|
26
|
+
2. **PLAN**: Estimar volume e taxa; escolher ferramenta (Playwright local vs serviço)
|
|
27
|
+
3. **CONSENT**: Confirmar execução e destino dos dados extraídos
|
|
28
|
+
4. **APPLY**: Rodar scraping em sandbox; salvar outputs em `.agent/state/scrapes/`
|
|
29
|
+
5. **AUDIT**: Registrar URLs, timestamps, erros e retries
|
|
30
|
+
|
|
31
|
+
## Ferramentas disponíveis
|
|
32
|
+
|
|
33
|
+
| Ferramenta | Tipo | Melhor para |
|
|
34
|
+
|-----------|------|------------|
|
|
35
|
+
| Playwright | Local/Docker | Páginas dinâmicas, SPA, login flows |
|
|
36
|
+
| Browserless | SaaS (BaaS) | Elasticidade, sem infra local |
|
|
37
|
+
| Firecrawl | Serviço + CLI | Scraping/crawling em lote |
|
|
38
|
+
|
|
39
|
+
## Restrições de segurança e compliance
|
|
40
|
+
|
|
41
|
+
- ✅ Respeitar robots.txt (não é autorização, mas é prática obrigatória)
|
|
42
|
+
- ✅ Preferir APIs oficiais quando existirem
|
|
43
|
+
- ✅ Limitar taxa de requests (rate limiting autoimposto)
|
|
44
|
+
- ✅ Executar em sandbox (Docker/VM) sempre que possível
|
|
45
|
+
- ❌ Nunca fazer scraping de plataformas que proíbem explicitamente (ex: LinkedIn)
|
|
46
|
+
- ❌ Nunca extrair dados pessoais sem autorização
|
|
47
|
+
- ❌ Nunca burlar CAPTCHAs ou proteções anti-bot
|
|
48
|
+
|
|
49
|
+
## Armazenamento
|
|
50
|
+
- `.agent/state/scrapes/` — outputs organizados por domínio/data
|
|
51
|
+
- `.agent/audit/` — log com URLs, volume, taxa e erros
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# Memória Persistente
|
|
2
|
+
|
|
3
|
+
Adicione aqui resumos e decisões importantes do projeto.
|
|
4
|
+
Este arquivo é gerenciado pela skill **context-flush** e
|
|
5
|
+
atualizado apenas com consentimento explícito do usuário.
|
|
6
|
+
|
|
7
|
+
## Formato sugerido
|
|
8
|
+
- **Data** — Resumo breve da decisão ou aprendizado
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
{
|
|
2
|
+
"project_status": "active",
|
|
3
|
+
"project_name": "default",
|
|
4
|
+
"sprint_goal": "",
|
|
5
|
+
"agents": [
|
|
6
|
+
{
|
|
7
|
+
"id": "orchestrator",
|
|
8
|
+
"role": "orchestrator",
|
|
9
|
+
"active": true
|
|
10
|
+
},
|
|
11
|
+
{
|
|
12
|
+
"id": "researcher",
|
|
13
|
+
"role": "researcher",
|
|
14
|
+
"active": true
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"id": "writer",
|
|
18
|
+
"role": "writer",
|
|
19
|
+
"active": true
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
"id": "reviewer",
|
|
23
|
+
"role": "reviewer",
|
|
24
|
+
"active": true
|
|
25
|
+
}
|
|
26
|
+
],
|
|
27
|
+
"task_queue": [],
|
|
28
|
+
"history": [],
|
|
29
|
+
"settings": {
|
|
30
|
+
"work_dir": "mission_control",
|
|
31
|
+
"max_tasks_per_tick": 2,
|
|
32
|
+
"default_priority": "medium"
|
|
33
|
+
}
|
|
34
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Exemplo de workflow avançado usando AI Capture e nós interativos para coleta de tickets de suporte.
|
|
3
|
+
params:
|
|
4
|
+
- userId
|
|
5
|
+
- message
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## Support Ticket Capture Workflow
|
|
9
|
+
|
|
10
|
+
Este workflow demonstra como capturar dados estruturados de uma conversa natural.
|
|
11
|
+
|
|
12
|
+
### 1. Saudação Interativa
|
|
13
|
+
- **Message Node**: Olá! Sou o assistente de suporte inteligente. Vou coletar os dados do seu chamado.
|
|
14
|
+
|
|
15
|
+
### 2. Coleta de Dados (AI Capture)
|
|
16
|
+
- **Interactive Node**: Por favor, descreva o problema que está enfrentando com o máximo de detalhes possível.
|
|
17
|
+
- **AI Capture Node**:
|
|
18
|
+
- **Prompt**: Analise a resposta do usuário e extraia os seguintes campos em JSON:
|
|
19
|
+
- `summary`: Resumo de uma linha do problema.
|
|
20
|
+
- `category`: Categoria (Hardware, Software, Rede, Acesso).
|
|
21
|
+
- `urgency`: Urgência (Baixa, Média, Alta) baseada no tom.
|
|
22
|
+
- `details`: O relato completo do usuário.
|
|
23
|
+
- **Validation**: Verifique se `details` tem mais de 10 caracteres. Se não, peça para detalhar mais.
|
|
24
|
+
|
|
25
|
+
### 3. Confirmação
|
|
26
|
+
- **Message Node**: Obrigado! Registrei o chamado:
|
|
27
|
+
- **Resumo**: {{capture.summary}}
|
|
28
|
+
- **Categoria**: {{capture.category}}
|
|
29
|
+
- **Urgência**: {{capture.urgency}}
|
|
30
|
+
|
|
31
|
+
### 4. Ação (Skill Call)
|
|
32
|
+
- **Skill Node**: `openclaw-ops/create-ticket` (simulado)
|
|
33
|
+
- **Args**:
|
|
34
|
+
- title: {{capture.summary}}
|
|
35
|
+
- body: {{capture.details}}
|
|
36
|
+
- priority: {{capture.urgency}}
|
|
37
|
+
|
|
38
|
+
### 5. Finalização
|
|
39
|
+
- **Message Node**: Chamado criado com sucesso! Um técnico entrará em contato em breve.
|