@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 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).