@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/README.pt.md
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
<h1 align="center">QitQode</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center"><strong>Agente de programação com IA no terminal, com memória.</strong></p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://qitqode.com">Website</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> | <a href="./README.es.md">Español</a> | <strong>Português</strong>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
A maioria dos agentes de programação esquece tudo assim que a sessão termina. O QitQode não. Ele lê e escreve código, executa comandos, gere o Git — e mantém uma memória persistente e pesquisável do teu projeto entre sessões, reconstruindo o seu próprio contexto quando este se estende para poder continuar a trabalhar em vez de recomeçar do zero.
|
|
16
|
+
|
|
17
|
+
Uma conta, cinco níveis de modelo — **Free**, **Default**, **Fast**, **Economy**, **Power**. Sem painéis de fornecedores, sem malabarismos com chaves de API, sem folhas de cálculo de faturação por modelo.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Início 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
|
+
O primeiro arranque guia-te no início de sessão:
|
|
32
|
+
|
|
33
|
+
- **Iniciar sessão com o QitQode** — um fluxo por código de dispositivo que funciona em todo o lado, incluindo sessões SSH e sandboxes remotas: a CLI mostra um URL de verificação e um código (e abre o navegador quando há um disponível); aprova em qualquer dispositivo para concluir
|
|
34
|
+
- **Chave de API** — em alternativa, cola uma chave de API do QitQode
|
|
35
|
+
|
|
36
|
+
Depois escolhe um nível no seletor de modelos e começa a trabalhar. É toda a configuração necessária.
|
|
37
|
+
|
|
38
|
+
### Usar o QitQode em Português
|
|
39
|
+
|
|
40
|
+
A TUI deteta automaticamente o idioma do teu sistema. Para mudar manualmente, executa `/language` (ou `/lang`) dentro do QitQode e escolhe Português na lista.
|
|
41
|
+
|
|
42
|
+
<details>
|
|
43
|
+
<summary><strong>WSL: problemas com a área de transferência</strong></summary>
|
|
44
|
+
|
|
45
|
+
Se encontrares texto corrompido ao copiar no WSL, instala o `xsel`:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
sudo apt install xsel
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
</details>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Porquê o QitQode
|
|
56
|
+
|
|
57
|
+
Não precisas de mais um invólucro de chat. Precisas de um agente capaz de sustentar um trabalho de longa duração sem perder o fio à meada. O QitQode assenta em quatro mecanismos:
|
|
58
|
+
|
|
59
|
+
### 1. Memória que sobrevive à sessão
|
|
60
|
+
|
|
61
|
+
Cada projeto ganha uma camada de memória persistente, suportada por pesquisa de texto completo em SQLite: conhecimento do projeto em `MEMORY.md`, pontos de verificação automáticos da sessão, notas de rascunho e registos de progresso por tarefa. Quando retomas, a memória relevante é injetada automaticamente — ordenada por relevância e limitada por um orçamento de tokens, não despejada de uma vez. O agente continua de onde ficou em vez de reaprender o teu código.
|
|
62
|
+
|
|
63
|
+
### 2. Contexto que se reconstrói sozinho
|
|
64
|
+
|
|
65
|
+
Tarefas longas ultrapassam as janelas de contexto. O QitQode vigia a janela, faz um ponto de verificação do estado antes de esta encher e reconstrói o contexto de trabalho a partir do ponto de verificação mais recente, da memória do projeto e do progresso das tarefas — para que uma refatoração de várias horas não morra no limite de tokens.
|
|
66
|
+
|
|
67
|
+
### 3. Autonomia de que podes pedir contas
|
|
68
|
+
|
|
69
|
+
Define uma condição de paragem com `/goal`. Quando o agente considera que terminou, um modelo juiz independente revê a conversa e decide se o objetivo foi realmente cumprido — acabaram os "está tudo pronto!" otimistas a meio do trabalho. Combina-o com o registo de tarefas em árvore (`T1`, `T1.1`, …) e com subagentes em paralelo para trabalho verdadeiramente autónomo.
|
|
70
|
+
|
|
71
|
+
### 4. Uma subscrição, zero canalização de fornecedores
|
|
72
|
+
|
|
73
|
+
Cinco níveis, um único início de sessão. Muda de nível a meio da sessão com `/free`, `/default`, `/fast`, `/economical` ou `/power`. Consulta o teu saldo a qualquer momento com o indicador de qredits integrado — a utilização é inspecionável, não uma surpresa no fim do mês.
|
|
74
|
+
|
|
75
|
+
### E as partes que os outros deixam de fora
|
|
76
|
+
|
|
77
|
+
- **Credenciais encriptadas em repouso** — os teus tokens de autenticação são selados com uma chave guardada na keyring do sistema operativo, e as variáveis de ambiente de credenciais são removidas por predefinição de cada processo-filho que o agente cria.
|
|
78
|
+
- **Uma TUI que todos podem usar** — modo acessível a leitores de ecrã, suporte a `NO_COLOR`, movimento reduzido, controlo do detalhe dos anúncios e um tema de alto contraste em conformidade com WCAG AA. De raiz, não acrescentado à pressa. (Detalhes abaixo.)
|
|
79
|
+
- **Licença MIT simples** — sem ficheiro separado de restrições de uso, sem termos de serviço escondidos no fim do README.
|
|
80
|
+
- **Início de sessão por código de dispositivo pensado para máquinas reais** — funciona por SSH, em contentores e em sandboxes remotas onde um redirecionamento de navegador por loopback nunca conseguiria.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Funcionalidades Principais
|
|
85
|
+
|
|
86
|
+
### Vários Agentes
|
|
87
|
+
|
|
88
|
+
| Agente | Descrição |
|
|
89
|
+
| ----------- | --------------------------------------------------------------------------- |
|
|
90
|
+
| **build** | Predefinido. Permissões totais de ferramentas para desenvolvimento |
|
|
91
|
+
| **plan** | Modo de análise só de leitura para exploração de código e desenho de soluções |
|
|
92
|
+
| **compose** | Modo de orquestração para desenvolvimento orientado a especificações e fluxos orientados a competências |
|
|
93
|
+
|
|
94
|
+
Prime `Alt+M` para alternar entre os agentes principais. Os subagentes são criados pelo sistema conforme necessário.
|
|
95
|
+
|
|
96
|
+
### Memória Persistente
|
|
97
|
+
|
|
98
|
+
Memória entre sessões, alimentada pela pesquisa de texto completo SQLite FTS5:
|
|
99
|
+
|
|
100
|
+
- **Memória do projeto** (`MEMORY.md`) — conhecimento persistente do projeto, regras e decisões de arquitetura
|
|
101
|
+
- **Ponto de verificação da sessão** (`checkpoint.md`) — instantâneos de estado estruturados mantidos automaticamente pelo subagente checkpoint-writer
|
|
102
|
+
- **Notas de rascunho** (`notes.md`) — área de notas temporárias para os agentes
|
|
103
|
+
- **Progresso das tarefas** (`tasks/<id>/progress.md`) — registos por tarefa
|
|
104
|
+
|
|
105
|
+
A memória é injetada automaticamente quando uma sessão é retomada, para que o agente não precise de reaprender o contexto do projeto.
|
|
106
|
+
|
|
107
|
+
### Gestão Inteligente de Contexto
|
|
108
|
+
|
|
109
|
+
- **Pontos de verificação automáticos** — decide quando guardar o estado da sessão com base na janela de contexto do modelo
|
|
110
|
+
- **Reconstrução de contexto** — quando o contexto se aproxima do limite, reconstrói-o a partir do ponto de verificação mais recente, da memória do projeto, do progresso das tarefas e das mensagens recentes retidas, para que o agente possa continuar a tarefa atual
|
|
111
|
+
- **Injeção orçamentada** — usa um orçamento de tokens para controlar quanto conteúdo de ponto de verificação, memória e notas entra no contexto, com ordenação por importância
|
|
112
|
+
|
|
113
|
+
### Acompanhamento de Tarefas
|
|
114
|
+
|
|
115
|
+
Um sistema de tarefas em árvore (`T1`, `T1.1`, `T1.2`, …) que se integra automaticamente com o sistema de pontos de verificação, para que o progresso das tarefas seja preservado quando as sessões são retomadas.
|
|
116
|
+
|
|
117
|
+
### Sistema de Subagentes
|
|
118
|
+
|
|
119
|
+
O agente principal pode criar subagentes a pedido. Os subagentes partilham o contexto da sessão atual e podem trabalhar em paralelo, com acompanhamento do ciclo de vida, cancelamento e execução em segundo plano.
|
|
120
|
+
|
|
121
|
+
### Objetivo / Condição de Paragem
|
|
122
|
+
|
|
123
|
+
O comando `/goal` define uma condição de paragem para uma sessão. Quando o agente tenta parar, um modelo juiz independente avalia a conversa para decidir se a condição está realmente satisfeita — evitando "paragens otimistas" prematuras durante o trabalho autónomo.
|
|
124
|
+
|
|
125
|
+
### Modo Compose
|
|
126
|
+
|
|
127
|
+
O modo Compose oferece um fluxo de trabalho estruturado para desenvolvimento orientado a especificações. Inclui competências integradas para planeamento, execução, revisão de código, TDD, depuração, verificação e integração — orquestrando todo o ciclo de vida, da especificação ao código entregue.
|
|
128
|
+
|
|
129
|
+
### Previsão de Prompt
|
|
130
|
+
|
|
131
|
+
Sugestões inline em texto fantasma preveem o teu próximo prompt à medida que trabalhas — prime `Tab` para aceitar.
|
|
132
|
+
|
|
133
|
+
### Investigação Aprofundada
|
|
134
|
+
|
|
135
|
+
O fluxo integrado `/deep-research` conduz uma investigação estruturada em vários passos para perguntas que precisam de mais do que uma única pesquisa.
|
|
136
|
+
|
|
137
|
+
### Uso Headless e em IDE
|
|
138
|
+
|
|
139
|
+
Executa `qitqode serve` para um servidor HTTP headless, ou `qitqode acp` para suporte do Agent Client Protocol, permitindo controlar o QitQode a partir de editores compatíveis e ambientes remotos.
|
|
140
|
+
|
|
141
|
+
### Entrada por Voz
|
|
142
|
+
|
|
143
|
+
Entrada de voz em streaming em tempo real, alimentada pelo TenVAD. Ativa com `/voice` e depois fala — o áudio é segmentado pelas pausas e transcrito de forma incremental para a entrada. Requer o `sox` (`brew install sox` no macOS, semelhante noutras plataformas) e um modelo de reconhecimento de fala explicitamente configurado através do campo de configuração `voice`.
|
|
144
|
+
|
|
145
|
+
> **Nota:** Os modelos de programação são exclusivos dos níveis, através do backend do QitQode. O campo `voice` é uma exceção delimitada, usada unicamente para reconhecimento de fala e controlo por voz — não acrescenta modelos à lista de modelos de programação.
|
|
146
|
+
|
|
147
|
+
<details>
|
|
148
|
+
<summary><strong>Configuração de áudio no 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>Áudio remoto por SSH (Mac → anfitrião 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 e Distill
|
|
175
|
+
|
|
176
|
+
- **`/dream`** — analisa os rastos de sessões recentes, extrai conhecimento persistente para a memória do projeto e remove entradas desatualizadas
|
|
177
|
+
- **`/distill`** — descobre fluxos de trabalho manuais repetidos no trabalho recente e empacota os candidatos de alta confiança em competências, subagentes ou comandos reutilizáveis
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Configuração
|
|
182
|
+
|
|
183
|
+
O QitQode é configurado através de `.qitqode/qitqode.json` na pasta do projeto (ou `~/.config/qitqode/qitqode.json` a nível global). As principais opções incluem:
|
|
184
|
+
|
|
185
|
+
- Seleção do nível de modelo (Free, Default, Fast, Economy, Power)
|
|
186
|
+
- Permissões de agentes e agentes personalizados
|
|
187
|
+
- Comportamento dos pontos de verificação e da memória
|
|
188
|
+
- Ligações a servidores MCP
|
|
189
|
+
- Atalhos de teclado e tema
|
|
190
|
+
|
|
191
|
+
O Max Mode (raciocínio paralelo best-of-N com seleção por juiz) pode ser ativado através de `experimental.maxMode` na configuração.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Acessibilidade
|
|
196
|
+
|
|
197
|
+
A TUI do QitQode inclui suporte de acessibilidade de raiz:
|
|
198
|
+
|
|
199
|
+
- **Modo acessível** — define `QITQODE_TUI_ACCESSIBLE=1` (ou `"tui": { "accessible": true }` na configuração) para uma experiência amigável para leitores de ecrã: renderização linear do ecrã principal (sem ecrã alternativo), sem captura de rato, taxa de fotogramas baixa, movimento reduzido e sem indicações sonoras.
|
|
200
|
+
- **NO_COLOR** — qualquer valor não vazio de [`NO_COLOR`](https://no-color.org) muda para renderização monocromática com fundos transparentes. A gravidade nunca é transmitida apenas por cor (os avisos incluem os símbolos `ℹ ✓ ▲ ✗`, as diferenças mantêm os marcadores `+`/`-`).
|
|
201
|
+
- **Reduzir movimento** — define `QITQODE_REDUCE_MOTION=1` (ou `"tui": { "reduce_motion": true }`) para substituir animações e indicadores rotativos por texto estático. Também alternável em tempo de execução a partir da lista de comandos.
|
|
202
|
+
- **Som** — desativa as indicações sonoras com `QITQODE_TUI_SOUND=0`, `"tui": { "sound": false }` ou a alternância em tempo de execução na lista de comandos. O modo acessível desativa sempre o som.
|
|
203
|
+
- **Detalhe dos anúncios** — no modo acessível, controla quão detalhados são os anúncios para leitores de ecrã com `QITQODE_TUI_ANNOUNCEMENTS=quiet|normal|verbose`, `"tui": { "announcements": "quiet" }` ou o seletor em tempo de execução na lista de comandos. `quiet` anuncia apenas as fronteiras de turno; `normal` (predefinição) acrescenta linhas de início de ferramenta; `verbose` acrescenta linhas de conclusão de ferramenta. Os erros e as interrupções são sempre anunciados em todos os níveis.
|
|
204
|
+
- **Tema de alto contraste** — seleciona o tema integrado `high-contrast` para superfícies a preto/branco puro com cores em conformidade com WCAG AA.
|
|
205
|
+
- **Terminais pequenos** — a TUI degrada-se de forma controlada em terminais estreitos e mostra uma mensagem clara quando a janela fica abaixo do mínimo de 40x8.
|
|
206
|
+
- **Diálogos apenas com teclado** — todos os diálogos são totalmente operáveis sem rato: `Esc` fecha sempre, `Tab` (e as teclas de seta, onde um diálogo tem uma fila de botões ou uma lista) move o foco, e `Enter` ou `Space` ativa o controlo em foco. Em terminais simples/NO_COLOR, a linha de lista destacada inclui também um marcador `›` para que a seleção seja percetível sem cor.
|
|
207
|
+
|
|
208
|
+
As variáveis de ambiente de acessibilidade são interruptores de sentido único: `QITQODE_TUI_ACCESSIBLE=1`, `QITQODE_REDUCE_MOTION=1`, `NO_COLOR` e `QITQODE_TUI_SOUND=0` prevalecem sempre sobre os valores de configuração e as alternâncias em tempo de execução — as garantias de acessibilidade não podem ser anuladas. `QITQODE_TUI_ANNOUNCEMENTS` prevalece de igual modo sobre o valor de configuração e o seletor em tempo de execução, quando definido.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Desenvolvimento
|
|
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
|
+
## Licença
|
|
223
|
+
|
|
224
|
+
O código-fonte é licenciado sob a [Licença MIT](./LICENSE).
|
package/README.ru.md
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
<h1 align="center">QitQode</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center"><strong>Терминальный ИИ-агент для программирования с памятью.</strong></p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://qitqode.com">Сайт</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> | <strong>Русский</strong> | <a href="./README.es.md">Español</a> | <a href="./README.pt.md">Português</a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
Большинство агентов для программирования забывают всё в тот момент, когда сессия заканчивается. QitQode — нет. Он читает и пишет код, выполняет команды, работает с Git — и хранит постоянную, доступную для поиска память о вашем проекте между сессиями, перестраивая собственный контекст, когда работа затягивается, чтобы продолжать двигаться вперёд, а не начинать заново.
|
|
16
|
+
|
|
17
|
+
Один аккаунт, пять тарифов моделей — **Free**, **Default**, **Fast**, **Economy**, **Power**. Никаких панелей управления провайдеров, никакой возни с API-ключами, никаких таблиц с расходами по каждой модели.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Быстрый старт
|
|
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
|
+
При первом запуске вас проведут через вход:
|
|
32
|
+
|
|
33
|
+
- **Sign in with QitQode** — вход по коду устройства, который работает везде, включая SSH-сессии и удалённые песочницы: CLI показывает URL для подтверждения и код (и открывает браузер, если он доступен); подтвердите вход с любого устройства, чтобы завершить процесс
|
|
34
|
+
- **API key** — либо вставьте API-ключ QitQode
|
|
35
|
+
|
|
36
|
+
Затем выберите тариф в селекторе моделей и приступайте к работе. Это вся настройка.
|
|
37
|
+
|
|
38
|
+
### Использование QitQode на русском
|
|
39
|
+
|
|
40
|
+
TUI автоматически определяет системную локаль. Чтобы переключить язык вручную, выполните `/language` (или `/lang`) внутри QitQode и выберите «Русский» из списка.
|
|
41
|
+
|
|
42
|
+
<details>
|
|
43
|
+
<summary><strong>WSL: проблемы с буфером обмена</strong></summary>
|
|
44
|
+
|
|
45
|
+
Если при копировании в WSL текст искажается, установите `xsel`:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
sudo apt install xsel
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
</details>
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Почему QitQode
|
|
56
|
+
|
|
57
|
+
Вам не нужна ещё одна обёртка для чата. Вам нужен агент, который способен вести длительную задачу, не теряя нить. QitQode построен вокруг четырёх механизмов:
|
|
58
|
+
|
|
59
|
+
### 1. Память, которая переживает сессию
|
|
60
|
+
|
|
61
|
+
Каждый проект получает постоянный слой памяти на базе полнотекстового поиска SQLite: знания о проекте в `MEMORY.md`, автоматические контрольные точки сессий, черновые заметки и журналы прогресса по каждой задаче. При возобновлении работы нужная память подставляется автоматически — с ранжированием и учётом токен-бюджета, а не сваливается целиком. Агент продолжает с того места, где остановился, вместо того чтобы заново изучать вашу кодовую базу.
|
|
62
|
+
|
|
63
|
+
### 2. Контекст, который перестраивает сам себя
|
|
64
|
+
|
|
65
|
+
Длинные задачи выходят за пределы окна контекста. QitQode следит за окном, сохраняет состояние в контрольной точке до того, как оно заполнится, и восстанавливает рабочий контекст из последней контрольной точки, памяти проекта и прогресса задачи — так что многочасовой рефакторинг не обрывается на лимите токенов.
|
|
66
|
+
|
|
67
|
+
### 3. Автономность, с которой можно спросить
|
|
68
|
+
|
|
69
|
+
Задайте условие остановки командой `/goal`. Когда агент считает, что закончил, независимая модель-судья просматривает диалог и решает, действительно ли цель достигнута — никаких больше оптимистичных «всё готово!» на середине работы. В сочетании с древовидным трекером задач (`T1`, `T1.1`, …) и параллельными субагентами это даёт настоящую работу без присмотра.
|
|
70
|
+
|
|
71
|
+
### 4. Одна подписка, ноль возни с провайдерами
|
|
72
|
+
|
|
73
|
+
Пять тарифов, один вход. Переключайте тарифы прямо во время сессии командами `/free`, `/default`, `/fast`, `/economical` или `/power`. В любой момент проверяйте баланс во встроенном индикаторе qredits — расход прозрачен, а не оказывается сюрпризом в конце месяца.
|
|
74
|
+
|
|
75
|
+
### И то, что другие обычно оставляют за бортом
|
|
76
|
+
|
|
77
|
+
- **Учётные данные зашифрованы при хранении** — ваши токены аутентификации защищены ключом, который хранится в системном хранилище ключей ОС, а переменные окружения с учётными данными по умолчанию удаляются из каждого дочернего процесса, запускаемого агентом.
|
|
78
|
+
- **TUI, которым может пользоваться каждый** — режим для программ чтения с экрана, поддержка `NO_COLOR`, снижение анимации, управление детальностью объявлений и высококонтрастная тема с соответствием WCAG AA. Всё это встроено изначально, а не прикручено сбоку. (Подробнее ниже.)
|
|
79
|
+
- **Обычная лицензия MIT** — никакого отдельного файла с ограничениями на использование, никаких условий обслуживания, спрятанных в конце README.
|
|
80
|
+
- **Вход по коду устройства, рассчитанный на реальные машины** — работает по SSH, в контейнерах и в удалённых песочницах, где перенаправление на локальный браузер никогда бы не сработало.
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Основные возможности
|
|
85
|
+
|
|
86
|
+
### Несколько агентов
|
|
87
|
+
|
|
88
|
+
| Агент | Описание |
|
|
89
|
+
| ----------- | --------------------------------------------------------------------------- |
|
|
90
|
+
| **build** | По умолчанию. Полные права на инструменты для разработки |
|
|
91
|
+
| **plan** | Режим анализа только для чтения — исследование кода и проектирование решений |
|
|
92
|
+
| **compose** | Режим оркестрации для разработки по спецификациям и рабочих процессов на навыках |
|
|
93
|
+
|
|
94
|
+
Нажмите `Alt+M`, чтобы переключаться между основными агентами. Субагенты создаются системой по мере необходимости.
|
|
95
|
+
|
|
96
|
+
### Постоянная память
|
|
97
|
+
|
|
98
|
+
Межсессионная память на базе полнотекстового поиска SQLite FTS5:
|
|
99
|
+
|
|
100
|
+
- **Память проекта** (`MEMORY.md`) — постоянные знания о проекте, правила и архитектурные решения
|
|
101
|
+
- **Контрольная точка сессии** (`checkpoint.md`) — структурированные снимки состояния, которые автоматически поддерживает субагент checkpoint-writer
|
|
102
|
+
- **Черновые заметки** (`notes.md`) — временная область заметок для агентов
|
|
103
|
+
- **Прогресс задачи** (`tasks/<id>/progress.md`) — журналы по каждой задаче
|
|
104
|
+
|
|
105
|
+
Память подставляется автоматически при возобновлении сессии, поэтому агенту не нужно заново изучать контекст проекта.
|
|
106
|
+
|
|
107
|
+
### Умное управление контекстом
|
|
108
|
+
|
|
109
|
+
- **Автоматические контрольные точки** — решает, когда сохранить состояние сессии, исходя из окна контекста модели
|
|
110
|
+
- **Восстановление контекста** — когда контекст приближается к лимиту, он перестраивается из последней контрольной точки, памяти проекта, прогресса задачи и сохранённых недавних сообщений, чтобы агент мог продолжить текущую задачу
|
|
111
|
+
- **Подстановка по бюджету** — использует токен-бюджет, чтобы контролировать, сколько содержимого контрольной точки, памяти и заметок попадает в контекст, с ранжированием по важности
|
|
112
|
+
|
|
113
|
+
### Отслеживание задач
|
|
114
|
+
|
|
115
|
+
Древовидная система задач (`T1`, `T1.1`, `T1.2`, …), которая автоматически интегрируется с системой контрольных точек, поэтому прогресс задач сохраняется при возобновлении сессий.
|
|
116
|
+
|
|
117
|
+
### Система субагентов
|
|
118
|
+
|
|
119
|
+
Основной агент может создавать субагентов по требованию. Субагенты используют текущий контекст сессии и могут работать параллельно, с отслеживанием жизненного цикла, отменой и фоновым выполнением.
|
|
120
|
+
|
|
121
|
+
### Цель / условие остановки
|
|
122
|
+
|
|
123
|
+
Команда `/goal` задаёт условие остановки для сессии. Когда агент пытается остановиться, независимая модель-судья оценивает диалог и решает, действительно ли условие выполнено — предотвращая преждевременные «оптимистичные остановки» во время автономной работы.
|
|
124
|
+
|
|
125
|
+
### Режим Compose
|
|
126
|
+
|
|
127
|
+
Режим Compose предоставляет структурированный рабочий процесс для разработки по спецификациям. В него встроены навыки для планирования, выполнения, ревью кода, TDD, отладки, проверки и слияния — оркестрируя полный жизненный цикл от спецификации до готового кода.
|
|
128
|
+
|
|
129
|
+
### Предсказание запроса
|
|
130
|
+
|
|
131
|
+
Встроенные подсказки в виде «призрачного» текста предугадывают ваш следующий запрос по мере работы — нажмите `Tab`, чтобы принять.
|
|
132
|
+
|
|
133
|
+
### Глубокое исследование
|
|
134
|
+
|
|
135
|
+
Встроенный рабочий процесс `/deep-research` проводит структурированное многошаговое исследование для вопросов, которым недостаточно одного поиска.
|
|
136
|
+
|
|
137
|
+
### Headless-режим и работа из IDE
|
|
138
|
+
|
|
139
|
+
Запустите `qitqode serve` для headless HTTP-сервера или `qitqode acp` для поддержки Agent Client Protocol, чтобы управлять QitQode из совместимых редакторов и удалённых окружений.
|
|
140
|
+
|
|
141
|
+
### Голосовой ввод
|
|
142
|
+
|
|
143
|
+
Потоковый голосовой ввод в реальном времени на базе TenVAD. Активируйте командой `/voice`, затем говорите — аудио разбивается по паузам и постепенно расшифровывается в поле ввода. Требуется `sox` (`brew install sox` на macOS, на других платформах аналогично) и явно настроенная модель распознавания речи через поле конфигурации `voice`.
|
|
144
|
+
|
|
145
|
+
> **Примечание:** модели для программирования доступны только по тарифам через бэкенд QitQode. Поле `voice` — это ограниченное исключение, используемое исключительно для распознавания речи и голосового управления; оно не добавляет модели в список моделей для программирования.
|
|
146
|
+
|
|
147
|
+
<details>
|
|
148
|
+
<summary><strong>Настройка звука в 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>Удалённый звук по SSH (Mac → удалённый хост)</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`** — сканирует недавние трассы сессий, извлекает устойчивые знания в память проекта и удаляет устаревшие записи
|
|
177
|
+
- **`/distill`** — находит повторяющиеся ручные рабочие процессы в недавней работе и упаковывает наиболее уверенные кандидаты в переиспользуемые навыки, субагентов или команды
|
|
178
|
+
|
|
179
|
+
---
|
|
180
|
+
|
|
181
|
+
## Конфигурация
|
|
182
|
+
|
|
183
|
+
QitQode настраивается через `.qitqode/qitqode.json` в каталоге проекта (или `~/.config/qitqode/qitqode.json` глобально). Ключевые параметры:
|
|
184
|
+
|
|
185
|
+
- Выбор тарифа модели (Free, Default, Fast, Economy, Power)
|
|
186
|
+
- Права агентов и пользовательские агенты
|
|
187
|
+
- Поведение контрольных точек и памяти
|
|
188
|
+
- Подключения серверов MCP
|
|
189
|
+
- Сочетания клавиш и тема
|
|
190
|
+
|
|
191
|
+
Max Mode (параллельное рассуждение best-of-N с выбором судьёй) можно включить через `experimental.maxMode` в конфигурации.
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Доступность
|
|
196
|
+
|
|
197
|
+
TUI QitQode поставляется с первоклассной поддержкой доступности:
|
|
198
|
+
|
|
199
|
+
- **Доступный режим** — задайте `QITQODE_TUI_ACCESSIBLE=1` (или `"tui": { "accessible": true }` в конфигурации) для работы, удобной программам чтения с экрана: линейный рендеринг главного экрана (без альтернативного экрана), без захвата мыши, низкая частота кадров, снижение анимации и без звуковых сигналов.
|
|
200
|
+
- **NO_COLOR** — любое непустое значение [`NO_COLOR`](https://no-color.org) переключает на монохромный рендеринг с прозрачным фоном. Уровень важности никогда не передаётся только цветом (уведомления несут символы `ℹ ✓ ▲ ✗`, диффы сохраняют маркеры `+`/`-`).
|
|
201
|
+
- **Снижение анимации** — задайте `QITQODE_REDUCE_MOTION=1` (или `"tui": { "reduce_motion": true }`), чтобы заменить спиннеры и анимации статическим текстом. Также переключается на лету из списка команд.
|
|
202
|
+
- **Звук** — отключите звуковые сигналы через `QITQODE_TUI_SOUND=0`, `"tui": { "sound": false }` или переключатель на лету в списке команд. Доступный режим всегда отключает звук.
|
|
203
|
+
- **Детальность объявлений** — в доступном режиме управляйте многословностью объявлений для программ чтения с экрана через `QITQODE_TUI_ANNOUNCEMENTS=quiet|normal|verbose`, `"tui": { "announcements": "quiet" }` или переключатель на лету в списке команд. `quiet` объявляет только границы ходов; `normal` (по умолчанию) добавляет строки о запуске инструментов; `verbose` добавляет строки о завершении инструментов. Ошибки и прерывания всегда объявляются на любом уровне.
|
|
204
|
+
- **Высококонтрастная тема** — выберите встроенную тему `high-contrast` для чисто чёрно-белых поверхностей с цветами, соответствующими WCAG AA.
|
|
205
|
+
- **Маленькие терминалы** — TUI корректно деградирует в узких терминалах и показывает понятное сообщение, когда окно меньше минимума 40x8.
|
|
206
|
+
- **Диалоги только с клавиатуры** — каждый диалог полностью управляется без мыши: `Esc` всегда закрывает, `Tab` (и клавиши со стрелками, если в диалоге есть ряд кнопок или список) перемещает фокус, а `Enter` или `Space` активирует элемент в фокусе. В обычных/NO_COLOR терминалах подсвеченная строка списка также несёт маркер `›`, чтобы выбор был различим без цвета.
|
|
207
|
+
|
|
208
|
+
Переменные окружения для доступности — это односторонние переключатели: `QITQODE_TUI_ACCESSIBLE=1`, `QITQODE_REDUCE_MOTION=1`, `NO_COLOR` и `QITQODE_TUI_SOUND=0` всегда имеют приоритет над значениями конфигурации и переключателями на лету — гарантии доступности нельзя отключить обратно. `QITQODE_TUI_ANNOUNCEMENTS` аналогично имеет приоритет над значением конфигурации и переключателем на лету, когда задан.
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## Разработка
|
|
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
|
+
## Лицензия
|
|
223
|
+
|
|
224
|
+
Исходный код распространяется по [лицензии MIT](./LICENSE).
|