@qitqode/cli 0.1.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/LICENSE +23 -0
- package/README.es.md +224 -0
- package/README.fr.md +224 -0
- package/README.ja.md +224 -0
- package/README.md +250 -0
- package/README.pt.md +224 -0
- package/README.ru.md +224 -0
- package/README.zh.md +224 -0
- package/README.zht.md +224 -0
- package/THIRD_PARTY_NOTICES +9937 -0
- package/bin/qitqode +131 -0
- package/package.json +50 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 QitQode contributors, Spannings LLC
|
|
4
|
+
Copyright (c) 2026 MiMo Code, Xiaomi Corporation
|
|
5
|
+
Copyright (c) 2025 opencode
|
|
6
|
+
|
|
7
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
8
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
9
|
+
in the Software without restriction, including without limitation the rights
|
|
10
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
11
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
12
|
+
furnished to do so, subject to the following conditions:
|
|
13
|
+
|
|
14
|
+
The above copyright notice and this permission notice shall be included in all
|
|
15
|
+
copies or substantial portions of the Software.
|
|
16
|
+
|
|
17
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
18
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
19
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
20
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
21
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
22
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
23
|
+
SOFTWARE.
|
package/README.es.md
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
<h1 align="center">QitQode</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center"><strong>Agente de IA para programar en la terminal, con memoria.</strong></p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://qitqode.com">Sitio web</a>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="./README.md">English</a> | <a href="./README.zh.md">简体中文</a> | <a href="./README.zht.md">繁體中文</a> | <a href="./README.ja.md">日本語</a> | <a href="./README.fr.md">Français</a> | <a href="./README.ru.md">Русский</a> | <strong>Español</strong> | <a href="./README.pt.md">Português</a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
La mayoría de los agentes de programación olvidan todo en cuanto termina una sesión. QitQode no. Lee y escribe código, ejecuta comandos, gestiona Git — y mantiene una memoria persistente y consultable de tu proyecto entre sesiones, reconstruyendo su propio contexto cuando la conversación se alarga para poder seguir trabajando en lugar de empezar de cero.
|
|
16
|
+
|
|
17
|
+
Una sola cuenta, cinco niveles de modelo — **Free**, **Default**, **Fast**, **Economy**, **Power**. Sin paneles de proveedores, sin malabares con claves de API, sin hojas de cálculo de facturación por modelo.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Inicio rápido
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Requires Bun 1.3.11 or newer
|
|
25
|
+
bun add --global @qitqode/cli
|
|
26
|
+
|
|
27
|
+
# Run
|
|
28
|
+
qitqode
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
El primer arranque te guía en el inicio de sesión:
|
|
32
|
+
|
|
33
|
+
- **Sign in with QitQode** — un flujo de código de dispositivo que funciona en todas partes, incluidas sesiones SSH y entornos aislados remotos: la CLI muestra una URL de verificación y un código (y abre tu navegador cuando hay uno disponible); apruébalo desde cualquier dispositivo para terminar
|
|
34
|
+
- **API key** — pega una clave de API de QitQode en su lugar
|
|
35
|
+
|
|
36
|
+
Luego elige un nivel en el selector de modelos y ponte a trabajar. Esa es toda la configuración.
|
|
37
|
+
|
|
38
|
+
### Usa QitQode en Español
|
|
39
|
+
|
|
40
|
+
La TUI detecta automáticamente el idioma de tu sistema. Para cambiarlo manualmente, ejecuta `/language` (o `/lang`) dentro de QitQode y elige Español de la lista.
|
|
41
|
+
|
|
42
|
+
<details>
|
|
43
|
+
<summary><strong>WSL: problemas con el portapapeles</strong></summary>
|
|
44
|
+
|
|
45
|
+
Si ves texto ilegible al copiar en WSL, instala `xsel`:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
sudo apt install xsel
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
</details>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Por qué QitQode
|
|
56
|
+
|
|
57
|
+
No necesitas otra envoltura de chat. Necesitas un agente capaz de sostener un trabajo largo sin perder el hilo. QitQode se apoya en cuatro mecanismos:
|
|
58
|
+
|
|
59
|
+
### 1. Memoria que sobrevive a la sesión
|
|
60
|
+
|
|
61
|
+
Cada proyecto obtiene una capa de memoria persistente respaldada por la búsqueda de texto completo de SQLite: conocimiento del proyecto en `MEMORY.md`, puntos de control automáticos de la sesión, notas rápidas y registros de progreso por tarea. Al reanudar, la memoria relevante se inyecta automáticamente — clasificada y ajustada a un presupuesto de tokens, no volcada sin más. El agente retoma donde lo dejó en lugar de volver a aprender tu base de código.
|
|
62
|
+
|
|
63
|
+
### 2. Contexto que se reconstruye solo
|
|
64
|
+
|
|
65
|
+
Las tareas largas rebasan las ventanas de contexto. QitQode vigila la ventana, guarda puntos de control del estado antes de que se llene y reconstruye el contexto de trabajo a partir del último punto de control, la memoria del proyecto y el progreso de la tarea — así una refactorización de varias horas no muere al llegar al límite de tokens.
|
|
66
|
+
|
|
67
|
+
### 3. Autonomía de la que puedes pedir cuentas
|
|
68
|
+
|
|
69
|
+
Define una condición de parada con `/goal`. Cuando el agente cree que ha terminado, un modelo juez independiente revisa la conversación y decide si el objetivo se ha cumplido de verdad — se acabaron los optimistas «¡listo!» a mitad del trabajo. Combínalo con el rastreador de tareas en forma de árbol (`T1`, `T1.1`, …) y los subagentes en paralelo para un trabajo desatendido real.
|
|
70
|
+
|
|
71
|
+
### 4. Una suscripción, cero fontanería de proveedores
|
|
72
|
+
|
|
73
|
+
Cinco niveles, un solo inicio de sesión. Cambia de nivel a mitad de sesión con `/free`, `/default`, `/fast`, `/economical` o `/power`. Consulta tu saldo en cualquier momento con la pantalla integrada de qredits — el uso es inspeccionable, no una sorpresa a fin de mes.
|
|
74
|
+
|
|
75
|
+
### Y las partes que otros dejan fuera
|
|
76
|
+
|
|
77
|
+
- **Credenciales cifradas en reposo** — tus tokens de autenticación se sellan con una clave guardada en el keyring del sistema operativo, y las variables de entorno con credenciales se eliminan por defecto de cada proceso hijo que lanza el agente.
|
|
78
|
+
- **Una TUI que todos pueden usar** — modo accesible para lectores de pantalla, compatibilidad con `NO_COLOR`, movimiento reducido, control del nivel de detalle de los anuncios y un tema de alto contraste conforme a WCAG AA. De primera clase, no añadido a última hora. (Detalles más abajo.)
|
|
79
|
+
- **Licencia MIT sin más** — sin un archivo aparte de restricciones de uso, sin términos de servicio enterrados al final del README.
|
|
80
|
+
- **Inicio de sesión con código de dispositivo pensado para máquinas reales** — funciona por SSH, en contenedores y en entornos aislados remotos donde una redirección del navegador por loopback nunca podría.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Funciones principales
|
|
85
|
+
|
|
86
|
+
### Múltiples agentes
|
|
87
|
+
|
|
88
|
+
| Agente | Descripción |
|
|
89
|
+
| ----------- | --------------------------------------------------------------------------- |
|
|
90
|
+
| **build** | Por defecto. Permisos completos de herramientas para el desarrollo |
|
|
91
|
+
| **plan** | Modo de análisis de solo lectura para explorar código y diseñar soluciones |
|
|
92
|
+
| **compose** | Modo de orquestación para desarrollo guiado por especificaciones y flujos basados en habilidades |
|
|
93
|
+
|
|
94
|
+
Pulsa `Alt+M` para alternar entre los agentes principales. El sistema crea subagentes según los necesita.
|
|
95
|
+
|
|
96
|
+
### Memoria persistente
|
|
97
|
+
|
|
98
|
+
Memoria entre sesiones basada en la búsqueda de texto completo SQLite FTS5:
|
|
99
|
+
|
|
100
|
+
- **Memoria del proyecto** (`MEMORY.md`) — conocimiento persistente del proyecto, reglas y decisiones de arquitectura
|
|
101
|
+
- **Punto de control de sesión** (`checkpoint.md`) — instantáneas estructuradas del estado que mantiene automáticamente el subagente checkpoint-writer
|
|
102
|
+
- **Notas rápidas** (`notes.md`) — zona de notas temporal para los agentes
|
|
103
|
+
- **Progreso de tareas** (`tasks/<id>/progress.md`) — registros por tarea
|
|
104
|
+
|
|
105
|
+
La memoria se inyecta automáticamente cuando se reanuda una sesión, de modo que el agente no necesita volver a aprender el contexto del proyecto.
|
|
106
|
+
|
|
107
|
+
### Gestión inteligente del contexto
|
|
108
|
+
|
|
109
|
+
- **Puntos de control automáticos** — decide cuándo guardar el estado de la sesión según la ventana de contexto del modelo
|
|
110
|
+
- **Reconstrucción del contexto** — cuando el contexto se acerca al límite, lo reconstruye a partir del último punto de control, la memoria del proyecto, el progreso de la tarea y los mensajes recientes conservados, para que el agente pueda continuar la tarea actual
|
|
111
|
+
- **Inyección presupuestada** — usa un presupuesto de tokens para controlar cuánto contenido de puntos de control, memoria y notas entra en el contexto, con clasificación por importancia
|
|
112
|
+
|
|
113
|
+
### Seguimiento de tareas
|
|
114
|
+
|
|
115
|
+
Un sistema de tareas en forma de árbol (`T1`, `T1.1`, `T1.2`, …) que se integra automáticamente con el sistema de puntos de control, de modo que el progreso de las tareas se conserva al reanudar sesiones.
|
|
116
|
+
|
|
117
|
+
### Sistema de subagentes
|
|
118
|
+
|
|
119
|
+
El agente principal puede crear subagentes bajo demanda. Los subagentes comparten el contexto de la sesión actual y pueden trabajar en paralelo, con seguimiento del ciclo de vida, cancelación y ejecución en segundo plano.
|
|
120
|
+
|
|
121
|
+
### Objetivo / Condición de parada
|
|
122
|
+
|
|
123
|
+
El comando `/goal` establece una condición de parada para una sesión. Cuando el agente intenta detenerse, un modelo juez independiente evalúa la conversación para decidir si la condición se cumple realmente — evitando las «paradas optimistas» prematuras durante el trabajo autónomo.
|
|
124
|
+
|
|
125
|
+
### Modo Compose
|
|
126
|
+
|
|
127
|
+
El modo Compose ofrece un flujo de trabajo estructurado para el desarrollo guiado por especificaciones. Incluye habilidades integradas para planificación, ejecución, revisión de código, TDD, depuración, verificación y fusión — orquestando el ciclo de vida completo, desde la especificación hasta el código entregado.
|
|
128
|
+
|
|
129
|
+
### Predicción de prompts
|
|
130
|
+
|
|
131
|
+
Sugerencias en texto fantasma en línea que predicen tu próximo prompt mientras trabajas — pulsa `Tab` para aceptarlas.
|
|
132
|
+
|
|
133
|
+
### Investigación profunda
|
|
134
|
+
|
|
135
|
+
El flujo integrado `/deep-research` ejecuta una investigación estructurada de varios pasos para preguntas que necesitan más que una sola búsqueda.
|
|
136
|
+
|
|
137
|
+
### Uso headless e IDE
|
|
138
|
+
|
|
139
|
+
Ejecuta `qitqode serve` para un servidor HTTP headless, o `qitqode acp` para compatibilidad con Agent Client Protocol y controlar QitQode desde editores compatibles y entornos remotos.
|
|
140
|
+
|
|
141
|
+
### Entrada de voz
|
|
142
|
+
|
|
143
|
+
Entrada de voz por streaming en tiempo real basada en TenVAD. Actívala con `/voice` y habla — el audio se segmenta por pausas y se transcribe de forma incremental en la entrada. Requiere `sox` (`brew install sox` en macOS, similar en otras plataformas) y un modelo de reconocimiento de voz configurado explícitamente mediante el campo de configuración `voice`.
|
|
144
|
+
|
|
145
|
+
> **Nota:** Los modelos de programación son exclusivos por nivel a través del backend de QitQode. El campo `voice` es una excepción acotada que se usa únicamente para el reconocimiento de voz y el control por voz — no añade modelos a la lista de modelos de programación.
|
|
146
|
+
|
|
147
|
+
<details>
|
|
148
|
+
<summary><strong>Configuración de audio en WSLg</strong></summary>
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
sudo apt install -y sox pulseaudio libasound2-plugins
|
|
152
|
+
export PULSE_SERVER=unix:/mnt/wslg/PulseServer
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
</details>
|
|
156
|
+
|
|
157
|
+
<details>
|
|
158
|
+
<summary><strong>Audio remoto por SSH (Mac → host remoto)</strong></summary>
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Mac (local)
|
|
162
|
+
brew install pulseaudio
|
|
163
|
+
pulseaudio --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1" --exit-idle-time=-1 --daemonize
|
|
164
|
+
# Add to ~/.ssh/config: RemoteForward 4713 127.0.0.1:4713
|
|
165
|
+
|
|
166
|
+
# Remote host
|
|
167
|
+
apt install -y pulseaudio pulseaudio-utils sox
|
|
168
|
+
export PULSE_SERVER=tcp:127.0.0.1:4713
|
|
169
|
+
# Verify: pactl info
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
</details>
|
|
173
|
+
|
|
174
|
+
### Dream & Distill
|
|
175
|
+
|
|
176
|
+
- **`/dream`** — analiza los rastros de sesiones recientes, extrae conocimiento persistente a la memoria del proyecto y elimina las entradas obsoletas
|
|
177
|
+
- **`/distill`** — detecta flujos de trabajo manuales repetidos en el trabajo reciente y empaqueta los candidatos de alta confianza en habilidades, subagentes o comandos reutilizables
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Configuración
|
|
182
|
+
|
|
183
|
+
QitQode se configura mediante `.qitqode/qitqode.json` en el directorio del proyecto (o `~/.config/qitqode/qitqode.json` de forma global). Las opciones clave incluyen:
|
|
184
|
+
|
|
185
|
+
- Selección del nivel de modelo (Free, Default, Fast, Economy, Power)
|
|
186
|
+
- Permisos de agentes y agentes personalizados
|
|
187
|
+
- Comportamiento de puntos de control y memoria
|
|
188
|
+
- Conexiones a servidores MCP
|
|
189
|
+
- Atajos de teclado y tema
|
|
190
|
+
|
|
191
|
+
El Max Mode (razonamiento paralelo best-of-N con selección por juez) se puede activar mediante `experimental.maxMode` en la configuración.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Accesibilidad
|
|
196
|
+
|
|
197
|
+
La TUI de QitQode viene con compatibilidad de accesibilidad de primera clase:
|
|
198
|
+
|
|
199
|
+
- **Modo accesible** — define `QITQODE_TUI_ACCESSIBLE=1` (o `"tui": { "accessible": true }` en la configuración) para una experiencia compatible con lectores de pantalla: renderizado lineal de la pantalla principal (sin pantalla alternativa), sin captura de ratón, baja tasa de fotogramas, movimiento reducido y sin señales sonoras.
|
|
200
|
+
- **NO_COLOR** — cualquier valor no vacío de [`NO_COLOR`](https://no-color.org) cambia a un renderizado monocromo con fondos transparentes. La gravedad nunca se transmite solo con color (los avisos llevan los símbolos `ℹ ✓ ▲ ✗`, los diffs conservan los marcadores `+`/`-`).
|
|
201
|
+
- **Reducir movimiento** — define `QITQODE_REDUCE_MOTION=1` (o `"tui": { "reduce_motion": true }`) para reemplazar los spinners y las animaciones con texto estático. También se puede alternar en tiempo de ejecución desde la lista de comandos.
|
|
202
|
+
- **Sonido** — desactiva las señales sonoras con `QITQODE_TUI_SOUND=0`, `"tui": { "sound": false }` o el interruptor en tiempo de ejecución de la lista de comandos. El modo accesible siempre desactiva el sonido.
|
|
203
|
+
- **Nivel de detalle de los anuncios** — en modo accesible, controla lo detallados que son los anuncios del lector de pantalla con `QITQODE_TUI_ANNOUNCEMENTS=quiet|normal|verbose`, `"tui": { "announcements": "quiet" }` o el selector en tiempo de ejecución de la lista de comandos. `quiet` anuncia solo los límites de turno; `normal` (por defecto) añade líneas de inicio de herramienta; `verbose` añade líneas de finalización de herramienta. Los errores y las cancelaciones se anuncian siempre en todos los niveles.
|
|
204
|
+
- **Tema de alto contraste** — selecciona el tema integrado `high-contrast` para superficies en blanco y negro puros con colores conformes a WCAG AA.
|
|
205
|
+
- **Terminales pequeñas** — la TUI se degrada de forma controlada en terminales estrechas y muestra un mensaje claro cuando la ventana está por debajo del mínimo de 40x8.
|
|
206
|
+
- **Diálogos solo con teclado** — cada diálogo es totalmente operable sin ratón: `Esc` siempre cierra, `Tab` (y las flechas, cuando un diálogo tiene una fila de botones o una lista) mueve el foco, y `Enter` o `Space` activa el control enfocado. En terminales planas o con `NO_COLOR`, la fila de lista resaltada lleva además un marcador `›` para que la selección sea distinguible sin color.
|
|
207
|
+
|
|
208
|
+
Las variables de entorno de accesibilidad son interruptores de un solo sentido: `QITQODE_TUI_ACCESSIBLE=1`, `QITQODE_REDUCE_MOTION=1`, `NO_COLOR` y `QITQODE_TUI_SOUND=0` siempre prevalecen sobre los valores de configuración y los interruptores en tiempo de ejecución — las garantías de accesibilidad no se pueden volver a desactivar. `QITQODE_TUI_ANNOUNCEMENTS` prevalece de igual modo sobre el valor de configuración y el selector en tiempo de ejecución cuando está definido.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Desarrollo
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
bun install # Install dependencies
|
|
216
|
+
bun run dev # Run in development mode
|
|
217
|
+
bun turbo typecheck # Type check
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Licencia
|
|
223
|
+
|
|
224
|
+
El código fuente está licenciado bajo la [Licencia MIT](./LICENSE).
|
package/README.fr.md
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
<h1 align="center">QitQode</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center"><strong>Agent de codage IA en terminal, doté d'une mémoire.</strong></p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://qitqode.com">Site web</a>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="./README.md">English</a> | <a href="./README.zh.md">简体中文</a> | <a href="./README.zht.md">繁體中文</a> | <a href="./README.ja.md">日本語</a> | <strong>Français</strong> | <a href="./README.ru.md">Русский</a> | <a href="./README.es.md">Español</a> | <a href="./README.pt.md">Português</a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
La plupart des agents de codage oublient tout dès qu'une session se termine. Pas QitQode. Il lit et écrit du code, exécute des commandes, gère Git — et conserve une mémoire persistante et consultable de votre projet d'une session à l'autre, reconstruisant son propre contexte lorsqu'une session s'éternise afin de poursuivre le travail plutôt que de repartir de zéro.
|
|
16
|
+
|
|
17
|
+
Un seul compte, cinq niveaux de modèles — **Free**, **Default**, **Fast**, **Economy**, **Power**. Aucun tableau de bord de fournisseur, aucune jonglerie avec les clés d'API, aucun tableur de facturation par modèle.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Démarrage rapide
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
# Requires Bun 1.3.11 or newer
|
|
25
|
+
bun add --global @qitqode/cli
|
|
26
|
+
|
|
27
|
+
# Run
|
|
28
|
+
qitqode
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Au premier lancement, un assistant vous guide pour la connexion :
|
|
32
|
+
|
|
33
|
+
- **Se connecter avec QitQode** — un flux par code d'appareil qui fonctionne partout, y compris dans les sessions SSH et les bacs à sable distants : la CLI affiche une URL de vérification et un code (et ouvre votre navigateur lorsqu'il y en a un de disponible) ; validez sur n'importe quel appareil pour terminer
|
|
34
|
+
- **Clé d'API** — collez plutôt une clé d'API QitQode
|
|
35
|
+
|
|
36
|
+
Choisissez ensuite un niveau dans le sélecteur de modèles et commencez à travailler. C'est toute l'installation.
|
|
37
|
+
|
|
38
|
+
### Utiliser QitQode en Français
|
|
39
|
+
|
|
40
|
+
La TUI détecte automatiquement la langue de votre système. Pour la changer manuellement, exécutez `/language` (ou `/lang`) dans QitQode et choisissez Français dans la liste.
|
|
41
|
+
|
|
42
|
+
<details>
|
|
43
|
+
<summary><strong>WSL : problèmes de presse-papiers</strong></summary>
|
|
44
|
+
|
|
45
|
+
Si vous rencontrez du texte illisible lors d'une copie sous WSL, installez `xsel` :
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
sudo apt install xsel
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
</details>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Pourquoi QitQode
|
|
56
|
+
|
|
57
|
+
Vous n'avez pas besoin d'une énième surcouche de chat. Vous avez besoin d'un agent capable de mener un travail de longue haleine sans perdre le fil. QitQode repose sur quatre mécanismes :
|
|
58
|
+
|
|
59
|
+
### 1. Une mémoire qui survit à la session
|
|
60
|
+
|
|
61
|
+
Chaque projet dispose d'une couche de mémoire persistante appuyée sur la recherche plein texte de SQLite : les connaissances du projet dans `MEMORY.md`, des points de contrôle de session automatiques, des notes de travail et des journaux de progression par tâche. À la reprise, la mémoire pertinente est injectée automatiquement — classée et limitée par un budget de tokens, sans tout déverser. L'agent reprend là où il s'était arrêté au lieu de réapprendre votre base de code.
|
|
62
|
+
|
|
63
|
+
### 2. Un contexte qui se reconstruit tout seul
|
|
64
|
+
|
|
65
|
+
Les tâches longues dépassent vite les fenêtres de contexte. QitQode surveille la fenêtre, enregistre un point de contrôle avant qu'elle ne se remplisse, puis reconstruit le contexte de travail à partir du dernier point de contrôle, de la mémoire du projet et de la progression des tâches — pour qu'un refactoring de plusieurs heures ne meure pas à la limite de tokens.
|
|
66
|
+
|
|
67
|
+
### 3. Une autonomie dont vous gardez le contrôle
|
|
68
|
+
|
|
69
|
+
Définissez une condition d'arrêt avec `/goal`. Lorsque l'agent estime avoir terminé, un modèle juge indépendant relit la conversation et décide si l'objectif est réellement atteint — fini les « c'est bon, tout est fait ! » optimistes à mi-parcours. Combinez cela avec le suivi de tâches arborescent (`T1`, `T1.1`, …) et les sous-agents parallèles pour un vrai travail sans surveillance.
|
|
70
|
+
|
|
71
|
+
### 4. Un seul abonnement, zéro tuyauterie de fournisseur
|
|
72
|
+
|
|
73
|
+
Cinq niveaux, une seule connexion. Changez de niveau en pleine session avec `/free`, `/default`, `/fast`, `/economical` ou `/power`. Consultez votre solde à tout moment grâce à l'affichage intégré des qredits — l'usage est vérifiable, pas une surprise en fin de mois.
|
|
74
|
+
|
|
75
|
+
### Et les détails que les autres laissent de côté
|
|
76
|
+
|
|
77
|
+
- **Identifiants chiffrés au repos** — vos jetons d'authentification sont scellés avec une clé conservée dans le trousseau du système d'exploitation, et les variables d'environnement d'identifiants sont retirées par défaut de chaque processus enfant lancé par l'agent.
|
|
78
|
+
- **Une TUI utilisable par tous** — mode compatible lecteur d'écran, prise en charge de `NO_COLOR`, mouvement réduit, contrôle du niveau de verbosité des annonces et un thème à fort contraste conforme WCAG AA. Intégré d'emblée, pas rajouté après coup. (Détails plus bas.)
|
|
79
|
+
- **Licence MIT simple** — pas de fichier séparé de restrictions d'usage, pas de conditions de service enfouies à la fin du README.
|
|
80
|
+
- **Connexion par code d'appareil conçue pour de vraies machines** — fonctionne via SSH, dans des conteneurs et dans des bacs à sable distants, là où une redirection de navigateur en boucle locale ne le pourrait jamais.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Fonctionnalités principales
|
|
85
|
+
|
|
86
|
+
### Plusieurs agents
|
|
87
|
+
|
|
88
|
+
| Agent | Description |
|
|
89
|
+
| ----------- | --------------------------------------------------------------------------- |
|
|
90
|
+
| **build** | Par défaut. Autorisations d'outils complètes pour le développement |
|
|
91
|
+
| **plan** | Mode d'analyse en lecture seule pour l'exploration de code et la conception de solutions |
|
|
92
|
+
| **compose** | Mode d'orchestration pour le développement piloté par spécifications et les workflows pilotés par compétences |
|
|
93
|
+
|
|
94
|
+
Appuyez sur `Alt+M` pour passer d'un agent principal à l'autre. Les sous-agents sont créés par le système selon les besoins.
|
|
95
|
+
|
|
96
|
+
### Mémoire persistante
|
|
97
|
+
|
|
98
|
+
Mémoire inter-sessions propulsée par la recherche plein texte SQLite FTS5 :
|
|
99
|
+
|
|
100
|
+
- **Mémoire du projet** (`MEMORY.md`) — connaissances persistantes du projet, règles et décisions d'architecture
|
|
101
|
+
- **Point de contrôle de session** (`checkpoint.md`) — instantanés d'état structurés maintenus automatiquement par le sous-agent chargé d'écrire les points de contrôle
|
|
102
|
+
- **Notes de travail** (`notes.md`) — zone de notes temporaires pour les agents
|
|
103
|
+
- **Progression des tâches** (`tasks/<id>/progress.md`) — journaux par tâche
|
|
104
|
+
|
|
105
|
+
La mémoire est injectée automatiquement à la reprise d'une session, de sorte que l'agent n'a pas besoin de réapprendre le contexte du projet.
|
|
106
|
+
|
|
107
|
+
### Gestion intelligente du contexte
|
|
108
|
+
|
|
109
|
+
- **Points de contrôle automatiques** — décide quand enregistrer l'état de la session en fonction de la fenêtre de contexte du modèle
|
|
110
|
+
- **Reconstruction du contexte** — lorsque le contexte approche de la limite, il est reconstruit à partir du dernier point de contrôle, de la mémoire du projet, de la progression des tâches et des messages récents conservés, afin que l'agent puisse poursuivre la tâche en cours
|
|
111
|
+
- **Injection budgétée** — utilise un budget de tokens pour contrôler la quantité de contenu de point de contrôle, de mémoire et de notes qui entre dans le contexte, avec un classement par importance
|
|
112
|
+
|
|
113
|
+
### Suivi des tâches
|
|
114
|
+
|
|
115
|
+
Un système de tâches arborescent (`T1`, `T1.1`, `T1.2`, …) qui s'intègre automatiquement au système de points de contrôle, de sorte que la progression des tâches est préservée à la reprise des sessions.
|
|
116
|
+
|
|
117
|
+
### Système de sous-agents
|
|
118
|
+
|
|
119
|
+
L'agent principal peut créer des sous-agents à la demande. Les sous-agents partagent le contexte de la session en cours et peuvent travailler en parallèle, avec suivi du cycle de vie, annulation et exécution en arrière-plan.
|
|
120
|
+
|
|
121
|
+
### Objectif / Condition d'arrêt
|
|
122
|
+
|
|
123
|
+
La commande `/goal` définit une condition d'arrêt pour une session. Lorsque l'agent tente de s'arrêter, un modèle juge indépendant évalue la conversation pour déterminer si la condition est réellement satisfaite — évitant les « arrêts optimistes » prématurés pendant le travail autonome.
|
|
124
|
+
|
|
125
|
+
### Mode Compose
|
|
126
|
+
|
|
127
|
+
Le mode Compose offre un workflow structuré pour le développement piloté par spécifications. Il inclut des compétences intégrées pour la planification, l'exécution, la revue de code, le TDD, le débogage, la vérification et la fusion — orchestrant tout le cycle de vie, de la spécification au code livré.
|
|
128
|
+
|
|
129
|
+
### Prédiction de prompt
|
|
130
|
+
|
|
131
|
+
Des suggestions en texte fantôme incrustées prédisent votre prochain prompt au fil du travail — appuyez sur `Tab` pour accepter.
|
|
132
|
+
|
|
133
|
+
### Recherche approfondie
|
|
134
|
+
|
|
135
|
+
Le workflow intégré `/deep-research` mène une investigation structurée en plusieurs étapes pour les questions qui exigent plus qu'une simple recherche.
|
|
136
|
+
|
|
137
|
+
### Usage headless et IDE
|
|
138
|
+
|
|
139
|
+
Exécutez `qitqode serve` pour un serveur HTTP headless, ou `qitqode acp` pour la prise en charge d'Agent Client Protocol afin de piloter QitQode depuis des éditeurs compatibles et des environnements distants.
|
|
140
|
+
|
|
141
|
+
### Entrée vocale
|
|
142
|
+
|
|
143
|
+
Entrée vocale en flux temps réel propulsée par TenVAD. Activez-la avec `/voice`, puis parlez — l'audio est segmenté par les pauses et transcrit progressivement dans la saisie. Nécessite `sox` (`brew install sox` sur macOS, procédure similaire sur les autres plateformes) et un modèle de reconnaissance vocale explicitement configuré via le champ de configuration `voice`.
|
|
144
|
+
|
|
145
|
+
> **Remarque :** Les modèles de codage sont accessibles uniquement par niveau via le backend QitQode. Le champ `voice` est une exception ciblée servant uniquement à la reconnaissance vocale et au contrôle vocal — il n'ajoute pas de modèles à la liste des modèles de codage.
|
|
146
|
+
|
|
147
|
+
<details>
|
|
148
|
+
<summary><strong>Configuration audio WSLg</strong></summary>
|
|
149
|
+
|
|
150
|
+
```bash
|
|
151
|
+
sudo apt install -y sox pulseaudio libasound2-plugins
|
|
152
|
+
export PULSE_SERVER=unix:/mnt/wslg/PulseServer
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
</details>
|
|
156
|
+
|
|
157
|
+
<details>
|
|
158
|
+
<summary><strong>Audio distant via SSH (Mac → hôte distant)</strong></summary>
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
# Mac (local)
|
|
162
|
+
brew install pulseaudio
|
|
163
|
+
pulseaudio --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1" --exit-idle-time=-1 --daemonize
|
|
164
|
+
# Add to ~/.ssh/config: RemoteForward 4713 127.0.0.1:4713
|
|
165
|
+
|
|
166
|
+
# Remote host
|
|
167
|
+
apt install -y pulseaudio pulseaudio-utils sox
|
|
168
|
+
export PULSE_SERVER=tcp:127.0.0.1:4713
|
|
169
|
+
# Verify: pactl info
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
</details>
|
|
173
|
+
|
|
174
|
+
### Dream et Distill
|
|
175
|
+
|
|
176
|
+
- **`/dream`** — parcourt les traces des sessions récentes, extrait les connaissances persistantes dans la mémoire du projet et supprime les entrées obsolètes
|
|
177
|
+
- **`/distill`** — repère les workflows manuels répétés dans le travail récent et transforme les candidats à forte confiance en compétences, sous-agents ou commandes réutilisables
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Configuration
|
|
182
|
+
|
|
183
|
+
QitQode se configure via `.qitqode/qitqode.json` dans le répertoire du projet (ou `~/.config/qitqode/qitqode.json` globalement). Les principales options incluent :
|
|
184
|
+
|
|
185
|
+
- La sélection du niveau de modèle (Free, Default, Fast, Economy, Power)
|
|
186
|
+
- Les autorisations des agents et les agents personnalisés
|
|
187
|
+
- Le comportement des points de contrôle et de la mémoire
|
|
188
|
+
- Les connexions aux serveurs MCP
|
|
189
|
+
- Les raccourcis clavier et le thème
|
|
190
|
+
|
|
191
|
+
Le Max Mode (raisonnement parallèle best-of-N avec sélection par juge) peut être activé via `experimental.maxMode` dans la configuration.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Accessibilité
|
|
196
|
+
|
|
197
|
+
La TUI de QitQode est livrée avec une prise en charge de l'accessibilité de premier plan :
|
|
198
|
+
|
|
199
|
+
- **Mode accessible** — définissez `QITQODE_TUI_ACCESSIBLE=1` (ou `"tui": { "accessible": true }` dans la configuration) pour une expérience adaptée aux lecteurs d'écran : rendu linéaire de l'écran principal (pas d'écran alternatif), pas de capture de la souris, faible fréquence d'images, mouvement réduit et aucun signal sonore.
|
|
200
|
+
- **NO_COLOR** — toute valeur non vide de [`NO_COLOR`](https://no-color.org) bascule vers un rendu monochrome avec arrière-plans transparents. La gravité n'est jamais transmise par la couleur seule (les notifications portent les symboles `ℹ ✓ ▲ ✗`, les diffs conservent les marqueurs `+`/`-`).
|
|
201
|
+
- **Réduction du mouvement** — définissez `QITQODE_REDUCE_MOTION=1` (ou `"tui": { "reduce_motion": true }`) pour remplacer les indicateurs animés et les animations par du texte statique. Également activable en cours d'exécution depuis la liste des commandes.
|
|
202
|
+
- **Son** — désactivez les signaux sonores avec `QITQODE_TUI_SOUND=0`, `"tui": { "sound": false }` ou le commutateur en cours d'exécution dans la liste des commandes. Le mode accessible désactive toujours le son.
|
|
203
|
+
- **Verbosité des annonces** — en mode accessible, contrôlez le degré de bavardage des annonces du lecteur d'écran avec `QITQODE_TUI_ANNOUNCEMENTS=quiet|normal|verbose`, `"tui": { "announcements": "quiet" }` ou le sélecteur en cours d'exécution dans la liste des commandes. `quiet` annonce uniquement les frontières de tours ; `normal` (par défaut) ajoute les lignes de démarrage d'outils ; `verbose` ajoute les lignes d'achèvement d'outils. Les erreurs et les interruptions sont toujours annoncées, à tous les niveaux.
|
|
204
|
+
- **Thème à fort contraste** — sélectionnez le thème intégré `high-contrast` pour des surfaces noir/blanc pures avec des couleurs conformes WCAG AA.
|
|
205
|
+
- **Petits terminaux** — la TUI se dégrade proprement dans les terminaux étroits et affiche un message clair lorsque la fenêtre passe sous le minimum de 40x8.
|
|
206
|
+
- **Boîtes de dialogue au clavier uniquement** — chaque boîte de dialogue est entièrement utilisable sans souris : `Esc` ferme toujours, `Tab` (et les touches fléchées, lorsqu'une boîte de dialogue comporte une rangée de boutons ou une liste) déplace le focus, et `Enter` ou `Space` active le contrôle ciblé. Dans les terminaux simples/NO_COLOR, la ligne de liste en surbrillance porte aussi un marqueur `›` afin que la sélection soit distinguable sans couleur.
|
|
207
|
+
|
|
208
|
+
Les variables d'environnement d'accessibilité sont des interrupteurs à sens unique : `QITQODE_TUI_ACCESSIBLE=1`, `QITQODE_REDUCE_MOTION=1`, `NO_COLOR` et `QITQODE_TUI_SOUND=0` l'emportent toujours sur les valeurs de configuration et les commutateurs en cours d'exécution — les garanties d'accessibilité ne peuvent pas être désactivées de nouveau. `QITQODE_TUI_ANNOUNCEMENTS` l'emporte de la même façon sur la valeur de configuration et le sélecteur en cours d'exécution lorsqu'elle est définie.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Développement
|
|
213
|
+
|
|
214
|
+
```bash
|
|
215
|
+
bun install # Install dependencies
|
|
216
|
+
bun run dev # Run in development mode
|
|
217
|
+
bun turbo typecheck # Type check
|
|
218
|
+
```
|
|
219
|
+
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## Licence
|
|
223
|
+
|
|
224
|
+
Le code source est distribué sous [licence MIT](./LICENSE).
|