@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.ja.md
ADDED
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
<h1 align="center">QitQode</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center"><strong>記憶を持つターミナル AI コーディングエージェント。</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> | <strong>日本語</strong> | <a href="./README.fr.md">Français</a> | <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
|
+
ほとんどのコーディングエージェントは、セッションが終わった瞬間にすべてを忘れます。QitQode は違います。コードの読み書き、コマンドの実行、Git の管理をこなしながら、プロジェクトの記憶をセッションをまたいで永続的に保持し、全文検索できる形で蓄えます。処理が長引いたときには自分でコンテキストを再構築し、最初からやり直すのではなく作業を続けられます。
|
|
16
|
+
|
|
17
|
+
アカウントは 1 つ、モデルは 5 つのティア — **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** — 代わりに QitQode の API キーを貼り付けます
|
|
35
|
+
|
|
36
|
+
あとはモデルセレクターからティアを選んで作業を始めるだけ。セットアップはこれで完了です。
|
|
37
|
+
|
|
38
|
+
### QitQode を日本語で使う
|
|
39
|
+
|
|
40
|
+
TUI は起動時にシステムのロケールを自動検出します。手動で切り替えたい場合は、QitQode 内で `/language`(または `/lang`)を実行し、一覧から日本語を選んでください。
|
|
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
|
+
必要なのは、もう 1 つのチャットのラッパーではありません。長時間かかる作業を、要点を見失わずに進められるエージェントです。QitQode は 4 つの仕組みを軸に作られています:
|
|
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. サブスクリプションは 1 つ、プロバイダーの配線はゼロ
|
|
72
|
+
|
|
73
|
+
5 つのティア、サインインは 1 回。セッションの途中でも `/free`、`/default`、`/fast`、`/economical`、`/power` でティアを切り替えられます。組み込みの qredits 表示でいつでも残高を確認でき、使用量は把握可能です。月末に驚くこともありません。
|
|
74
|
+
|
|
75
|
+
### そして、他が省きがちな部分
|
|
76
|
+
|
|
77
|
+
- **保存時に暗号化される認証情報** — 認証トークンは OS のキーリングに保管された鍵で封印され、認証情報の環境変数はエージェントが起動するすべての子プロセスからデフォルトで取り除かれます。
|
|
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
|
+
### ヘッドレス利用と IDE 連携
|
|
138
|
+
|
|
139
|
+
`qitqode serve` でヘッドレスの HTTP サーバーを起動できます。また `qitqode acp` で Agent Client Protocol に対応し、互換エディターやリモート環境から QitQode を動かせます。
|
|
140
|
+
|
|
141
|
+
### 音声入力
|
|
142
|
+
|
|
143
|
+
TenVAD による、リアルタイムのストリーミング音声入力。`/voice` で起動して話しかけると、音声は区切りごとに分割され、入力欄へ逐次書き起こされます。`sox`(macOS では `brew install sox`、他プラットフォームも同様)と、`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
|
+
QitQode の TUI は、最初からアクセシビリティのサポートを備えています:
|
|
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](./LICENSE) の下でライセンスされています。
|
package/README.md
ADDED
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
<h1 align="center">QitQode</h1>
|
|
2
|
+
|
|
3
|
+
<p align="center"><strong>Terminal AI coding agent with a memory.</strong></p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<a href="https://qitqode.com">Website</a>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<strong>English</strong> | <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> | <a href="./README.pt.md">Português</a>
|
|
11
|
+
</p>
|
|
12
|
+
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
Most coding agents forget everything the moment a session ends. QitQode doesn't. It reads and writes code, runs commands, manages Git — and keeps a persistent, searchable memory of your project across sessions, rebuilding its own context when it runs long so it can keep working instead of starting over.
|
|
16
|
+
|
|
17
|
+
One account, five model tiers — **Free**, **Default**, **Fast**, **Economy**, **Power**. No provider dashboards, no API-key juggling, no per-model billing spreadsheets.
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Quick Start
|
|
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
|
+
The first launch guides you through sign-in:
|
|
32
|
+
|
|
33
|
+
- **Sign in with QitQode** — a device-code flow that works everywhere, including SSH sessions and remote sandboxes: the CLI shows a verification URL and code (and opens your browser when one is available); approve on any device to finish
|
|
34
|
+
- **API key** — paste a QitQode API key instead
|
|
35
|
+
|
|
36
|
+
Then pick a tier from the model selector and start working. That's the whole setup.
|
|
37
|
+
|
|
38
|
+
<details>
|
|
39
|
+
<summary><strong>WSL: clipboard issues</strong></summary>
|
|
40
|
+
|
|
41
|
+
If you encounter garbled text when copying on WSL, install `xsel`:
|
|
42
|
+
|
|
43
|
+
```bash
|
|
44
|
+
sudo apt install xsel
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
</details>
|
|
48
|
+
|
|
49
|
+
---
|
|
50
|
+
|
|
51
|
+
## Why QitQode
|
|
52
|
+
|
|
53
|
+
You don't need another chat wrapper. You need an agent that can hold a long-running job without losing the plot. QitQode is built around four mechanisms:
|
|
54
|
+
|
|
55
|
+
### 1. Memory that survives the session
|
|
56
|
+
|
|
57
|
+
Every project gets a persistent memory layer backed by SQLite full-text search: project knowledge in `MEMORY.md`, automatic session checkpoints, scratch notes, and per-task progress logs. When you resume, the relevant memory is injected automatically — ranked and token-budgeted, not dumped. The agent picks up where it left off instead of relearning your codebase.
|
|
58
|
+
|
|
59
|
+
### 2. Context that rebuilds itself
|
|
60
|
+
|
|
61
|
+
Long tasks blow past context windows. QitQode watches the window, checkpoints state before it fills, and reconstructs working context from the latest checkpoint, project memory, and task progress — so a multi-hour refactor doesn't die at the token limit.
|
|
62
|
+
|
|
63
|
+
### 3. Autonomy you can hold accountable
|
|
64
|
+
|
|
65
|
+
Set a stopping condition with `/goal`. When the agent thinks it's done, an independent judge model reviews the conversation and decides whether the goal is actually met — no more optimistic "all done!" halfway through the job. Combine with the tree-shaped task tracker (`T1`, `T1.1`, …) and parallel subagents for real unattended work.
|
|
66
|
+
|
|
67
|
+
### 4. One subscription, zero provider plumbing
|
|
68
|
+
|
|
69
|
+
Five tiers, one sign-in. Switch tiers mid-session with `/free`, `/default`, `/fast`, `/economical`, or `/power`. Check your balance any time with the built-in qredits display — usage is inspectable, not a surprise at month-end.
|
|
70
|
+
|
|
71
|
+
### And the parts others leave out
|
|
72
|
+
|
|
73
|
+
- **Credentials encrypted at rest** — your auth tokens are sealed with a key held in the OS keyring, and credential environment variables are stripped by default from every child process the agent spawns.
|
|
74
|
+
- **A TUI that everyone can use** — screen-reader accessible mode, `NO_COLOR` support, reduced motion, announcement verbosity control, and a WCAG AA high-contrast theme. First-class, not bolted on. (Details below.)
|
|
75
|
+
- **Plain MIT license** — no separate use-restrictions file, no service terms buried in the tail of the README.
|
|
76
|
+
- **Device-code sign-in built for real machines** — works over SSH, in containers, and in remote sandboxes where a loopback browser redirect never could.
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Core Features
|
|
81
|
+
|
|
82
|
+
### Multiple Agents
|
|
83
|
+
|
|
84
|
+
| Agent | Description |
|
|
85
|
+
| ----------- | --------------------------------------------------------------------------- |
|
|
86
|
+
| **build** | Default. Full tool permissions for development |
|
|
87
|
+
| **plan** | Read-only analysis mode for code exploration and solution design |
|
|
88
|
+
| **compose** | Orchestration mode for specs-driven development and skill-driven workflows |
|
|
89
|
+
|
|
90
|
+
Press `Alt+M` to cycle between primary agents. Subagents are created by the system as needed.
|
|
91
|
+
|
|
92
|
+
### Persistent Memory
|
|
93
|
+
|
|
94
|
+
Cross-session memory powered by SQLite FTS5 full-text search:
|
|
95
|
+
|
|
96
|
+
- **Project memory** (`MEMORY.md`) — persistent project knowledge, rules, and architecture decisions
|
|
97
|
+
- **Session checkpoint** (`checkpoint.md`) — structured state snapshots maintained automatically by the checkpoint-writer subagent
|
|
98
|
+
- **Scratch notes** (`notes.md`) — temporary note area for agents
|
|
99
|
+
- **Task progress** (`tasks/<id>/progress.md`) — per-task logs
|
|
100
|
+
|
|
101
|
+
Memory is injected automatically when a session resumes, so the agent does not need to relearn project context.
|
|
102
|
+
|
|
103
|
+
### Intelligent Context Management
|
|
104
|
+
|
|
105
|
+
- **Automatic checkpoints** — decides when to save session state based on the model context window
|
|
106
|
+
- **Context reconstruction** — when context approaches the limit, rebuilds it from the latest checkpoint, project memory, task progress, and retained recent messages so the agent can continue the current task
|
|
107
|
+
- **Budgeted injection** — uses a token budget to control how much checkpoint, memory, and notes content enters context, with importance ranking
|
|
108
|
+
|
|
109
|
+
### Task Tracking
|
|
110
|
+
|
|
111
|
+
A tree-shaped task system (`T1`, `T1.1`, `T1.2`, …) that integrates automatically with the checkpoint system, so task progress is preserved when sessions resume.
|
|
112
|
+
|
|
113
|
+
### Subagent System
|
|
114
|
+
|
|
115
|
+
The primary agent can create subagents on demand. Subagents share the current session context and can work in parallel, with lifecycle tracking, cancellation, and background execution.
|
|
116
|
+
|
|
117
|
+
### Goal / Stop Condition
|
|
118
|
+
|
|
119
|
+
The `/goal` command sets a stopping condition for a session. When the agent tries to stop, an independent judge model evaluates the conversation to decide whether the condition is truly satisfied — preventing premature "optimistic stops" during autonomous work.
|
|
120
|
+
|
|
121
|
+
### Compose Mode
|
|
122
|
+
|
|
123
|
+
Compose mode provides a structured workflow for specs-driven development. It includes built-in skills for planning, execution, code review, TDD, debugging, verification, and merging — orchestrating the full lifecycle from spec to shipped code.
|
|
124
|
+
|
|
125
|
+
### Prompt Prediction
|
|
126
|
+
|
|
127
|
+
Inline ghost-text suggestions predict your next prompt as you work — press `Tab` to accept.
|
|
128
|
+
|
|
129
|
+
### Deep Research
|
|
130
|
+
|
|
131
|
+
The built-in `/deep-research` workflow runs a structured multi-step investigation for questions that need more than a single search.
|
|
132
|
+
|
|
133
|
+
### Headless & IDE Use
|
|
134
|
+
|
|
135
|
+
Run `qitqode serve` for a headless HTTP server, or `qitqode acp` for Agent Client Protocol support to drive QitQode from compatible editors and remote environments.
|
|
136
|
+
|
|
137
|
+
### Voice Input
|
|
138
|
+
|
|
139
|
+
Real-time streaming voice input powered by TenVAD. Activate with `/voice`, then speak — audio is segmented by pauses and transcribed incrementally into the input. Requires `sox` (`brew install sox` on macOS, other platforms similar) and an explicitly configured speech-recognition model via the `voice` config field.
|
|
140
|
+
|
|
141
|
+
> **Note:** Coding models are tier-only through the QitQode backend. The `voice` field is a scoped exception used solely for speech recognition and voice control — it does not add models to the coding model list.
|
|
142
|
+
|
|
143
|
+
<details>
|
|
144
|
+
<summary><strong>WSLg audio setup</strong></summary>
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
sudo apt install -y sox pulseaudio libasound2-plugins
|
|
148
|
+
export PULSE_SERVER=unix:/mnt/wslg/PulseServer
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
</details>
|
|
152
|
+
|
|
153
|
+
<details>
|
|
154
|
+
<summary><strong>SSH remote audio (Mac → remote host)</strong></summary>
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
# Mac (local)
|
|
158
|
+
brew install pulseaudio
|
|
159
|
+
pulseaudio --load="module-native-protocol-tcp auth-ip-acl=127.0.0.1" --exit-idle-time=-1 --daemonize
|
|
160
|
+
# Add to ~/.ssh/config: RemoteForward 4713 127.0.0.1:4713
|
|
161
|
+
|
|
162
|
+
# Remote host
|
|
163
|
+
apt install -y pulseaudio pulseaudio-utils sox
|
|
164
|
+
export PULSE_SERVER=tcp:127.0.0.1:4713
|
|
165
|
+
# Verify: pactl info
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
</details>
|
|
169
|
+
|
|
170
|
+
### Dream & Distill
|
|
171
|
+
|
|
172
|
+
- **`/dream`** — scans recent session traces, extracts persistent knowledge into project memory, and removes outdated entries
|
|
173
|
+
- **`/distill`** — discovers repeated manual workflows in recent work and packages high-confidence candidates into reusable skills, subagents, or commands
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## Configuration
|
|
178
|
+
|
|
179
|
+
QitQode is configured via `.qitqode/qitqode.json` in the project directory (or `~/.config/qitqode/qitqode.json` globally). Key options include:
|
|
180
|
+
|
|
181
|
+
- Model tier selection (Free, Default, Fast, Economy, Power)
|
|
182
|
+
- Agent permissions and custom agents
|
|
183
|
+
- Checkpoint and memory behavior
|
|
184
|
+
- MCP server connections
|
|
185
|
+
- Keybindings and theme
|
|
186
|
+
|
|
187
|
+
Max Mode (parallel best-of-N reasoning with judge selection) can be enabled via `experimental.maxMode` in the config.
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## Accessibility
|
|
192
|
+
|
|
193
|
+
QitQode's TUI ships with first-class accessibility support:
|
|
194
|
+
|
|
195
|
+
- **Accessible mode** — set `QITQODE_TUI_ACCESSIBLE=1` (or `"tui": { "accessible": true }` in config) for a screen-reader friendly experience: linear main-screen rendering (no alternate screen), no mouse capture, low frame rate, reduced motion, and no sound cues.
|
|
196
|
+
- **NO_COLOR** — any non-empty [`NO_COLOR`](https://no-color.org) value switches to monochrome rendering with transparent backgrounds. Severity is never conveyed by color alone (toasts carry `ℹ ✓ ▲ ✗` symbols, diffs keep `+`/`-` markers).
|
|
197
|
+
- **Reduce motion** — set `QITQODE_REDUCE_MOTION=1` (or `"tui": { "reduce_motion": true }`) to replace spinners and animations with static text. Also toggleable at runtime from the command list.
|
|
198
|
+
- **Sound** — disable sound cues with `QITQODE_TUI_SOUND=0`, `"tui": { "sound": false }`, or the runtime toggle in the command list. Accessible mode always disables sound.
|
|
199
|
+
- **Announcement verbosity** — in accessible mode, control how chatty screen-reader announcements are with `QITQODE_TUI_ANNOUNCEMENTS=quiet|normal|verbose`, `"tui": { "announcements": "quiet" }`, or the runtime selector in the command list. `quiet` announces only turn boundaries; `normal` (default) adds tool-start lines; `verbose` adds tool-completion lines. Errors and aborts are always announced at every level.
|
|
200
|
+
- **High-contrast theme** — select the built-in `high-contrast` theme for pure black/white surfaces with WCAG AA-compliant colors.
|
|
201
|
+
- **Small terminals** — the TUI degrades gracefully in narrow terminals and shows a clear message when the window is below the 40x8 minimum.
|
|
202
|
+
- **Keyboard-only dialogs** — every dialog is fully operable without a mouse: `Esc` always closes, `Tab` (and arrow keys, where a dialog has a button row or list) moves focus, and `Enter` or `Space` activates the focused control. In plain/NO_COLOR terminals, the highlighted list row also carries a `›` marker so the selection is discernible without color.
|
|
203
|
+
|
|
204
|
+
Accessibility environment variables are one-way switches: `QITQODE_TUI_ACCESSIBLE=1`, `QITQODE_REDUCE_MOTION=1`, `NO_COLOR`, and `QITQODE_TUI_SOUND=0` always win over config values and runtime toggles — accessibility guarantees cannot be overridden back off. `QITQODE_TUI_ANNOUNCEMENTS` similarly wins over the config value and runtime selector when set.
|
|
205
|
+
|
|
206
|
+
---
|
|
207
|
+
|
|
208
|
+
## Development
|
|
209
|
+
|
|
210
|
+
```bash
|
|
211
|
+
bun install # Install dependencies
|
|
212
|
+
bun run dev # Run in development mode
|
|
213
|
+
bun turbo typecheck # Type check
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
---
|
|
217
|
+
|
|
218
|
+
## License
|
|
219
|
+
|
|
220
|
+
Source code is licensed under the [MIT License](./LICENSE).
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Distribution notes
|
|
225
|
+
|
|
226
|
+
The standard `@qitqode/cli` package supports glibc Linux, macOS, and Windows on x64 or arm64.
|
|
227
|
+
On Alpine or another musl Linux distribution, install the runtime libraries and the dedicated
|
|
228
|
+
musl wrapper instead:
|
|
229
|
+
|
|
230
|
+
```bash
|
|
231
|
+
apk add libstdc++ libgcc
|
|
232
|
+
bun add --global @qitqode/cli-musl
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
The dedicated wrapper prevents Bun from downloading both glibc and musl binaries. The x64 builds
|
|
236
|
+
use the baseline instruction set for compatibility.
|
|
237
|
+
|
|
238
|
+
`@qitqode/cli` are command-line applications, not Node, Bun, browser, ESM, or CommonJS library APIs.
|
|
239
|
+
Programmatic integrations should use `@qitqode/sdk` or `@qitqode/plugin`.
|
|
240
|
+
|
|
241
|
+
Automatic language-server downloads are currently disabled. Install the language servers you need through your
|
|
242
|
+
operating system or language package manager. Update checks are notification-only unless `autoupdate` is explicitly
|
|
243
|
+
set to `true`.
|
|
244
|
+
|
|
245
|
+
At runtime, QitQode sends prompt context to the selected QitQode/model backend. It also retrieves the public
|
|
246
|
+
`models.dev` catalog and package-version metadata. Remote product analytics are currently hard-disabled.
|
|
247
|
+
Operator-configured OpenTelemetry remains available only when `OTEL_EXPORTER_OTLP_ENDPOINT` is explicitly set.
|
|
248
|
+
|
|
249
|
+
Source and documentation are available in the
|
|
250
|
+
[QitQode repository](https://github.com/qitqode/qitqode).
|