Qwen Code は Codex・Claude Code と何が違う? 全コマンドと使いどころ

AI入門

はじめに

「Claude Code や Codex は使っているけれど、Qwen Code って何が違うの?」「無料で使えるって聞いたけど本当?」――そんな疑問を持っている方に向けた記事です。

Qwen Code(クウェン・コード)は、中国 Alibaba グループの Qwen チームが開発している、ターミナルで動く AI コーディングエージェント(AI に指示してコードを読ませたり直させたりする道具)です。見た目も使い方も Claude Code や Codex CLI とよく似ていて、実際に比べると できることはほぼ同じ でした。違いは機能の数ではなく、「特定の会社の AI に縛られず、どの会社の AI でも自分の PC の AI でも使う前提で作られている」 という立ち位置です。

この記事では、次の3つをまとめて扱います。

  • 公式ドキュメントとソースコードを全部読んで拾った、Qwen Code の 全コマンド(スラッシュコマンド・CLI のサブコマンド・起動オプション)の一覧と、Claude Code・Codex CLI で同じことができるかの対応表
  • このMacで実際に Qwen Code を動かした結果(インストール、ローカルの AI モデルでのバグ修正、承認の流れ、Arena、Web 画面など)
  • 実際に使うとしたらどうか、本当に Qwen Code にしかない機能はあるのか(Claude Code・Codex でも同じことを試して確かめました)
3つのツールの違いを示す図。Claude Code は Anthropic、Codex CLI は OpenAI の API を前提にするのに対し、Qwen Code は Alibaba Cloud・他社 API・ローカルの PC のどれにもつなげ、/model で途中から切り替えられる

図1:3つのツールの一番大きな違いは「どのモデルとつなぐ前提か」。Claude Code・Codex も設定すれば他のモデルにつなげますが、Qwen Code は形式の違う API を1つの設定に並べることが標準です

想定読者:Claude Code か Codex CLI をさわったことがある方、これから AI コーディングツールを選ぶ方。プログラミング経験は少しあれば読めるように、専門用語には説明を添えます。

この記事の確認範囲

項目内容
Qwen Code0.24.6(npm の最新版。2026年9月26日リリース、タグ v0.24.6)
読んだ資料GitHub QwenLM/qwen-code の docs/users/(利用者向け73ファイル)と docs/developers/ の主要ページ、公式サイト(qwenlm.github.io/qwen-code-docs、日本語版あり)、README、ソースコード(コマンド定義・ツール定義・設定スキーマ)。main ブランチは 2026年9月27日のコミット 76c3dc5
比較対象Claude Code 2.1.280、Codex CLI 0.156.1(このMacに入っている版。ヘルプと公式ドキュメントで確認)
検証マシンMacBook Pro(Apple M5 Max・メモリ128GB)、Node.js 22.23
使ったモデルLM Studio の Qwen3.8 27B(MLX 4bit)と、llama.cpp の Qwen3.5 4B(GGUF Q4_K_M)。どちらもこのMacの中だけで動かしています
検証日2026年9月27日

「ドキュメントに書いてあること」「ソースで確かめたこと」「このMacで動かして見たこと」は、本文で区別して書きます。特に、ドキュメントと実際の動きが食い違っていた箇所は、その都度明記しています。

Qwen Code とは

Gemini CLI から生まれて、独自に育ったツール

Qwen Code は、もともと Google の Gemini CLI(v0.8.2)をもとに作られました。README には「v0.1 からは本家との同期をやめ、独自に開発している」と書かれています。ソースコードの一部には今も Copyright 2025 Google LLC の表記や GEMINI_ で始まる環境変数の名残があり、設定ファイルの形(settings.json の入れ子構造)や mcpServers の書き方は Gemini CLI とよく似ています。

一方で、使い勝手はかなり Claude Code 寄りです。README 自身が「Claude Code を知っているなら、もう Qwen Code も分かる」と書いていて、権限ルールの書き方(Bash(git *) など)、フックのイベント名(PreToolUse など)、サブエージェントの定義ファイルまで Claude Code の形式をそのまま読めるように作られています。ロードマップのページには、目標として「Claude Code の機能に追いつくこと」と書かれているほどです。

ライセンスは Apache-2.0 のオープンソースで、本体は無料です。お金がかかるのは、つなぐ AI モデルの利用料だけです。

使える場所はターミナルだけではない

Qwen Code には、ターミナルのほかに次の入口があります(README とドキュメントより)。

入口内容この記事での確認
ターミナルqwen コマンド実機で確認
Web 画面qwen serve --open でブラウザに「Web Shell」を開く(実験的)実機で確認
エディターVS Code 拡張(ベータ)、Zed・JetBrains(ACP という共通の接続方式)文書で確認
デスクトップアプリmacOS / Windows / Linux 版を GitHub で配布文書で確認
チャットTelegram・WeChat・DingTalk・Feishu などのボットとして動かす文書で確認
プログラムからヘッドレス実行(画面なしの1回実行)、TypeScript / Python / Java の SDKヘッドレスは実機で確認

料金と認証:無料枠は終わっている

最初に大事な注意です。Qwen Code の古い紹介記事や動画では「Qwen のアカウントでログインすれば1日2,000回まで無料」と説明されていることがありますが、この Qwen OAuth の無料枠は2026年4月15日で終了 しています。公式の認証ドキュメント(auth.md)とトラブルシューティングにそう明記されていて、起動時の /auth の選択肢からも消えています(ただし --auth-type qwen-oauth や qwen auth の案内文には名前が残っています。以前ログインした人の古いトークンは短期間だけ使える場合がある、とドキュメントにあります)。

いま選べるのは次の3系統です。

Qwen Code の接続方法を選ぶフローチャート。手元の PC だけで動かすならローカル、Qwen 公式モデルを定額ならCoding Plan、従量課金なら Token Plan か Standard API Key、他社モデルなら Third-party Providers

図2:/auth で選べる接続方法。どれを選んでも settings.json の modelProviders に入り、あとから /model で切り替えられます

選択肢中身向いている人
Alibaba ModelStudioCoding Plan(個人向け月額・キーは sk-sp- で始まる)/ Token Plan(チーム向け従量課金)/ Standard API KeyQwen 公式の最新モデル(qwen3.7-plus など)を使いたい人
Third-party ProvidersDeepSeek・Grok・MiniMax・Z.AI・Kimi・Idealab・ModelScope・OpenRouter・Requestyすでに他社の API キーを持っている人
Custom Providerローカルのサーバーや、OpenAI / Anthropic / Gemini 互換の任意の接続先自分の PC で動かしたい人、社内の API を使う人

料金の具体的な金額はドキュメントには載っておらず、Alibaba Cloud のページへのリンクだけです。この記事では料金の比較はせず、費用ゼロで試せるローカルモデル で検証しました。

実際に、設定ファイルがない状態で qwen を起動すると、最初にこの画面が出ました。

Qwen Code を設定なしで初めて起動したときの画面。Alibaba ModelStudio の中に Coding Plan、Token Plan、Standard API Key の3つの選択肢が並んでいる

実画面:設定がないと最初に接続方法の選択画面が出ます。ここで Esc で戻ると、Third-party Providers と Custom Provider も選べます

なお、qwen auth という CLI コマンドは削除されていて、打つと「/auth を使ってください」という案内と、環境変数での設定方法の一覧が出るだけでした。

$ qwen auth

⚠  qwen auth has been removed.

  Interactive   →  run qwen and use /auth to configure providers
  CI / Headless →  set provider environment variables, for example OPENAI_API_KEY + OPENAI_BASE_URL + OPENAI_MODEL
  Coding Plan   →  set BAILIAN_CODING_PLAN_API_KEY and use the Coding Plan base URL for your region
  ...(中略)...
  Check auth status → /doctor

インストールとローカルモデルでの始め方(実機)

1. インストール

Node.js 22 以上が必要です。公式が案内している方法は3つあります。

# 方法1:npm(この記事で使った方法)
npm install -g @qwen-code/qwen-code@latest

# 方法2:Homebrew
brew install qwen-code

# 方法3:単体インストーラー(Node.js 不要)
curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen-standalone.sh | bash

入ったか確かめます。

qwen --version
# 0.24.6

2. 【実機で発見】npm 版は検索用の部品に実行権限が付いていない

最初に質問を送ったとき、画面にこんな警告が出ました。

Ripgrep not available: spawn /opt/homebrew/lib/node_modules/@qwen-code/qwen-code/vendor/ripgrep/arm64-darwin/rg EACCES. Falling back to built-in grep.

Qwen Code は、ファイルの中身を高速に検索するために ripgrep(rg)という道具を同梱しています。ところが npm で配られている 0.24.6 のパッケージを調べると、この rg に 実行権限が付いていません(パッケージの中身を tar -tvzf で見ると -rw-r--r--)。そのため遅い代わりの検索に切り替わっていました。次のコマンドで直ります。

# npm でグローバルに入れた場合(Apple シリコンの Mac の例)
chmod +x "$(npm root -g)/@qwen-code/qwen-code/vendor/ripgrep/arm64-darwin/rg"

直したあと、/doctor の診断で「Ripgrep available」と表示されることを確認しました。Intel Mac や Linux は x64-darwin や x64-linux などのフォルダーになります。

3. ローカルのモデルにつなぐ

このMacには LM Studio(AI モデルを手元で動かすアプリ)で Qwen3.8 27B が入っていたので、それを使いました。LM Studio のサーバーを起動してモデルを読み込みます。

