Skip to Content
CoreQwen Code Core

Qwen Code Core

Qwen Code のコアパッケージ (packages/core) は、Qwen Code のバックエンド部分であり、モデル API との通信、ツールの管理、および packages/cli から送信されたリクエストの処理を担当します。Qwen Code 全体の概要については、メインドキュメントページを参照してください。

このセクションのナビゲーション

  • Core tools API: コアでツールがどのように定義、登録、使用されるかに関する情報。
  • Memory Import Processor: @file.md 構文を使用したモジュラー形式の QWEN.md インポート機能のドキュメント。

コアの役割

Qwen Code の packages/cli 部分がユーザーインターフェースを提供する一方で、packages/core は以下の機能を担っています:

  • Model API との連携: 設定されたモデルプロバイダーと安全に通信し、ユーザーのプロンプトを送信してモデルの応答を受信します。
  • Prompt engineering(プロンプト設計): 効果的なプロンプトをモデルに送信するため、会話履歴やツール定義、コンテキストファイル(例:QWEN.md)からの指示内容などを組み込むことがあります。
  • ツール管理とオーケストレーション:
    • 利用可能なツール(例:ファイルシステム操作ツール、シェルコマンド実行など)を登録します。
    • モデルからのツール使用リクエストを解釈します。
    • 渡された引数を使って要求されたツールを実行します。
    • ツールの実行結果をモデルに返し、さらに処理を行えるようにします。
  • セッションおよび状態管理: 会話の状態(履歴や一貫したやり取りに必要な関連コンテキストなど)を追跡します。
  • 設定管理: API キーのアクセス、モデル選択、ツール設定など、コア固有の設定を管理します。

セキュリティに関する考慮事項

Core はセキュリティにおいて重要な役割を果たします:

  • API key の管理: Core はプロバイダーの認証情報を処理し、API との通信時にこれらが安全に使用されるようにします。
  • ツールの実行: ツールがローカルシステムとやり取りする場合(例:run_shell_command)、Core(およびその下層のツール実装)は適切な注意を払って実行する必要があり、意図しない変更を防ぐためにサンドボックス機構を導入することが多いです。

チャット履歴の圧縮

長時間の会話で選択したモデルのトークン制限を超えないようにするために、Core にはチャット履歴圧縮機能が含まれています。

会話が設定されたモデルのトークン制限に近づいたとき、Core はモデルに送信する前に会話履歴を自動的に圧縮します。この圧縮は、伝えられる情報に関しては無損失になるように設計されていますが、使用されるトークンの総数は削減されます。

各プロバイダーのモデルにおけるトークン制限については、それぞれのドキュメントで確認できます。

モデルのフォールバック

Qwen Code には、デフォルトのモデルがレート制限された場合でも CLI を引き続き使用できるようにするためのフォールバックメカニズムが含まれています。

デフォルトの “pro” モデルを使用していて、CLI がレート制限されていることを検出した場合、現在のセッションで自動的に “flash” モデルに切り替わります。これにより、中断せずに作業を続けることができます。

ファイル検出サービス

ファイル検出サービスは、現在のコンテキストに関連するプロジェクト内のファイルを見つける役割を担っています。これは @ コマンドや、ファイルへのアクセスを必要とする他のツールによって使用されます。

Memory discovery service

Memory discovery service は、モデルにコンテキストを提供するコンテキストファイル(デフォルト:QWEN.md)を見つけてロードする役割を持っています。このサービスは階層的にファイルを検索し、カレントワーキングディレクトリから始めてプロジェクトのルートディレクトリ、そしてユーザーのホームディレクトリまで上に向かって探索します。また、サブディレクトリ内も検索対象となります。

これにより、グローバルレベル、プロジェクトレベル、コンポーネントレベルのコンテキストファイルを持つことができ、これらすべてが組み合わさってモデルに最も関連性の高い情報を提供します。

ロードされたコンテキストファイルの内容を showaddrefresh するには、/memory コマンドを使用できます。

Last updated on