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