@fabioforest/openclaw 3.0.0 → 3.4.1
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/README.md +417 -46
- 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
package/README.md
CHANGED
|
@@ -1,73 +1,425 @@
|
|
|
1
|
-
# OpenClaw OS
|
|
1
|
+
# 🦀 OpenClaw AI OS
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
**Sistema universal de agentes para IDEs** — instale, configure e use via chat ou terminal.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
O OpenClaw transforma qualquer projeto em um workspace inteligente com skills, regras de segurança e roteamento econômico de modelos de IA. Funciona em **Cursor, VSCode, Gemini Code Assist, Antigravity** e qualquer IDE com suporte a agentes.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 📦 Instalação
|
|
10
|
+
|
|
11
|
+
### Opção 1: Via npx (recomendado — sem instalar nada)
|
|
6
12
|
|
|
7
13
|
```bash
|
|
8
|
-
#
|
|
14
|
+
# Simula o que será feito (modo seguro, não altera nada)
|
|
9
15
|
npx @fabioforest/openclaw init
|
|
10
16
|
|
|
11
|
-
#
|
|
17
|
+
# Instala de fato no projeto
|
|
18
|
+
npx @fabioforest/openclaw init --apply
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
### Opção 2: Instalação global
|
|
22
|
+
|
|
23
|
+
```bash
|
|
12
24
|
npm install -g @fabioforest/openclaw
|
|
13
|
-
openclaw init
|
|
25
|
+
openclaw init --apply
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
### Opção 3: Instalação completa para IDEs
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Instala o "AI OS" com skills, rules, state e hooks
|
|
32
|
+
npx @fabioforest/openclaw ide install --apply
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
> **💡 Dica**: Todos os comandos operam em **modo PLAN por padrão** (read-only). Nada é alterado sem `--apply`.
|
|
36
|
+
|
|
37
|
+
---
|
|
38
|
+
|
|
39
|
+
## 🎯 Quando usar cada comando
|
|
40
|
+
|
|
41
|
+
### Resumo rápido
|
|
42
|
+
|
|
43
|
+
| Situação | Comando | O que faz |
|
|
44
|
+
|----------|---------|-----------|
|
|
45
|
+
| Primeira vez no projeto | `init --apply` | Cria `.agent/` com templates |
|
|
46
|
+
| Atualizar skills/rules | `update --apply` | Atualiza preservando customizações |
|
|
47
|
+
| Ver o que está instalado | `status` | Lista componentes e config |
|
|
48
|
+
| Algo não funciona | `doctor` | Diagnóstico completo |
|
|
49
|
+
| Quero entender meu ambiente | `inspect` | Análise 100% read-only |
|
|
50
|
+
| Preciso de ajuda geral | `assist` | Assistente com roteamento de skills |
|
|
51
|
+
| Instalar AI OS na IDE | `ide install --apply` | Skills + rules + state + hooks |
|
|
52
|
+
| Verificar IDE configurada | `ide doctor` | Checa se tudo está "armado" |
|
|
53
|
+
| Configurar do zero | `setup` | Wizard interativo passo a passo |
|
|
54
|
+
| Problemas de rede/VPN | `debug` | Diagnóstico de conectividade |
|
|
55
|
+
| Instalar ou reparar (automático) | `check` | Orquestrador inteligente |
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## 📖 Manual de Uso Detalhado
|
|
60
|
+
|
|
61
|
+
### `openclaw init` — Instalar no projeto
|
|
62
|
+
|
|
63
|
+
**Quando usar:** Primeira vez que você quer adicionar o OpenClaw a um projeto.
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
# 1. Primeiro, simule para ver o que vai acontecer
|
|
67
|
+
npx @fabioforest/openclaw init
|
|
68
|
+
# → Mostra plano: "CREATE .agent/", "COPY templates", "CREATE openclaw.json"
|
|
69
|
+
# → Nenhum arquivo é criado
|
|
70
|
+
|
|
71
|
+
# 2. Se estiver tudo certo, aplique
|
|
72
|
+
npx @fabioforest/openclaw init --apply
|
|
73
|
+
# → Cria .agent/ com skills, rules, hooks e workflows
|
|
74
|
+
# → Cria openclaw.json com configurações default
|
|
75
|
+
|
|
76
|
+
# 3. Se já existe e quer sobrescrever (exige confirmação forte)
|
|
77
|
+
npx @fabioforest/openclaw init --apply --force
|
|
78
|
+
# → Pede para digitar "DESTROY .agent" para confirmar
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
**Flags disponíveis:**
|
|
82
|
+
|
|
83
|
+
| Flag | O que faz |
|
|
84
|
+
|------|-----------|
|
|
85
|
+
| `--apply` | Executa de fato (sem isso, só simula) |
|
|
86
|
+
| `--force` | Permite sobrescrever `.agent/` existente |
|
|
87
|
+
| `--path ./dir` | Instala em outro diretório |
|
|
88
|
+
| `--yes` | Pula confirmações interativas |
|
|
89
|
+
| `--no-audit` | Não gera log de auditoria |
|
|
90
|
+
|
|
91
|
+
---
|
|
92
|
+
|
|
93
|
+
### `openclaw update` — Atualizar templates
|
|
94
|
+
|
|
95
|
+
**Quando usar:** Quando sair uma versão nova do OpenClaw e você quiser atualizar skills/rules sem perder customizações.
|
|
96
|
+
|
|
97
|
+
```bash
|
|
98
|
+
# Simula a atualização (mostra o que mudou)
|
|
99
|
+
npx @fabioforest/openclaw update
|
|
100
|
+
|
|
101
|
+
# Aplica a atualização
|
|
102
|
+
npx @fabioforest/openclaw update --apply
|
|
103
|
+
|
|
104
|
+
# Merge seguro (preserva customizações)
|
|
105
|
+
npx @fabioforest/openclaw update --apply --merge
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Como funciona:**
|
|
109
|
+
- Compara cada arquivo por hash SHA-256
|
|
110
|
+
- Se você customizou um arquivo, faz backup (`.bak`) antes de atualizar
|
|
111
|
+
- Novos templates são copiados normalmente
|
|
112
|
+
- Tudo é registrado em `.agent/audit/`
|
|
113
|
+
|
|
114
|
+
---
|
|
115
|
+
|
|
116
|
+
### `openclaw inspect` — Analisar ambiente (read-only)
|
|
117
|
+
|
|
118
|
+
**Quando usar:** Antes de qualquer ação, para entender o contexto. 100% read-only — nunca altera nada.
|
|
119
|
+
|
|
120
|
+
```bash
|
|
121
|
+
npx @fabioforest/openclaw inspect
|
|
14
122
|
```
|
|
15
123
|
|
|
16
|
-
|
|
124
|
+
**Saída de exemplo:**
|
|
125
|
+
|
|
126
|
+
```
|
|
127
|
+
🔎 OpenClaw Inspect (Read-Only)
|
|
17
128
|
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
129
|
+
🖥️ Plataforma: darwin
|
|
130
|
+
🐳 Docker: false
|
|
131
|
+
🪟 WSL: false
|
|
132
|
+
💻 IDE: cursor
|
|
133
|
+
📂 Path: /home/user/meu-projeto
|
|
134
|
+
📦 OpenClaw instalado: Sim
|
|
135
|
+
📋 Config: Sim
|
|
136
|
+
🐙 Git repo: Sim
|
|
25
137
|
|
|
26
|
-
|
|
138
|
+
🧠 Skills instaladas (15):
|
|
139
|
+
• content-sourcer • context-flush
|
|
140
|
+
• drive-organizer • linkedin-optimizer
|
|
141
|
+
• mission-control • openclaw-router
|
|
142
|
+
• smart-router • web-scraper
|
|
143
|
+
...
|
|
144
|
+
|
|
145
|
+
✅ Inspect concluído (nenhuma alteração feita).
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
**Modo JSON (para automações):**
|
|
27
149
|
|
|
28
150
|
```bash
|
|
29
|
-
openclaw
|
|
30
|
-
|
|
31
|
-
openclaw doctor --quiet # Saída mínima
|
|
151
|
+
npx @fabioforest/openclaw inspect --quiet
|
|
152
|
+
# → Retorna JSON puro, ideal para pipes e scripts
|
|
32
153
|
```
|
|
33
154
|
|
|
34
|
-
|
|
155
|
+
---
|
|
156
|
+
|
|
157
|
+
### `openclaw assist` — Assistente geral com roteamento
|
|
35
158
|
|
|
36
|
-
O
|
|
159
|
+
**Quando usar:** Quando não sabe qual skill usar. O assist analisa sua solicitação e sugere a skill mais adequada.
|
|
160
|
+
|
|
161
|
+
```bash
|
|
162
|
+
npx @fabioforest/openclaw assist
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
**Como funciona:**
|
|
166
|
+
1. Detecta contexto (IDE, plataforma, skills disponíveis)
|
|
167
|
+
2. Pede sua solicitação em linguagem natural
|
|
168
|
+
3. Roteia para a skill mais relevante via triggers
|
|
169
|
+
4. Mostra alternativas e protocolo recomendado
|
|
170
|
+
|
|
171
|
+
**Exemplo de interação:**
|
|
172
|
+
|
|
173
|
+
```
|
|
174
|
+
🧠 OpenClaw Assist — Modo PLAN por padrão (seguro)
|
|
175
|
+
IDE: cursor | OpenClaw: instalado
|
|
176
|
+
|
|
177
|
+
Descreva o que deseja fazer:
|
|
178
|
+
> otimizar meu perfil do linkedin
|
|
179
|
+
|
|
180
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
181
|
+
🎯 Skill selecionada: linkedin-optimizer
|
|
182
|
+
Descrição: Ajuda a otimizar perfil e posts para LinkedIn
|
|
183
|
+
|
|
184
|
+
Alternativas:
|
|
185
|
+
• content-sourcer: Busca fontes públicas
|
|
186
|
+
• smart-router: Roteia para perfis de modelo
|
|
187
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
---
|
|
191
|
+
|
|
192
|
+
### `openclaw ide install` — Instalar AI OS na IDE
|
|
193
|
+
|
|
194
|
+
**Quando usar:** Para preparar sua IDE para usar o OpenClaw como agente via chat. Instala skills, rules, hooks e state templates.
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
# Simula a instalação (mostra o plano)
|
|
198
|
+
npx @fabioforest/openclaw ide install
|
|
199
|
+
|
|
200
|
+
# Aplica a instalação
|
|
201
|
+
npx @fabioforest/openclaw ide install --apply
|
|
202
|
+
|
|
203
|
+
# Força reinstalação completa
|
|
204
|
+
npx @fabioforest/openclaw ide install --apply --force
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
**O que é instalado:**
|
|
37
208
|
|
|
38
209
|
```
|
|
39
210
|
.agent/
|
|
40
|
-
├── agents/ # Personas
|
|
41
|
-
├── hooks/ #
|
|
42
|
-
├── rules/ #
|
|
43
|
-
├──
|
|
44
|
-
│ ├──
|
|
45
|
-
│
|
|
46
|
-
|
|
211
|
+
├── agents/ # Personas (sysadmin, automator, setup)
|
|
212
|
+
├── hooks/ # pre-tool-use.js (bloqueia comandos destrutivos)
|
|
213
|
+
├── rules/ # 5 regras de segurança
|
|
214
|
+
│ ├── CONSENT_FIRST.md
|
|
215
|
+
│ ├── SECURITY.md
|
|
216
|
+
│ ├── ROUTER_PROTOCOL.md
|
|
217
|
+
│ ├── DEV_MODE.md
|
|
218
|
+
│ └── WEB_AUTOMATION.md
|
|
219
|
+
├── skills/ # 15 skills disponíveis
|
|
220
|
+
│ ├── openclaw-router/ # Roteador central chat-first
|
|
221
|
+
│ ├── openclaw-inspect/ # Inspeção read-only
|
|
222
|
+
│ ├── smart-router/ # Roteador econômico de modelos
|
|
223
|
+
│ ├── mission-control/ # Empresa de Agentes
|
|
224
|
+
│ ├── linkedin-optimizer/ # Otimização de LinkedIn
|
|
225
|
+
│ ├── drive-organizer/ # Google Drive via API
|
|
226
|
+
│ ├── site-tester/ # Lighthouse + Playwright
|
|
227
|
+
│ ├── web-scraper/ # Scraping responsável
|
|
228
|
+
│ ├── content-sourcer/ # Pesquisa de fontes
|
|
229
|
+
│ └── ... (+ 6 skills operacionais)
|
|
230
|
+
├── state/ # Estado persistente
|
|
231
|
+
│ ├── mission_control.json # Empresa de Agentes
|
|
232
|
+
│ └── MEMORY.md # Memória do workspace
|
|
233
|
+
└── workflows/ # Slash commands e runbooks
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
### `openclaw ide doctor` — Verificar IDE
|
|
239
|
+
|
|
240
|
+
**Quando usar:** Para confirmar que sua IDE está "armada" com todas as regras e skills necessárias.
|
|
241
|
+
|
|
242
|
+
```bash
|
|
243
|
+
npx @fabioforest/openclaw ide doctor
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
**Saída de exemplo:**
|
|
247
|
+
|
|
248
|
+
```
|
|
249
|
+
🏥 IDE Doctor — Verificando instalação para IDE:
|
|
250
|
+
|
|
251
|
+
✅ .agent/
|
|
252
|
+
✅ rules/CONSENT_FIRST.md
|
|
253
|
+
✅ rules/ROUTER_PROTOCOL.md
|
|
254
|
+
✅ skills/openclaw-router/SKILL.md
|
|
255
|
+
✅ skills/openclaw-inspect/SKILL.md
|
|
256
|
+
✅ skills/openclaw-dev/SKILL.md
|
|
257
|
+
✅ hooks/pre-tool-use.js
|
|
258
|
+
|
|
259
|
+
🎉 IDE está totalmente configurada!
|
|
260
|
+
```
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
### `openclaw status` — Ver status da instalação
|
|
265
|
+
|
|
266
|
+
**Quando usar:** Para ver rapidamente o que está instalado e configurado.
|
|
267
|
+
|
|
268
|
+
```bash
|
|
269
|
+
npx @fabioforest/openclaw status
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
Mostra: componentes instalados, versão, config ativa (com tokens mascarados).
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
### `openclaw doctor` — Healthcheck completo
|
|
277
|
+
|
|
278
|
+
**Quando usar:** Quando algo não funciona. Faz diagnóstico completo do ambiente.
|
|
279
|
+
|
|
280
|
+
```bash
|
|
281
|
+
npx @fabioforest/openclaw doctor
|
|
282
|
+
npx @fabioforest/openclaw doctor --quiet # Saída mínima
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
Verifica: config, portas, VPN, integridade de arquivos, dependências.
|
|
286
|
+
|
|
287
|
+
---
|
|
288
|
+
|
|
289
|
+
### `openclaw setup` — Wizard interativo
|
|
290
|
+
|
|
291
|
+
**Quando usar:** Primeira configuração completa com perguntas guiadas.
|
|
292
|
+
|
|
293
|
+
```bash
|
|
294
|
+
npx @fabioforest/openclaw setup
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Guia passo a passo para configurar ambiente, modelo de IA, canais e segurança.
|
|
298
|
+
|
|
299
|
+
---
|
|
300
|
+
|
|
301
|
+
### `openclaw check` — Orquestrador inteligente
|
|
302
|
+
|
|
303
|
+
**Quando usar:** Quando não sabe se precisa instalar ou reparar. Ele decide por você.
|
|
304
|
+
|
|
305
|
+
```bash
|
|
306
|
+
npx @fabioforest/openclaw check
|
|
307
|
+
```
|
|
308
|
+
|
|
309
|
+
Detecta se o OpenClaw já existe e oferece opções: instalar, atualizar, reparar ou forçar.
|
|
310
|
+
|
|
311
|
+
---
|
|
312
|
+
|
|
313
|
+
### `openclaw debug` — Diagnóstico avançado
|
|
314
|
+
|
|
315
|
+
**Quando usar:** Problemas de rede, VPN, npm ou GitHub.
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
npx @fabioforest/openclaw debug
|
|
47
319
|
```
|
|
48
320
|
|
|
49
|
-
|
|
321
|
+
Verifica conectividade, proxy, versões e integridade do ambiente.
|
|
322
|
+
|
|
323
|
+
---
|
|
324
|
+
|
|
325
|
+
## 🧠 Skills Disponíveis (15)
|
|
326
|
+
|
|
327
|
+
### Core — Infraestrutura do AI OS
|
|
328
|
+
|
|
329
|
+
| Skill | O que faz | Quando usar |
|
|
330
|
+
|-------|-----------|-------------|
|
|
331
|
+
| `openclaw-router` | Roteador central chat-first | Sempre ativo — decide qual skill usar |
|
|
332
|
+
| `openclaw-inspect` | Inspeção read-only | Para analisar sem alterar |
|
|
333
|
+
| `openclaw-dev` | Modo Devin-like | Para criar features, backend, frontend |
|
|
334
|
+
| `openclaw-security` | Hardening | Para melhorar segurança do workspace |
|
|
335
|
+
| `openclaw-assist` | Assistente geral | Para menu de ações e ajuda |
|
|
336
|
+
| `mission-control` | Empresa de Agentes | Para orquestrar múltiplos agentes |
|
|
337
|
+
| `smart-router` | Roteador econômico | Para escolher modelo de IA por custo |
|
|
338
|
+
| `context-flush` | Flush de memória | Para economizar tokens em sessões longas |
|
|
339
|
+
|
|
340
|
+
### Produtividade — Automação e Web
|
|
341
|
+
|
|
342
|
+
| Skill | O que faz | Quando usar |
|
|
343
|
+
|-------|-----------|-------------|
|
|
344
|
+
| `linkedin-optimizer` | Textos para LinkedIn | Para otimizar perfil/posts (human-in-the-loop) |
|
|
345
|
+
| `drive-organizer` | Google Drive via API | Para organizar arquivos na nuvem |
|
|
346
|
+
| `site-tester` | Lighthouse + Playwright | Para testar performance/SEO/acessibilidade |
|
|
347
|
+
| `web-scraper` | Scraping responsável | Para extrair dados de sites |
|
|
348
|
+
| `content-sourcer` | Pesquisa de fontes | Para criar dossiês citáveis |
|
|
349
|
+
|
|
350
|
+
### Operacionais — DevOps e Infra
|
|
351
|
+
|
|
352
|
+
| Skill | O que faz | Quando usar |
|
|
353
|
+
|-------|-----------|-------------|
|
|
354
|
+
| `universal-setup` | Setup em qualquer ambiente | Para instalação em VPS/Docker/Mac/Windows |
|
|
355
|
+
| `openclaw-installation-debugger` | Debug de instalação | Para resolver problemas de setup |
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
359
|
+
## 🔒 Segurança
|
|
360
|
+
|
|
361
|
+
O OpenClaw segue 3 princípios fundamentais:
|
|
362
|
+
|
|
363
|
+
### 1. Read-only por padrão
|
|
364
|
+
Todo comando opera em **modo PLAN** (simulação). Nada é alterado sem `--apply`.
|
|
365
|
+
|
|
366
|
+
### 2. Consent-first
|
|
367
|
+
Antes de qualquer alteração, o sistema mostra exatamente o que vai fazer e pede confirmação. Ações destrutivas exigem **confirmação forte** (digitar frase específica).
|
|
368
|
+
|
|
369
|
+
### 3. Audit-first
|
|
370
|
+
Toda ação gera log detalhado em `.agent/audit/` com timestamp, comando, modo, contexto e resultado.
|
|
371
|
+
|
|
372
|
+
### Proteções ativas
|
|
50
373
|
|
|
51
|
-
|
|
|
52
|
-
|
|
53
|
-
|
|
|
54
|
-
|
|
|
55
|
-
|
|
|
56
|
-
|
|
|
57
|
-
|
|
|
58
|
-
|
|
|
59
|
-
| 07 | Safe Update | Canary + rollback automático |
|
|
60
|
-
| 08 | Healthchecks | Circuit breaker + auto-restart |
|
|
374
|
+
| Proteção | Como funciona |
|
|
375
|
+
|----------|---------------|
|
|
376
|
+
| **Hook pre-tool-use** | Bloqueia 12+ padrões destrutivos (`rm -rf`, `mkfs`, `dd`, `shutdown`) |
|
|
377
|
+
| **VPN-first** | Sem VPN, sem acesso remoto |
|
|
378
|
+
| **Bind localhost** | Serviços só acessíveis localmente por padrão |
|
|
379
|
+
| **Auth token** | Token obrigatório para acesso |
|
|
380
|
+
| **Break-glass** | Acesso emergencial com expiração automática |
|
|
381
|
+
| **WEB_AUTOMATION rule** | Checklist de compliance para automação web |
|
|
61
382
|
|
|
62
|
-
|
|
383
|
+
---
|
|
63
384
|
|
|
64
|
-
|
|
65
|
-
- **bind localhost** + **auth token** por padrão
|
|
66
|
-
- **Hook `pre-tool-use`** — bloqueia comandos destrutivos (`rm -rf`, `mkfs`, `dd`, `shutdown`)
|
|
67
|
-
- **Break-glass** — acesso emergencial com expiração automática
|
|
68
|
-
- **Auditoria** — todos os eventos logados com `request_id`
|
|
385
|
+
## 💰 Roteador Econômico de Modelos
|
|
69
386
|
|
|
70
|
-
|
|
387
|
+
O `smart-router` escolhe automaticamente o modelo de IA mais econômico para cada tarefa:
|
|
388
|
+
|
|
389
|
+
| Perfil | Quando | Provedor default (free) |
|
|
390
|
+
|--------|--------|------------------------|
|
|
391
|
+
| **cheap** | Tarefas simples, formatação, resumos | Gemini Flash-Lite → Groq |
|
|
392
|
+
| **smart** | Planejamento, análise, raciocínio | Gemini Pro → Claude |
|
|
393
|
+
| **coding** | Código, debug, refactor, testes | Gemini Pro → GPT-5.2 |
|
|
394
|
+
|
|
395
|
+
Prioridade: **free-first** — só usa provedores pagos com autorização explícita.
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## 🚀 Guia Rápido: Do Zero ao Funcionando
|
|
400
|
+
|
|
401
|
+
```bash
|
|
402
|
+
# 1. Instale no seu projeto
|
|
403
|
+
npx @fabioforest/openclaw ide install --apply
|
|
404
|
+
|
|
405
|
+
# 2. Verifique se está tudo OK
|
|
406
|
+
npx @fabioforest/openclaw ide doctor
|
|
407
|
+
|
|
408
|
+
# 3. Analise seu ambiente
|
|
409
|
+
npx @fabioforest/openclaw inspect
|
|
410
|
+
|
|
411
|
+
# 4. Use o assistente
|
|
412
|
+
npx @fabioforest/openclaw assist
|
|
413
|
+
```
|
|
414
|
+
|
|
415
|
+
**Ou via chat na IDE (Cursor, VSCode, Antigravity, Gemini):**
|
|
416
|
+
- Basta perguntar no chat! As skills e rules em `.agent/` guiam o agente automaticamente.
|
|
417
|
+
- O `openclaw-router` decide qual skill usar com base nos triggers de cada uma.
|
|
418
|
+
- Tudo segue o fluxo: **INSPECT → PLAN → CONSENT → APPLY → AUDIT**.
|
|
419
|
+
|
|
420
|
+
---
|
|
421
|
+
|
|
422
|
+
## 🛠️ Desenvolvimento
|
|
71
423
|
|
|
72
424
|
```bash
|
|
73
425
|
# Instalar dependências
|
|
@@ -83,6 +435,25 @@ npm run test:watch
|
|
|
83
435
|
npm run test:coverage
|
|
84
436
|
```
|
|
85
437
|
|
|
86
|
-
|
|
438
|
+
---
|
|
439
|
+
|
|
440
|
+
## 📋 Flags Globais
|
|
441
|
+
|
|
442
|
+
Todas as flags funcionam com qualquer comando:
|
|
443
|
+
|
|
444
|
+
| Flag | Descrição | Padrão |
|
|
445
|
+
|------|-----------|--------|
|
|
446
|
+
| `--plan` | Modo simulação (read-only) | **Sim** |
|
|
447
|
+
| `--apply` | Modo execução (aplica alterações) | Não |
|
|
448
|
+
| `--yes, -y` | Pula confirmações | Não |
|
|
449
|
+
| `--force, -f` | Permite operações destrutivas | Não |
|
|
450
|
+
| `--path, -p <dir>` | Diretório alvo | `./` |
|
|
451
|
+
| `--quiet, -q` | Saída mínima | Não |
|
|
452
|
+
| `--no-audit` | Desabilita logs de auditoria | Não |
|
|
453
|
+
| `--merge` | Atualização segura (preserva customizações) | Não |
|
|
454
|
+
|
|
455
|
+
---
|
|
456
|
+
|
|
457
|
+
## 📄 Licença
|
|
87
458
|
|
|
88
459
|
MIT
|
package/bin/openclaw.js
CHANGED
|
@@ -28,6 +28,9 @@ const COMMANDS = {
|
|
|
28
28
|
doctor: "../lib/cli/doctor",
|
|
29
29
|
debug: "../lib/cli/debug",
|
|
30
30
|
check: "../lib/cli/orchestrate",
|
|
31
|
+
inspect: "../lib/cli/inspect",
|
|
32
|
+
assist: "../lib/cli/assist",
|
|
33
|
+
ide: "../lib/cli/ide",
|
|
31
34
|
};
|
|
32
35
|
|
|
33
36
|
/**
|
|
@@ -36,7 +39,10 @@ const COMMANDS = {
|
|
|
36
39
|
* @returns {{ command: string|null, flags: object }}
|
|
37
40
|
*/
|
|
38
41
|
function parseArgs(argv) {
|
|
39
|
-
const flags = {
|
|
42
|
+
const flags = {
|
|
43
|
+
plan: true, // Default: PLAN mode (read-only)
|
|
44
|
+
audit: true // Default: Generate audit logs
|
|
45
|
+
};
|
|
40
46
|
let command = null;
|
|
41
47
|
|
|
42
48
|
for (let i = 0; i < argv.length; i++) {
|
|
@@ -49,15 +55,28 @@ function parseArgs(argv) {
|
|
|
49
55
|
} else if (arg === "--force" || arg === "-f") {
|
|
50
56
|
flags.force = true;
|
|
51
57
|
} else if (arg === "--path" || arg === "-p") {
|
|
52
|
-
// Próximo argumento é o caminho
|
|
53
58
|
flags.path = argv[++i] || ".";
|
|
54
59
|
} else if (arg === "--quiet" || arg === "-q") {
|
|
55
60
|
flags.quiet = true;
|
|
61
|
+
} else if (arg === "--apply") {
|
|
62
|
+
flags.apply = true;
|
|
63
|
+
flags.plan = false; // Apply overrides Plan default
|
|
64
|
+
} else if (arg === "--plan") {
|
|
65
|
+
flags.plan = true;
|
|
66
|
+
} else if (arg === "--yes" || arg === "-y") {
|
|
67
|
+
flags.yes = true;
|
|
68
|
+
} else if (arg === "--no-audit") {
|
|
69
|
+
flags.audit = false;
|
|
70
|
+
} else if (arg === "--merge") {
|
|
71
|
+
flags.merge = true;
|
|
56
72
|
} else if (!arg.startsWith("-") && !command) {
|
|
57
73
|
command = arg;
|
|
58
74
|
}
|
|
59
75
|
}
|
|
60
76
|
|
|
77
|
+
// Se apply foi passado, plan é false (a menos que forçado explicitamente, mas apply vence na lógica acima)
|
|
78
|
+
// Se o usuário não passar nada, plan=true (default)
|
|
79
|
+
|
|
61
80
|
return { command, flags };
|
|
62
81
|
}
|
|
63
82
|
|
|
@@ -78,19 +97,29 @@ function showHelp() {
|
|
|
78
97
|
setup Roda wizard interativo de configuração
|
|
79
98
|
debug Diagnóstico avançado de instalação e rede
|
|
80
99
|
check Orquestrador inteligente (instala ou repara)
|
|
100
|
+
inspect Analisa ambiente e contexto (100% read-only)
|
|
101
|
+
assist Assistente geral com roteamento de skills
|
|
102
|
+
ide Instala AI OS na IDE (ide install / ide doctor)
|
|
81
103
|
|
|
82
|
-
Opções:
|
|
104
|
+
Opções Globais:
|
|
83
105
|
--path, -p <dir> Diretório alvo (padrão: ./)
|
|
84
|
-
--
|
|
106
|
+
--plan Modo Simulação (PADRÃO): Mostra o que será feito sem alterar nada
|
|
107
|
+
--apply Modo Execução: Aplica as alterações propostas
|
|
108
|
+
--yes, -y Confirma automaticamente (skip prompts)
|
|
109
|
+
--force, -f Permite operações destrutivas (exige confirmação forte)
|
|
110
|
+
--no-audit Desabilita geração de logs de auditoria
|
|
111
|
+
--merge Atualização segura (não sobrescreve customizações)
|
|
85
112
|
--quiet, -q Saída mínima
|
|
86
113
|
--help, -h Mostra esta ajuda
|
|
87
114
|
--version, -v Mostra a versão
|
|
88
115
|
|
|
89
116
|
Exemplos:
|
|
90
|
-
npx openclaw init
|
|
91
|
-
npx openclaw init --
|
|
92
|
-
npx openclaw
|
|
93
|
-
npx openclaw
|
|
117
|
+
npx openclaw init --plan (Simula instalação)
|
|
118
|
+
npx openclaw init --apply (Instala de fato)
|
|
119
|
+
npx openclaw check (Orquestrador seguro)
|
|
120
|
+
npx openclaw inspect (Analisa contexto)
|
|
121
|
+
npx openclaw assist (Assistente geral)
|
|
122
|
+
npx openclaw ide install --apply (Instala AI OS na IDE)
|
|
94
123
|
`);
|
|
95
124
|
}
|
|
96
125
|
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Comando CLI: assist
|
|
5
|
+
*
|
|
6
|
+
* Assistente geral do OpenClaw AI OS.
|
|
7
|
+
* Detecta contexto, roteia para a skill correta e apresenta plano.
|
|
8
|
+
* Funciona tanto via terminal quanto como "cérebro" para IDEs (chat-first).
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
const path = require("path");
|
|
12
|
+
const readline = require("readline");
|
|
13
|
+
const collectContext = require("../context/collector");
|
|
14
|
+
const { matchSkill } = require("../router/match");
|
|
15
|
+
|
|
16
|
+
// Caminho dos templates e skills do pacote
|
|
17
|
+
const TEMPLATES_DIR = path.join(__dirname, "..", "..", "templates");
|
|
18
|
+
const SKILLS_DIR = path.join(TEMPLATES_DIR, ".agent", "skills");
|
|
19
|
+
|
|
20
|
+
function ask(q) {
|
|
21
|
+
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
|
|
22
|
+
return new Promise((res) => rl.question(q, (ans) => { rl.close(); res(ans.trim()); }));
|
|
23
|
+
}
|
|
24
|
+
|
|
25
|
+
/**
|
|
26
|
+
* Executa o comando assist (menu interativo com roteamento de skills).
|
|
27
|
+
* @param {object} options
|
|
28
|
+
* @param {string} options.targetPath — diretório alvo
|
|
29
|
+
* @param {object} options.flags — flags do CLI
|
|
30
|
+
*/
|
|
31
|
+
async function run({ targetPath, flags }) {
|
|
32
|
+
// 1. Coletar contexto (read-only)
|
|
33
|
+
const ctx = collectContext({
|
|
34
|
+
targetPath,
|
|
35
|
+
templatesDir: TEMPLATES_DIR,
|
|
36
|
+
});
|
|
37
|
+
|
|
38
|
+
console.log("\n🧠 OpenClaw Assist — Modo PLAN por padrão (seguro)\n");
|
|
39
|
+
console.log(` IDE: ${ctx.ide} | OpenClaw: ${ctx.openclaw.hasAgentDir ? "instalado" : "não instalado"}`);
|
|
40
|
+
console.log(` Plataforma: ${ctx.env.platform} | Docker: ${ctx.env.docker}\n`);
|
|
41
|
+
|
|
42
|
+
// 2. Se não tem OpenClaw instalado, sugerir instalação
|
|
43
|
+
if (!ctx.openclaw.hasAgentDir) {
|
|
44
|
+
console.log("⚠️ OpenClaw não detectado neste workspace.");
|
|
45
|
+
console.log(" Rode: npx openclaw init --apply (para instalar)\n");
|
|
46
|
+
return;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
// 3. Pedir solicitação do usuário
|
|
50
|
+
console.log("Descreva o que deseja fazer:");
|
|
51
|
+
console.log(" (ex: 'criar skill', 'melhorar segurança', 'mission control tick')\n");
|
|
52
|
+
const request = await ask("> ");
|
|
53
|
+
|
|
54
|
+
if (!request) {
|
|
55
|
+
console.log("⏹️ Nenhuma solicitação. Saindo.");
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// 4. Rotear para skill correta
|
|
60
|
+
const match = matchSkill({ skillsDir: SKILLS_DIR, userText: request });
|
|
61
|
+
|
|
62
|
+
console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
|
63
|
+
if (match.chosen) {
|
|
64
|
+
console.log(`🎯 Skill selecionada: ${match.chosen.name}`);
|
|
65
|
+
console.log(` Descrição: ${match.chosen.description}`);
|
|
66
|
+
} else {
|
|
67
|
+
console.log("❓ Nenhuma skill correspondente encontrada.");
|
|
68
|
+
console.log(" Tente reformular a solicitação ou use 'openclaw inspect' para ver skills disponíveis.");
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
if (match.alternatives.length > 0) {
|
|
72
|
+
console.log(`\n Alternativas:`);
|
|
73
|
+
match.alternatives.forEach(a => console.log(` • ${a.name}: ${a.description}`));
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
console.log("\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━");
|
|
77
|
+
console.log("\n✅ Protocolo recomendado:");
|
|
78
|
+
console.log(" 1) Rodar INSPECT (read-only) e revisar o contexto");
|
|
79
|
+
console.log(" 2) Descrever exatamente o que quer alterar");
|
|
80
|
+
console.log(" 3) Confirmar APPLY para executar");
|
|
81
|
+
console.log(" 4) Tudo será registrado em .agent/audit/\n");
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
module.exports = { run };
|