lms server start                       # OpenAI 互換のサーバーを http://localhost:1234 で起動
lms load qwen/qwen3.8-27b -y --identifier qwen3.8-27b

次に、Qwen Code の設定ファイル ~/.qwen/settings.json を作ります。公式の model-providers.md にある LM Studio の例をもとにしています。

{
  "env": {
    "LMSTUDIO_API_KEY": "lm-studio"
  },
  "modelProviders": {
    "openai": [
      {
        "id": "qwen3.8-27b",
        "name": "Qwen3.8 27B (LM Studio / ローカル)",
        "envKey": "LMSTUDIO_API_KEY",
        "baseUrl": "http://localhost:1234/v1",
        "generationConfig": {
          "timeout": 600000,
          "streamIdleTimeoutMs": 600000,
          "contextWindowSize": 262144
        }
      }
    ]
  },
  "security": { "auth": { "selectedType": "openai" } },
  "model": { "name": "qwen3.8-27b" }
}

ポイントは3つです。

  • modelProviders.openai は「OpenAI と同じ形式で話せるサーバー」の一覧です。LM Studio・Ollama・vLLM・llama.cpp はどれもこの形式で話せます
  • ローカルのサーバーは API キーを確認しないので、"lm-studio" のようなダミー値で大丈夫です。キーそのものは env に置き、envKey で名前を指します
  • security.auth.selectedType と model.name を書いておくと、起動時の /auth 画面を飛ばせます
  • 検証では、利用統計の送信(既定でオン)を止める "privacy": { "usageStatisticsEnabled": false } も追加しました

さらに、llama.cpp の llama-server で Qwen3.5 4B を 8080 番で動かし、2つ目のモデルとして追加しました。llama.cpp の例は公式ドキュメントにはありませんが、同じ書き方で問題なく動きました。

llama-server -m Qwen3.5-4B-Q4_K_M.gguf --port 8080 -c 131072 --jinja --alias qwen3.5-4b
{
  "id": "qwen3.5-4b",
  "name": "Qwen3.5 4B (llama.cpp / ローカル)",
  "envKey": "LLAMACPP_API_KEY",
  "baseUrl": "http://127.0.0.1:8080/v1",
  "generationConfig": { "contextWindowSize": 131072 }
}

ドキュメントのとおり、modelProviders を書き足すと Qwen Code を再起動しなくても /model の一覧に反映されました。

ローカルのモデルで Qwen Code を動かす構成図。qwen から settings.json の modelProviders を経由して、LM Studio(:1234)の Qwen3.8 27B と llama.cpp(:8080)の Qwen3.5 4B につながる。1回目の質問で約1.4万トークン、修正タスクは約100秒

図3:この記事の検証環境。API キーもネット接続も要りません

4. 起動してみる

プロジェクトのフォルダーで qwen と打つと、対話画面が開きます。

Qwen Code の起動画面。大きな QWEN のロゴと、バージョン 0.24.6、接続中のモデル名、作業フォルダーが表示され、下に自動モードの説明と入力欄がある

実画面:起動直後。画面の文字は OS の言語設定に合わせて自動で日本語になりました。初回だけ「LLM 分類器が各ツール呼び出しを評価します」という自動モードの説明が出ます

気づいた点を挙げます。

  • 画面が日本語:メニュー・ヒント・確認画面が日本語で表示されました(/language ui ja-JP で明示もできます)。Claude Code と Codex CLI は画面が英語です(ただし返答は、3つとも日本語で頼めば日本語で返ってきます)
  • 既定の承認モードは「自動モード」:下の行に「自動モード (Shift + Tab で切り替え)」と出ています。詳しくは後の「承認モード」で説明します
  • 1回の質問で送られる量が多い:-o json で「1+1は?」を1回だけ実行すると、本体への入力は約1.4万トークンでした(指示文・ツールの説明・スキルの一覧など。対話画面の /context の見積もりでは、指示文4.5k・組み込みツール11.2k・スキル2.3k トークンと表示)。加えて、応答のあとに「自動メモリ」が裏で約1.2万トークンの処理を走らせていました。クラウドの API ではこの分も料金になります

5. 引数つきの qwen "質問" はその場で終わる(Claude Code と逆)

1つ、Claude Code に慣れていると戸惑う点があります。qwen "質問" のように引数で質問を渡すと、答えを出して終了する1回実行 になります。対話を続けたいときは -i を付けます。

qwen "このリポジトリの構成を説明して"        # 1回だけ答えて終わる(非対話)
qwen -i "このリポジトリの構成を説明して"     # 最初の質問を送ったうえで対話を続ける

Claude Code は claude "質問" で対話が始まり、1回実行は claude -p です。Qwen Code にも -p はありますが、ヘルプでは「非推奨(位置引数を使ってください)」と表示されます。

1回実行の結果は JSON でも受け取れます。1+1は? と聞いたときの実測は次のとおりでした。

qwen "1+1は?数字だけ答えて" -o json
# 回答までの時間:約3.7秒(本体)/ 自動メモリの処理を含めた終了まで:約35秒

1回実行でも自動メモリの処理が終わるまで待つため、スクリプトで大量に呼ぶ場合は memory.enableManagedAutoMemory を false にするか、--bare(最小構成で起動)を検討するとよいでしょう。

基本操作:3つの記号と承認モード

入力欄の3つの記号

Qwen Code の入力欄の基本は、Claude Code・Codex CLI とほぼ同じです。

入力欄の記号とキーを3つのツールで比べた表。/ と @ と ! は共通。Shift+Tab は Qwen Code と Claude Code が承認・権限モード、Codex は Plan モード。Esc 2回は Qwen と Claude が巻き戻し、Codex は直前の発言の編集

図4:入力欄の記号とキーの比較

記号意味例
/コマンドやスキルを呼ぶ/help、/model、/review
@ファイルやフォルダーの中身を渡す@src/cart.js このコードを説明して
!シェル(ターミナル)のコマンドを直接実行。! だけ打つとシェルモード!git status

! で実行したコマンドには、環境変数 QWEN_CODE=1 が設定されます。実機で !git diff --stat を打つと、結果が会話の中に表示され、入力欄の先頭が ! のままのシェルモードになりました(Esc で戻ります)。

【実機】@ファイルでバグを説明させる

検証用に、わざとバグを3つ入れた小さな Node.js のプロジェクト(demo-shop)を用意しました。買い物かごの小計と税込み合計を計算するだけのコードで、テストは3本ともわざと失敗します。

// src/cart.js(検証用。バグ入り)
export const TAX_RATE = 0.1;

export function subtotal(items) {
  let sum = 0;
  for (let i = 1; i < items.length; i++) {   // ← 0 から数えていない
    sum += items[i].price * items[i].qty;
  }
  return sum;
}

// 税込み合計(1円未満は切り捨て)
export function total(items, coupon = 0) {
  const taxed = subtotal(items) * (1 + TAX_RATE);
  return Math.round(taxed) - coupon;          // ← 四捨五入になっている・マイナスになりうる
}

@src/cart.js このファイルにあるバグを、コードは直さずに箇条書きで説明して と送ると、ローカルの 27B モデルが約1分で3つとも言い当てました(先頭の商品が抜けるループ、切り捨てと四捨五入の食い違い、クーポンでマイナスになる問題)。さらに「入力が配列でないと落ちる」という4つ目の注意まで付けてくれました。

承認モード:5段階、既定は「自動モード」

AI がファイルを書き換えたりコマンドを実行したりする前に、人間に確認するかどうかを決めるのが 承認モード です。Qwen Code は5段階あり、Shift+Tab(Windows は Tab)で順に切り替わります。

3つのツールの承認・権限モードを並べた図。Qwen Code は plan・default・auto-edit・auto・yolo の5段、Claude Code は plan・default・acceptEdits・auto・dontAsk・bypassPermissions の6段、Codex CLI はサンドボックスと承認ポリシーの2軸

図5:承認モードの比較。Codex は「段階」ではなく、隔離(サンドボックス)と承認の組み合わせで決めます

設定値画面の表示(日本語)ファイル編集コマンド実行
planプランモードしない(読むだけ)しない
default許可を確認毎回確認毎回確認
auto-edit編集を自動承認自動確認
auto自動モード(既定)AI の分類器が判定AI の分類器が判定
yoloYOLO モード自動自動

実機で Shift+Tab を押すと、自動モード → YOLO モード → プランモード → 許可を確認 → 編集を自動承認 → 自動モード の順に下の表示が変わりました。/approval-mode と打つと、同じ5つが説明つきの一覧で出ます(Tab で「このプロジェクトだけ」「自分の全プロジェクト」の保存先も選べます)。

既定値について注意:ドキュメントの中で既定の承認モードの書き方が食い違っています。承認モードのページには「Auto が既定」とも「Ask Permissions(default)が最初のモード」とも書かれ、クイックスタートには「常に許可を求める」とあります。ソースコードの設定定義では auto が既定値で、実機でも自動モードで起動しました。実際の既定は Auto と考えてください。

「許可を確認」モード(--approval-mode default)で README への追記を頼むと、次のような確認画面が出ました。変更内容の差分を見せたうえで、今回だけ許可・常に許可・拒否を選びます。

Qwen Code の編集確認画面。README.md に「## テストの実行」の見出しを追加する差分が緑で表示され、「この変更を適用しますか?」の下に「はい(今回のみ許可)」「はい、常に許可」「いいえ、変更を提案」の3択がある

