Qwen Code アーキテクチャ概要
本ドキュメントでは、Qwen Code のアーキテクチャについて高レベルな概要を説明します。
コアコンポーネント
Qwen Code は主に 2 つのメインパッケージで構成されており、コマンドライン入力の処理過程でシステムが使用できるツール群も含まれています。
1. CLI パッケージ (packages/cli)
目的: Qwen Code のユーザー向け部分を担当します。初期ユーザー入力の処理、最終出力の提示、ユーザーエクスペリエンス全体の管理などを行います。
主な機能:
- 入力処理: 直接のテキスト入力、スラッシュコマンド(例:
/help、/clear、/model)、@コマンド(ファイル内容を含めるための@file)、!コマンド(シェル実行のための!command)など、さまざまな方法でユーザー入力を処理します。 - 履歴管理: 会話履歴を維持し、セッションの再開などの機能を有効にします。
- 表示レンダリング: 構文ハイライトと適切なフォーマットを適用し、ターミナル上でユーザーに応答を整形して表示します。
- テーマと UI カスタマイズ: パーソナライズされた体験のために、カスタマイズ可能なテーマと UI 要素をサポートします。
- 構成設定: JSON 設定ファイル、環境変数、コマンドライン引数を通じて、さまざまな構成オプションを管理します。
2. Core パッケージ (packages/core)
目的: Qwen Code のバックエンドとして機能します。packages/cli から送信されたリクエストを受け取り、構成済みのモデル API とのやり取りを調整し、利用可能なツールの実行を管理します。
主な機能:
- API クライアント: Qwen モデル API と通信し、プロンプトの送信と応答の受信を行います。
- プロンプト構築: 会話履歴や利用可能なツールの定義を組み込み、モデルに適したプロンプトを構築します。
- ツールの登録と実行: 利用可能なツールの登録を管理し、モデルからのリクエストに基づいて実行します。
- 状態管理: 会話およびセッションの状態情報を維持します。
- サーバーサイド構成: サーバーサイドの構成と設定を処理します。
3. ツール (packages/core/src/tools/)
目的: Qwen モデルの機能を拡張する個別のモジュールです。ローカル環境(ファイルシステム、シェルコマンド、Web コンテンツの取得など)との対話を可能にします。
連携方法: packages/core は Qwen モデルからのリクエストに基づいてこれらのツールを呼び出します。
主なツール:
- ファイル操作: ファイルの読み取り、書き込み、編集
- シェルコマンド: 危険な操作の可能性のあるシステムコマンドの実行(ユーザーの承認が必要)
- 検索ツール: プロジェクト内のファイルの検索とコンテンツの検索
- Web ツール: Web からのコンテンツ取得
- MCP 統合: 拡張機能のために Model Context Protocol サーバーへの接続
インタラクションフロー
Qwen Code との典型的なインタラクションは、以下のフローに従います。
- ユーザー入力: ユーザーがターミナルにプロンプトまたはコマンドを入力します。これは
packages/cliによって管理されます。 - Core へのリクエスト:
packages/cliがユーザーの入力をpackages/coreに送信します。 - リクエスト処理: Core パッケージは以下の処理を行います。
- 構成済みのモデル API 向けに適切なプロンプトを構築します(会話履歴や利用可能なツールの定義が含まれる場合があります)。
- プロンプトをモデル API に送信します。
- モデル API の応答: モデル API がプロンプトを処理し、応答を返します。この応答は直接的な回答の場合もあれば、利用可能なツールのいずれかを使用するリクエストの場合もあります。
- ツールの実行(該当する場合):
- モデル API がツールをリクエストすると、Core パッケージはその実行を準備します。
- リクエストされたツールがファイルシステムの変更やシェルコマンドの実行を行う場合、まずツールの詳細と引数がユーザーに提示され、実行の承認が必要になります。
- ファイルの読み取りなどの読み取り専用操作は、明示的なユーザー確認なしで実行される場合があります。
- 承認が得られた場合、または承認が不要な場合、Core パッケージは該当するツール内で関連するアクションを実行し、結果をモデル API に返送します。
- モデル API はツールの結果を処理し、最終的な応答を生成します。
- CLI への応答: Core パッケージが最終的な応答を CLI パッケージに返送します。
- ユーザーへの表示: CLI パッケージが応答を整形し、ターミナル上でユーザーに表示します。
構成オプション
Qwen Code では、動作を構成するための複数の方法が提供されています。
構成レイヤー(優先順位順)
- コマンドライン引数
- 環境変数
- プロジェクト設定ファイル (
.qwen/settings.json) - ユーザー設定ファイル (
~/.qwen/settings.json) - システム設定ファイル
- デフォルト値
主な構成カテゴリ
- 一般設定: vim モード、優先エディタ、自動更新の設定
- UI 設定: テーマのカスタマイズ、バナーの表示設定、フッターの表示設定
- モデル設定: モデルの選択、セッションのターン数制限、圧縮設定
- コンテキスト設定: コンテキストファイル名、ディレクトリのインクルード、ファイルフィルタリング
- ツール設定: 承認モード、サンドボックス化、ツールの制限
- プライバシー設定: 使用統計情報の収集
- 詳細設定: デバッグオプション、カスタムバグ報告コマンド
主要な設計原則
- モジュール性: CLI(フロントエンド)と Core(バックエンド)を分離することで、独立した開発と将来の拡張(例: 同じバックエンドに対する異なるフロントエンド)を可能にします。
- 拡張性: ツールシステムは拡張可能に設計されており、カスタムツールや MCP サーバー統合を通じて新機能を追加できます。
- ユーザーエクスペリエンス: CLI は、構文ハイライト、カスタマイズ可能なテーマ、直感的なコマンド構造などの機能により、リッチでインタラクティブなターミナル体験の提供に注力しています。
- セキュリティ: 危険な操作の可能性のある処理に対する承認メカニズムと、ユーザーのシステムを保護するサンドボックスオプションを実装しています。
- 柔軟性: 複数の構成方法をサポートし、異なるワークフローや環境に適応できます。
Last updated on