Qwen Code の設定
認証 / API キー: 認証(Qwen OAuth、Alibaba Cloud Coding プラン、または API キー)および関連する環境変数(例:OPENAI_API_KEY)については、認証 を参照してください。
新しい設定フォーマットに関する注意: settings.json ファイルのフォーマットが、より整理された新しい構造に更新されました。旧フォーマットは自動的に移行されます。
Qwen Code では、環境変数、コマンドライン引数、設定ファイルなど、複数の方法で動作を設定できます。本ドキュメントでは、利用可能な設定方法と各設定項目について説明します。
設定のレイヤー
設定は、以下の優先順位(数字が小さいほど、大きい数字で上書きされます)に従って適用されます。
| レベル | 設定ソース | 説明 |
|---|---|---|
| 1 | デフォルト値 | アプリケーション内にハードコードされたデフォルト値 |
| 2 | システムデフォルトファイル | 他の設定ファイルによって上書き可能な、システム全体にわたるデフォルト設定 |
| 3 | ユーザー設定ファイル | 現在のユーザー向けのグローバル設定 |
| 4 | プロジェクト設定ファイル | プロジェクト固有の設定 |
| 5 | システム設定ファイル | 他のすべての設定ファイルを上書きする、システム全体にわたる設定 |
| 6 | 環境変数 | システム全体またはセッション固有の変数(.env ファイルから読み込まれる場合あり) |
| 7 | コマンドライン引数 | CLI を起動する際に渡された値 |
設定ファイル
Qwen Code では、永続的な設定を管理するために JSON 形式の設定ファイルを使用します。設定ファイルは以下の 4 つの場所に配置できます。
| ファイル種別 | 位置 | スコープ |
|---|---|---|
| システムデフォルト設定ファイル | Linux: /etc/qwen-code/system-defaults.jsonWindows: C:\ProgramData\qwen-code\system-defaults.jsonmacOS: /Library/Application Support/QwenCode/system-defaults.json 環境変数 QWEN_CODE_SYSTEM_DEFAULTS_PATH を使用してパスを上書きできます。 | システム全体にわたる基本的なデフォルト設定を提供します。これらの設定は優先度が最も低く、ユーザー設定、プロジェクト設定、またはシステム上書き設定によって上書きされることが意図されています。 |
| ユーザー設定ファイル | ~/.qwen/settings.json(~ はホームディレクトリを表します)。 | 現在のユーザーによるすべての Qwen Code セッションに適用されます。 |
| プロジェクト設定ファイル | プロジェクトのルートディレクトリ内にある .qwen/settings.json。 | その特定のプロジェクトから Qwen Code を実行している場合のみ適用されます。プロジェクト設定はユーザー設定を上書きします。 |
| システム設定ファイル | Linux: /etc/qwen-code/settings.json Windows: C:\ProgramData\qwen-code\settings.json macOS: /Library/Application Support/QwenCode/settings.json環境変数 QWEN_CODE_SYSTEM_SETTINGS_PATH を使用してパスを上書きできます。 | システム上のすべてのユーザーによるすべての Qwen Code セッションに適用されます。システム設定はユーザー設定およびプロジェクト設定を上書きします。企業のシステム管理者がユーザーの Qwen Code 環境を制御する際に有用です。 |
設定ファイル内の環境変数についての注意: settings.json ファイル内の文字列値は、$VAR_NAME または ${VAR_NAME} の構文で環境変数を参照できます。これらの環境変数は、設定が読み込まれる際に自動的に解決されます。たとえば、環境変数 MY_API_TOKEN が定義されている場合、settings.json 内では "apiKey": "$MY_API_TOKEN" のように使用できます。
プロジェクト内の .qwen ディレクトリ
プロジェクト設定ファイルに加えて、プロジェクトの .qwen ディレクトリには、Qwen Code の動作に関連するその他のプロジェクト固有のファイルを含めることができます。たとえば:
- カスタムサンドボックスプロファイル(例:
.qwen/sandbox-macos-custom.sb、.qwen/sandbox.Dockerfile) .qwen/skills/下の エージェントスキル(各スキルはSKILL.mdを含むディレクトリ)
設定の移行
Qwen Code は、従来の設定ファイルを自動的に新しい形式に移行します。移行前に、古い設定ファイルはバックアップされます。以下の設定項目の名前が、否定形(disable*)から肯定形(enable*)に変更されています。
| 旧設定項目 | 新設定項目 | 備考 |
|---|---|---|
disableAutoUpdate + disableUpdateNag | general.enableAutoUpdate | 単一の設定項目に統合されました |
disableLoadingPhrases | ui.accessibility.enableLoadingPhrases | |
disableFuzzySearch | context.fileFiltering.enableFuzzySearch | |
disableCacheControl | model.generationConfig.enableCacheControl |
ブール値の反転: 移行時に、ブール値は反転されます(例: disableAutoUpdate: true は enableAutoUpdate: false になります)。
disableAutoUpdate および disableUpdateNag の統合ポリシー
両方の従来の設定が存在し、値が異なる場合、移行は以下のポリシーに従います:disableAutoUpdate または disableUpdateNag のいずれかが true の場合、enableAutoUpdate は false になります。
disableAutoUpdate | disableUpdateNag | 移行後の enableAutoUpdate |
|---|---|---|
false | false | true |
false | true | false |
true | false | false |
true | true | false |
settings.json で利用可能な設定
設定はカテゴリ別に整理されています。すべての設定は、settings.json ファイル内の対応する最上位レベルのカテゴリオブジェクト内に配置する必要があります。
一般
| 設定 | 型 | 説明 | デフォルト |
|---|---|---|---|
general.preferredEditor | 文字列 | ファイルを開く際に使用する推奨エディタ。 | undefined |
general.vimMode | 真偽値 | Vim キーバインドを有効化します。 | false |
general.enableAutoUpdate | 真偽値 | 起動時に自動更新のチェックおよびインストールを有効化します。 | true |
general.gitCoAuthor | 真偽値 | Qwen Code 経由でコミットを行った場合、Git コミットメッセージに自動的に Co-authored-by トレーラーを追加します。 | true |
general.checkpointing.enabled | 真偽値 | セッションのチェックポイント機能を有効化し、障害発生時の復旧を可能にします。 | false |
general.defaultFileEncoding | 文字列 | 新規ファイルのデフォルトエンコーディングです。BOM なしの UTF-8 を使用する場合は "utf-8"(デフォルト)、BOM ありの UTF-8 を使用する場合は "utf-8-bom" を指定します。プロジェクトで BOM を明示的に必要とする場合のみ変更してください。 | "utf-8" |
出力
| 設定 | 型 | 説明 | デフォルト | 指定可能な値 |
|---|---|---|---|---|
output.format | 文字列 | CLI 出力の形式。 | "text" | "text", "json" |
ui
| 設定 | 型 | 説明 | デフォルト |
|---|---|---|---|
ui.theme | 文字列 | UI のカラーテーマ。利用可能なオプションについては、テーマ を参照してください。 | undefined |
ui.customThemes | オブジェクト | カスタムテーマの定義。 | {} |
ui.hideWindowTitle | 真偽値 | ウィンドウタイトルバーを非表示にします。 | false |
ui.hideTips | 真偽値 | UI 内のヘルプ情報(ヒント)を非表示にします。 | false |
ui.hideBanner | 真偽値 | アプリケーションのバナーを非表示にします。 | false |
ui.hideFooter | 真偽値 | UI のフッターを非表示にします。 | false |
ui.showMemoryUsage | 真偽値 | UI にメモリ使用量情報を表示します。 | false |
ui.showLineNumbers | 真偽値 | CLI 出力内のコードブロックに行番号を表示します。 | true |
ui.showCitations | 真偽値 | チャットで生成されたテキストの出典(引用)を表示します。 | true |
enableWelcomeBack | 真偽値 | 会話履歴のあるプロジェクトに戻った際に「ようこそ戻ってきました」ダイアログを表示します。有効にすると、Qwen Code は .qwen/PROJECT_SUMMARY.md という以前に生成されたプロジェクト要約ファイルが存在するプロジェクトに戻ってきたことを自動検出し、前の会話を継続するか、新しく開始するかを選択できるダイアログを表示します。この機能は /summary コマンドおよび終了確認ダイアログと連携します。 | true |
ui.accessibility.enableLoadingPhrases | 真偽値 | ローディング中のフレーズを有効化します(アクセシビリティ向上のため無効化可能)。 | true |
ui.accessibility.screenReader | 真偽値 | スクリーンリーダーモードを有効化し、TUI をスクリーンリーダーとの互換性向上のために調整します。 | false |
ui.customWittyPhrases | 文字列配列 | ローディング状態中に表示するカスタムフレーズのリストです。指定した場合、CLI はデフォルトのフレーズではなく、このリストのフレーズを順に表示します。 | [] |
IDE
| 設定 | 型 | 説明 | デフォルト |
|---|---|---|---|
ide.enabled | boolean | IDE 統合モードを有効化します。 | false |
ide.hasSeenNudge | boolean | ユーザーが IDE 統合の通知を既に確認済みか。 | false |
プライバシー
| 設定 | 型 | 説明 | デフォルト |
|---|---|---|---|
privacy.usageStatisticsEnabled | boolean | 使用状況統計情報の収集を有効化します。 | true |
model
| 設定 | 型 | 説明 | デフォルト |
|---|---|---|---|
model.name | 文字列 | 会話で使用する Qwen モデル。 | undefined |
model.maxSessionTurns | 数値 | セッション内に保持するユーザー/モデル/ツールのターン数の最大値。-1 の場合、制限なし。 | -1 |
model.generationConfig | オブジェクト | 下位のコンテンツ生成器に渡される高度な上書き設定。リクエスト制御(例:timeout、maxRetries、enableCacheControl、contextWindowSize(モデルのコンテキストウィンドウサイズを上書き)、modalities(自動検出された入力モダリティを上書き)、customHeaders(API リクエスト用のカスタム HTTP ヘッダー)、extra_body(OpenAI 互換 API リクエストのみで使用可能な追加リクエストボディパラメーター))および samplingParams 内の微調整パラメーター(例:temperature、top_p、max_tokens)をサポートします。未設定の場合は、プロバイダーのデフォルト値が使用されます。 | undefined |
model.chatCompression.contextPercentageThreshold | 数値 | チャット履歴の圧縮を開始する閾値を、モデルの全トークン制限に対する割合(0~1)で指定します。この設定は、自動圧縮および手動コマンド /compress の両方に適用されます。たとえば 0.6 を指定すると、チャット履歴がトークン制限の 60% を超えた時点で圧縮が実行されます。圧縮を完全に無効化するには 0 を指定してください。 | 0.7 |
model.skipNextSpeakerCheck | 真偽値 | 次の発話者チェックをスキップします。 | false |
model.skipLoopDetection | 真偽値 | ループ検出チェックを無効化します。ループ検出は AI 応答における無限ループを防止しますが、正当なワークフローを誤って中断する「誤検出」を引き起こすことがあります。誤検出による中断が頻繁に発生する場合、このオプションを有効化してください。 | false |
model.skipStartupContext | 真偽値 | 各セッション開始時に送信される起動時のワークスペースコンテキスト(環境概要と確認応答)をスキップします。手動でコンテキストを提供したい場合、または起動時のトークン使用量を削減したい場合に有効化してください。 | false |
model.enableOpenAILogging | 真偽値 | OpenAI API 呼び出しのログ記録を有効化し、デバッグおよび分析を支援します。有効化すると、API リクエストおよびレスポンスが JSON ファイルに記録されます。 | false |
model.openAILoggingDir | 文字列 | OpenAI API ログの保存先カスタムディレクトリパス。未指定の場合、現在の作業ディレクトリ内の logs/openai がデフォルトになります。絶対パス、相対パス(現在の作業ディレクトリからの相対パス)、および ~ 展開(ホームディレクトリ)をサポートします。 | undefined |
例:model.generationConfig
{
"model": {
"generationConfig": {
"timeout": 60000,
"contextWindowSize": 128000,
"modalities": {
"image": true
},
"enableCacheControl": true,
"customHeaders": {
"X-Client-Request-ID": "req-123"
},
"extra_body": {
"enable_thinking": true
},
"samplingParams": {
"temperature": 0.2,
"top_p": 0.8,
"max_tokens": 1024
}
}
}
}contextWindowSize:
選択したモデルのデフォルトコンテキストウィンドウサイズを上書きします。Qwen Code は、モデル名のパターンマッチングに基づいて組み込みのデフォルト値を用いてコンテキストウィンドウを決定し、一定のフォールバック値も持っています。プロバイダーの実際のコンテキスト制限が Qwen Code のデフォルトと異なる場合に、この設定を使用してください。この値は、モデルが想定される最大コンテキスト容量を定義するものであり、リクエストごとのトークン制限ではありません。
modalities:
選択したモデルの自動検出された入力モダリティを上書きします。Qwen Code は、モデル名のパターンマッチングに基づいて、画像、PDF、音声、動画などのサポートされているモダリティを自動検出します。自動検出が不正確な場合(例:認識されていないが PDF をサポートするモデルに対して pdf を有効化したい場合など)に、この設定を使用してください。形式:{ "image": true, "pdf": true, "audio": true, "video": true }。サポートされていないタイプについては、キーを省略するか false を指定してください。
customHeaders:
すべての API リクエストにカスタム HTTP ヘッダーを追加できます。これは、リクエストのトレースやモニタリング、API ゲートウェイによるルーティング、あるいは異なるモデルで異なるヘッダーが必要な場合に有用です。modelProviders[].generationConfig.customHeaders に customHeaders が定義されている場合は、そちらが直接使用されます。それ以外の場合は、model.generationConfig.customHeaders のヘッダーが使用されます。2 つのレベル間でのマージは行われません。
extra_body フィールドは、API に送信されるリクエストボディにカスタムパラメーターを追加することを可能にします。これは、標準の設定フィールドではカバーされないプロバイダー固有のオプションを指定する際に有用です。注:このフィールドは OpenAI 互換プロバイダー(openai、qwen-oauth)でのみサポートされています。Anthropic や Gemini プロバイダーでは無視されます。 modelProviders[].generationConfig.extra_body に extra_body が定義されている場合は、そちらが直接使用されます。それ以外の場合は、model.generationConfig.extra_body の値が使用されます。
model.openAILoggingDir の例:
"~/qwen-logs"—~/qwen-logsディレクトリにログを保存"./custom-logs"— 現在のディレクトリからの相対パス./custom-logsにログを保存"/tmp/openai-logs"— 絶対パス/tmp/openai-logsにログを保存
コンテキスト
| 設定 | 型 | 説明 | デフォルト |
|---|---|---|---|
context.fileName | 文字列または文字列の配列 | コンテキストファイルの名前。 | undefined |
context.importFormat | 文字列 | メモリをインポートする際に使用する形式。 | undefined |
context.includeDirectories | 配列 | ワークスペースコンテキストに追加で含めるディレクトリ。ワークスペースコンテキストに含める追加の絶対パスまたは相対パスの配列を指定します。存在しないディレクトリは、デフォルトで警告を出力した上でスキップされます。パスにはユーザーのホームディレクトリを表す ~ を使用できます。この設定は --include-directories コマンドラインフラグと併用可能です。 | [] |
context.loadFromIncludeDirectories | 真偽値 | /memory refresh コマンドの動作を制御します。true に設定すると、追加されたすべてのディレクトリから QWEN.md ファイルが読み込まれます。false に設定すると、QWEN.md ファイルは現在のディレクトリからのみ読み込まれます。 | false |
context.fileFiltering.respectGitIgnore | 真偽値 | ファイル検索時に .gitignore ファイルを尊重します。 | true |
context.fileFiltering.respectQwenIgnore | 真偽値 | ファイル検索時に .qwenignore ファイルを尊重します。 | true |
context.fileFiltering.enableRecursiveFileSearch | 真偽値 | プロンプト内の @ 接頭辞の補完時、現在のツリー配下でファイル名を再帰的に検索するかどうか。 | true |
context.fileFiltering.enableFuzzySearch | 真偽値 | true の場合、ファイル検索時にファジィ検索機能が有効になります。多数のファイルを含むプロジェクトでは、パフォーマンス向上のため false に設定できます。 | true |
ファイル検索のパフォーマンスに関するトラブルシューティング
ファイル検索(例:@ による補完)のパフォーマンスに問題がある場合(特に、ファイル数が非常に多いプロジェクトで発生する場合)、以下の対策を推奨順に試してみてください。
.qwenignoreを使用する: プロジェクトのルートディレクトリに.qwenignoreファイルを作成し、参照する必要がない大量のファイルを含むディレクトリ(例:ビルド成果物、ログ、node_modules)を除外します。クロール対象となるファイル総数を減らすことが、パフォーマンス向上に最も効果的な方法です。- あいまい検索を無効化する: ファイルの除外だけでは不十分な場合、
settings.jsonファイル内でenableFuzzySearchをfalseに設定することで、あいまい検索を無効化できます。これにより、よりシンプルで非あいまいなマッチングアルゴリズムが使用されるため、処理速度が向上します。 - 再帰的ファイル検索を無効化する: 最後の手段として、
enableRecursiveFileSearchをfalseに設定することで、再帰的なファイル検索全体を無効化できます。これは再帰的なプロジェクト内クロールを回避するため、最も高速なオプションです。ただし、@による補完を利用する際には、ファイルのフルパスを入力する必要があります。
ツール
| 設定 | 型 | 説明 | デフォルト | 備考 |
|---|---|---|---|---|
tools.sandbox | boolean または string | サンドボックス実行環境(boolean またはパス文字列を指定可能)。 | undefined | |
tools.shell.enableInteractiveShell | boolean | 対話型シェル体験のために node-pty を使用します。フォールバックとして child_process を使用することも引き続き可能です。 | false | |
tools.core | 文字列の配列 | 組み込みツールのセットをホワイトリストで制限するために使用できます。また、run_shell_command ツールなど、コマンド単位での制限をサポートするツールについては、そのような制限を個別に指定することもできます。たとえば、"tools.core": ["run_shell_command(ls -l)"] とすると、ls -l コマンドのみが実行可能になります。 | undefined | |
tools.exclude | 文字列の配列 | ツール検出から除外するツール名のリストです。また、run_shell_command ツールなど、コマンド単位での制限をサポートするツールについては、そのような制限を個別に指定することもできます。たとえば、"tools.exclude": ["run_shell_command(rm -rf)"] とすると、rm -rf コマンドがブロックされます。セキュリティに関する注意: tools.exclude 内の run_shell_command に対するコマンド単位の制限は単純な文字列一致に基づいており、容易に回避可能です。この機能はセキュリティ機構ではありません。信頼できないコードを安全に実行するために依存すべきではありません。代わりに、実行を許可するコマンドを明示的に選択するために tools.core の使用を推奨します。 | undefined | |
tools.allowed | 文字列の配列 | 確認ダイアログをバイパスするツール名のリストです。信頼しており頻繁に使用するツールに便利です。たとえば、["run_shell_command(git)", "run_shell_command(npm test)"] とすると、任意の git コマンドおよび npm test コマンドの実行時に確認ダイアログがスキップされます。 | undefined | |
tools.approvalMode | 文字列 | ツール使用時のデフォルト承認モードを設定します。 | default | 指定可能な値: plan(ファイルの変更やコマンドの実行を行わず、分析のみ実行)、default(ファイル編集またはシェルコマンド実行前に承認を要求)、auto-edit(ファイル編集を自動的に承認)、yolo(すべてのツール呼び出しを自動的に承認) |
tools.discoveryCommand | 文字列 | ツール検出のために実行するコマンドです。 | undefined | |
tools.callCommand | 文字列 | tools.discoveryCommand を使用して検出した特定のツールを呼び出すためのカスタムシェルコマンドを定義します。このシェルコマンドは以下の条件を満たす必要があります:・関数 name(関数宣言 に記載されている通りの正確な名前)を最初のコマンドライン引数として受け取る。・関数引数を JSON 形式で stdin から読み込む(functionCall.args と同様)。・関数の出力を JSON 形式で stdout に出力する(functionResponse.response.content と同様)。 | undefined | |
tools.useRipgrep | boolean | ファイル内容検索に ripgrep を使用し、フォールバック実装の代わりとします。検索パフォーマンスが向上します。 | true | |
tools.useBuiltinRipgrep | boolean | 同梱された ripgrep バイナリを使用します。false に設定した場合、システムレベルの rg コマンドが代わりに使用されます。この設定は tools.useRipgrep が true の場合にのみ有効です。 | true | |
tools.truncateToolOutputThreshold | 数値 | ツール出力がこの文字数を超える場合、出力を切り捨てます。シェル、Grep、Glob、ReadFile、ReadManyFiles ツールに適用されます。 | 25000 | 再起動が必要: はい |
tools.truncateToolOutputLines | 数値 | 出力の切り捨て時に保持する最大行数またはエントリ数です。シェル、Grep、Glob、ReadFile、ReadManyFiles ツールに適用されます。 | 1000 | 再起動が必要: はい |
mcp
| 設定 | 型 | 説明 | デフォルト |
|---|---|---|---|
mcp.serverCommand | 文字列 | MCP サーバーを起動するコマンド。 | undefined |
mcp.allowed | 文字列の配列 | 許可する MCP サーバーのホワイトリスト。モデルに利用可能にする MCP サーバー名のリストを指定できます。これにより、接続可能な MCP サーバーのセットを制限できます。ただし、--allowed-mcp-server-names が設定されている場合は、この設定は無視されます。 | undefined |
mcp.excluded | 文字列の配列 | 除外する MCP サーバーのブラックリスト。mcp.excluded と mcp.allowed の両方にリストされているサーバーは除外されます。ただし、--allowed-mcp-server-names が設定されている場合は、この設定は無視されます。 | undefined |
MCP サーバーに関するセキュリティ上の注意: これらの設定では、MCP サーバー名に対する単純な文字列一致が使用されますが、これは変更可能です。システム管理者として、ユーザーがこの制限を回避することを防ぎたい場合は、ユーザーが独自の MCP サーバーを設定できないよう、システム設定レベルで mcpServers を構成することを検討してください。これは完全なセキュリティ機構としては使用しないでください。
lsp
[!warning] 実験的機能: LSP サポートは現在実験段階であり、デフォルトでは無効になっています。
--experimental-lspコマンドラインフラグを使用して有効化してください。
Language Server Protocol (LSP) は、定義へのジャンプ、参照の検索、診断などのコードインテリジェンス機能を提供します。
LSP サーバーの設定は、settings.json を通じて行うのではなく、プロジェクトのルートディレクトリにある .lsp.json ファイルで行います。設定の詳細と例については、LSP のドキュメント を参照してください。
セキュリティ
| 設定 | 型 | 説明 | デフォルト値 |
|---|---|---|---|
security.folderTrust.enabled | boolean | フォルダーの信頼性が有効化されているかどうかを追跡する設定。 | false |
security.auth.selectedType | string | 現在選択されている認証タイプ。 | undefined |
security.auth.enforcedType | string | 必須となる認証タイプ(企業向けに有用)。 | undefined |
security.auth.useExternal | boolean | 外部認証フローを使用するかどうか。 | undefined |
高度な設定
| 設定 | 型 | 説明 | デフォルト値 |
|---|---|---|---|
advanced.autoConfigureMemory | boolean | Node.js のメモリ制限を自動的に設定します。 | false |
advanced.dnsResolutionOrder | string | DNS 解決順序です。 | undefined |
advanced.excludedEnvVars | 文字列の配列 | プロジェクトコンテキストから除外する環境変数です。プロジェクトの .env ファイルから読み込まれる環境変数のうち、除外対象とするものを指定します。これにより、DEBUG=true のようなプロジェクト固有の環境変数が CLI の動作に干渉することを防ぎます。.qwen/.env ファイルからの環境変数は、常に除外されません。 | ["DEBUG","DEBUG_MODE"] |
advanced.bugCommand | オブジェクト | バグ報告コマンドの設定です。/bug コマンドのデフォルト URL を上書きします。プロパティ: urlTemplate(文字列)— {title} および {info} プレースホルダーを含む URL。例: "bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" } | undefined |
advanced.tavilyApiKey | string | Tavily ウェブ検索サービス用の API キーです。web_search ツール機能を有効化するために使用されます。 | undefined |
advanced.tavilyApiKey に関する注意: これは旧式の設定形式です。Qwen OAuth ユーザーの場合、DashScope プロバイダーは設定不要で自動的に利用可能になります。その他の認証方式では、新しい webSearch 設定形式を用いて Tavily または Google プロバイダーを設定してください。
mcpServers
カスタムツールの検出および利用のため、1 つ以上のモデル・コンテキスト・プロトコル (MCP) サーバーへの接続を設定します。Qwen Code は、設定された各 MCP サーバーに接続して利用可能なツールを検出しようと試みます。複数の MCP サーバーが同じ名前のツールを公開している場合、競合を回避するために、ツール名には設定で定義したサーバーエイリアスがプレフィックスとして付加されます(例:serverAlias__actualToolName)。なお、互換性のため、システムが MCP ツール定義の一部のスキーマプロパティを除外する場合があります。command、url、httpUrl のいずれか 1 つ以上を指定する必要があります。複数が指定された場合、優先順位は httpUrl → url → command です。
| プロパティ | 型 | 説明 | オプション |
|---|---|---|---|
mcpServers.<SERVER_NAME>.command | 文字列 | 標準入出力を介して MCP サーバーを起動するために実行するコマンド。 | はい |
mcpServers.<SERVER_NAME>.args | 文字列の配列 | コマンドに渡す引数。 | はい |
mcpServers.<SERVER_NAME>.env | オブジェクト | サーバープロセスに対して設定する環境変数。 | はい |
mcpServers.<SERVER_NAME>.cwd | 文字列 | サーバーを起動する作業ディレクトリ。 | はい |
mcpServers.<SERVER_NAME>.url | 文字列 | サーバー・センタード・イベント (SSE) を使用して通信を行う MCP サーバーの URL。 | はい |
mcpServers.<SERVER_NAME>.httpUrl | 文字列 | ストリーム可能 HTTP を使用して通信を行う MCP サーバーの URL。 | はい |
mcpServers.<SERVER_NAME>.headers | オブジェクト | url または httpUrl へのリクエストとともに送信する HTTP ヘッダーのマップ。 | はい |
mcpServers.<SERVER_NAME>.timeout | 数値 | この MCP サーバーへのリクエストのタイムアウト(ミリ秒単位)。 | はい |
mcpServers.<SERVER_NAME>.trust | 真偽値 | このサーバーを信頼し、すべてのツール呼び出し確認をバイパスします。 | はい |
mcpServers.<SERVER_NAME>.description | 文字列 | サーバーの簡単な説明。表示目的で使用される場合があります。 | はい |
mcpServers.<SERVER_NAME>.includeTools | 文字列の配列 | この MCP サーバーから含めるツール名のリスト。指定された場合、このサーバーから利用可能になるのはリストに記載されたツールのみです(ホワイトリスト方式)。未指定の場合、デフォルトでサーバーから提供されるすべてのツールが有効になります。 | はい |
mcpServers.<SERVER_NAME>.excludeTools | 文字列の配列 | この MCP サーバーから除外するツール名のリスト。このリストに記載されたツールは、サーバーが公開していてもモデルから利用できません。注: excludeTools は includeTools よりも優先されます。つまり、ツールが両方のリストに含まれている場合、そのツールは除外されます。 | はい |
テレメトリ
Qwen Code のログ記録およびメトリクス収集を設定します。詳細については、テレメトリ を参照してください。
| 設定 | 型 | 説明 | デフォルト |
|---|---|---|---|
telemetry.enabled | boolean | テレメトリを有効にするかどうか。 | |
telemetry.target | string | 収集されたテレメトリの送信先。サポートされる値は local および gcp です。 | |
telemetry.otlpEndpoint | string | OTLP エクスポーターのエンドポイント。 | |
telemetry.otlpProtocol | string | OTLP エクスポーターで使用するプロトコル(grpc または http)。 | |
telemetry.logPrompts | boolean | ログにユーザーのプロンプト内容を含めるかどうか。 | |
telemetry.outfile | string | target が local の場合にテレメトリを書き込むファイル。 | |
telemetry.useCollector | boolean | 外部の OTLP コレクターを使用するかどうか。 |
例: settings.json
以下は、v0.3.0 から導入された入れ子構造の settings.json ファイルの例です。
{
"general": {
"vimMode": true,
"preferredEditor": "code"
},
"ui": {
"theme": "GitHub",
"hideTips": false,
"customWittyPhrases": [
"あなたは毎日千のことを忘れています。これがそのうちの一つであるようにしましょう",
"AGI に接続中"
]
},
"tools": {
"approvalMode": "yolo",
"sandbox": "docker",
"discoveryCommand": "bin/get_tools",
"callCommand": "bin/call_tool",
"exclude": ["write_file"]
},
"mcpServers": {
"mainServer": {
"command": "bin/mcp_server.py"
},
"anotherServer": {
"command": "node",
"args": ["mcp_server.js", "--verbose"]
}
},
"telemetry": {
"enabled": true,
"target": "local",
"otlpEndpoint": "http://localhost:4317",
"logPrompts": true
},
"privacy": {
"usageStatisticsEnabled": true
},
"model": {
"name": "qwen3-coder-plus",
"maxSessionTurns": 10,
"enableOpenAILogging": false,
"openAILoggingDir": "~/qwen-logs",
},
"context": {
"fileName": ["CONTEXT.md", "QWEN.md"],
"includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"],
"loadFromIncludeDirectories": true,
"fileFiltering": {
"respectGitIgnore": false
}
},
"advanced": {
"excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"]
}
}シェル履歴
CLI は、実行したシェルコマンドの履歴を保持します。異なるプロジェクト間で競合が発生しないよう、この履歴はユーザーのホームフォルダー内にあるプロジェクト固有のディレクトリに保存されます。
- 場所:
~/.qwen/tmp/<project_hash>/shell_history<project_hash>は、プロジェクトのルートパスから生成された一意の識別子です。- 履歴は
shell_historyという名前のファイルに保存されます。
環境変数と .env ファイル
環境変数は、アプリケーションの設定(特にトークンなどの機密情報や、環境ごとに変化する設定)を行う一般的な方法です。
Qwen Code では、.env ファイルから環境変数を自動的に読み込むことができます。
認証関連の環境変数(例:OPENAI_*)および推奨される .qwen/.env 方式については、認証 を参照してください。
環境変数の除外ルール: DEBUG や DEBUG_MODE などの一部の環境変数は、デフォルトでプロジェクト内の .env ファイルから自動的に除外されます。これは CLI の動作への干渉を防ぐためです。一方、.qwen/.env ファイルからの環境変数は常に除外されません。この動作は、settings.json ファイル内の advanced.excludedEnvVars 設定でカスタマイズできます。
環境変数テーブル
| 変数 | 説明 | 備考 |
|---|---|---|
QWEN_TELEMETRY_ENABLED | テレメトリを有効化する場合は true または 1 を設定します。それ以外の値は無効化とみなされます。 | telemetry.enabled 設定を上書きします。 |
QWEN_TELEMETRY_TARGET | テレメトリの送信先(local または gcp)を設定します。 | telemetry.target 設定を上書きします。 |
QWEN_TELEMETRY_OTLP_ENDPOINT | テレメトリ用の OTLP エンドポイントを設定します。 | telemetry.otlpEndpoint 設定を上書きします。 |
QWEN_TELEMETRY_OTLP_PROTOCOL | OTLP のプロトコル(grpc または http)を設定します。 | telemetry.otlpProtocol 設定を上書きします。 |
QWEN_TELEMETRY_LOG_PROMPTS | ユーザーのプロンプト記録を有効化または無効化する場合は true または 1 を設定します。それ以外の値は無効化とみなされます。 | telemetry.logPrompts 設定を上書きします。 |
QWEN_TELEMETRY_OUTFILE | 送信先が local の場合に、テレメトリ出力先のファイルパスを設定します。 | telemetry.outfile 設定を上書きします。 |
QWEN_TELEMETRY_USE_COLLECTOR | 外部 OTLP コレクターの使用を有効化または無効化する場合は true または 1 を設定します。それ以外の値は無効化とみなされます。 | telemetry.useCollector 設定を上書きします。 |
QWEN_SANDBOX | settings.json 内の sandbox 設定の代替です。 | true、false、docker、podman、またはカスタムコマンド文字列を受け付けます。 |
SEATBELT_PROFILE | (macOS 専用)macOS 上で Seatbelt(sandbox-exec)プロファイルを切り替えます。 | permissive-open: (デフォルト)プロジェクトフォルダー(およびその他のいくつかのフォルダー、詳細は packages/cli/src/utils/sandbox-macos-permissive-open.sb を参照)への書き込みのみを許可し、その他の操作は制限しません。strict: 操作をデフォルトで拒否する厳格なプロファイルを使用します。<profile_name>: カスタムプロファイルを使用します。カスタムプロファイルを定義するには、プロジェクトの .qwen/ ディレクトリ内に sandbox-macos-<profile_name>.sb という名前のファイルを作成してください(例:my-project/.qwen/sandbox-macos-custom.sb)。 |
DEBUG または DEBUG_MODE | (下位ライブラリや CLI 自体でよく使用される)トラブルシューティング時に役立つ、詳細なデバッグログを有効化する場合は true または 1 を設定します。 | 注意: これらの環境変数は、CLI の動作への干渉を防ぐため、デフォルトでプロジェクトの .env ファイルから自動的に除外されます。Qwen Code 専用にこれらを設定する必要がある場合は、.qwen/.env ファイルをご利用ください。 |
NO_COLOR | 任意の値を設定すると、CLI のすべてのカラーアウトプットが無効化されます。 | |
CLI_TITLE | CLI のタイトルをカスタマイズする文字列を設定します。 | |
CODE_ASSIST_ENDPOINT | コードアシストサーバーのエンドポイントを指定します。 | 開発およびテストに便利です。 |
TAVILY_API_KEY | Tavily ウェブ検索サービスを利用するための API キーです。 | web_search ツール機能を有効化するために使用されます。例:export TAVILY_API_KEY="tvly-your-api-key-here" |
コマンドライン引数
CLI を実行する際に直接渡された引数は、そのセッションに限り他の設定を上書きします。
コマンドライン引数一覧表
| 引数 | 別名 | 説明 | 可能な値 | 備考 |
|---|---|---|---|---|
--model | -m | このセッションで使用する Qwen モデルを指定します。 | モデル名 | 例: npm start -- --model qwen3-coder-plus |
--prompt | -p | プロンプトをコマンドに直接渡すために使用します。これにより、Qwen Code をインタラクティブでないモードで起動します。 | プロンプトテキスト | スクリプト例では、構造化された出力を得るために --output-format json フラグを使用してください。 |
--prompt-interactive | -i | 指定したプロンプトを初期入力としてインタラクティブセッションを開始します。 | プロンプトテキスト | プロンプトはインタラクティブセッション内で処理され、その前に処理されることはありません。標準入力(stdin)からのパイプ入力が有効な状態では使用できません。例: qwen -i "explain this code" |
--output-format | -o | インタラクティブでないモードにおける CLI 出力の形式を指定します。 | text, json, stream-json | text: (デフォルト)標準的な人間が読みやすい出力。json: 実行終了時に出力される機械可読な JSON 出力。stream-json: 実行中に発生するごとにストリーミングされる JSON メッセージ。構造化された出力やスクリプト用途には、--output-format json または --output-format stream-json フラグを使用してください。詳細については、ヘッドレスモード を参照してください。 |
--input-format | 標準入力(stdin)から受け取る入力の形式を指定します。 | text, stream-json | text: (デフォルト)標準入力(stdin)またはコマンドライン引数からの通常のテキスト入力。stream-json: 双方向通信のための stdin 経由の JSON メッセージプロトコル。要件: --input-format stream-json を指定する場合は、必ず --output-format stream-json も設定する必要があります。stream-json を使用する場合、stdin はプロトコルメッセージ専用となります。詳細については、ヘッドレスモード を参照してください。 | |
--include-partial-messages | stream-json 出力形式を使用する際に、部分的なアシスタントメッセージを含めるかどうかを指定します。有効にすると、ストリーミング中に発生する各イベント(message_start, content_block_delta など)が即時出力されます。 | デフォルト: false。要件: --output-format stream-json が設定されている必要があります。ストリームイベントの詳細については、ヘッドレスモード を参照してください。 | ||
--sandbox | -s | このセッションでサンドボックスモードを有効にします。 | ||
--sandbox-image | サンドボックスイメージの URI を設定します。 | |||
--debug | -d | このセッションでデバッグモードを有効にし、より詳細な出力を提供します。 | ||
--all-files | -a | 指定すると、現在のディレクトリ内のすべてのファイルを再帰的にプロンプトのコンテキストとして含めます。 | ||
--help | -h | コマンドライン引数に関するヘルプ情報を表示します。 | ||
--show-memory-usage | 現在のメモリ使用量を表示します。 | |||
--yolo | YOLO モードを有効にし、すべてのツール呼び出しを自動承認します。 | |||
--approval-mode | ツール呼び出しの承認モードを設定します。 | plan, default, auto-edit, yolo | サポートされるモード: plan: 分析のみ実行 — ファイルの変更やコマンドの実行は行いません。default: ファイル編集やシェルコマンドに対して承認を要求します(デフォルト動作)。auto-edit: 編集ツール(edit, write_file など)は自動承認し、他のツールは承認を要求します。yolo: すべてのツール呼び出しを自動承認します(--yolo と同等)。--yolo とは併用できません。統合された新しいアプローチでは、代わりに --approval-mode=yolo を使用してください。例: qwen --approval-mode auto-edit承認モード の詳細については、こちらをご覧ください。 | |
--allowed-tools | 確認ダイアログをバイパスするツール名のカンマ区切りリストです。 | ツール名 | 例: qwen --allowed-tools "Shell(git status)" | |
--telemetry | テレメトリ を有効にします。 | |||
--telemetry-target | テレメトリの送信先を設定します。 | 詳細については、テレメトリ を参照してください。 | ||
--telemetry-otlp-endpoint | テレメトリの OTLP エンドポイントを設定します。 | 詳細については、テレメトリ を参照してください。 | ||
--telemetry-otlp-protocol | テレメトリの OTLP プロトコルを設定します(grpc または http)。 | デフォルトは grpc です。詳細については、テレメトリ を参照してください。 | ||
--telemetry-log-prompts | テレメトリ用のプロンプト記録を有効にします。 | 詳細については、テレメトリ を参照してください。 | ||
--checkpointing | チェックポイント機能 を有効にします。 | |||
--acp | ACP モード(Agent Client Protocol)を有効にします。Zed などの IDE/エディタ連携に有用です。 | 安定版。非推奨となった --experimental-acp フラグに代わるもの。 | ||
--experimental-lsp | コードインテリジェンス(定義へのジャンプ、参照の検索、診断など)のための実験的な LSP(Language Server Protocol) 機能を有効にします。 | 実験的機能。言語サーバーのインストールが必要です。 | ||
--extensions | -e | このセッションで使用する拡張機能のリストを指定します。 | 拡張機能名 | 指定しない場合、利用可能なすべての拡張機能が使用されます。すべての拡張機能を無効にするには、特別なキーワード qwen -e none を使用します。例: qwen -e my-extension -e my-other-extension |
--list-extensions | -l | 利用可能なすべての拡張機能を一覧表示して終了します。 | ||
--proxy | CLI のプロキシを設定します。 | プロキシ URL | 例: --proxy http://localhost:7890。 | |
--include-directories | マルチディレクトリ対応のためにワークスペースに追加するディレクトリを指定します。 | ディレクトリパス | 複数回指定可能、またはカンマ区切りで指定可能です。最大 5 つのディレクトリを追加できます。例: --include-directories /path/to/project1,/path/to/project2 または --include-directories /path/to/project1 --include-directories /path/to/project2 | |
--screen-reader | スクリーンリーダーモードを有効にし、TUI をスクリーンリーダーとの互換性向上のために調整します。 | |||
--version | CLI のバージョンを表示します。 | |||
--openai-logging | OpenAI API 呼び出しのログ記録をデバッグおよび分析のために有効にします。 | このフラグは settings.json 内の enableOpenAILogging 設定を上書きします。 | ||
--openai-logging-dir | OpenAI API ログのカスタム保存先ディレクトリを設定します。 | ディレクトリパス | このフラグは settings.json 内の openAILoggingDir 設定を上書きします。絶対パス、相対パス、および ~ 展開をサポートします。例: qwen --openai-logging-dir "~/qwen-logs" --openai-logging | |
--tavily-api-key | このセッションにおける Web 検索機能のための Tavily API キーを設定します。 | API キー | 例: qwen --tavily-api-key tvly-your-api-key-here |
コンテキストファイル(階層型指示コンテキスト)
CLI の 動作 に関する厳密な設定ではありませんが、コンテキストファイル(デフォルトは QWEN.md で、context.fileName 設定により変更可能)は、指示コンテキスト(別名「メモリ」)の設定に不可欠です。この強力な機能により、プロジェクト固有の指示、コーディングスタイルガイド、またはその他の関連する背景情報を AI に提供でき、応答をあなたの要件に合わせてより適切かつ正確なものにします。CLI には、フッターに読み込まれたコンテキストファイル数を示すインジケーターなどの UI 要素が含まれており、現在有効なコンテキストを常に把握できるようになっています。
- 目的: これらの Markdown ファイルには、Qwen モデルが対話中に認識すべき指示、ガイドライン、またはコンテキストが記述されます。システムは、この指示コンテキストを階層的に管理するように設計されています。
例:コンテキストファイルの内容(例:QWEN.md)
TypeScript プロジェクトのルートに配置されるコンテキストファイルの概念的な例を以下に示します。
# プロジェクト:My Awesome TypeScript Library
## 一般的な指示:
- 新しい TypeScript コードを生成する際は、既存のコーディングスタイルに従ってください。
- 新しく追加する関数およびクラスには、必ず JSDoc コメントを付与してください。
- 適切な場合は、関数型プログラミングのパラダイムを優先してください。
- すべてのコードは TypeScript 5.0 および Node.js 20+ と互換性を持つ必要があります。
## コーディングスタイル:
- インデントには半角スペースを 2 文字使用してください。
- インターフェース名には `I` を接頭辞として付けること(例:`IUserService`)。
- クラス内のプライベートメンバーには、アンダースコア (`_`) を接頭辞として付けること。
- 厳密な等価比較(`===` および `!==`)を常に使用してください。
## 特定のコンポーネント:`src/api/client.ts`
- このファイルは、すべての外部向け API リクエストを処理します。
- 新しい API 呼び出し関数を追加する際は、堅牢なエラー処理とログ出力を確実に含めてください。
- GET リクエストには、既存の `fetchWithRetry` ユーティリティを使用してください。依存関係について:
- 必須でない限り、新しい外部依存関係を導入しないでください。
- 新しい依存関係が必要な場合は、その理由を明記してください。
この例では、プロジェクト全体のコンテキスト、特定のコーディング規約、さらには特定のファイルやコンポーネントに関するメモを提供する方法を示しています。コンテキストファイルが関連性が高く、正確であるほど、AI の支援効果が高まります。プロジェクト固有のコンテキストファイルを作成し、規約やコンテキストを確立することを強く推奨します。
- **階層的な読み込みと優先順位:** CLI は、複数の場所(例:`QWEN.md`)からコンテキストファイルを読み込むことで、階層的なメモリーシステムを実装しています。このリストの下位(より具体的)にあるファイルの内容は、上位(より一般的)にあるファイルの内容を通常、上書きまたは補完します。結合順序および最終的なコンテキストは、`/memory show` コマンドで確認できます。典型的な読み込み順序は以下の通りです:
1. **グローバルコンテキストファイル:**
- 位置:`~/.qwen/<設定されたコンテキストファイル名>`(例:ユーザーのホームディレクトリ内の `~/.qwen/QWEN.md`)。
- スコープ:すべてのプロジェクトに適用されるデフォルトの指示を提供します。
2. **プロジェクトルートおよび祖先ディレクトリのコンテキストファイル:**
- 位置:CLI は、現在の作業ディレクトリおよび `.git` フォルダーでプロジェクトルートを識別するか、あるいはホームディレクトリに達するまで、各親ディレクトリ内で設定されたコンテキストファイルを検索します。
- スコープ:プロジェクト全体またはその大部分に関連するコンテキストを提供します。
- **結合と UI 上の表示:** 見つかったすべてのコンテキストファイルの内容は、それぞれの出所とパスを示す区切り文字とともに結合され、システムプロンプトの一部として提供されます。CLI のフッターには読み込まれたコンテキストファイルの数が表示され、現在有効な指示コンテキストを視覚的に素早く把握できます。
- **コンテンツのインポート:** `@path/to/file.md` 構文を使用して、他の Markdown ファイルをインポートすることで、コンテキストファイルをモジュール化できます。詳細については、[メモリーインポートプロセッサのドキュメント](../configuration/memory) を参照してください。
- **メモリ管理のためのコマンド:**
- `/memory refresh` を使用すると、すべての設定済み場所からコンテキストファイルを強制的に再スキャン・再読み込みし、AI の指示コンテキストを更新できます。
- `/memory show` を使用すると、現在読み込まれている統合された指示コンテキストを表示でき、AI が使用している階層構造およびコンテンツを確認できます。
- `/memory` コマンドおよびそのサブコマンド(`show` および `refresh`)の詳細については、[コマンドのドキュメント](../features/commands) を参照してください。
これらの設定レイヤーおよびコンテキストファイルの階層的性質を理解・活用することで、AI のメモリーを効果的に管理し、Qwen Code の応答を特定のニーズやプロジェクトに最適化できます。
## サンドボックス
Qwen Code は、シェルコマンドの実行やファイルの変更など、潜在的に危険な操作をサンドボックス化された環境内で実行することで、システムを保護します。
[サンドボックス](../features/sandbox) はデフォルトで無効になっていますが、以下のいずれかの方法で有効化できます:
- `--sandbox` または `-s` フラグを使用する。
- `QWEN_SANDBOX` 環境変数を設定する。
- `--yolo` または `--approval-mode=yolo` を使用した場合、デフォルトでサンドボックスが有効になります。
デフォルトでは、事前にビルド済みの `qwen-code-sandbox` Docker イメージが使用されます。
プロジェクト固有のサンドボックス要件がある場合は、プロジェクトのルートディレクトリに `.qwen/sandbox.Dockerfile` を作成し、カスタム Dockerfile を定義できます。この Dockerfile は、ベースとなるサンドボックスイメージを継承できます:
FROM qwen-code-sandbox
ここにカスタムの依存関係や設定を追加してください
例:
RUN apt-get update && apt-get install -y some-package
# COPY ./my-config /app/my-config.qwen/sandbox.Dockerfile が存在する場合、Qwen Code を実行する際に BUILD_SANDBOX 環境変数を指定すると、カスタムサンドボックスイメージを自動的にビルドできます。
BUILD_SANDBOX=1 qwen -s使用統計情報
Qwen Code の改善に役立てるため、匿名化された使用統計情報を収集しています。このデータにより、CLI の利用状況の把握、共通の問題の特定、および新機能の優先順位付けが可能になります。
収集する情報:
- ツール呼び出し: 呼び出されたツールの名前、成功または失敗の有無、および実行に要した時間を記録します。ツールに渡された引数や、ツールから返されたデータは一切収集しません。
- API リクエスト: 各リクエストで使用されたモデル、リクエストの所要時間、および成功・失敗の有無を記録します。プロンプトやレスポンスの内容は一切収集しません。
- セッション情報: CLI の設定に関する情報(例:有効化されているツール、承認モードなど)を収集します。
収集しない情報:
- 個人を特定できる情報 (PII): お名前、メールアドレス、API キーなどの個人情報は一切収集しません。
- プロンプトおよびレスポンスの内容: ご自身のプロンプトやモデルからのレスポンスの内容は一切記録しません。
- ファイルの内容: CLI によって読み込まれたり書き込まれたりするファイルの内容は一切記録しません。
収集を拒否する方法:
settings.json ファイル内の privacy カテゴリにおいて、usageStatisticsEnabled プロパティを false に設定することで、いつでも使用統計情報の収集を拒否できます。
{
"privacy": {
"usageStatisticsEnabled": false
}
}使用統計情報の収集が有効になっている場合、イベントは Alibaba Cloud の RUM 収集エンドポイントに送信されます。