Qwen Code アーキテクチャ概要
このドキュメントでは、Qwen Code のアーキテクチャについて high-level な概要を提供します。
コアコンポーネント
Qwen Code は主に2つの主要パッケージで構成されており、コマンドライン入力を処理する際にシステムが利用する一連のツール群も含まれます:
-
CLI パッケージ (
packages/cli
):- 目的: Qwen Code のユーザー向けインターフェース部分を担当し、初期のユーザー入力処理、最終的な出力表示、全体的なユーザー体験の管理などを行います。
- パッケージに含まれる主な機能:
- 入力処理
- 履歴管理
- 表示レンダリング
- テーマとUIのカスタマイズ
- CLI 設定
-
Core パッケージ (
packages/core
):- 目的: Qwen Code のバックエンドとして機能します。
packages/cli
から送信されたリクエストを受け取り、設定されたモデル API との連携を調整し、利用可能なツールの実行を管理します。 - パッケージに含まれる主な機能:
- Google Gemini API と通信するための API クライアント
- プロンプトの構築と管理
- ツールの登録と実行ロジック
- 会話やセッションの状態管理
- サーバーサイドの設定
- 目的: Qwen Code のバックエンドとして機能します。
-
ツール群 (
packages/core/src/tools/
):- 目的: これらは個別のモジュールで、Gemini モデルの機能を拡張し、ローカル環境(例:ファイルシステム、シェルコマンド、ウェブ取得)とやり取りできるようにします。
- 連携方法:
packages/core
は、Gemini モデルからのリクエストに基づいてこれらのツールを呼び出します。
インタラクションの流れ
Qwen Code との典型的なインタラクションは以下の流れに従います:
- ユーザー入力: ユーザーがターミナルにプロンプトまたはコマンドを入力します。これは
packages/cli
によって管理されます。 - コアへのリクエスト:
packages/cli
がユーザーの入力をpackages/core
に送信します。 - リクエストの処理: コアパッケージは以下を実行します:
- 設定された model API に適したプロンプトを作成します。これには会話履歴や利用可能なツール定義が含まれる場合があります。
- プロンプトを model API に送信します。
- Model API のレスポンス: model API がプロンプトを処理し、レスポンスを返します。このレスポンスは直接的な回答か、あるいは利用可能なツールを使用するリクエストである可能性があります。
- ツールの実行(該当する場合):
- model API がツールの使用をリクエストした場合、コアパッケージはその実行準備を行います。
- リクエストされたツールがファイルシステムを変更したりシェルコマンドを実行したりする可能性がある場合、まずユーザーにツールとその引数の詳細が表示され、ユーザーが実行を承認する必要があります。
- ファイルの読み取りなどの読み取り専用操作は、明示的なユーザー確認なしに実行される場合があります。
- 承認された場合、または確認が不要な場合、コアパッケージが関連するツール内で該当するアクションを実行し、その結果をコアパッケージが model API に送り返します。
- model API がツールの結果を処理し、最終的なレスポンスを生成します。
- CLI へのレスポンス: コアパッケージが最終的なレスポンスを CLI パッケージに送り返します。
- ユーザーへの表示: CLI パッケージがレスポンスをフォーマットしてターミナルに表示します。
主要設計原則
- モジュール性: CLI(フロントエンド)とCore(バックエンド)を分離することで、独立した開発と将来の拡張性(例:同じバックエンドに対する異なるフロントエンド)を実現します。
- 拡張性: ツールシステムは拡張可能に設計されており、新しい機能を追加できます。
- ユーザーエクスペリエンス: CLIは、リッチでインタラクティブなターミナル体験を提供することに重点を置いています。
Last updated on