実画面:ファイル編集の確認。コマンド実行の確認では「このプロジェクトで npm test を常に許可」「このユーザーで常に許可」も選べました

自動モードの中身と、ローカルモデルで起きたこと

既定の自動モードは、Claude Code の auto モードとほぼ同じ考え方です。ツールを使うたびに次の順で判定します(auto-mode.md とソースで確認)。

  1. permissions.deny(拒否ルール)に当たれば即ブロック
  2. 作業フォルダー内のファイル編集や、読むだけのツールは判定なしで許可
  3. それ以外(シェル・Web 取得・サブエージェント起動など)は AI の 分類器 が「止めるべきか」を判定
Auto モードの判定の流れ。拒否ルール、近道、分類器の1段目(10秒)と2段目(30秒)。時間切れのときは手動確認に切り替わり、ローカルの 27B で発生した。対策は制限時間を延ばすこと

図6:自動モードの判定順と、ローカルモデルで起きた「時間切れ」

ここで実機ならではの問題にぶつかりました。自動モードのまま「npm test を実行して、失敗しているテストが全部通るように直して」と頼むと、npm test を実行する直前で止まり、この画面になったのです。

Qwen Code の確認画面。「Auto Mode couldn't classify this action (Classifier stage 1 unavailable). Review it manually.」という警告と、npm の実行を許可するかの3択が表示されている

実画面:分類器が時間内に答えられず、手動の確認に切り替わった状態

原因をソース(packages/core/src/permissions/classifier.ts)で調べると、分類器の1段目には 10秒の制限時間 があり、時間切れになると安全のため手動確認に切り替える作りでした。分類器は「高速モデル(fast model)」を使い、未設定ならメインのモデルを使います。今回は高速モデルを設定していなかったので、手元の 27B モデルが長い判定用プロンプトを10秒で読み切れなかったわけです。

この制限時間は、ドキュメントには載っていませんが設定で延ばせます(設定スキーマに permissions.autoMode.classifier.timeouts があります)。

{
  "permissions": {
    "autoMode": {
      "classifier": {
        "timeouts": { "stage1Ms": 120000, "stage2Ms": 300000 }
      }
    }
  }
}

これを入れてやり直すと、分類器が npm test を安全と判定して自動で実行し、最後まで止まらずに進みました。クラウドの速いモデルなら10秒で足りるはずなので、これは ローカルモデルで自動モードを使うときの注意点 です。軽いモデルを /model --fast で分類器用に指定する方法もあります。

【実機】自動モードでバグを直させる

制限時間を延ばしたあとの一部始終です。

Qwen Code がローカルの Qwen3.8 27B でバグを直す様子の録画。テストを読み、npm test を実行して3件の失敗を確認し、src/cart.js を編集して、もう一度 npm test を実行して3件とも成功

録画:テストの確認 → npm test(失敗3件)→ src/cart.js の修正 → npm test(成功3件)まで、自動モードで約100秒

Qwen Code が行った修正は次の3点で、どれも正解でした。念のため自分でも npm test を実行し、3件とも通ることを確認しています。

