deepseek-builder 0.1.0__tar.gz
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.
- deepseek_builder-0.1.0/LICENSE +21 -0
- deepseek_builder-0.1.0/PKG-INFO +631 -0
- deepseek_builder-0.1.0/README.md +598 -0
- deepseek_builder-0.1.0/cli/__init__.py +0 -0
- deepseek_builder-0.1.0/cli/commands.py +724 -0
- deepseek_builder-0.1.0/cli/display.py +139 -0
- deepseek_builder-0.1.0/cli/repl.py +354 -0
- deepseek_builder-0.1.0/cli/spinner.py +76 -0
- deepseek_builder-0.1.0/core/__init__.py +0 -0
- deepseek_builder-0.1.0/core/agent.py +69 -0
- deepseek_builder-0.1.0/core/balance.py +46 -0
- deepseek_builder-0.1.0/core/client.py +162 -0
- deepseek_builder-0.1.0/core/config.py +131 -0
- deepseek_builder-0.1.0/core/debug.py +85 -0
- deepseek_builder-0.1.0/core/memory.py +112 -0
- deepseek_builder-0.1.0/core/rules.py +14 -0
- deepseek_builder-0.1.0/core/skills.py +80 -0
- deepseek_builder-0.1.0/core/system.py +447 -0
- deepseek_builder-0.1.0/core/writer.py +130 -0
- deepseek_builder-0.1.0/deep.py +196 -0
- deepseek_builder-0.1.0/deepseek_builder.egg-info/PKG-INFO +631 -0
- deepseek_builder-0.1.0/deepseek_builder.egg-info/SOURCES.txt +36 -0
- deepseek_builder-0.1.0/deepseek_builder.egg-info/dependency_links.txt +1 -0
- deepseek_builder-0.1.0/deepseek_builder.egg-info/entry_points.txt +2 -0
- deepseek_builder-0.1.0/deepseek_builder.egg-info/requires.txt +8 -0
- deepseek_builder-0.1.0/deepseek_builder.egg-info/top_level.txt +4 -0
- deepseek_builder-0.1.0/pwa/__init__.py +0 -0
- deepseek_builder-0.1.0/pwa/generate_icons.py +56 -0
- deepseek_builder-0.1.0/pwa/main.py +434 -0
- deepseek_builder-0.1.0/pwa/static/app.js +501 -0
- deepseek_builder-0.1.0/pwa/static/icon-192.png +0 -0
- deepseek_builder-0.1.0/pwa/static/icon-512.png +0 -0
- deepseek_builder-0.1.0/pwa/static/index.html +115 -0
- deepseek_builder-0.1.0/pwa/static/manifest.json +24 -0
- deepseek_builder-0.1.0/pwa/static/style.css +618 -0
- deepseek_builder-0.1.0/pwa/static/sw.js +9 -0
- deepseek_builder-0.1.0/pyproject.toml +55 -0
- deepseek_builder-0.1.0/setup.cfg +4 -0
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2024 Cynchro Labs
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,631 @@
|
|
|
1
|
+
Metadata-Version: 2.2
|
|
2
|
+
Name: deepseek-builder
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: CLI/REPL to generate complete projects using the DeepSeek API
|
|
5
|
+
Author-email: Cynchro Labs <alexissaucedo@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/cynchro/deepseekCLI
|
|
8
|
+
Project-URL: Repository, https://github.com/cynchro/deepseekCLI
|
|
9
|
+
Project-URL: Bug Tracker, https://github.com/cynchro/deepseekCLI/issues
|
|
10
|
+
Project-URL: Documentation, https://github.com/cynchro/deepseekCLI#readme
|
|
11
|
+
Keywords: deepseek,ai,cli,code-generation,llm,rag
|
|
12
|
+
Classifier: Development Status :: 4 - Beta
|
|
13
|
+
Classifier: Environment :: Console
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: Operating System :: OS Independent
|
|
16
|
+
Classifier: Programming Language :: Python :: 3
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.9
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Software Development :: Code Generators
|
|
22
|
+
Classifier: Topic :: Utilities
|
|
23
|
+
Requires-Python: >=3.9
|
|
24
|
+
Description-Content-Type: text/markdown
|
|
25
|
+
License-File: LICENSE
|
|
26
|
+
Requires-Dist: requests>=2.28
|
|
27
|
+
Requires-Dist: fastapi
|
|
28
|
+
Requires-Dist: uvicorn[standard]
|
|
29
|
+
Requires-Dist: python-multipart
|
|
30
|
+
Provides-Extra: https
|
|
31
|
+
Requires-Dist: trustme; extra == "https"
|
|
32
|
+
Requires-Dist: qrcode; extra == "https"
|
|
33
|
+
|
|
34
|
+
# deep
|
|
35
|
+
|
|
36
|
+
<a href="https://github.com/cynchro/deepseekCLI"><img src="https://img.shields.io/github/stars/cynchro/deepseekCLI?style=social" alt="GitHub stars"/></a>
|
|
37
|
+
|
|
38
|
+
CLI/REPL para generar proyectos completos usando la API de DeepSeek. Le das una descripción en lenguaje natural y genera los archivos, los evalúa, y aprende de cada ejecución para mejorar las siguientes.
|
|
39
|
+
|
|
40
|
+
Hecho con ❤️ por [Cynchro Labs](https://www.cynchrolabs.com.ar)
|
|
41
|
+
|
|
42
|
+
## Instalación
|
|
43
|
+
|
|
44
|
+
### Linux / macOS
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
bash <(curl -fsSL https://raw.githubusercontent.com/cynchro/deepseekCLI/main/install.sh)
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
O desde el repositorio clonado:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
git clone https://github.com/cynchro/deepseekCLI.git
|
|
54
|
+
cd deepseekCLI
|
|
55
|
+
bash install.sh
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
### Windows
|
|
59
|
+
|
|
60
|
+
Desde PowerShell (requiere Python 3.9+ instalado):
|
|
61
|
+
|
|
62
|
+
```powershell
|
|
63
|
+
git clone https://github.com/cynchro/deepseekCLI.git
|
|
64
|
+
cd deepseekCLI
|
|
65
|
+
.\install.ps1
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
O de forma remota:
|
|
69
|
+
|
|
70
|
+
```powershell
|
|
71
|
+
irm https://raw.githubusercontent.com/cynchro/deepseekCLI/main/install.ps1 | iex
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
> El instalador crea un entorno virtual en `~\.local\share\deepseekcli`, agrega el comando `deep` al PATH de usuario, y guarda la API key como variable de entorno de Windows. Abrí una nueva terminal después de instalar.
|
|
75
|
+
|
|
76
|
+
### Configuración de la API key
|
|
77
|
+
|
|
78
|
+
La primera vez que ejecutes `deep` te pedirá la API key y la guardará automáticamente. Obtené la tuya en [platform.deepseek.com](https://platform.deepseek.com/api_keys).
|
|
79
|
+
|
|
80
|
+
Para cambiarla más adelante:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
deep config set-key
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
O con una variable de entorno (tiene prioridad sobre el archivo de config):
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
# Linux/macOS
|
|
90
|
+
export DEEPSEEK_API_KEY=tu_key_aqui
|
|
91
|
+
|
|
92
|
+
# Windows PowerShell
|
|
93
|
+
$env:DEEPSEEK_API_KEY = "tu_key_aqui"
|
|
94
|
+
|
|
95
|
+
# Windows (permanente)
|
|
96
|
+
setx DEEPSEEK_API_KEY "tu_key_aqui"
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## Uso
|
|
102
|
+
|
|
103
|
+
### REPL interactivo
|
|
104
|
+
|
|
105
|
+
```bash
|
|
106
|
+
deep
|
|
107
|
+
```
|
|
108
|
+
|
|
109
|
+
Abre un REPL con autocompletado e historial. Desde ahí podés usar todos los comandos.
|
|
110
|
+
|
|
111
|
+
### Modo directo (scripting)
|
|
112
|
+
|
|
113
|
+
Todos los comandos también funcionan directamente desde la terminal:
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
deep build "API REST en FastAPI con autenticación JWT"
|
|
117
|
+
deep ask "cómo funciona Redis?"
|
|
118
|
+
deep doctor
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## Comandos
|
|
124
|
+
|
|
125
|
+
### `build` — Genera un proyecto
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
deep build "descripción del proyecto"
|
|
129
|
+
deep build -t tarea.txt # carga la descripción desde un archivo
|
|
130
|
+
deep build "app Flask con SQLite" -f # corrige automáticamente si falla
|
|
131
|
+
deep build "landing page en HTML/CSS" -o ~/dir # especifica directorio de salida
|
|
132
|
+
deep build "compilador de expresiones" --model deepseek-reasoner
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
También podés combinar `-t` con otras opciones:
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
deep build -t tarea.txt -f --model deepseek-reasoner -o ~/proyectos
|
|
139
|
+
```
|
|
140
|
+
|
|
141
|
+
El archivo puede ser cualquier `.txt` con la descripción en lenguaje natural. En el REPL:
|
|
142
|
+
|
|
143
|
+
```
|
|
144
|
+
deep ❯ build -t /ruta/mi_tarea.txt
|
|
145
|
+
deep ❯ build -t tarea.txt -f
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Cada `build` ejecuta 5 fases:
|
|
149
|
+
|
|
150
|
+
1. **Planificación** — diseña la arquitectura usando experiencias previas similares
|
|
151
|
+
2. **Generación** — escribe el código completo
|
|
152
|
+
3. **Escritura** — guarda los archivos en disco
|
|
153
|
+
4. **Evaluación** — revisa si el resultado cumple con la tarea
|
|
154
|
+
5. **Aprendizaje** — guarda la experiencia para informar builds futuros
|
|
155
|
+
|
|
156
|
+
Si la evaluación falla, `deep` te pregunta si querés corregirlo (o usá `-f` para que lo haga sin preguntar).
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
### `ask` — Conversación con el modelo
|
|
161
|
+
|
|
162
|
+
```bash
|
|
163
|
+
deep ask "cómo funciona Redis?"
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
Dentro del REPL, `ask` inicia una conversación. El prompt cambia a `chat ❯` y podés seguir preguntando sin repetir el comando:
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
deep ❯ ask qué es Redis?
|
|
170
|
+
...respuesta...
|
|
171
|
+
|
|
172
|
+
chat ❯ es necesario dockerizarlo? ← continúa el hilo automáticamente
|
|
173
|
+
...respuesta contextual...
|
|
174
|
+
|
|
175
|
+
chat ❯ ask qué es Kafka? ← ask resetea e inicia nueva conversación
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
Cuando la conversación se acerca al límite de contexto del modelo, `deep` la compacta automáticamente:
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
⚡ Compactando conversación…
|
|
182
|
+
```
|
|
183
|
+
|
|
184
|
+
Esto resume los mensajes anteriores para que la conversación pueda continuar indefinidamente sin perder el hilo.
|
|
185
|
+
|
|
186
|
+
Para reiniciar la conversación manualmente:
|
|
187
|
+
|
|
188
|
+
```
|
|
189
|
+
chat ❯ reset
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
### `update` — Modifica un proyecto existente
|
|
195
|
+
|
|
196
|
+
```bash
|
|
197
|
+
deep update "agregá autenticación JWT"
|
|
198
|
+
deep update "agregá tests unitarios" --model deepseek-reasoner
|
|
199
|
+
```
|
|
200
|
+
|
|
201
|
+
Modifica los archivos del proyecto en el directorio actual sin tener que regenerarlo desde cero.
|
|
202
|
+
|
|
203
|
+
---
|
|
204
|
+
|
|
205
|
+
### `fix` — Corrige errores del proyecto actual
|
|
206
|
+
|
|
207
|
+
```bash
|
|
208
|
+
deep fix
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
Usa el contexto guardado en `.deep/` para corregir el proyecto sin necesidad de volver a describir la tarea.
|
|
212
|
+
|
|
213
|
+
---
|
|
214
|
+
|
|
215
|
+
### `show` — Muestra el contexto del proyecto actual
|
|
216
|
+
|
|
217
|
+
```bash
|
|
218
|
+
deep show
|
|
219
|
+
```
|
|
220
|
+
|
|
221
|
+
Muestra la tarea original, el modelo usado, el plan, los archivos generados y el resultado de la evaluación.
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
### `serve` — Servidor web para usar deep desde el celular
|
|
226
|
+
|
|
227
|
+
```bash
|
|
228
|
+
deep serve # HTTP básico
|
|
229
|
+
deep serve --https # HTTPS + instalable como app
|
|
230
|
+
deep serve --port 9000 --https # puerto personalizado con HTTPS
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
Levanta una interfaz web accesible desde cualquier dispositivo en la red.
|
|
234
|
+
|
|
235
|
+
---
|
|
236
|
+
|
|
237
|
+
#### Recomendación: usá Tailscale para conectar el celular
|
|
238
|
+
|
|
239
|
+
[Tailscale](https://tailscale.com) es la forma más cómoda y segura de acceder a `deep serve` desde el celular, incluso si estás en redes distintas (datos móviles, otra WiFi, etc.).
|
|
240
|
+
|
|
241
|
+
**Por qué Tailscale:**
|
|
242
|
+
- Te asigna una IP fija (`100.x.x.x`) que no cambia aunque cambies de red
|
|
243
|
+
- Funciona sin abrir puertos en el router
|
|
244
|
+
- La URL es siempre la misma, sin tener que buscar la IP local cada vez
|
|
245
|
+
- Sin Tailscale, el celular y la computadora tienen que estar en la misma WiFi
|
|
246
|
+
|
|
247
|
+
**Setup (una sola vez):**
|
|
248
|
+
|
|
249
|
+
1. Instalá Tailscale en la compu: [tailscale.com/download](https://tailscale.com/download)
|
|
250
|
+
2. Instalá Tailscale en el celular (App Store / Play Store)
|
|
251
|
+
3. Logueate con la misma cuenta en ambos
|
|
252
|
+
4. Listo — la compu aparece en la red Tailscale con una IP `100.x.x.x`
|
|
253
|
+
|
|
254
|
+
Con Tailscale activo, `deep serve --https` muestra directamente la URL `100.x.x.x` para usar desde el celular.
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
#### Instalar como app en el celular (PWA)
|
|
259
|
+
|
|
260
|
+
Para que el celular pueda instalar `deep` como app nativa, la conexión tiene que ser HTTPS. `deep serve --https` genera el certificado automáticamente.
|
|
261
|
+
|
|
262
|
+
> **Requiere `trustme`:** `pip install trustme` o `pip install "deepseekcli[https]"`
|
|
263
|
+
|
|
264
|
+
**Primera vez — instalación del certificado (una sola vez por dispositivo):**
|
|
265
|
+
|
|
266
|
+
```
|
|
267
|
+
$ deep serve --https
|
|
268
|
+
|
|
269
|
+
🔐 HTTPS activado
|
|
270
|
+
|
|
271
|
+
Paso 1 — Instalá el certificado CA en tu celular (una sola vez):
|
|
272
|
+
http://100.x.x.x:8001 ← abrí esta URL en el celular
|
|
273
|
+
|
|
274
|
+
Android : Ajustes → Seguridad → Instalar certificado → CA certificate
|
|
275
|
+
iOS : Abrir archivo descargado → Ajustes → General →
|
|
276
|
+
VPN y administración del dispositivo → Instalar → Confiar
|
|
277
|
+
|
|
278
|
+
Paso 2 — Abrí la app e instalala:
|
|
279
|
+
https://100.x.x.x:8000 ← abrí esta URL en el celular
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
**Pasos:**
|
|
283
|
+
|
|
284
|
+
1. Abrí la URL del **Paso 1** en el navegador del celular
|
|
285
|
+
2. Descargá el archivo `.pem` y seguí las instrucciones según tu sistema:
|
|
286
|
+
- **Android:** Ajustes → Seguridad → Cifrado y credenciales → Instalar un certificado → Certificado de CA
|
|
287
|
+
- **iOS:** Al abrir el archivo, aparece "Perfil descargado" → Ajustes → General → VPN y administración → Instalar → Confiar en el certificado raíz
|
|
288
|
+
3. Abrí la URL del **Paso 2** en el navegador — aparece el botón **⬇** en la cabecera
|
|
289
|
+
4. Tap en **⬇** → la app se instala como si fuera nativa
|
|
290
|
+
|
|
291
|
+
A partir de ese momento no necesitás repetir el proceso. Solo `deep serve --https` y abrís la app instalada directamente desde el home del celular.
|
|
292
|
+
|
|
293
|
+
> **Nota:** El certificado autofirmado es local y temporal — es solo para que el navegador acepte HTTPS en tu red privada. No sale a internet.
|
|
294
|
+
|
|
295
|
+
---
|
|
296
|
+
|
|
297
|
+
### `doctor` — Diagnóstico del entorno
|
|
298
|
+
|
|
299
|
+
```bash
|
|
300
|
+
deep doctor
|
|
301
|
+
```
|
|
302
|
+
|
|
303
|
+
Verifica Python, API key, conexión con DeepSeek, dependencias y configuración del PATH. Funciona correctamente en Linux, macOS y Windows.
|
|
304
|
+
|
|
305
|
+
---
|
|
306
|
+
|
|
307
|
+
### `upgrade` — Actualiza el CLI
|
|
308
|
+
|
|
309
|
+
```bash
|
|
310
|
+
deep upgrade
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Descarga e instala la última versión desde GitHub sin necesidad de reinstalar manualmente.
|
|
314
|
+
|
|
315
|
+
---
|
|
316
|
+
|
|
317
|
+
### `balance` / `history` / `config`
|
|
318
|
+
|
|
319
|
+
```bash
|
|
320
|
+
deep balance # muestra el crédito disponible en DeepSeek
|
|
321
|
+
deep history # muestra las experiencias acumuladas de builds anteriores
|
|
322
|
+
deep config # muestra la API key guardada
|
|
323
|
+
deep config set-key # guarda una nueva API key
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
---
|
|
327
|
+
|
|
328
|
+
## Debug
|
|
329
|
+
|
|
330
|
+
El flag `--debug` activa un log detallado de todo lo que hace `deep` durante una ejecución: prompts enviados, respuestas del modelo, tokens usados, latencias, archivos escritos y cada fase del pipeline. Se guarda en `debug.log` en el directorio donde corras el comando.
|
|
331
|
+
|
|
332
|
+
### Activación
|
|
333
|
+
|
|
334
|
+
`--debug` va siempre **antes** del subcomando:
|
|
335
|
+
|
|
336
|
+
```bash
|
|
337
|
+
deep --debug build "mi tarea"
|
|
338
|
+
deep --debug build -t tarea.txt
|
|
339
|
+
deep --debug build -t tarea.txt -f --model deepseek-reasoner
|
|
340
|
+
deep --debug ask "cómo funciona Redis?"
|
|
341
|
+
deep --debug update "agregá tests"
|
|
342
|
+
deep --debug fix
|
|
343
|
+
```
|
|
344
|
+
|
|
345
|
+
También podés activarlo con una variable de entorno (útil para scripts):
|
|
346
|
+
|
|
347
|
+
```bash
|
|
348
|
+
DEEP_DEBUG=1 deep build -t tarea.txt
|
|
349
|
+
```
|
|
350
|
+
|
|
351
|
+
### Debug con archivo de tarea
|
|
352
|
+
|
|
353
|
+
La combinación más común para analizar un build completo:
|
|
354
|
+
|
|
355
|
+
```bash
|
|
356
|
+
# 1. Escribís la tarea en un .txt (sin límite de largo)
|
|
357
|
+
cat tarea.txt
|
|
358
|
+
|
|
359
|
+
# 2. Corrés con debug
|
|
360
|
+
deep --debug build -t tarea.txt
|
|
361
|
+
|
|
362
|
+
# 3. Analizás el log mientras corre o al terminar
|
|
363
|
+
tail -f debug.log # seguir en tiempo real
|
|
364
|
+
cat debug.log # ver todo al terminar
|
|
365
|
+
grep '\[API_OK\]' debug.log # solo latencias y tokens
|
|
366
|
+
grep '\[PHASE\]' debug.log # solo transiciones de fase
|
|
367
|
+
grep '\[WRITER\]' debug.log # solo archivos escritos
|
|
368
|
+
grep '\[EVAL\]' debug.log # solo el resultado de evaluación
|
|
369
|
+
```
|
|
370
|
+
|
|
371
|
+
Podés combinar todos los flags normales con `--debug`:
|
|
372
|
+
|
|
373
|
+
```bash
|
|
374
|
+
deep --debug build -t tarea.txt -f -o ~/proyectos --model deepseek-reasoner
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
### Estructura del log
|
|
378
|
+
|
|
379
|
+
Cada línea tiene el formato:
|
|
380
|
+
|
|
381
|
+
```
|
|
382
|
+
[HH:MM:SS.mmm + elapsed] [TAG ] mensaje
|
|
383
|
+
```
|
|
384
|
+
|
|
385
|
+
- `HH:MM:SS.mmm` — hora del evento con milisegundos
|
|
386
|
+
- `+elapsed` — segundos desde que arrancó la sesión (para medir duración de cada paso)
|
|
387
|
+
- `TAG` — identificador de la sección (ver tabla abajo)
|
|
388
|
+
|
|
389
|
+
Los bloques de texto largo (prompts, respuestas) se muestran indentados:
|
|
390
|
+
|
|
391
|
+
```
|
|
392
|
+
[07:32:11.450 + 0.00s] [API_CALL ] model=deepseek-chat temp=0.5 max_tokens=1000
|
|
393
|
+
[07:32:11.451 + 0.01s] [API_SYS ] ── system_prompt ──────────────────────────────
|
|
394
|
+
Eres un arquitecto de software senior. Creas planes claros y accionables.
|
|
395
|
+
────────────────────────────────────────────────────────────
|
|
396
|
+
[07:32:11.452 + 0.02s] [API_USER ] ── user_prompt ──────────────────────────────
|
|
397
|
+
Crea un plan detallado para:
|
|
398
|
+
API REST en FastAPI con JWT y PostgreSQL
|
|
399
|
+
...
|
|
400
|
+
────────────────────────────────────────────────────────────
|
|
401
|
+
[07:32:13.210 + 1.76s] [API_OK ] attempt=1 latency=1.76s tokens_in=320 tokens_out=580 total=900
|
|
402
|
+
[07:32:13.211 + 1.77s] [API_RESP ] ── response_content ──────────────────────────────
|
|
403
|
+
## Plan
|
|
404
|
+
1. Estructura de carpetas: app/, tests/, ...
|
|
405
|
+
...
|
|
406
|
+
────────────────────────────────────────────────────────────
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
### Tags del log
|
|
410
|
+
|
|
411
|
+
| Tag | Qué registra |
|
|
412
|
+
|-----|-------------|
|
|
413
|
+
| `INIT` | Comando completo con el que arrancó `deep` |
|
|
414
|
+
| `PHASE` | Transición de fase (1 planificación → 5 aprendizaje) |
|
|
415
|
+
| `API_CALL` | Antes de cada llamada: modelo, temperatura, max_tokens |
|
|
416
|
+
| `API_SYS` | System prompt completo enviado al modelo |
|
|
417
|
+
| `API_USER` | User prompt completo enviado al modelo |
|
|
418
|
+
| `API_OK` | Resultado: intento, latencia, tokens in/out/total |
|
|
419
|
+
| `API_RESP` | Respuesta completa del modelo |
|
|
420
|
+
| `API_ERR` | Error en un intento (incluye reintentos automáticos) |
|
|
421
|
+
| `PLAN` | Experiencias similares encontradas antes de planificar |
|
|
422
|
+
| `PHASE_1` | Plan generado por el modelo |
|
|
423
|
+
| `PHASE_2` | Tokens usados en la generación de código |
|
|
424
|
+
| `PHASE_3` | Archivos escritos en disco |
|
|
425
|
+
| `PHASE_4` | Resultado de la evaluación |
|
|
426
|
+
| `PHASE_5` | Análisis de experiencia guardado en memoria |
|
|
427
|
+
| `PHASE_6` | Reflexión profunda (si `reflect=True`) |
|
|
428
|
+
| `EVAL` | JSON de evaluación parseado (score, issues, positives) |
|
|
429
|
+
| `WRITER` | Directorio del proyecto, bloques detectados, cada archivo |
|
|
430
|
+
| `EXEC` | Tokens usados en la fase de ejecución |
|
|
431
|
+
| `FIX` | Flujo de corrección automática (`fix`, `build -f`) |
|
|
432
|
+
| `UPDATE` | Flujo de modificación de proyecto existente |
|
|
433
|
+
| `SYSTEM` | Resumen final del ciclo completo |
|
|
434
|
+
|
|
435
|
+
### Queries útiles para analizar el log
|
|
436
|
+
|
|
437
|
+
```bash
|
|
438
|
+
# Cuántas llamadas a la API y tokens totales
|
|
439
|
+
grep 'API_OK' debug.log
|
|
440
|
+
|
|
441
|
+
# Ver solo los archivos que se escribieron
|
|
442
|
+
grep '→' debug.log
|
|
443
|
+
|
|
444
|
+
# Ver si hubo errores o reintentos
|
|
445
|
+
grep 'API_ERR' debug.log
|
|
446
|
+
|
|
447
|
+
# Ver el resultado de la evaluación
|
|
448
|
+
grep -A 20 '\[EVAL\]' debug.log
|
|
449
|
+
|
|
450
|
+
# Medir cuánto tardó cada fase
|
|
451
|
+
grep -E '\[PHASE\]|\[PHASE_[1-8]\]' debug.log
|
|
452
|
+
|
|
453
|
+
# Ver si el modelo encontró experiencias previas similares
|
|
454
|
+
grep '\[PLAN\]' debug.log
|
|
455
|
+
|
|
456
|
+
# Seguir el log en tiempo real mientras corre el build
|
|
457
|
+
tail -f debug.log
|
|
458
|
+
```
|
|
459
|
+
|
|
460
|
+
### Notas
|
|
461
|
+
|
|
462
|
+
- El log se **agrega** al final del archivo (no sobreescribe). Cada sesión empieza con una línea `SESSION ...` para distinguirlas.
|
|
463
|
+
- Para empezar limpio antes de un debug: `rm debug.log`
|
|
464
|
+
- El archivo puede crecer rápido si los prompts/respuestas son largos. Un `build` típico genera entre 200 y 500 líneas.
|
|
465
|
+
- Para compartir el log o analizarlo después: el archivo es texto plano, se puede abrir con cualquier editor.
|
|
466
|
+
|
|
467
|
+
---
|
|
468
|
+
|
|
469
|
+
## Reglas personalizadas (.deeprules)
|
|
470
|
+
|
|
471
|
+
Podés definir restricciones que DeepSeek debe respetar en cada `build`, `update` y `fix`. Creá un archivo `.deeprules` en la raíz de tu proyecto:
|
|
472
|
+
|
|
473
|
+
```
|
|
474
|
+
# .deeprules
|
|
475
|
+
Usar PostgreSQL, nunca SQLite
|
|
476
|
+
Todo el código fuente en inglés
|
|
477
|
+
Sin dependencias externas que no sean del stdlib
|
|
478
|
+
Separar rutas, modelos y servicios en archivos distintos
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
Las líneas que empiezan con `#` son comentarios y se ignoran. Las reglas se cargan automáticamente si el archivo existe en el directorio actual.
|
|
482
|
+
|
|
483
|
+
Hay un ejemplo completo en [`examples/deeprules.example`](examples/deeprules.example).
|
|
484
|
+
|
|
485
|
+
---
|
|
486
|
+
|
|
487
|
+
## Skills
|
|
488
|
+
|
|
489
|
+
Los skills son **roles especializados** para el comando `ask`. A diferencia de las `.deeprules` (que restringen el *output* del código), un skill cambia *cómo responde* el modelo durante una conversación.
|
|
490
|
+
|
|
491
|
+
### Usar un skill
|
|
492
|
+
|
|
493
|
+
```
|
|
494
|
+
deep ❯ skill list
|
|
495
|
+
📦 Skills disponibles:
|
|
496
|
+
reviewer Code review estricto como senior developer
|
|
497
|
+
security Análisis de seguridad — OWASP, vulnerabilidades, hardening
|
|
498
|
+
docs Genera documentación técnica clara y concisa
|
|
499
|
+
explainer Explica código o conceptos técnicos de forma simple
|
|
500
|
+
refactor Refactoriza código manteniendo el comportamiento
|
|
501
|
+
|
|
502
|
+
deep ❯ reviewer esta función tiene race conditions?
|
|
503
|
+
→ abre conversación con el rol de reviewer
|
|
504
|
+
|
|
505
|
+
chat ❯ y si agregara un lock aquí... ← continúa con el mismo rol
|
|
506
|
+
|
|
507
|
+
deep ❯ reset ← nueva conversación
|
|
508
|
+
```
|
|
509
|
+
|
|
510
|
+
El nombre del skill se usa directamente como comando. Cambiar de skill reinicia la conversación automáticamente.
|
|
511
|
+
|
|
512
|
+
### Crear un skill
|
|
513
|
+
|
|
514
|
+
Interactivo:
|
|
515
|
+
|
|
516
|
+
```
|
|
517
|
+
deep ❯ skill new
|
|
518
|
+
Nombre del skill: traductor
|
|
519
|
+
Descripción breve: Traduce documentación técnica al español
|
|
520
|
+
System prompt (terminá con una línea que solo diga FIN):
|
|
521
|
+
Sos un traductor técnico experto...
|
|
522
|
+
FIN
|
|
523
|
+
¿Local al proyecto? [s/N]: n
|
|
524
|
+
✅ Skill 'traductor' guardado en ~/.config/deep/skills/traductor.skill
|
|
525
|
+
```
|
|
526
|
+
|
|
527
|
+
O creando el archivo directamente en `~/.config/deep/skills/`:
|
|
528
|
+
|
|
529
|
+
```
|
|
530
|
+
# ~/.config/deep/skills/reviewer.skill
|
|
531
|
+
description: Code review estricto como senior developer
|
|
532
|
+
temperature: 0.2
|
|
533
|
+
max_tokens: 3000
|
|
534
|
+
---
|
|
535
|
+
Sos un senior developer con 15 años de experiencia revisando código de otros.
|
|
536
|
+
Tu trabajo es encontrar problemas reales, no halagos.
|
|
537
|
+
...
|
|
538
|
+
```
|
|
539
|
+
|
|
540
|
+
### Skills globales vs. de proyecto
|
|
541
|
+
|
|
542
|
+
| Ubicación | Alcance |
|
|
543
|
+
|-----------|---------|
|
|
544
|
+
| `~/.config/deep/skills/` | Disponibles desde cualquier directorio |
|
|
545
|
+
| `.deep/skills/` | Solo en el proyecto actual |
|
|
546
|
+
|
|
547
|
+
Los skills de proyecto se cargan además de los globales y tienen prioridad si hay un nombre repetido.
|
|
548
|
+
|
|
549
|
+
Hay ejemplos listos para usar en [`examples/skills/`](examples/skills/).
|
|
550
|
+
|
|
551
|
+
---
|
|
552
|
+
|
|
553
|
+
## Estructura del proyecto generado
|
|
554
|
+
|
|
555
|
+
Cada proyecto generado incluye una carpeta `.deep/` con metadatos:
|
|
556
|
+
|
|
557
|
+
```
|
|
558
|
+
mi-proyecto/
|
|
559
|
+
├── .deep/
|
|
560
|
+
│ ├── context.json # tarea, modelo y plan usado
|
|
561
|
+
│ ├── evaluation.json # resultado de la evaluación
|
|
562
|
+
│ └── RESPONSE.md # respuesta completa del modelo
|
|
563
|
+
└── ... archivos del proyecto
|
|
564
|
+
```
|
|
565
|
+
|
|
566
|
+
Los comandos `fix`, `update` y `show` usan ese contexto automáticamente.
|
|
567
|
+
|
|
568
|
+
---
|
|
569
|
+
|
|
570
|
+
## Requisitos
|
|
571
|
+
|
|
572
|
+
- Python 3.9+
|
|
573
|
+
- API key de DeepSeek
|
|
574
|
+
|
|
575
|
+
### Dependencias opcionales
|
|
576
|
+
|
|
577
|
+
```bash
|
|
578
|
+
pip install prompt_toolkit # autocompletado e historial en el REPL
|
|
579
|
+
pip install trustme # HTTPS para instalar la app en el celular
|
|
580
|
+
pip install "deepseekcli[https]" # instala trustme junto con el paquete
|
|
581
|
+
```
|
|
582
|
+
|
|
583
|
+
Sin `prompt_toolkit` el REPL funciona igual pero en modo básico (sin autocompletado). Sin `trustme`, `deep serve --https` muestra un error con las instrucciones de instalación.
|
|
584
|
+
|
|
585
|
+
---
|
|
586
|
+
|
|
587
|
+
## Compatibilidad
|
|
588
|
+
|
|
589
|
+
| Sistema | Estado |
|
|
590
|
+
|---------|--------|
|
|
591
|
+
| Linux | ✅ Completo |
|
|
592
|
+
| macOS | ✅ Completo |
|
|
593
|
+
| Windows 10+ (Windows Terminal) | ✅ Completo |
|
|
594
|
+
| Windows (cmd.exe) | ⚠️ Funcional, sin colores |
|
|
595
|
+
| WSL | ✅ Completo |
|
|
596
|
+
|
|
597
|
+
---
|
|
598
|
+
|
|
599
|
+
## Philosophy
|
|
600
|
+
|
|
601
|
+
See [PHILOSOPHY.md](PHILOSOPHY.md).
|
|
602
|
+
|
|
603
|
+
## Contributing
|
|
604
|
+
|
|
605
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md).
|
|
606
|
+
|
|
607
|
+
## Code of Conduct
|
|
608
|
+
|
|
609
|
+
See [CODE_OF_CONDUCT.md](CODE_OF_CONDUCT.md).
|
|
610
|
+
|
|
611
|
+
---
|
|
612
|
+
|
|
613
|
+
## Contact
|
|
614
|
+
|
|
615
|
+
**alexissaucedo@gmail.com** · [cynchrolabs.com.ar](https://www.cynchrolabs.com.ar)
|
|
616
|
+
|
|
617
|
+
## Buy me a coffee?
|
|
618
|
+
|
|
619
|
+
If `deep` saved you time, consider a donation — it helps keep the project going.
|
|
620
|
+
|
|
621
|
+
<a href="https://www.paypal.com/donate/?hosted_button_id=YX332RT7KSJ4Q">
|
|
622
|
+
<img src="https://img.shields.io/badge/PayPal-Donate-blue?logo=paypal" alt="Donate with PayPal"/>
|
|
623
|
+
</a>
|
|
624
|
+
|
|
625
|
+
---
|
|
626
|
+
|
|
627
|
+
⭐ If you like this project, give it a star!
|
|
628
|
+
|
|
629
|
+
<a href="https://github.com/cynchro/deepseekCLI">
|
|
630
|
+
<img src="https://img.shields.io/github/stars/cynchro/deepseekCLI?style=social" alt="GitHub stars"/>
|
|
631
|
+
</a>
|