clawfast 1.0.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/README.md +227 -0
- package/dist/clawfast.cjs +70336 -0
- package/package.json +30 -0
package/README.md
ADDED
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
# HackerAI - CLI local
|
|
2
|
+
|
|
3
|
+
Versao de terminal do HackerAI. Ela reaproveita o prompt e as ferramentas do
|
|
4
|
+
projeto, roda na sua maquina, sem login e sem limites de uso do app web, usando
|
|
5
|
+
suas proprias chaves de modelo.
|
|
6
|
+
|
|
7
|
+
## Como rodar
|
|
8
|
+
|
|
9
|
+
Na raiz do projeto:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
corepack pnpm@10.33.2 cli
|
|
13
|
+
# ou, se o pnpm ja estiver no PATH:
|
|
14
|
+
pnpm cli
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
No Windows tambem da para usar o atalho:
|
|
18
|
+
|
|
19
|
+
```bat
|
|
20
|
+
cli\hackerai.bat
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Esse atalho inicia em modo local aberto: ele define `CLI_SHELL=cmd.exe`,
|
|
24
|
+
`CLI_SHELL_FLAG=/C` e `HACKERAI_CLI_GUARDRAILS=off` apenas para essa sessao.
|
|
25
|
+
|
|
26
|
+
Digite seu pedido e o agente executa comandos no host local. Saia com `/exit`.
|
|
27
|
+
|
|
28
|
+
## Shell no Windows
|
|
29
|
+
|
|
30
|
+
O CLI escolhe o shell automaticamente:
|
|
31
|
+
|
|
32
|
+
- Windows com Git Bash instalado: usa `bash.exe -c`.
|
|
33
|
+
- Windows sem Git Bash: usa `cmd.exe /C`.
|
|
34
|
+
- Linux/macOS: usa `/bin/bash -c`.
|
|
35
|
+
|
|
36
|
+
Voce pode sobrescrever:
|
|
37
|
+
|
|
38
|
+
```powershell
|
|
39
|
+
$env:CLI_SHELL="cmd.exe"
|
|
40
|
+
$env:CLI_SHELL_FLAG="/C"
|
|
41
|
+
pnpm cli
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
Ou apontar para Git Bash:
|
|
45
|
+
|
|
46
|
+
```powershell
|
|
47
|
+
$env:HACKERAI_BASH_PATH="C:\Program Files\Git\bin\bash.exe"
|
|
48
|
+
pnpm cli
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
## Modo local aberto
|
|
52
|
+
|
|
53
|
+
Por padrao, o CLI ainda respeita os guardrails de comandos perigosos. Para uma
|
|
54
|
+
sessao local explicitamente aberta via PowerShell:
|
|
55
|
+
|
|
56
|
+
```powershell
|
|
57
|
+
$env:CLI_SHELL="cmd.exe"
|
|
58
|
+
$env:CLI_SHELL_FLAG="/C"
|
|
59
|
+
$env:HACKERAI_CLI_GUARDRAILS="off"
|
|
60
|
+
pnpm cli
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Isso desliga os guardrails apenas no CLI local. A aplicacao web continua usando
|
|
64
|
+
as configuracoes normais de seguranca.
|
|
65
|
+
|
|
66
|
+
## Kali, ZAP, Nikto e Nuclei
|
|
67
|
+
|
|
68
|
+
No Windows, o caminho recomendado para ferramentas Kali e usar WSL/Kali. Primeiro
|
|
69
|
+
verifique se a distro existe:
|
|
70
|
+
|
|
71
|
+
```bat
|
|
72
|
+
wsl -l -v
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Se precisar instalar a distro:
|
|
76
|
+
|
|
77
|
+
```bat
|
|
78
|
+
wsl --install -d kali-linux
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Dentro do Kali/WSL, instale os scanners:
|
|
82
|
+
|
|
83
|
+
```bat
|
|
84
|
+
wsl -d kali-linux -- bash -lc "sudo apt update && sudo apt install -y zaproxy nikto nuclei"
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Verifique as ferramentas:
|
|
88
|
+
|
|
89
|
+
```bat
|
|
90
|
+
wsl -d kali-linux -- bash -lc "zaproxy -h >/dev/null || owasp-zap -h >/dev/null; nikto -Version; nuclei -version"
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Exemplos de execucao a partir do Windows `cmd.exe`:
|
|
94
|
+
|
|
95
|
+
```bat
|
|
96
|
+
wsl -d kali-linux -- bash -lc "cd /mnt/c/Users/Usuario/OneDrive/Documentos/Corel/hackerai/SPRIT && nikto -host https://example.com -nointeractive -maxtime 10m -Format htm -output nikto.html"
|
|
97
|
+
wsl -d kali-linux -- bash -lc "cd /mnt/c/Users/Usuario/OneDrive/Documentos/Corel/hackerai/SPRIT && nuclei -u https://example.com -s low,medium,high,critical -jle nuclei.jsonl -me nuclei_markdown -timeout 10 -retries 1"
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
Para OWASP ZAP via Docker no Windows `cmd.exe`:
|
|
101
|
+
|
|
102
|
+
```bat
|
|
103
|
+
docker pull ghcr.io/zaproxy/zaproxy:stable
|
|
104
|
+
docker run --rm -v "%cd%:/zap/wrk/:rw" -t ghcr.io/zaproxy/zaproxy:stable zap-baseline.py -t https://example.com -r zap_baseline.html -J zap_baseline.json -I
|
|
105
|
+
docker run --rm -v "%cd%:/zap/wrk/:rw" -t ghcr.io/zaproxy/zaproxy:stable zap-full-scan.py -t https://example.com -m 5 -r zap_full.html -J zap_full.json -I
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
## Scripts e arquivos
|
|
109
|
+
|
|
110
|
+
Scripts e codigo-fonte devem ser criados pela ferramenta de arquivo dentro do
|
|
111
|
+
workspace do agente, normalmente `./SPRIT`. O terminal fica para executar,
|
|
112
|
+
testar, compilar, instalar dependencias e salvar relatorios/logs.
|
|
113
|
+
|
|
114
|
+
O CLI bloqueia criacao de codigo-fonte por comandos como `echo > file.py`,
|
|
115
|
+
`cat <<EOF > file.py`, `tee file.py`, `Set-Content file.py`, `Out-File file.py`
|
|
116
|
+
e `curl -o file.py`. Redirecionamento continua liberado para relatorios como
|
|
117
|
+
`.txt`, `.json`, `.csv`, `.md`, `.html` e `.log`.
|
|
118
|
+
|
|
119
|
+
## OpenAI e ChatGPT
|
|
120
|
+
|
|
121
|
+
O CLI pode usar a OpenAI oficial por `OPENAI_API_KEY`. Isso nao e login do
|
|
122
|
+
ChatGPT: a API da OpenAI autentica chamadas com credenciais de API no servidor.
|
|
123
|
+
O modelo `chat-latest` foi adicionado como opcao por ser o caminho de API mais
|
|
124
|
+
proximo da experiencia ChatGPT Instant.
|
|
125
|
+
|
|
126
|
+
## Hugging Face
|
|
127
|
+
|
|
128
|
+
O CLI tambem pode usar o Hugging Face Inference Providers Router por
|
|
129
|
+
`HUGGINGFACE_API_KEY` ou `HF_TOKEN`. Ele usa o endpoint OpenAI-compatible de chat
|
|
130
|
+
completion:
|
|
131
|
+
|
|
132
|
+
```env
|
|
133
|
+
HUGGINGFACE_API_KEY=...
|
|
134
|
+
HUGGINGFACE_BASE_URL=https://router.huggingface.co/v1
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
Modelos adicionados:
|
|
138
|
+
|
|
139
|
+
- `Qwen/Qwen3.6-35B-A3B`
|
|
140
|
+
- `zai-org/GLM-5.1-FP8`
|
|
141
|
+
- `deepseek-ai/DeepSeek-V4-Flash`
|
|
142
|
+
|
|
143
|
+
Modelos pedidos mas nao selecionaveis no chat router:
|
|
144
|
+
|
|
145
|
+
- `XiaomiMiMo/MiMo-V2.5-Pro-FP4-DFlash`: substituido por
|
|
146
|
+
`zai-org/GLM-5.1-FP8`, que responde no chat router.
|
|
147
|
+
- `nvidia/DeepSeek-V4-Flash-NVFP4`: o router retorna que nao e um modelo de
|
|
148
|
+
chat. O CLI usa `deepseek-ai/DeepSeek-V4-Flash` como alternativa roteavel.
|
|
149
|
+
|
|
150
|
+
A disponibilidade e o suporte a tool-calling podem variar por modelo/provedor
|
|
151
|
+
no router. Se um modelo da Hugging Face falhar durante uso de ferramentas, use
|
|
152
|
+
`/model auto` ou escolha um modelo OpenRouter/OpenAI no seletor.
|
|
153
|
+
|
|
154
|
+
## Configuracao
|
|
155
|
+
|
|
156
|
+
As chaves ficam em `../.env.local`, que nao deve ser versionado:
|
|
157
|
+
|
|
158
|
+
```env
|
|
159
|
+
OPENROUTER_API_KEY=...
|
|
160
|
+
HUGGINGFACE_API_KEY=...
|
|
161
|
+
HUGGINGFACE_BASE_URL=https://router.huggingface.co/v1
|
|
162
|
+
OPENAI_API_KEY=...
|
|
163
|
+
NVIDIA_API_KEY=...
|
|
164
|
+
NVIDIA_BASE_URL=https://integrate.api.nvidia.com/v1
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
Variaveis opcionais:
|
|
168
|
+
|
|
169
|
+
- `CLI_SHELL`: shell usado para executar comandos.
|
|
170
|
+
- `CLI_SHELL_FLAG`: flag de execucao do shell (`-c`, `/C`, `-Command`).
|
|
171
|
+
- `CLI_WORKDIR`: diretorio de trabalho do agente. Padrao: `./SPRIT`.
|
|
172
|
+
- `HACKERAI_BASH_PATH`: caminho para `bash.exe` no Windows.
|
|
173
|
+
- `HACKERAI_CLI_GUARDRAILS`: use `off` para desligar guardrails no CLI.
|
|
174
|
+
- `HACKERAI_CLI_GUARDRAILS_CONFIG`: configuracao manual no formato `id:true`.
|
|
175
|
+
- `HACKERAI_CLI_DUMP_SYSTEM_PROMPT`: use `1` para salvar o prompt completo em
|
|
176
|
+
`SPRIT/system-prompt.txt` ao iniciar o CLI.
|
|
177
|
+
|
|
178
|
+
O CLI carrega o prompt por `import { systemPrompt } from "@/lib/system-prompt"`
|
|
179
|
+
e valida marcadores obrigatorios antes de chamar qualquer modelo. Se o prompt
|
|
180
|
+
vier incompleto, a sessao falha em vez de usar uma versao reduzida. Use
|
|
181
|
+
`/system` para ver o prompt ativo, a fonte e a checagem.
|
|
182
|
+
|
|
183
|
+
## Modelos
|
|
184
|
+
|
|
185
|
+
A ordem de fallback do CLI e `CLI_MODEL_CHAIN` em
|
|
186
|
+
[`../lib/ai/providers.ts`](../lib/ai/providers.ts):
|
|
187
|
+
|
|
188
|
+
1. OpenRouter `z-ai/glm-4.5-air:free`
|
|
189
|
+
2. OpenRouter `qwen/qwen3-coder:free`
|
|
190
|
+
3. Hugging Face `Qwen/Qwen3.6-35B-A3B`, se `HUGGINGFACE_API_KEY`/`HF_TOKEN`
|
|
191
|
+
estiver configurada
|
|
192
|
+
4. Hugging Face `zai-org/GLM-5.1-FP8`, se Hugging Face estiver configurada
|
|
193
|
+
5. Hugging Face `deepseek-ai/DeepSeek-V4-Flash`, se Hugging Face estiver
|
|
194
|
+
configurada
|
|
195
|
+
6. OpenAI `chat-latest`, se `OPENAI_API_KEY` estiver configurada
|
|
196
|
+
|
|
197
|
+
Somente provedores com chave configurada entram na cadeia. Se um modelo falhar,
|
|
198
|
+
o CLI tenta o proximo automaticamente.
|
|
199
|
+
|
|
200
|
+
`NVIDIA_API_KEY` continua aceito para testes/diagnostico, mas NVIDIA fica fora
|
|
201
|
+
do fallback do agente porque o endpoint atual retorna `500 "'role'"` depois de
|
|
202
|
+
resultados de ferramenta. Para agente com terminal/arquivos, use OpenRouter ou
|
|
203
|
+
OpenAI.
|
|
204
|
+
|
|
205
|
+
Dentro do terminal voce pode escolher o modelo da sessao:
|
|
206
|
+
|
|
207
|
+
```text
|
|
208
|
+
/model abre o seletor de modelos
|
|
209
|
+
2 fixa o segundo modelo da lista no seletor
|
|
210
|
+
/model openai
|
|
211
|
+
/model auto volta para fallback automatico
|
|
212
|
+
```
|
|
213
|
+
|
|
214
|
+
Quando um modelo fica fixo, o CLI usa so ele nas proximas mensagens. O modo
|
|
215
|
+
`auto` volta a tentar a cadeia de fallback na ordem configurada. Dentro do
|
|
216
|
+
seletor, use `cancelar` para sair sem trocar.
|
|
217
|
+
|
|
218
|
+
## Arquitetura
|
|
219
|
+
|
|
220
|
+
- `index.ts`: REPL do terminal.
|
|
221
|
+
- `src/agent.ts`: monta o `ToolContext`, carrega o system prompt e registra as tools.
|
|
222
|
+
- `src/local-sandbox.ts`: executa comandos via `child_process`/`fs` no host.
|
|
223
|
+
- `src/local-sandbox-manager.ts`: manager minimo que entrega o sandbox local.
|
|
224
|
+
- `src/console-writer.ts`: imprime a saida de terminal das tools no stdout.
|
|
225
|
+
|
|
226
|
+
Convex, WorkOS, Trigger.dev, E2B, Stripe, rate limits e entitlements do app web
|
|
227
|
+
ficam fora do CLI local.
|