openclaudefree 0.1.8
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/LICENSE +29 -0
- package/README.md +376 -0
- package/bin/import-specifier.mjs +13 -0
- package/bin/import-specifier.test.mjs +13 -0
- package/bin/openclaude +32 -0
- package/dist/cli.mjs +562400 -0
- package/package.json +164 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
NOTICE
|
|
2
|
+
|
|
3
|
+
This repository contains code derived from Anthropic's Claude Code CLI.
|
|
4
|
+
|
|
5
|
+
The original Claude Code source is proprietary software:
|
|
6
|
+
Copyright (c) Anthropic PBC. All rights reserved.
|
|
7
|
+
Subject to Anthropic's Commercial Terms of Service.
|
|
8
|
+
|
|
9
|
+
Modifications and additions by OpenClaude contributors are offered under
|
|
10
|
+
the MIT License where legally permissible:
|
|
11
|
+
|
|
12
|
+
MIT License
|
|
13
|
+
Copyright (c) 2026 OpenClaude contributors (modifications only)
|
|
14
|
+
|
|
15
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
16
|
+
a copy of the modifications made by OpenClaude contributors, to deal
|
|
17
|
+
in those modifications without restriction, including without limitation
|
|
18
|
+
the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
|
19
|
+
and/or sell copies, subject to the following conditions:
|
|
20
|
+
|
|
21
|
+
The above copyright notice and this permission notice shall be included
|
|
22
|
+
in all copies or substantial portions of the modifications.
|
|
23
|
+
|
|
24
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND.
|
|
25
|
+
|
|
26
|
+
The underlying derived code remains subject to Anthropic's copyright.
|
|
27
|
+
This project does not have Anthropic's authorization to distribute
|
|
28
|
+
their proprietary source. Users and contributors should evaluate their
|
|
29
|
+
own legal position.
|
package/README.md
ADDED
|
@@ -0,0 +1,376 @@
|
|
|
1
|
+
# OpenClaude
|
|
2
|
+
|
|
3
|
+
OpenClaude é uma CLI de agente de código open-source para provedores de modelos locais e na nuvem.
|
|
4
|
+
|
|
5
|
+
Use APIs compatíveis com OpenAI, Gemini, GitHub Models, Codex, Ollama, Atomic Chat e outros backends suportados, mantendo um fluxo de trabalho único no terminal: prompts, ferramentas, agentes, MCP, comandos slash e saída em streaming.
|
|
6
|
+
|
|
7
|
+
[](https://github.com/Gitlawb/openclaude/actions/workflows/pr-checks.yml)
|
|
8
|
+
[](https://github.com/Gitlawb/openclaude/tags)
|
|
9
|
+
[](https://github.com/Gitlawb/openclaude/discussions)
|
|
10
|
+
[](SECURITY.md)
|
|
11
|
+
[](LICENSE)
|
|
12
|
+
|
|
13
|
+
[Início Rápido](#início-rápido) | [Guias de Configuração](#guias-de-configuração) | [Provedores](#provedores-suportados) | [Build Local](#build-a-partir-do-código-fonte-e-desenvolvimento-local) | [Extensão VS Code](#extensão-vs-code) | [Comunidade](#comunidade)
|
|
14
|
+
|
|
15
|
+
## Por que OpenClaude
|
|
16
|
+
|
|
17
|
+
- Use uma única CLI para APIs na nuvem e backends de modelos locais
|
|
18
|
+
- Salve perfis de provedores dentro do app com `/provider`
|
|
19
|
+
- Funciona com OpenAI, Gemini, GitHub Models, Codex, Ollama, Atomic Chat e outros provedores suportados
|
|
20
|
+
- Mantenha fluxos de trabalho de agente de código em um só lugar: bash, ferramentas de arquivo, grep, glob, agentes, tarefas, MCP e ferramentas web
|
|
21
|
+
- Use a extensão VS Code incluída para integração de lançamento e suporte a temas
|
|
22
|
+
|
|
23
|
+
## Início Rápido
|
|
24
|
+
|
|
25
|
+
### Instalar
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
npm install -g github:DanonePlayer/openclaudeFree
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Se após a instalação aparecer `ripgrep not found`, instale o ripgrep no sistema e confirme que `rg --version` funciona no terminal antes de iniciar o OpenClaude.
|
|
32
|
+
|
|
33
|
+
### Iniciar
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
openclaude
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
Dentro do OpenClaude:
|
|
40
|
+
|
|
41
|
+
- rode `/provider` para configuração guiada de provedores e perfis salvos
|
|
42
|
+
- rode `/onboard-github` para integração com GitHub Models
|
|
43
|
+
|
|
44
|
+
### Configuração rápida com OpenAI
|
|
45
|
+
|
|
46
|
+
macOS / Linux:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
export CLAUDE_CODE_USE_OPENAI=1
|
|
50
|
+
export OPENAI_API_KEY=sk-sua-chave-aqui
|
|
51
|
+
export OPENAI_MODEL=gpt-4o
|
|
52
|
+
|
|
53
|
+
openclaude
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Windows PowerShell:
|
|
57
|
+
|
|
58
|
+
```powershell
|
|
59
|
+
$env:CLAUDE_CODE_USE_OPENAI="1"
|
|
60
|
+
$env:OPENAI_API_KEY="sk-sua-chave-aqui"
|
|
61
|
+
$env:OPENAI_MODEL="gpt-4o"
|
|
62
|
+
|
|
63
|
+
openclaude
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Configuração rápida com Ollama local
|
|
67
|
+
|
|
68
|
+
macOS / Linux:
|
|
69
|
+
|
|
70
|
+
```bash
|
|
71
|
+
export CLAUDE_CODE_USE_OPENAI=1
|
|
72
|
+
export OPENAI_BASE_URL=http://localhost:11434/v1
|
|
73
|
+
export OPENAI_MODEL=qwen2.5-coder:7b
|
|
74
|
+
|
|
75
|
+
openclaude
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
Windows PowerShell:
|
|
79
|
+
|
|
80
|
+
```powershell
|
|
81
|
+
$env:CLAUDE_CODE_USE_OPENAI="1"
|
|
82
|
+
$env:OPENAI_BASE_URL="http://localhost:11434/v1"
|
|
83
|
+
$env:OPENAI_MODEL="qwen2.5-coder:7b"
|
|
84
|
+
|
|
85
|
+
openclaude
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
## Guias de Configuração
|
|
89
|
+
|
|
90
|
+
Guias para iniciantes:
|
|
91
|
+
|
|
92
|
+
- [Configuração para Não-Técnicos](docs/non-technical-setup.md)
|
|
93
|
+
- [Início Rápido no Windows](docs/quick-start-windows.md)
|
|
94
|
+
- [Início Rápido no macOS / Linux](docs/quick-start-mac-linux.md)
|
|
95
|
+
|
|
96
|
+
Guias avançados e build a partir do código:
|
|
97
|
+
|
|
98
|
+
- [Configuração Avançada](docs/advanced-setup.md)
|
|
99
|
+
- [Instalação no Android](ANDROID_INSTALL.md)
|
|
100
|
+
|
|
101
|
+
## Provedores Suportados
|
|
102
|
+
|
|
103
|
+
| Provedor | Forma de Configuração | Observações |
|
|
104
|
+
| --- | --- | --- |
|
|
105
|
+
| Compatível com OpenAI | `/provider` ou variáveis de ambiente | Funciona com OpenAI, OpenRouter, DeepSeek, Groq, Mistral, LM Studio e outros servidores `/v1` compatíveis |
|
|
106
|
+
| Gemini | `/provider` ou variáveis de ambiente | Suporta chave de API, token de acesso ou fluxo ADC local |
|
|
107
|
+
| GitHub Models | `/onboard-github` | Integração interativa com credenciais salvas |
|
|
108
|
+
| Codex | `/provider` | Usa credenciais Codex existentes quando disponíveis |
|
|
109
|
+
| Ollama | `/provider` ou variáveis de ambiente | Inferência local sem necessidade de chave de API |
|
|
110
|
+
| Atomic Chat | configuração avançada | Backend local para Apple Silicon |
|
|
111
|
+
| Bedrock / Vertex / Foundry | variáveis de ambiente | Integrações adicionais para ambientes suportados |
|
|
112
|
+
|
|
113
|
+
## O que Funciona
|
|
114
|
+
|
|
115
|
+
- **Fluxos de trabalho com ferramentas**: Bash, leitura/escrita/edição de arquivos, grep, glob, agentes, tarefas, MCP e comandos slash
|
|
116
|
+
- **Respostas em streaming**: Saída de tokens em tempo real e progresso das ferramentas
|
|
117
|
+
- **Chamada de ferramentas**: Loops multi-etapa com chamadas ao modelo, execução de ferramentas e respostas de acompanhamento
|
|
118
|
+
- **Imagens**: Entradas de imagem por URL e base64 para provedores que suportam visão
|
|
119
|
+
- **Perfis de provedores**: Configuração guiada e suporte a `.openclaude-profile.json` salvo
|
|
120
|
+
- **Backends locais e remotos**: APIs na nuvem, servidores locais e inferência local em Apple Silicon
|
|
121
|
+
|
|
122
|
+
## Notas sobre Provedores
|
|
123
|
+
|
|
124
|
+
O OpenClaude suporta múltiplos provedores, mas o comportamento não é idêntico entre todos.
|
|
125
|
+
|
|
126
|
+
- Funcionalidades específicas da Anthropic podem não existir em outros provedores
|
|
127
|
+
- A qualidade das ferramentas depende muito do modelo selecionado
|
|
128
|
+
- Modelos locais menores podem ter dificuldades com fluxos longos de múltiplas etapas
|
|
129
|
+
- Alguns provedores impõem limites de saída menores que os padrões da CLI, e o OpenClaude se adapta quando possível
|
|
130
|
+
|
|
131
|
+
Para melhores resultados, use modelos com bom suporte a chamadas de ferramentas/funções.
|
|
132
|
+
|
|
133
|
+
## Roteamento de Agentes
|
|
134
|
+
|
|
135
|
+
O OpenClaude pode rotear diferentes agentes para diferentes modelos através de configurações. Útil para otimização de custos ou divisão de trabalho por capacidade do modelo.
|
|
136
|
+
|
|
137
|
+
Adicione ao `~/.claude/settings.json`:
|
|
138
|
+
|
|
139
|
+
```json
|
|
140
|
+
{
|
|
141
|
+
"agentModels": {
|
|
142
|
+
"deepseek-chat": {
|
|
143
|
+
"base_url": "https://api.deepseek.com/v1",
|
|
144
|
+
"api_key": "sk-sua-chave"
|
|
145
|
+
},
|
|
146
|
+
"gpt-4o": {
|
|
147
|
+
"base_url": "https://api.openai.com/v1",
|
|
148
|
+
"api_key": "sk-sua-chave"
|
|
149
|
+
}
|
|
150
|
+
},
|
|
151
|
+
"agentRouting": {
|
|
152
|
+
"Explore": "deepseek-chat",
|
|
153
|
+
"Plan": "gpt-4o",
|
|
154
|
+
"general-purpose": "gpt-4o",
|
|
155
|
+
"frontend-dev": "deepseek-chat",
|
|
156
|
+
"default": "gpt-4o"
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
Quando nenhuma correspondência de roteamento é encontrada, o provedor global é usado como fallback.
|
|
162
|
+
|
|
163
|
+
> **Atenção:** Os valores de `api_key` no `settings.json` são armazenados em texto simples. Mantenha esse arquivo privado e não o envie para controle de versão.
|
|
164
|
+
|
|
165
|
+
## Busca e Acesso à Web
|
|
166
|
+
|
|
167
|
+
Por padrão, o `WebSearch` funciona em modelos não-Anthropic usando o DuckDuckGo. Isso dá ao GPT-4o, DeepSeek, Gemini, Ollama e outros provedores compatíveis com OpenAI um caminho gratuito de busca na web.
|
|
168
|
+
|
|
169
|
+
> **Atenção:** O fallback do DuckDuckGo funciona raspando resultados de busca e pode ser limitado por taxa, bloqueado ou sujeito aos Termos de Serviço do DuckDuckGo. Para uma opção mais confiável, configure o Firecrawl.
|
|
170
|
+
|
|
171
|
+
Para backends nativos da Anthropic e respostas Codex, o OpenClaude mantém o comportamento nativo de busca web do provedor.
|
|
172
|
+
|
|
173
|
+
O `WebFetch` funciona, mas seu caminho básico de HTTP + HTML para markdown pode falhar em sites renderizados por JavaScript ou que bloqueiam requisições HTTP simples.
|
|
174
|
+
|
|
175
|
+
Configure uma chave de API do [Firecrawl](https://firecrawl.dev) para busca/acesso com Firecrawl:
|
|
176
|
+
|
|
177
|
+
```bash
|
|
178
|
+
export FIRECRAWL_API_KEY=sua-chave-aqui
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
Com Firecrawl ativado:
|
|
182
|
+
|
|
183
|
+
- `WebSearch` pode usar a API de busca do Firecrawl enquanto o DuckDuckGo permanece o caminho gratuito padrão para modelos não-Claude
|
|
184
|
+
- `WebFetch` usa o endpoint de raspagem do Firecrawl em vez de HTTP puro, lidando corretamente com páginas renderizadas por JS
|
|
185
|
+
|
|
186
|
+
O plano gratuito em [firecrawl.dev](https://firecrawl.dev) inclui 500 créditos. A chave é opcional.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## Servidor gRPC Headless
|
|
191
|
+
|
|
192
|
+
O OpenClaude pode ser executado como um serviço gRPC headless, permitindo integrar suas capacidades de agente (ferramentas, bash, edição de arquivos) em outras aplicações, pipelines CI/CD ou interfaces personalizadas. O servidor usa streaming bidirecional para enviar chunks de texto em tempo real, chamadas de ferramentas e solicitar permissões para comandos sensíveis.
|
|
193
|
+
|
|
194
|
+
### 1. Iniciar o Servidor gRPC
|
|
195
|
+
|
|
196
|
+
Inicie o motor principal como serviço gRPC em `localhost:50051`:
|
|
197
|
+
|
|
198
|
+
```bash
|
|
199
|
+
npm run dev:grpc
|
|
200
|
+
```
|
|
201
|
+
|
|
202
|
+
#### Configuração
|
|
203
|
+
|
|
204
|
+
| Variável | Padrão | Descrição |
|
|
205
|
+
|-----------|-------------|------------------------------------------------|
|
|
206
|
+
| `GRPC_PORT` | `50051` | Porta em que o servidor gRPC escuta |
|
|
207
|
+
| `GRPC_HOST` | `localhost` | Endereço de bind. Use `0.0.0.0` para expor em todas as interfaces (não recomendado sem autenticação) |
|
|
208
|
+
|
|
209
|
+
### 2. Executar o Cliente CLI de Teste
|
|
210
|
+
|
|
211
|
+
Fornecemos um cliente CLI leve que se comunica exclusivamente via gRPC. Funciona como a CLI interativa principal, renderizando cores, transmitindo tokens e solicitando permissões de ferramentas (s/n) via evento `action_required` do gRPC.
|
|
212
|
+
|
|
213
|
+
Em outro terminal, execute:
|
|
214
|
+
|
|
215
|
+
```bash
|
|
216
|
+
npm run dev:grpc:cli
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
*Nota: As definições gRPC estão em `src/proto/openclaude.proto`. Use esse arquivo para gerar clientes em Python, Go, Rust ou qualquer outra linguagem.*
|
|
220
|
+
|
|
221
|
+
---
|
|
222
|
+
|
|
223
|
+
## Build a Partir do Código Fonte e Desenvolvimento Local
|
|
224
|
+
|
|
225
|
+
```bash
|
|
226
|
+
bun install
|
|
227
|
+
bun run build
|
|
228
|
+
node dist/cli.mjs
|
|
229
|
+
```
|
|
230
|
+
|
|
231
|
+
Comandos úteis:
|
|
232
|
+
|
|
233
|
+
- `bun run dev`
|
|
234
|
+
- `bun test`
|
|
235
|
+
- `bun run test:coverage`
|
|
236
|
+
- `bun run security:pr-scan -- --base origin/main`
|
|
237
|
+
- `bun run smoke`
|
|
238
|
+
- `bun run doctor:runtime`
|
|
239
|
+
- `bun run verify:privacy`
|
|
240
|
+
- execuções focadas com `bun test ...` para as áreas que você modificou
|
|
241
|
+
|
|
242
|
+
## Testes e Cobertura
|
|
243
|
+
|
|
244
|
+
O OpenClaude usa o executor de testes integrado do Bun para testes unitários.
|
|
245
|
+
|
|
246
|
+
Execute todos os testes unitários:
|
|
247
|
+
|
|
248
|
+
```bash
|
|
249
|
+
bun test
|
|
250
|
+
```
|
|
251
|
+
|
|
252
|
+
Gere cobertura de testes unitários:
|
|
253
|
+
|
|
254
|
+
```bash
|
|
255
|
+
bun run test:coverage
|
|
256
|
+
```
|
|
257
|
+
|
|
258
|
+
Abra o relatório visual de cobertura:
|
|
259
|
+
|
|
260
|
+
```bash
|
|
261
|
+
open coverage/index.html
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Se você já tem `coverage/lcov.info` e quer apenas reconstruir a interface:
|
|
265
|
+
|
|
266
|
+
```bash
|
|
267
|
+
bun run test:coverage:ui
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
Use execuções focadas quando modificar apenas uma área:
|
|
271
|
+
|
|
272
|
+
- `bun run test:provider`
|
|
273
|
+
- `bun run test:provider-recommendation`
|
|
274
|
+
- `bun test caminho/para/arquivo.test.ts`
|
|
275
|
+
|
|
276
|
+
Validação recomendada antes de abrir um PR:
|
|
277
|
+
|
|
278
|
+
- `bun run build`
|
|
279
|
+
- `bun run smoke`
|
|
280
|
+
- `bun run test:coverage` para cobertura mais ampla quando sua mudança afeta runtime compartilhado ou lógica de provedor
|
|
281
|
+
- execuções focadas com `bun test ...` para os arquivos e fluxos que você alterou
|
|
282
|
+
|
|
283
|
+
A saída de cobertura é gravada em `coverage/lcov.info`, e o OpenClaude também gera um mapa de calor no estilo de atividade git em `coverage/index.html`.
|
|
284
|
+
|
|
285
|
+
## Estrutura do Repositório
|
|
286
|
+
|
|
287
|
+
- `src/` - CLI/runtime principal
|
|
288
|
+
- `scripts/` - scripts de build, verificação e manutenção
|
|
289
|
+
- `docs/` - documentação de configuração, contribuição e projeto
|
|
290
|
+
- `python/` - helpers Python independentes e seus testes
|
|
291
|
+
- `vscode-extension/openclaude-vscode/` - extensão VS Code
|
|
292
|
+
- `.github/` - automação do repositório, templates e configuração de CI
|
|
293
|
+
- `bin/` - entrypoints do lançador da CLI
|
|
294
|
+
|
|
295
|
+
## Extensão VS Code
|
|
296
|
+
|
|
297
|
+
O repositório inclui uma extensão VS Code em [`vscode-extension/openclaude-vscode`](vscode-extension/openclaude-vscode) para integração de lançamento do OpenClaude, interface de centro de controle com suporte a provedores e suporte a temas.
|
|
298
|
+
|
|
299
|
+
## Segurança
|
|
300
|
+
|
|
301
|
+
Se você acredita ter encontrado um problema de segurança, veja [SECURITY.md](SECURITY.md).
|
|
302
|
+
|
|
303
|
+
## Comunidade
|
|
304
|
+
|
|
305
|
+
- Use as [Discussões do GitHub](https://github.com/Gitlawb/openclaude/discussions) para perguntas, ideias e conversas da comunidade
|
|
306
|
+
- Use as [Issues do GitHub](https://github.com/Gitlawb/openclaude/issues) para bugs confirmados e trabalho de funcionalidades acionáveis
|
|
307
|
+
|
|
308
|
+
## Contribuindo
|
|
309
|
+
|
|
310
|
+
Contribuições são bem-vindas.
|
|
311
|
+
|
|
312
|
+
Para mudanças maiores, abra uma issue primeiro para que o escopo fique claro antes da implementação. Comandos úteis de validação:
|
|
313
|
+
|
|
314
|
+
- `bun run build`
|
|
315
|
+
- `bun run test:coverage`
|
|
316
|
+
- `bun run smoke`
|
|
317
|
+
- execuções focadas com `bun test ...` para áreas modificadas
|
|
318
|
+
|
|
319
|
+
## Adicionando um Novo Modelo (evitar "Compacting conversation")
|
|
320
|
+
|
|
321
|
+
Se ao usar um modelo aparecer a mensagem `✻ Compacting conversation…` logo na primeira mensagem, é porque o modelo não está na tabela de context windows do projeto e o sistema assume um contexto de apenas **8k tokens** — o que faz o compactador disparar imediatamente.
|
|
322
|
+
|
|
323
|
+
### Como corrigir
|
|
324
|
+
|
|
325
|
+
Edite o arquivo:
|
|
326
|
+
|
|
327
|
+
```
|
|
328
|
+
src/utils/model/openaiContextWindows.ts
|
|
329
|
+
```
|
|
330
|
+
|
|
331
|
+
Adicione o modelo nas duas tabelas do arquivo:
|
|
332
|
+
|
|
333
|
+
**1. `OPENAI_CONTEXT_WINDOWS`** — tamanho total do contexto (quantos tokens o modelo aceita como entrada):
|
|
334
|
+
|
|
335
|
+
```typescript
|
|
336
|
+
// Exemplo
|
|
337
|
+
'seu-provedor/nome-do-modelo': 131_072,
|
|
338
|
+
```
|
|
339
|
+
|
|
340
|
+
**2. `OPENAI_MAX_OUTPUT_TOKENS`** — quantos tokens o modelo pode gerar na resposta:
|
|
341
|
+
|
|
342
|
+
```typescript
|
|
343
|
+
// Exemplo
|
|
344
|
+
'seu-provedor/nome-do-modelo': 8_192,
|
|
345
|
+
```
|
|
346
|
+
|
|
347
|
+
Os valores corretos para cada modelo estão na página do provedor. Para OpenRouter: [openrouter.ai/models](https://openrouter.ai/models).
|
|
348
|
+
|
|
349
|
+
> **Nota:** o prefixo do modelo é usado como chave. `'meta-llama/llama-3.1-8b-instruct'` também vai casar com `'meta-llama/llama-3.1-8b-instruct:free'` automaticamente.
|
|
350
|
+
|
|
351
|
+
Depois de editar, rebuilde e commite:
|
|
352
|
+
|
|
353
|
+
```bash
|
|
354
|
+
bun run build
|
|
355
|
+
git add src/utils/model/openaiContextWindows.ts dist/cli.mjs
|
|
356
|
+
git commit -m "feat: adicionar contexto do modelo X"
|
|
357
|
+
git push
|
|
358
|
+
```
|
|
359
|
+
|
|
360
|
+
### Por que isso acontece
|
|
361
|
+
|
|
362
|
+
O OpenClaude monitora quantos tokens estão sendo usados na conversa. Quando o total ultrapassa um threshold (tamanho do contexto menos uma margem de segurança), ele resume a conversa automaticamente para liberar espaço.
|
|
363
|
+
|
|
364
|
+
Se o modelo não está na tabela, o sistema usa 8k como padrão conservador — e como o system prompt do OpenClaude sozinho já ocupa vários tokens, o threshold é atingido imediatamente na primeira mensagem.
|
|
365
|
+
|
|
366
|
+
---
|
|
367
|
+
|
|
368
|
+
## Aviso Legal
|
|
369
|
+
|
|
370
|
+
O OpenClaude é um projeto independente da comunidade e não é afiliado, endossado ou patrocinado pela Anthropic.
|
|
371
|
+
|
|
372
|
+
O OpenClaude originou-se do codebase do Claude Code e foi substancialmente modificado para suportar múltiplos provedores e uso aberto. "Claude" e "Claude Code" são marcas registradas da Anthropic PBC. Veja [LICENSE](LICENSE) para detalhes.
|
|
373
|
+
|
|
374
|
+
## Licença
|
|
375
|
+
|
|
376
|
+
Veja [LICENSE](LICENSE).
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import { join, win32 } from 'path'
|
|
2
|
+
import { pathToFileURL } from 'url'
|
|
3
|
+
|
|
4
|
+
export function getDistImportSpecifier(baseDir) {
|
|
5
|
+
if (/^[A-Za-z]:\\/.test(baseDir)) {
|
|
6
|
+
const distPath = win32.join(baseDir, '..', 'dist', 'cli.mjs')
|
|
7
|
+
return `file:///${distPath.replace(/\\/g, '/')}`
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
const joinImpl = join
|
|
11
|
+
const distPath = joinImpl(baseDir, '..', 'dist', 'cli.mjs')
|
|
12
|
+
return pathToFileURL(distPath).href
|
|
13
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import assert from 'node:assert/strict'
|
|
2
|
+
import test from 'node:test'
|
|
3
|
+
|
|
4
|
+
import { getDistImportSpecifier } from './import-specifier.mjs'
|
|
5
|
+
|
|
6
|
+
test('builds a file URL import specifier for dist/cli.mjs', () => {
|
|
7
|
+
const specifier = getDistImportSpecifier('C:\\repo\\bin')
|
|
8
|
+
|
|
9
|
+
assert.equal(
|
|
10
|
+
specifier,
|
|
11
|
+
'file:///C:/repo/dist/cli.mjs',
|
|
12
|
+
)
|
|
13
|
+
})
|
package/bin/openclaude
ADDED
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* OpenClaude — Claude Code with any LLM
|
|
5
|
+
*
|
|
6
|
+
* If dist/cli.mjs exists (built), run that.
|
|
7
|
+
* Otherwise, tell the user to build first or use `bun run dev`.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { existsSync } from 'fs'
|
|
11
|
+
import { join, dirname } from 'path'
|
|
12
|
+
import { fileURLToPath, pathToFileURL } from 'url'
|
|
13
|
+
|
|
14
|
+
const __dirname = dirname(fileURLToPath(import.meta.url))
|
|
15
|
+
const distPath = join(__dirname, '..', 'dist', 'cli.mjs')
|
|
16
|
+
|
|
17
|
+
if (existsSync(distPath)) {
|
|
18
|
+
await import(pathToFileURL(distPath).href)
|
|
19
|
+
} else {
|
|
20
|
+
console.error(`
|
|
21
|
+
openclaude: dist/cli.mjs not found.
|
|
22
|
+
|
|
23
|
+
Build first:
|
|
24
|
+
bun run build
|
|
25
|
+
|
|
26
|
+
Or run directly with Bun:
|
|
27
|
+
bun run dev
|
|
28
|
+
|
|
29
|
+
See README.md for setup instructions.
|
|
30
|
+
`)
|
|
31
|
+
process.exit(1)
|
|
32
|
+
}
|