-  for (let i = 1; i < items.length; i++) {
+  for (let i = 0; i < items.length; i++) {
...
-  const taxed = subtotal(items) * (1 + TAX_RATE);
-  return Math.round(taxed) - coupon;
+  const taxed = Math.floor(subtotal(items) * (1 + TAX_RATE));
+  return Math.max(0, taxed - coupon);

作業フォルダー内の編集は「近道」で自動許可され、npm test は分類器の判定で自動実行されました。終わったあと /diff を開くと、変更をファイルごとに確認できます(←/→ で「今の差分」と「会話のターンごとの差分」を切り替えられます)。

Qwen Code の /diff 画面。src/cart.js の差分で、ループの開始を 0 に、Math.round を Math.floor に、クーポンの結果を Math.max(0, …) にした変更が赤と緑で表示されている

実画面:/diff でファイルを選んで Enter を押すと、行ごとの差分が出ます

Qwen Code の全コマンド一覧と、Claude Code・Codex での対応

ここからが本題の一覧です。Qwen Code のコマンドは次の4種類に分かれます。

  1. 組み込みのスラッシュコマンド(/model など)
  2. 同梱スキル(スラッシュで呼べる、最初から入っている手順書。/review など)
  3. CLI のサブコマンド(ターミナルで打つ qwen mcp add など)
  4. 起動オプション(qwen --model ... など)

一覧の作り方

公式ドキュメントのコマンド表(commands.md)だけでは足りないため、次の3つを突き合わせました。

  • ドキュメント(commands.md ほか全ページ)
  • ソースコードのコマンド登録箇所(BuiltinCommandLoader.ts)と各コマンドの定義
  • 実機の /help 画面(一覧を全ページめくって記録)

実機の /help には「Built-in Commands (67)」「Bundled Skills (18)」と表示されました。コマンド名の後ろには、どの実行方法で使えるかの印が付いています。[interactive] は対話画面だけ、[all] は1回実行や他のアプリからでも使える、[i] [acp] は対話画面とエディター連携で使える、という意味です。

Qwen Code の /help 画面の commands 一覧の一部。/advisor、/agents、/approval-mode、/arena、/auth、/branch、/btw、/bug が説明つきで並ぶ

実画面:/help の「commands」タブ(組み込み67個)。Tab で「custom-commands」タブ(同梱スキル・自作コマンド・MCP のプロンプト)に切り替わります

表の記号の意味は次のとおりです。

  • ○:同じ名前か、ほぼ同じ働きのコマンドがある(名前が違う場合は併記)
  • △:近い機能はあるが、形が違う(設定ファイル・CLI のサブコマンド・キー操作で行うなど)
  • ×:同等のものが見当たらない

Claude Code 2.1.280・Codex CLI 0.156.1 の一覧は、それぞれのヘルプ・公式ドキュメント・(Codex は)ソースコードで確認しました。

① 会話とセッションの管理

Qwen Code何をするClaude CodeCodex CLI
/clear(別名 /reset /new)会話を消して新しく始める○ /clear○ /clear /new
/resume(別名 /continue)過去の会話を選んで再開○ /resume○ /resume
/delete過去の会話を削除△ claude rm(バックグラウンド分)○ /delete
/rename(別名 /tag)[--auto]会話に名前を付ける。--auto で AI が命名○ /rename○ /rename
/branch今の会話を新しいセッションに分岐○ /branch○ /fork
/fork <指示>会話全体を引き継いだ「分身」をバックグラウンドで動かす○ /fork /subtask△ /fork(会話の複製)
/rewind(別名 /rollback)会話を前のターンまで巻き戻す○ /rewind△ Esc 2回で直前の発言を編集
/restore [ID]ツール実行前のチェックポイントにファイルを戻す○ /rewind(コードも戻せる)×
/compress(別名 /summarize)会話を要約してコンテキストを空ける○ /compact○ /compact
/compress-fastAI を使わずに古いツール出力を削って圧縮××
/summary [パス]プロジェクトの要約を .qwen/PROJECT_SUMMARY.md に保存××
/recap今の会話を1行で要約○ /recap○ /recap
/export [md|html|json|jsonl] [パス]会話をファイルに書き出す○ /export(テキスト)○ /export(Markdown)
/copy [N] [言語|code|latex|mermaid]応答やコードをクリップボードへ○ /copy○ /copy
/history collapse-on-resume|expand-on-resume|expand-now再開時の履歴の折りたたみ表示を設定××
/btw <質問>(?btw でも可)本題を止めずにちょっとした質問○ /btw○ /side /btw

実機メモ:/export md は作業フォルダーに qwen-code-export-日時.md を作りました。/btw は本題の会話に入らず、入力欄の上に枠で答えが出ました。

Qwen Code で /btw を使った画面。「/btw subtotal と total の違いを一言で」という質問に、枠の中で短い答えが表示され、Space・Enter・Escape で閉じると案内されている

実画面:/btw の答えは枠で表示され、閉じると会話の履歴には残りません

② 画面と作業場所

Qwen Code何をするClaude CodeCodex CLI
/help(別名 /?)ヘルプ(ショートカット・全コマンド)○ /help△ ? キー
/theme配色テーマを選ぶ○ /theme○ /theme
/vim入力欄の Vim モード△ /config から○ /vim
/editor外部エディターを選ぶ△ Ctrl+G($EDITOR)△ Ctrl+G
/statusline [指示]画面下のステータス表示を設定。文章で指示すると AI が作る○ /statusline○ /statusline
/terminal-setup改行キー(Shift+Enter など)の設定を入れる○ /terminal-setup×
/directory add|show(別名 /dir)作業フォルダーを追加・表示○ /add-dir△ --add-dir(起動時)
/cd <パス>会話を保ったまま作業フォルダーを移動○ /cd○ /cd
/diff差分ビューア(今の差分/ターンごとの差分)○ /diff○ /diff
/language ui|output <言語>画面の言語・返答の言語を設定(日本語 ja-JP あり)△ /config の language(返答の言語)×
/voice [hold|tap|off|status]音声入力○ /voice○ /voice

③ モデルとツール

Qwen Code何をするClaude CodeCodex CLI
/model [モデル]モデルを切り替え。モデル 質問 でその1問だけ別モデル(同じ接続先のモデルに限る)○ /model○ /model
/model --fast|--voice|--vision|--compaction|--image補助用モデル(候補表示・音声・画像の読み取り・圧縮・画像生成)を設定××
/model --project|--globalモデルの選択をプロジェクト/全体に保存△ /model は既定として保存△ config.toml
/effort [low〜max]推論の強さ。接続先ごとに自動で変換○ /effort△ /model の中で選ぶ
/advisor [モデル|off|review]別モデルに第二の意見をもらう(読むだけ)○ /advisor×
/output-style [名前]返答の書き方(Concise・Explanatory・Learning など)○ /output-style×
/tools [desc]使えるツールの一覧△ /context の内訳×
/mcp [desc|nodesc|schema]MCP サーバーの管理画面○ /mcp○ /mcp
/import-config [all|claude-code|claude-desktop]Claude Code / Claude Desktop の MCP 設定を取り込む△ claude mcp add-from-claude-desktop△ /import(Claude Code から)
/extensions list|manage|install|explore拡張機能の管理○ /plugin○ /plugins
/reload-plugins拡張の変更を再読み込み○ /reload-plugins×
/skillsスキル一覧のパネル(検索・オン/オフ)○ /skills○ /skills
/learn <パス|URL|文章> [重点]資料からプロジェクト用スキルを自動で作る(動画も可)×△ 同梱スキル $skill-creator(対話で作る)
/curator [status|run|pin|unpin|restore]自動で作られたスキルの整理(古いものを保管へ)××
/hooks [list]フックの一覧○ /hooks○ /hooks
/permissions許可・確認・拒否のルールを編集○ /permissions○ /permissions(プリセット)
/approval-mode [モード]承認モードを変更△ Shift+Tab・--permission-mode○ /permissions
/plan [内容|exit]プランモードに入る/抜ける○ /plan○ /plan

④ 記憶(メモリ)

Qwen Code何をするClaude CodeCodex CLI
/initコードを解析して QWEN.md(指示ファイル)を作る○ /init(CLAUDE.md)○ /init(AGENTS.md)
/memoryメモリの管理画面(自動メモリのオン/オフ、QWEN.md を開く)○ /memory○ /memories
/remember <内容>覚えておくことを保存××
/forget <内容>自動メモリから一致するものを消す××
/dream自動メモリの重複や古い項目を整理××

/dream と /forget は、自動メモリが使える状態のときだけ表示されます。

⑤ エージェント・自動化

Qwen Code何をするClaude CodeCodex CLI
/agents manage|createサブエージェント(専門の助手)の管理・作成△ .claude/agents/ を直接編集△ /agents(進行状況の画面)・/subagents
/arena start|stop|status|select複数モデルに同じ課題を解かせて比べる△ 専用機能なし(タブと作業コピーで手作業)△ codex cloud exec --attempts(同じ AI を複数回・クラウド)
/goal [目標|set|edit|pause|resume|clear]目標を満たすまで自走させる(別の AI が達成を判定)○ /goal○ /goal
/tasksバックグラウンドの作業一覧○ /tasks△ /ps(裏で動くターミナル)
/peers同じ PC の別セッションから届いたメッセージを審査△ セッション間メッセージの機能はある(審査用のコマンドはない)△ codex queue(既存セッションへ指示を予約)
/setup-githubGitHub Actions(qwen-code-action)を設定○ /install-github-app×

⑥ 情報・設定・診断

Qwen Code何をするClaude CodeCodex CLI
/status(別名 /about)・/status pathsバージョン・接続先・モデル・保存場所を表示○ /status○ /status
/stats(別名 /usage)[model|tools|skills|daily|monthly|export]使用量の統計。日別・月別、CSV/JSON 出力も○ /usage○ /usage
/context [detail]コンテキストの使用量の内訳○ /context△ /status
/settings設定画面○ /config△ /experimental など個別
/config [キー[=値]]設定を「点区切りの名前」で読み書き○ /config key=value△ -c オプション
/auth(別名 /connect /login)接続先(プロバイダー)の設定○ /login△ codex login
/doctor [memory|cpu-profile|rollback]環境の診断。メモリ・CPU の分析、単体版の巻き戻しも○ /doctor△ codex doctor
/docsドキュメントをブラウザで開く××
/ide [status|install|enable|disable]エディター連携の管理○ /ide△ /ide(エディターの選択範囲などを取り込むだけ)
/insight会話履歴からプログラミングの傾向をまとめる○ /insights×
/bug <内容>不具合を報告○ /bug /feedback○ /feedback
/update更新を確認してインストール△ claude update△ codex update
/quit(別名 /exit)終了○ /exit○ /quit /exit

実機メモ:/doctor は「11 passed」(認証・設定・ツール34個・Ripgrep・Git など)と表示し、/status は接続先の URL・モデル・高速モデル・メモリ使用量(約243MB)まで見せてくれました。/context の内訳は、指示文 4.5k・組み込みツール 11.2k・メモリ 1.4k・スキル 2.3k トークンでした。

Qwen Code の /context 画面。システムプロンプト 4.5k、組み込みツール 11.2k、メモリファイル 1.4k、スキル 2.3k トークンなどの内訳と、圧縮が始まるしきい値が表示されている

実画面:/context。会話が長くなったとき、どこで自動圧縮が始まるか(Auto threshold)も分かります

⑦ 条件付きのコマンドと、ドキュメントとの差

次のコマンドは、ドキュメントには載っているものの、条件を満たさないと一覧に出ません。

コマンド出る条件Claude CodeCodex CLI
/trust設定 security.folderTrust.enabled: true(フォルダーの信頼機能。既定はオフ)△ 起動時の信頼確認△ config で信頼
/lsp起動時に --experimental-lsp△ LSP はプラグインで×
/workflows [runId]設定 tools.workflowsEnabled か QWEN_CODE_ENABLE_WORKFLOWS=1○ /workflows×
/logWeb 画面(Web Shell)でだけ使える、コミット履歴の表示××
/commit [指示]0.24.6 には未収録。GitHub の main ブランチのドキュメントとソースにだけある××

/commit は、ドキュメントの表に載っているのに実機で打つと出てきませんでした。調べると、v0.24.6 のタグと main の差分で commands.md に /commit の行が追加されていました。GitHub のドキュメントは次のリリースの内容を先に含んでいることがある ので、見つからないコマンドはリリースノートと照らし合わせてください。

⑧ 同梱スキル(18個)

スキルは「特定の作業の手順書」で、/名前 で呼べるほか、AI が必要と判断すると自分で読み込みます。実機の /help の「Bundled Skills (18)」は次のとおりでした。

スキル何をするClaude CodeCodex CLI
/review [PR番号|パス] [--effort] [--comment] [--fix]多数のエージェントで並列にコードレビュー○ /code-review(/review)○ /review
/simplify [重点]最近の変更を整理して直す○ /simplify×
/loop [間隔] [指示]|list|clear指示を定期的に繰り返す○ /loop×
/batch <作業> <ファイル>多数のファイルを並列で処理○ /batch×
/batch-api <作業>DashScope の Batch API(半額・非同期)で一括処理××
/goal-draft [やりたいこと]あいまいな目標を /goal 用の判定しやすい文にする××
/coordinate <目標>読むだけの作業者と書き手1人でチームを組ませる△ Agent Teams×
/agent-delegationサブエージェントへの指示の書き方の資料××
/datavizグラフ・ダッシュボードのデザイン指針○ /dataviz×
/new-app新しいアプリをゼロから作る手順××
/qc-helper <質問>Qwen Code の使い方を公式ドキュメントで答える△ 専用ガイドのエージェント×
/computer-useデスクトップアプリの操作△ デスクトップアプリ側×
/browser-use自分の Chrome の操作(拡張機能が必要)△ /chrome×
/extension-creator <パス>Qwen Code の拡張機能を作る△ claude plugin init△ 同梱スキル $plugin-creator
/stuck [PID]固まった・遅い Qwen Code を診断××
/workflow-authoringワークフロー(複数エージェントを動かす台本)の書き方資料○ /workflow-authoring×
/workflow-creator再利用できるワークフローを作る××
/zvec-grep-install意味検索の道具 zvec-grep を入れる××

このほか、自分で作るコマンドは ~/.qwen/commands/(全体)と .qwen/commands/(プロジェクト)に Markdown で置きます。サブフォルダーは : 区切りの名前になり(git/commit.md → /git:commit)、本文では {{args}}(引数)、!{コマンド}(実行結果の差し込み)、@{ファイル}(ファイルの差し込み)が使えます。MCP サーバーが提供するプロンプトもスラッシュコマンドになります。

【実機で発見】Codex 用のスキルが Qwen の組み込みコマンドを上書きする

一覧を作る途中で、このMacでは /help の件数が「Built-in Commands (65)」「Bundled Skills (16)」と、別の環境より少ないことに気づきました。原因は スキルの読み込み元 です。

スキルの読み込み元と優先順位の図。プロジェクトの .qwen/skills と .agents/skills、ユーザーの ~/.qwen/skills と ~/.agents/skills、拡張機能、同梱スキルの順。~/.agents/skills にあった goal・loop・review・statusline が Qwen Code のコマンドを置き換えた

図7:スキルの読み込み元。同じ名前なら上の段が勝ちます

ソース(packages/core/src/config/storage.ts)では、スキルの置き場所が ['.qwen', '.agents'] の2つになっていて、~/.qwen/skills と一緒に ~/.agents/skills も読みます。このフォルダーは Codex CLI の公式ドキュメントがユーザー用スキルの置き場所としている共通のフォルダーで、このMacには Codex や Cursor 向けに入れていたスキルのフォルダーが28個ありました(/help には27個が [User] として表示)。そのうち goal・loop・review・statusline が Qwen Code の同名コマンドより優先され、たとえば /goal の説明が「Set a goal that Codex will pursue to completion.」(Codex 用のスキルの説明)に置き換わっていました。

/help の custom-commands タブ。User 表示の付いた /goal の説明が「Set a goal that Codex will pursue to completion.」になっていて、同じく User 表示の /loop も並んでいる

実画面:[User] と付いているのが ~/.agents/skills から読まれたスキル。組み込みの /goal ではなく Codex 用のスキルが動く状態です

.agents を読むことは公式ドキュメント(skills.md)には書かれていません。Codex や Cursor と併用している方は、/help の一覧で [User] の付いたコマンドを確認し、ぶつかる名前はスキル側のフォルダー名を変えるか、設定 skills.disabled で止めてください。逆に言えば、Codex 用に作ったスキルがそのまま Qwen Code でも使える ということでもあります。

CLI のサブコマンド(ターミナルで打つもの)

qwen --help の「Commands」は13個でした(review には /review スキルが内部で使う補助コマンドが40個ほどあり、利用者向けは qwen review run だけです)。

サブコマンド何をする実機Claude CodeCodex CLI
qwen [質問]起動。質問を付けると1回実行✓○ claude○ codex
qwen mcp add|remove|list|reconnect|approve|rejectMCP サーバーの管理✓○ claude mcp○ codex mcp
qwen extensions install|uninstall|list|update|enable|disable|link|new|settings|sources拡張機能の管理✓○ claude plugin○ codex plugin
qwen sessions list|ps|controllers保存した会話・実行中の会話の一覧、外部から操作する鍵の発行✓△ claude agents△ codex resume --all
qwen serveローカルの HTTP デーモン+Web 画面(実験的)✓△ claude remote-control△ codex app-server
qwen channel start|stop|status|reload|set|pairing|configure-weixinチャットアプリとの連携一部△ Channels(プレビュー)△ Codex cloud に Slack・Linear から依頼
qwen board show|task|claim|done|ask|answer|decline|pruneエージェント同士の掲示板✓××
qwen batch run|collect|retry|cancel|list|check|cleanDashScope Batch API での一括処理×××
qwen review run [対象] [--json] [--fail-on request-changes]コードレビューを非対話で(CI 向け)×△ claude ultrareview○ codex review
qwen sandbox [--verify] [-- コマンド]サンドボックスの状態確認・1コマンドの隔離実行✓×○ codex sandbox
qwen update更新✓○ claude update○ codex update
qwen auth削除済み(案内を表示するだけ)✓○ claude auth○ codex login
qwen hooks(別名 hook)何もせず終了(対話画面の /hooks を使う)✓××

【実機】MCP サーバーの「承認待ち」

MCP(AI に外部の道具をつなぐ共通規格)の動きを見るために、依存パッケージなしで書いた「税込み価格を返すだけ」の小さな MCP サーバー(tax-server.mjs)を用意し、プロジェクト用に登録しました。

$ qwen mcp add --scope project tax-demo node ../mcp-demo/tax-server.mjs
MCP server "tax-demo" added to project settings. (stdio)

$ qwen mcp list
Configured MCP servers:
● tax-demo: node ../mcp-demo/tax-server.mjs (stdio) - Pending approval

$ qwen mcp approve tax-demo
Approved MCP server "tax-demo" (bound to its current config).

$ qwen mcp list
✓ tax-demo: node ../mcp-demo/tax-server.mjs (stdio) - Connected

プロジェクトのフォルダーに置かれた MCP の設定は、qwen mcp approve で承認するまで接続されませんでした(ドキュメントでは説明が薄く、ソースの approve.ts に「gated MCP server」とあります)。他人のリポジトリを開いたとたんに知らないサーバーが動く、という事故を防ぐ仕組みです。なお qwen mcp add の既定の保存先は、開発者向けドキュメントには「project」と書かれていますが、ソースと利用者向けドキュメントでは「user」です。

承認後に「tax-demo の add_tax ツールで 1980 円の税込み価格を出して」と1回実行で頼むと、tool_search(必要なツールをあとから読み込む仕組み)でツールを見つけ、MCP のツールを呼んで「税込み 2178 円」と答えました。なお承認モードのドキュメントには「ヘッドレス(1回実行)の既定は Ask Permissions」とありますが、このときの統計(-o json の stats)では MCP ツールの呼び出しが auto_accept と記録されていて、設定どおり自動モードの判定で通っていました。

【実機】エージェント同士の掲示板 qwen board

qwen board は、別々に動いているエージェント(Qwen Code でも Codex でも)が、同じ PC のファイルを通してタスクや質問をやり取りする仕組みです(実験的)。人間がコマンドで試すとこうなります。

$ qwen board task "税計算の丸め方を確認する" --board shop --as qwen
t-1d01a480-… 税計算の丸め方を確認する

$ qwen board claim t-1d01a480-… --board shop --as codex
t-1d01a480-… claimed by codex

$ qwen board ask codex "切り捨てで合ってる?" --board shop --as qwen
a-94193665-… -> codex

$ qwen board answer a-94193665-… "はい、1円未満切り捨てです" --board shop --as codex
$ qwen board done t-1d01a480-… --board shop --as codex --note "Math.floor に統一"

$ qwen board show --board shop
board: shop
? a-94193665-… [answered] qwen -> codex: 切り捨てで合ってる?
- t-1d01a480-… [completed] codex: 税計算の丸め方を確認する

--as は名札のようなもので、認証ではありません。記録は ~/.qwen/boards/ に保存されます。

そのほかのサブコマンドの実機結果

$ qwen sessions ps
NAME          KIND  PID    AGE  DIRECTORY
demo-shop-87  tui   57893  10s  …/lab/demo-shop

$ qwen sandbox
Tool execution sandbox: none
Configure tools.executionSandbox in User or System settings.

$ qwen update
Qwen Code 0.24.6 is up to date!

$ qwen extensions new ../ext-demo commands     # 拡張機能のひな形を作る
$ qwen extensions link ../ext-demo             # 開発中の拡張を登録(確認に Y で答える)
$ qwen extensions list
✓ commands-example (1.0.0)
 Commands:
  /fs:grep-code

qwen extensions install には「Claude Code のマーケットプレイスのプラグイン」「Gemini CLI の拡張」「Qoder のプラグイン」「Agent Plugins v1」「npm パッケージ」をそのまま指定でき、Qwen Code 用に自動で変換してくれます(extension/introduction.md)。ただし、これも Qwen Code だけではありません。Codex のプラグインも、Claude 互換のマーケットプレイスやプラグイン(.claude-plugin/plugin.json)と Agent Plugins 1.0 をそのまま扱えます(Codex の公式ドキュメント)。Qwen Code は、これに加えて Gemini CLI の拡張と Qoder のプラグインも入れられます。

起動オプション(フラグ)の全一覧と対応表

qwen --help に出るオプションを、用途ごとにまとめました。非推奨のものも含めています。位置引数の行を △ にしているのは、「引数を付けるとそのまま1回実行になる」という Qwen Code の動きが、他の2つでは別のフラグ・サブコマンドに分かれているためです。

Qwen Code何をするClaude CodeCodex CLI
位置引数 [質問]1回実行(対話は -i)△ claude -p△ codex exec
-p, --prompt(非推奨)1回実行○ -p○ codex exec
-i, --prompt-interactive最初の質問を送って対話を続ける○ claude "質問"○ codex "質問"
-m, --modelモデルを指定○ --model○ -m
--fallback-model混雑時(429/503/529)の代わりのモデル(最大3つ)○ --fallback-model×
--advisor第二の意見用のモデル○ --advisor×
--auth-type接続の種類(openai・openai-responses・anthropic・gemini・vertex-ai・qwen-oauth)△ 環境変数 ANTHROPIC_BASE_URL で接続先を変更△ -c model_provider
--openai-api-key / --openai-base-urlOpenAI 互換の接続先を直接指定×△ --oss / --local-provider
-c, --continueこのフォルダーの直近の会話を再開○ -c○ codex resume --last
-r, --resume [ID]会話を選んで再開○ -r○ codex resume
--session-id会話の ID を指定○ --session-id×
--fork-session再開した会話から分岐○ --fork-session○ codex fork
--chat-recording会話をディスクに記録するか△ --no-session-persistence△ codex exec --ephemeral
-o, --output-format text|json|stream-json1回実行の出力形式○ --output-format△ codex exec --json
--input-format text|stream-json標準入力の形式○ --input-format×
--include-partial-messages途中経過も JSON で流す○ 同名×
--json-schema最終回答を指定の JSON Schema に合わせる○ --json-schema○ codex exec --output-schema
--json-fd / --json-file / --input-file画面を出したまま JSON を外に流す・外から入力(Dual Output)××
--system-prompt / --append-system-prompt指示文の置き換え・追記○ 同名△ 設定ファイル
--output-style返答の書き方××
--approval-mode plan|default|auto-edit|auto|yolo承認モード○ --permission-mode△ -a と -s
-y, --yoloすべて自動承認○ --dangerously-skip-permissions○ --dangerously-bypass-approvals-and-sandbox
--allowed-tools確認なしで使ってよいツール○ --allowedTools×
--exclude-tools / --core-toolsツールを除外/限定○ --disallowedTools / --tools×
-s, --sandbox / --sandbox-image(非推奨)サンドボックス(Docker・Podman・macOS Seatbelt)で動かす△ 設定の sandbox○ -s
--mcp-config / --allowed-mcp-server-namesMCP の設定を渡す/使うサーバーを名前で限定○ --mcp-config / △ --strict-mcp-config(他の設定を無視)△ -c mcp_servers…
-e, --extensions / -l, --list-extensions使う拡張の指定/一覧△ --plugin-dir×
--include-directories(別名 --add-dir)作業フォルダーを追加○ --add-dir○ --add-dir
--worktree [名前|#PR|URL]git worktree(別の作業コピー)の中で始める○ -w○ --worktree
--max-session-turnsターン数の上限○ --max-turns×
--max-wall-time / --max-tool-calls実行時間・ツール回数の上限(超えたら終了コード55)△ --max-budget-usd(金額)×
--max-subagent-depthサブエージェントの入れ子の深さ××
--disabled-slash-commands特定のスラッシュコマンドを無効化△ --disable-slash-commands(全部)×
--bare自動検出を止めた最小構成○ --bare×
--safe-mode設定・スキル・フック・MCP を全部切って起動(切り分け用)○ --safe-mode△ codex exec --ignore-user-config
--acpエディター連携(ACP)用に起動××
--experimental-lsp言語サーバー(定義ジャンプなど)を使う××
--channel呼び出し元の識別(VSCode・SDK・CI など)××
--restore-ask-user-questionデーモンで再開時に、未回答の質問を出し直す××
--screen-reader読み上げソフト向けの表示○ --ax-screen-reader×
--insecureTLS 証明書の検証をしない(自己署名の社内環境向け)××
--openai-logging / --openai-logging-dirAPI 呼び出しを記録××
-d, --debugデバッグ表示○ --debug×
--proxy(非推奨)プロキシ××
--telemetry と --telemetry-* 5個(計6個、非推奨)利用状況の計測××
-v, --version / -h, --helpバージョン・ヘルプ○○

【実機】画面なしで使う(ヘッドレス)

CI やスクリプトから使うときの動きも確かめました。

# ツールを1回も使わせない上限を付けて、ツールが必要な作業を頼む
$ qwen "npm test を実行して結果を教えて" --max-tool-calls 0
Run aborted: tool-call budget of 0 exceeded (--max-tool-calls); observed 1.
# 終了コード 55
# 返答を JSON Schema どおりの形で受け取る
$ qwen "src/cart.js を読み、関数名と役割を structured_output ツールで返して" \
    --json-schema '{"type":"object","properties":{"functions":{"type":"array","items":{"type":"object","properties":{"name":{"type":"string"},"role":{"type":"string"}},"required":["name","role"]}}},"required":["functions"]}'
{"functions":[{"name":"subtotal","role":"商品 { name, price, qty } の配列から、単価×数量の合計(税抜き小計)を返す"},{"name":"total","role":"小計に TAX_RATE(10%) をかけた税込み金額(1円未満は切り捨て)からクーポン額を差し引き、下限を 0 に丸めて合計を返す"}]}

--json-schema は、最初「関数名と役割を答えて」とだけ頼んだときは、ローカルの 27B が表形式の文章で答えてしまい、「structured_output ツールを呼ばなかった」として 終了コード1 で失敗しました。プロンプトで「structured_output ツールで返して」と明示すると成功しました(約19秒)。形をそろえる仕組みはモデルがツールを正しく呼べることが前提なので、ローカルの中規模モデルでは指示を明確にするのが確実です。

-o stream-json では、system(init)→ assistant(考え中・ツール呼び出し)→ user(ツールの結果)→ result の順に、1行1つの JSON が流れてきました。

設定ファイル・指示ファイル・拡張の仕組みを比べる

3つのツールは「どこに何を書くか」も似ていて、少しずつ違います。

項目Qwen CodeClaude CodeCodex CLI
設定ファイル~/.qwen/settings.json、.qwen/settings.json(JSON)~/.claude/settings.json、.claude/settings.json、.claude/settings.local.json~/.codex/config.toml、.codex/config.toml(TOML)
設定の場所を変える環境変数 QWEN_HOMECLAUDE_CONFIG_DIRCODEX_HOME
指示ファイルQWEN.md(+ .qwen/QWEN.local.md)。AGENTS.md も読むCLAUDE.md(+ CLAUDE.local.md)。無ければ AGENTS.mdAGENTS.md(+ AGENTS.override.md)
条件付きルール.qwen/rules/*.md(paths: で対象ファイルを限定).claude/rules/*.md×
スキル.qwen/skills/・.agents/skills/(ユーザーは ~/ 側).claude/skills/.agents/skills/
サブエージェント.qwen/agents/*.md(Claude Code 形式の項目も読める).claude/agents/*.md.codex/agents/*.toml
フック22 イベント。設定で書ける種類は command・http・prompt(function は SDK やスキル内部用)33 イベント。command・http・mcp_tool・prompt・agent12 イベント。command・mcp_tool
MCP の設定settings.json の mcpServers(+ .mcp.json)~/.claude.json・.mcp.jsonconfig.toml の [mcp_servers]
拡張拡張機能(Gemini CLI・Claude Code・Qoder のものも入る)プラグインプラグイン
読ませない設定.qwenignore(.agentignore・.aiignore も)設定の deny ルール×

フックのイベントは、実機の /hooks 画面で22個を確認しました(PreToolUse・PostToolUse・PostToolUseFailure・PostToolBatch・Notification・UserPromptSubmit・UserPromptExpansion・SessionStart・Stop・MessageDisplay・SubagentStart・SubagentStop・PreCompact・PostCompact・SessionEnd・SessionDelete・PermissionRequest・PermissionDenied・StopFailure・TodoCreated・TodoCompleted・InstructionsLoaded)。名前の多くは Claude Code と同じで、フックの条件にも Bash・Read・Write のような Claude Code の道具名がそのまま使えます。環境変数 CLAUDE_PROJECT_DIR も設定されるので、Claude Code 用に書いたフックの台本を流用しやすくなっています。

組み込みのサブエージェントは、実機の /agents manage で6つでした:general-purpose・Explore・statusline-setup・review-agent・claude-code・codex。最後の2つは、別に入れた本物の Claude Code・Codex に作業を任せるためのものです(後述)。

Qwen Code の /agents manage 画面。組み込みエージェントとして general-purpose、Explore、statusline-setup、review-agent、claude-code、codex の6つが並び、使用中 6 エージェントと表示されている

実画面:/agents manage。claude-code と codex が最初から組み込まれています

Qwen Code にしかない機能はあるのか

「Qwen Code にしかない機能」を探して、Claude Code 2.1.280・Codex CLI 0.156.1 の公式ドキュメントと実機で1つずつ確かめました。結論から言うと、Claude Code・Codex では実現できない「大きな違い」は見つかりませんでした。 目立つ機能の多くは、他の2つにも同じ機能があるか、手作業や設定で同じことができます。Qwen Code の強みは「できること」ではなく、「特定の会社の AI に縛られない前提で作られていて、それを1つのコマンドや設定で手軽にできる」点です。

Qwen Code の目立つ機能と、Claude Code・Codex での同じことのやり方を並べた表。ローカルや他社の AI への接続、Arena、Web 画面、チャット連携、Claude Code・Codex の呼び出し、セッション間メッセージ、日本語の画面は、どれも他の2つにも同等の機能か代わりの方法がある。Qwen Code だけなのは Alibaba Cloud の Batch API と中国系チャットアプリへの標準対応くらい

図8:Qwen Code の目立つ機能と、他の2つでの同じことのやり方

Qwen Code の機能Claude Code ではCodex CLI では判定
他社の AI・パソコンの中の AI につなぐANTHROPIC_BASE_URL で接続先を変えられる(実機で成功。ただし公式は Claude 向けで、他のモデルは想定外)--oss --local-provider lmstudio|ollama が公式対応、config.toml の model_providers で他の接続先も(実機で成功)どれでもできる。Qwen Code は複数の形式を並べて途中で切り替えるのが標準
複数の AI を競わせる(/arena)専用機能はない。タブを分けて別々の作業コピー(-w)で同じ課題を渡せば手作業でできるcodex cloud exec --attempts 1-4 で同じ AI に複数回解かせる(クラウド)。別の AI 同士なら手作業手作業ならできる。Qwen Code は準備・比較表・取り込みまで1コマンド
ブラウザの画面から操作(qwen serve)Remote Control(claude.ai/code から手元のセッションを操作)、クラウド版Codex cloud(Web)、codex remote-controlどれでもできる。Qwen Code は自分の PC で画面を立ち上げる
チャットアプリから指示(qwen channel)Channels(Telegram・Discord・iMessage、リサーチプレビュー)Codex cloud に Slack・GitHub・Linear から依頼近いものがある。WeChat・DingTalk・Feishu など中国系は Qwen Code だけ
Claude Code・Codex を部下として呼ぶOpenAI 公式のプラグイン「codex-plugin-cc」で Claude Code から Codex を呼べる―Qwen Code だけではない
同じ PC の別セッションとメッセージ(/peers)公式の「cross-session messaging」で他のセッションに送れるcodex queue で既存のセッションに指示を予約Qwen Code だけではない
画面が日本語画面は英語。ただし日本語で頼めば日本語で答え、返答の言語を固定する language 設定もある画面は英語。日本語で頼めば日本語で答える返答は3つとも日本語。違うのはメニューや確認画面の文字だけ
Batch API で大量処理を半額に(/batch-api)なしなしQwen Code だけ(Alibaba Cloud の DashScope 専用)

以下、実際に試したものを詳しく書きます。

1. Claude Code・Codex もローカルの AI につながった(実機)

「どの会社の AI でもつなげる」は Qwen Code だけの特徴ではないか確かめるため、Qwen Code の検証と同じ LM Studio の Qwen3.8 27B に、Claude Code と Codex をつないで、同じバグ(足し算の関数が引き算になっている math.js)を直させました。

# Claude Code:接続先を LM Studio(Anthropic 互換の窓口 /v1/messages)に変える
ANTHROPIC_BASE_URL=http://localhost:1234 ANTHROPIC_API_KEY=lm-studio \
  claude -p --bare --model qwen3.8-27b --permission-mode acceptEdits \
  "math.js の add 関数のバグを直して。直したら内容を1行で報告して"
# → 26秒で修正完了。「unrecognized_model」(知らないモデル)という診断が1行出た

# Codex:公式の --oss オプションで LM Studio を使う
codex exec --oss --local-provider lmstudio -m qwen3.8-27b -s workspace-write \
  "math.js の add 関数のバグを直して。直したら内容を1行で報告して"
# → 83秒で修正完了(自分で add(2,3)=5 を実行して確認までした)

どちらも a-b を a+b に直し、日本語で報告しました。Claude Code の公式ドキュメントは、接続先の変更を「Claude を社内の中継サーバー経由で使う」ためのものとして説明していて、Claude 以外のモデルは想定していません。Codex は LM Studio と Ollama を公式に対応しています。つまり違いは「できる・できない」ではなく、Qwen Code は OpenAI・Anthropic・Gemini の3つの形式を1つの設定に並べ、会話の途中で /model で切り替えることを最初から前提にしている 点です。

/model モデル名 質問 の形で1問だけ別のモデルに聞く機能もありますが、実機では「接続先が違うモデルには使えない」と断られました(LM Studio と llama.cpp のように別のサーバーのモデル同士では、先に /model で切り替える必要があります)。また /effort(推論の強さ)は、DeepSeek・Anthropic・Gemini など接続先ごとの書き方に自動で変換されます。

2. Arena:複数のモデルを同じ課題で競わせる(実機)

/arena start --models A,B "課題" で、複数のモデルがそれぞれ別の作業コピー(git worktree)で同じ課題に取り組み、終わったら結果を比べて良い方を本体に取り込めます。最大5モデルまでです。

なお、ドキュメント(arena.md)の例は /arena --models ... ですが、0.24.6 でこの形で打つと「/arena にはサブコマンドが必要です(start・stop・status・select)」と表示されました。start を付けるのが正しい書き方 です。

実機では、ローカルの2つのモデル(Qwen3.8 27B と Qwen3.5 4B)に、先ほどと同じ「バグを直して npm test を全部通して」を競わせました。

Arena の実行画面の録画。/arena start で2つのモデルを指定すると、それぞれの作業コピーが作られ、両方が作業を終えると、変更したファイル・ツールの呼び出し回数・トークン数・所要時間を並べた比較表が表示される

録画:/arena start → 2つのモデルが別々の作業コピーで作業 → 両方終わると比較表(Arena Comparison Summary)が出る

Qwen3.8 27BQwen3.5 4B
かかった時間2分48秒1分40秒
ツールの呼び出し6回14回
変更量+2 / −2 行+5 / −4 行
テスト3件とも成功3件とも成功

どちらも正解でしたが、27B は少ない手数で最小限の修正、4B は試行錯誤が多いぶん変更量も多め、という違いが数字で分かります。画面下のタブ(Main / 各モデル)を ←/→ で切り替えると、それぞれのモデルの作業の様子も見られます。比べたあと /arena select で勝った方を選ぶと、その差分が本体の作業フォルダーに取り込まれます(ドキュメント)。

1つ注意があります。最初は既定の自動モードのまま実行したところ、4B は数分で終わったものの、27B の方が「作業中」の表示のまま進まなくなりました(作業コピーの中ではテストがすでに通っていました)。作業コピーは使い捨てなので、qwen --approval-mode yolo で起動し直すと、2つとも最後まで自動で終わりました。

同じことは、Claude Code や Codex でもタブを2つ開き、それぞれ別の作業コピー(claude -w・codex --worktree)で同じ課題を渡せばできます。Arena の良さは、作業コピーの用意、比較表(時間・手数・変更量)、良い方の取り込みまでを1つのコマンドでまとめてやってくれる手軽さです。

3. Web 画面 qwen serve(実機・実験的)

qwen serve を実行すると、ローカルの HTTP サーバー(既定は http://127.0.0.1:4170)が立ち上がり、ブラウザで開ける「Web Shell」という画面が付いてきます。

Qwen Code の Web Shell の画面。左に New task・Plugins・Channels・Scheduled Tasks・Goals のメニューとセッション一覧、右に「src/cart.js の subtotal 関数が何をするか、1行で説明して」という質問と、ループが i = 1 から始まるため先頭の商品が漏れると指摘する回答が表示されている

実画面:ブラウザの Web Shell で質問したところ。ターミナルと同じエージェントが動き、承認モード(Classifier Approval)やモデルも画面下で切り替えられます

実機では qwen serve の起動から0.5秒ほどで http://127.0.0.1:4170 が開き、/health に {"status":"ok"} が返りました。Web Shell から質問すると、ターミナル版と同じくファイルを読んで答え(このときは Arena と同時に動かしていたため1分29秒)、ついでにループのバグも指摘してくれました。左側には Plugins・Channels・Scheduled Tasks・Goals の画面もあり、HTTP の API(REST と SSE)と TypeScript の SDK から同じセッションを操作することもできます。

注意点もあります。既定の「自分の PC からだけ受け付ける」状態では 認証がなく、同じ PC で動く他のプログラムからもコード実行を含むすべての操作ができます(起動時にもそう警告されます)。共有の PC では --require-auth とトークン(QWEN_SERVER_TOKEN)を必ず付けてください。スマートフォンからつなぐときは、--local-control(同じ LAN だけに共有し、取り消せるペアリング用トークンと QR コードを出す)を使うか、--hostname 0.0.0.0 で自動発行されるトークン入りの QR コードを使います。

ブラウザから操作すること自体は、Claude Code(Remote Control・クラウド版)や Codex(Codex cloud)でもできます。Qwen Code の Web Shell は、クラウドのアカウントを使わずに自分の PC の中で画面を立ち上げる点が違います。

4. Claude Code・Codex を「部下」として呼ぶ(Codex は実機)

組み込みのサブエージェント claude-code と codex は、別途インストールした本物の Claude Code(claude-agent-acp という接続用の部品が必要)や Codex CLI に作業を任せます。モデルと認証は各ツールのものを使います。

実機では、1回実行で「組み込みの codex サブエージェントに、src/cart.js の subtotal 関数を説明させて」と頼みました。Qwen Code は agent ツールを subagent_type: "codex" で呼び、このMacの Codex CLI(0.156.1、ChatGPT のアカウントでログイン済み)に仕事を渡しました。Codex の返事は「subtotal は商品の配列の2件目以降について、価格と数量を掛けた金額を合計して返す関数です。」で、ループのバグまで正確に読めています。Codex 側の処理は76秒、全体で約3分40秒でした。結果には「External executor token usage and cost are unavailable.」と添えられ、Codex 側で使ったトークン数は Qwen からは見えませんでした。Codex の設定ファイル(~/.codex/config.toml)が書き換わっていないことも確認しています。

ただし、これも Qwen Code だけではありません。OpenAI が公式に、Claude Code から Codex を呼び出してレビューや作業を任せるプラグイン(codex-plugin-cc)を公開しています。

5. そのほかの機能

機能中身他の2つとの関係
チャット連携(qwen channel)Telegram・WeChat・QQ・DingTalk・WeCom・Feishu のボットとして動かす。GitHub・GitLab の通知にも反応Claude Code にも Channels(Telegram・Discord・iMessage)がある。中国系アプリは Qwen Code だけ
Batch API(/batch-api・qwen batch)大量ファイルの翻訳などを DashScope の非同期 API にまとめて投げ、半額で処理他の2つにはない(Alibaba Cloud 専用)
Dual Output(--json-file など)対話画面を表示したまま、同じ出来事を JSON でファイルに流し、外部から入力も送れる開発者向けの細かい機能。Claude Code・Codex は画面なしの実行で JSON を流せる
/learn・/curatorURL・フォルダー・文章・動画からスキルを自動作成し、使わないものは保管へCodex には対話でスキルを作る同梱スキル(skill-creator)がある
画面の多言語化メニューを日本語を含む9言語に切り替え(/language ui ja-JP)返答は3つとも日本語で頼めば日本語。違いはメニューの文字だけ
端末での図・数式の表示Mermaid と LaTeX を端末に描く小さな違い

反対に、Qwen Code に無いもの

逆方向も同じ基準で確かめました。Claude Code・Codex にあって、Qwen Code 0.24.6 に無い(または大きく劣る)ものです。こちらも「どちらか1つにしかない」ものは少なく、多くは Claude Code と Codex の両方にあります。

機能Claude CodeCodex CLIQwen Code
クラウドで作業させる(手元の PC を使わない)○ クラウド版・--cloud・/teleport○ Codex cloud・codex apply×
自社の最新モデルに合わせた調整○ Claude○ GPTQwen 系は公式の組み合わせ
OS レベルのサンドボックスが最初から効く△ 設定で有効化(/sandbox)○ 既定で有効(信頼したフォルダーは作業フォルダーだけ書ける・ネット接続なし)△ 既定でオフ(-s で Docker・Seatbelt)
自分の Chrome を操作○ /chrome△ ブラウザ拡張(ChatGPT)△ /browser-use(拡張機能が必要)
Slack などから依頼○ Slack 連携○ Codex cloud(Slack・Linear)△ qwen channel(Telegram・中国系アプリ・GitHub・GitLab)
定期実行をクラウドで○ /schedule△ ChatGPT・Codex の Automations(スケジュール実行)× (/loop は起動中の画面の中だけ)
クラウドでのコードレビュー○ /ultrareview○ Codex cloud のコードレビュー(GitHub など)△ GitHub Action(qwen-code-action)。/review は手元で実行

Claude Code だけにある細かな機能としては、dontAsk モード(許可済み以外は自動で拒否)、/design・/artifacts、/import(Codex・Gemini CLI・Cursor の設定を取り込み)などがあります。Codex だけにある細かな機能としては、Starlark で書く実行ルール(.rules)と codex execpolicy check、/pets などがあります。

実際に使うならどうか

どのツールを使うかの判断図。Claude・GPT の最新モデルなら Claude Code か Codex、Qwen・DeepSeek・Kimi など他社の AI なら Qwen Code、パソコンの中の AI だけなら Qwen Code か Codex、複数の AI を手軽に比べるなら Qwen Code の /arena

図9:使いたい AI から選ぶ。できることはほぼ同じなので、決め手は「どの AI で動かすか」

このMacで一通り使ってみた感想をまとめます。

良かったところ

  • ローカルモデルでちゃんと仕事をする:27B のモデルで、3つのバグの発見から修正・テスト実行までを約100秒で終えました。コードが外に出ず、料金もかかりません
  • Claude Code から移りやすい:コマンド名・権限ルール・フック・サブエージェントの書き方がほぼ同じで、AGENTS.md も読むため、既存のプロジェクトにそのまま入れられます
  • 画面が日本語:確認画面の選択肢まで日本語なので、英語が苦手な方でも操作に迷いにくいです(返答の日本語は他の2つも同じ)
  • 比べるのが手軽:/model での切り替えと /arena で、「このタスクにはどのモデルで十分か」を手元で確かめられます(他の2つでも手作業ならできます)

気になったところ

  • ローカルモデルの速さに合わせた調整が要る:自動モードの分類器の時間切れ、1回実行でも自動メモリの処理を待つ、--json-schema がツールを呼ばずに失敗する、といった点は、クラウドの速いモデルを前提にした作りから来ています
  • ドキュメントと実装のずれ:既定の承認モード、/arena の書き方、/commit の有無、qwen mcp add の既定の保存先、.agents/skills を読むこと――いずれも実機やソースで確かめないと分かりませんでした。開発が速い(npm の記録では、2026年9月だけで 0.23.0 から 0.24.6 まで12回リリース)ぶん、ドキュメントが追いついていない印象です
  • 既定の安全設定がゆるめ:サンドボックスは既定でオフ、フォルダーの信頼機能も既定でオフ(知らないリポジトリの .qwen/settings.json や .env もそのまま読まれる。ただしプロジェクトの MCP サーバーは、実機で見たとおり qwen mcp approve するまで接続されない)、利用統計の送信は既定でオン(送り先は Alibaba Cloud。プロンプトやコードは送らないと明記)です。気になる方は privacy.usageStatisticsEnabled: false と security.folderTrust.enabled: true を設定しておくと安心です

どんな人に向くか

  • Qwen・DeepSeek・Kimi・GLM など、Claude・GPT 以外のモデルを、公式にサポートされた形で普段使いしたい人
  • パソコンの中の AI と他社の AI を、1つの画面で切り替えながら使いたい人
  • 複数のモデルを手軽に比べて、用途ごとに使い分けたい人
  • Alibaba Cloud の定額プラン(Coding Plan)や、DingTalk・WeChat などの中国系チャットアプリと組み合わせたい人

逆に、Claude や GPT の最新モデルを使うなら、それぞれに合わせて作り込まれた Claude Code や Codex CLI をそのまま使うのが自然です。コードを外に出さずにパソコンの中の AI だけで使いたい場合も、Codex は --oss で公式に対応しているので、Qwen Code だけが選択肢というわけではありません。3つは排他的ではなく、スキルを Codex と共有したり、Qwen Code や Claude Code から Codex を呼んだりもできます。

トラブルシューティング

つまずいたときの確認順。ログイン画面から進めない、Ripgrep の EACCES、Auto なのに毎回許可確認、/goal や /review が違う動き、ドキュメントにあるコマンドが無い、の5つと対処

図10:この記事の検証で実際に起きたつまずきと対処

症状原因対処
起動するとログイン画面から進めない/「Qwen OAuth free tier was discontinued」無料の Qwen OAuth は2026年4月15日で終了/auth で別の方法を選ぶか、settings.json に modelProviders と security.auth.selectedType を書く
認証に失敗したあと、画面が出なくなる失敗した security.auth.selectedType が保存されている~/.qwen/settings.json からその行を消して再起動
「Ripgrep not available … EACCES」npm 版 0.24.6 の同梱 rg に実行権限がないchmod +x …/vendor/ripgrep/<OS名>/rg
自動モードなのに「Classifier stage 1 unavailable」で止まる分類器が10秒以内に答えられないpermissions.autoMode.classifier.timeouts を延ばす/速いモデルを /model --fast で指定
/goal や /review が説明と違う動き~/.agents/skills の同名スキルが優先されている/help で [User] 表示を確認し、改名するか skills.disabled
ドキュメントにあるコマンドが無いGitHub の main がリリースより先行/条件付きのコマンドリリースタグのドキュメントと比べる。/trust・/lsp・/workflows は設定で有効化
対話モードに入らず1回で終わる引数つき起動は1回実行/環境変数に CI_ で始まるものがあるqwen -i "…" を使う。env -u CI_TOKEN qwen のように外す
右クリックや範囲選択が効かない画面がマウスを使う設定(既定)設定 ui.mouseTracking: false。Shift(macOS は Option)を押しながらドラッグでも選択できる
長い応答が途中で切れる1回の応答に15分の上限がある環境変数 QWEN_STREAM_MAX_LIFETIME_MS を増やす(0 で無制限)

原因が分からないときは、qwen --safe-mode(設定・スキル・フック・MCP を全部切って起動)で切り分け、/doctor で環境を確認するのが近道です。

まとめ

  • Qwen Code は、Gemini CLI をもとに Qwen チームが育てたオープンソースの AI コーディングエージェントです。Claude Code・Codex と比べて できることはほぼ同じ で、違いは「どの会社の API でも、自分の PC のモデルでも使う前提で作られている」という立ち位置です(Claude Code・Codex も設定すればローカルの AI につながることを実機で確認しました)
  • 無料の Qwen OAuth は2026年4月15日で終了しています。費用ゼロで試すなら、LM Studio や llama.cpp などのローカルモデルが現実的で、実際に 27B モデルでバグ修正まで完了しました
  • コマンドは組み込み67+同梱スキル18(0.24.6・このMacの実機)。多くは Claude Code・Codex と名前も働きも共通です。/arena・/learn・qwen board など Qwen Code にしかないコマンドもありますが、他の2つでも手作業や別の機能で同じことができるものがほとんどで、本当に Qwen Code だけなのは Alibaba Cloud の Batch API や中国系チャットアプリへの対応くらいでした
  • ローカルモデルで使うなら、自動モードの分類器の制限時間、ripgrep の実行権限、~/.agents/skills との名前の衝突に注意してください

次の一歩としては、まず /help の一覧で自分の環境のコマンドを確かめ、/model でモデルを2つ並べて同じ質問を比べてみるのがおすすめです。慣れてきたら /arena や qwen serve の Web 画面も試してみてください。

参考リソース

  • Qwen Code(GitHub):https://github.com/QwenLM/qwen-code
  • 公式ドキュメント(日本語):https://qwenlm.github.io/qwen-code-docs/ja/users/overview
  • コマンド一覧(commands.md):https://qwenlm.github.io/qwen-code-docs/ja/users/features/commands
  • 認証(auth.md):https://qwenlm.github.io/qwen-code-docs/ja/users/configuration/auth
  • モデルプロバイダー(model-providers.md):https://qwenlm.github.io/qwen-code-docs/ja/users/configuration/model-providers
  • 承認モード・自動モード:https://qwenlm.github.io/qwen-code-docs/ja/users/features/approval-mode
  • Claude Code のコマンド一覧:https://code.claude.com/docs/en/commands
  • Codex CLI のコマンド一覧:https://developers.openai.com/codex/cli/slash-commands

PR

生成AIを体系的に学びたい方へ

「DMM 生成AI CAMP 学び放題」は、ChatGPTなどの生成AIを学べる月額制のオンライン学習サービスです。仕事への活用に向けて継続的に学びたい方は、公式サイトでコース内容や入会条件をご確認ください。

DMM 生成AI CAMP 学び放題

リンク先は公式サイトです。

AI入門Claude CodeCodexローカルLLM
Takuyaをフォローする