Qwen Code 週報:モデル過負荷時の自動切り替え、サブエージェントのネスト派生、WeCom チャンネル接続
Qwen Code は今週、v0.19.6 〜 v0.19.8 の 3 つの正式版をリリースし、150 以上の PR をマージしました。4 つの方向性をカバーしています:
モデル過負荷でも止まらない。 これまで 429/503/529 に遭遇すると会話が中断し、手動でモデルを切り替えて再送信する必要がありました。今回、fallback チェーンにより、メインモデルのリトライ予算が尽きると自動的に代替モデルへ切り替えて応答を継続します。さらに /model --project でプロジェクトごとに異なるモデルをバインドでき、毎回手動で切り替える必要がなくなりました。
サブエージェントがサブエージェントを派生できるようになりました。 これまでサブエージェントは「リーフノード」でした。タスクを受け取ったら自分で最後までこなすだけで、作業を分割することはできませんでした。今回のデフォルト 5 レイヤーのネスト深度により、サブエージェントはサブタスクを次のレイヤーに分解して渡せるようになりました。TUI と Web Shell の両方でツリー構造を確認でき、誰が誰を派生したかが一目でわかります。
Web Shell のセッション管理が体系化されました。 アーカイブ/削除/命名グループ/カラーラベル/スケジュールタスク管理ページ/セッション概要の分割画面。これまでセッションサイドバーは切り替えだけでしたが、整理、分類、監視、並列操作ができるようになりました。7 つの PR により、セッションが「フラットなリスト」から管理可能なリソースへと生まれ変わりました。
WeCom と権限制御の補完。 WeCom スマートボットチャンネルに接続。Bot ID と Secret の 2 つの設定だけで使え、企業の管理者権限でコールバックを開く必要はありません。PreToolUse hook の “ask” が実際に確認ダイアログを表示するようになりました。これまでこのオプションはサイレント拒否と同等でした。権限ルールは Tool(param:value) 構文もサポートし、パラメータ値の粒度で制御できます。
✨ 新機能
モデル過負荷時の自動切り替え + プロジェクトレベルのモデル設定
モデルが 429/503/529 を返すと、会話はその場で止まっていました。このバージョンでは opt-in の fallback チェーンを追加しました。メインモデルが同じモデルへのリトライ予算を使い切ると、自動的に fallback リストの次のモデルに切り替えて応答を続けます。fallback パスを通るのは容量不足とレート制限の問題だけです。認証、クォータ、設定、クライアントエラーは直接失敗します。これらは「モデル過負荷」ではなく「設定の問題」だからです。
fallback はユーザーに可視のコンテンツが出力される前に進行します。fallback モデルがすでに一部の内容を出力した後にダウンした場合、残りの fallback は試行されません。ユーザーには途切れた応答が見えます。ただし次のユーザーターンではメインモデルから再開し、fallback モデルに固定されることはありません。
/model --project と組み合わせると、プロジェクトごとに異なるモデルをバインドできます。--project はプロジェクトの .qwen/settings.json に書き込み、--global はユーザーの ~/.qwen/settings.json に書き込みます。フラグなしの場合は既存の動作を維持します。スコープフラグは --fast、--voice、--vision にも適用されます。
活用方法:
- fallback モデルリストを設定し、モデル過負荷時に自動切り替え。手動でモデルを変更する必要なし
- 認証/クォータエラーは fallback で隠されず、問題を早期に検知
/model --projectでプロジェクトごとに異なるモデルを使用。設定はプロジェクトに紐づく/model --globalでグローバルデフォルトを設定。新規プロジェクトはこれを継承

サブエージェントのネスト派生 + ツリービュー
サブエージェントがさらにサブエージェントを派生できるようになりました。デフォルトの深度上限は 5 レイヤーで、model.maxSubagentDepth で設定します。1 に設定すると以前の動作に戻ります。サブエージェントはサブエージェントを派生できなくなります。
2 つの保護機構があります。schema 準備段階では、最深レイヤーのサブエージェントには agent ツールが表示されません(そのツールの存在自体を認識しません)。ランタイムガードでは、深度上限を超える派生リクエストは拒否されます。
TUI と Web Shell の両方でネストされたツリー構造を確認できます。サブエージェントは親エージェントの下に ↳ マークとインデント付きで表示されます。親エージェントが離脱すると、サブエージェントはルートノードに昇格し、“from <parent>” と注記されます。詳細ビューには “Level N · from <parent type>” と表示されます。blocking ラベルと停止確認もリンク対応になりました。キャンセルがターンの終了を引き起こす場合にのみ確認ダイアログが表示されます。
この機能はデフォルトで有効です。 アップグレード後、すべての既存環境でネスト派生機能が利用できます。Fork 子プロセス、teammates、workflow agents は引き続き対象外です。Arena セッションでもネストが可能になりました。バックグラウンドエージェントの復元時には、元の深度と起動時のキャップが復元されます。
活用方法:
- サブエージェントが複雑なタスクを処理する際に、自身でサブエージェントを派生してサブタスクを分担
- TUI と Web Shell で完全なエージェントツリー構造を確認
model.maxSubagentDepthでネスト深度の上限を調整

Web Shell セッション管理:アーカイブ、グループ化、スケジュールタスク、分割画面
7 つの PR により、Web Shell のセッションサイドバーを「フラットなリスト」から、整理・分類・監視・並列操作が可能な管理パネルへと改造しました。
アーカイブと削除。 各セッション行にショートカット操作と「…」オーバーフローメニュー(名前変更/アーカイブ/削除)を追加しました。アーカイブされたセッションは折りたたみ可能な “Archived” 領域に収納され、復元または完全削除ができます。現在使用中のセッションはアーカイブや削除が許可されず、アーカイブ済みセッションは開けません(409 session_archived)。削除はハードデリートで、二次確認があります。内部では daemon の archiveState と /sessions/archive、/sessions/unarchive エンドポイントを利用します。
命名グループとカラーラベル。 グループの作成、名前変更、削除ができ、セッションをドラッグして追加し、グループにカラーラベルやピン留め/アーカイブ状態を設定できます。グループデータは daemon レイヤーから UI まで一貫して流れます。daemon 側のプロジェクトレベル sidecar ファイルがグループメタデータを保存し、REST/ACP ルートが CRUD 操作を提供し、機能ゲートのもとでクライアントの対応状況に応じて公開されます。
セッション概要と分割画面。 大画面ではサイドバーにセッション概要パネルが表示され、すべてのセッションがリアルタイムカードで表示されます。優先度順にソートされ、承認待ちが最上位、次が実行中、最後にアイドル状態が来ます。各カードには現在のモデルとクライアント数が表示されます。複数選択後に分割画面で閲覧できます。現在のタブ内で分割するか、新しいブラウザタブで開くか(?split=a,b URL パラメータ)。N 個の独立したチャットパネルが並んで表示され、それぞれに独自のセッションコンテキストがあり、キーボードフォーカスはクリックしたパネルのみに作用します。
活用方法:
- 長期間蓄積したセッションをアーカイブ整理し、プロジェクトごとにグループ化・カラーラベル付け
- スケジュールタスクを視覚的に作成・管理。cron 式を手書きする必要なし
- 各スケジュールタスクに独立したセッションがあり、実行履歴とトランスクリプトをいつでも確認可能
- 大画面で複数のセッションのリアルタイム状態を分割画面で並列確認
詳細は PR #6293 、#6350 、#6305 、#6348 、#6389 、#6453 、#6400 を参照
WeCom チャンネル接続
@wecom/aibot-node-sdk を通じて WeCom スマートボットに接続します。設定は Bot ID と Secret のみ。Corp ID、Agent ID、コールバック Token、EncodingAESKey は不要で、パブリックなコールバックアドレスも必要ありません。
WebSocket 常時接続でメッセージを受信し、テキスト、音声転写、図文混在、画像、ファイル、動画、引用コンテンツをサポートします。Assistant の応答は WeCom の markdown 形式で送信されます。送信時はローカル画像タグ(チャンネル一時ディレクトリ内)のみサポートされ、ファイル/動画/音声タグは無視されます。
設定方法:
{
"type": "wecom",
"botId": "your-bot-id",
"secret": "your-secret",
"cwd": "/path/to/project"
}起動コマンド:qwen channel start my-wecom
活用方法:
- Bot ID + Secret の 2 つの設定で WeCom に接続。企業管理者権限は不要
- テキスト、音声、画像、ファイル、動画、引用メッセージを受信
- WeCom グループで Qwen Code に markdown 形式のメッセージを応答させる
詳細は PR #6436 を参照

PreToolUse hook のネイティブ確認ダイアログ
PreToolUse hook が permissionDecision: "ask" を返す場合、以前は “deny” と同じでした。確認ダイアログは一切表示されず、hook 開発者はユーザーに選択肢が表示されると思っていましたが、実際にはサイレントに拒否されていました。
今回 “ask” がネイティブ TUI 確認ダイアログを表示するようになりました。選択肢は “Yes, allow once” と “No, suggest changes” の 2 つ。“always allow” はありません。hook は呼び出されるたびに再評価されるからです。承認されるとツールが再実行され、拒否されるとキャンセルされます。
非対話型 CLI やバックグラウンドエージェントのシナリオでは、“ask” は deny にフォールバックします。ハングして待つことはありません。既存の awaiting_approval メカニズムを再利用し、別のパスは設けていません。“denied” と “stop” の動作は変更なし。PermissionRequest hook も影響を受けません。
活用方法:
- PreToolUse hook で “ask” を使い、ユーザーにツールの実行可否を判断させる
- 非対話型シナリオでのハングアップを心配する必要がない
- hook が呼ばれるたびに再評価されるため、恒久的な許可にはならない
詳細は PR #5629 を参照

自動生成 Skills のプレビューレビュー
エージェントが skill を自動生成する際、以前はファイル名しか確認できず、承認后才に何が書かれているかわかる状態でした。今回、レビューダイアログに完全な内容がインラインプレビューされるようになりました。frontmatter も含まれます。
モデルが生成した内容はサニタイズされます。ANSI/VT 制御シーケンスは無害なエスケープに変換され、CRLF は通常の改行になります。読み取り上限は 64 KiB、表示上限は 12 行(折り返し計算込み)で、超えた部分は “lines hidden” / “truncated” とマークされます。
o キーで設定されたエディタで skill ファイルを開けます。現在の skill レビューはスキップされません。ファイル保存後、プレビューは自動更新されます。GUI エディタ(macOS のデフォルト動作)と組み合わせると、編集してから確認できます。
“Turn off auto-generated skills” オプションはリストの最後に表示され、選択すると即座に有効になります(再起動不要)。workspace レベルで永続化されます。現在のバッチは保留されます(削除されず)、/memory から再有効化するとバッチが戻ります。
活用方法:
- 承認前に skill の完全な内容を確認。受け入れてからファイルを探しに行く必要なし
oキーでエディタで直接 skill 内容を編集。保存後プレビューが自動更新- ワンクリックで自動生成 skill をオフに。現在のバッチは削除されず、/memory からいつでも復元可能
詳細は PR #6393 を参照
| Before (global qwen 0.19.6) — name + description only | After — single-skill review with inline preview and turn-off option |
|---|---|
| After — last batch item, bulk options hidden | After — “Turn off auto-generated skills” selected |
|---|---|
📊 その他の新機能
| 機能 | PR | 影響 |
|---|---|---|
| Daemon ステータスダッシュボード:サイドバーで実行状態、時系列メトリクス、Token 使用量を確認 | #6272 、#6307 、#6388 | コマンドを打たなくても、健全性とトレンドを一画面で確認 |
| maxSubAgents:並列サブエージェント数を制限 | #6354 | リソース消費を制御し、サブエージェントの暴走を防止 |
| Tool(param:value) 権限:パラメータ値の粒度でツールを制御 | #6106 | 特定の model/skill のサブエージェント派生を精密に禁止 |
スタック slash-skill 呼び出し:/skill1 /skill2 を連続実行 | #6361 | 複数のスキルを段階的に操作せず連鎖実行 |
| tools.visible 設定:遅延ツールを選択的に公開 | #6372 | 起動時に必要なツールだけを表示 |
| スケジュールタスクの有効期限設定可能:cron/loop タスクの有効期限 | #6173 | 長期スケジュールタスクが予期せず失効しない |
| Hook ステータス注入:Stop/SubagentStop hook でバックグラウンドタスク情報を取得 | #6531 | hook がスケジュールタスクや cron の状態を認識可能 |
| 権限モードバッジ:DEFAULT モードで現在の権限を下部に表示 | #6498 | 現在のセキュリティモードを一目で確認 |
| コンパクト echarts データブロック:Web Shell でチャートをサポート | #6232 | データビジュアライゼーションをターミナルで直接確認 |
| MCP mentions + アイコン化 @ 引用:Web Shell | #6279 | @ 引用がより直感的に |
| Markdown テーブルコントロール:列の並べ替え/ズーム/固定 | #6444 | 大きなテーブルの閲覧体験が向上 |
| LSP ホットリロード:言語サーバーのホットリロードをサポート | #5953 | 設定変更時に LSP を再起動する必要なし |
| チャンネル記憶インテント:自然言語によるチャンネル記憶 | #6376 | チャンネルシナリオの記憶がより自然に |
| /review 品質ゲート:issue の正確性と根本原因の帰属 | #6395 | review 結果の信頼性が向上 |
| glob パフォーマンス最適化:走査時に無視ディレクトリを枝刈り | #6123 | 大規模プロジェクトでのファイル検索が高速化 |
| slash コマンド検出:メニューの高度化、グループ化カウント、あいまい検索 | #6267 | コマンドの検索がより速く |
| per-worktree auto-memory:worktree ごとに独立した記憶 | #6462 | 異なるブランチの記憶が混在しない |
| Agent working_dir:サブエージェントを worktree に固定 | #6456 | サブエージェントが指定ディレクトリで作業 |
| 拡張ホットリロード:プラグイン変更時に自動リロード | #6347 | プラグイン変更時に再起動不要 |
| dmPolicy:DM メッセージを無効化 | #6521 | チャンネルボットがグループチャットのみに応答 |
| serve 環境分離:serve モードの環境分離 + 総量制御 | #6416 | 複数プロジェクトの serve が相互に干渉しない |
| マルチワークスペースセッションルーティング:serve が複数ワークスペースをサポート | #6511 | 1 つの serve インスタンスで複数プロジェクトに対応 |
| per-tool-call タイムアウト:単一のツール呼び出しタイムアウト | #6136 | 1 つのツールがハングしてもセッション全体が引きずられない |
| dataviz 内蔵 skill:データビジュアライゼーションスキル | #6198 | すぐに使えるチャート生成 |
🔧 重要な修正
| 修正 | PR | 影響 |
|---|---|---|
| auth 401 修正:認証失効後に 401 で止まらなくなった | #6284 | token 期限切れでセッションがブロックされない |
| OpenAI 非 SSE 検出:非ストリーミング応答を正しく識別 | #6466 | OpenAI 互換エンドポイントでの誤判定が解消 |
| ストリーミングスクロールロック:ストリーミング出力中にスクロール位置が奪われない | #6170 、#6421 | 長い出力中に自由にスクロールして履歴を確認可能 |
| Windows pager 修正:Windows で pager がクラッシュしなくなった | #6390 | Windows ユーザー体験が安定 |
| qqbot セキュリティ修正:チャンネルセキュリティ強化 | #6200 | QQ チャンネルボットの安全性が向上 |
| コンテキストウィンドウデフォルト 200k:デフォルト値を修正 | #6387 | コンテキストウィンドウの設定がより正確に |
| ACP settings 競合修正:設定読み書きの競合 | #6292 | 並行設定でエラーが発生しない |
| /clear ブロック解除:/clear がフリーズしなくなった | #6499 | 画面クリアコマンドが正常に復帰 |
👥 コントリビューター
| コントリビューター | 貢献内容 | 参考 PR リンク |
|---|---|---|
| @wenshao | Daemon ステータスダッシュボード、時系列メトリクス、Token 使用量分析、セッションアーカイブ/削除、セッショングループ + カラーラベル、スケジュールタスク管理ページ、スケジュールタスク独立セッション、統合タスクセッション、セッション概要 + 分割画面、slash コマンド検出、Agent working_dir、serve ポート自動リトライ | #6272 、#6307 、#6388 、#6293 、#6350 、#6348 、#6389 、#6453 、#6400 、#6267 、#6456 、#6513 |
| @ytahdn | セッション復元、skill 設定無効化、カスタム @mention パネル、セッションコールバック、仮想スクロール、ツール詳細、ストリーム中断エラー処理、Todo リフレッシュ、ツール呼び出しサマリー、外部分割画面制御 | #6220 、#6223 、#6242 、#6333 、#6342 、#6352 、#6357 、#6362 、#6399 、#6422 、#6424 、#6425 、#6450 、#6523 |
| @yiliang114 | モデル fallback チェーン、maxSubAgents、auth 401 修正 | #6273 、#6354 、#6284 |
| @tanzhenxin | サブエージェントネスト派生、Web Shell ツリービュー、自動生成 Skills プレビューレビュー、コンテキストウィンドウデフォルト値修正 | #6189 、#6239 、#6393 、#6387 |
| @doudouOUC | Daemon セッション整理バックエンド、serve 環境分離、マルチワークスペースセッションルーティング | #6305 、#6416 、#6511 |
| @qqqys | WeCom チャンネル接続、チャンネル記憶インテント、チャンネルループツール、dataviz 内蔵 skill | #6436 、#6376 、#6287 、#6198 |
| @DennisYu07 | Tool(param:value) 権限、スタック slash-skill 呼び出し、権限モードバッジ、Hook ステータス注入 | #6106 、#6361 、#6498 、#6531 |
| @LaZzyMan | PreToolUse hook ネイティブ確認ダイアログ | #5629 |
| @DragonnZhang | /review 品質ゲート | #6395 |
| @Alex-ai-future | プロジェクトレベルモデル設定 /model —project | #6060 |
| @VectorPeak | OpenAI 非 SSE 検出修正 | #6466 |
| @han-dreamer | Windows pager 修正 | #6390 |
| @MikeWang0316tw | ストリーミングスクロールロック修正 | #6170 、#6421 |
| @water-in-stone | LSP ホットリロード | #5953 |
| @ZijianZhang989 | 拡張ホットリロード | #6347 |
| @BZ-D | MCP mentions + アイコン化 @ 引用 | #6279 |
| @jifeng | Markdown テーブルコントロール(列の並べ替え/ズーム/固定) | #6444 |
| @zhangxy-zju | コンパクト echarts データブロック | #6232 |
| @Eric-GoodBoy-Tech | qqbot セキュリティ修正 | #6200 |
| @TianYuan1024 | スケジュールタスク有効期限設定可能化 | #6173 |
| 🆕 @callmeYe | 🎉 初貢献:セッション記憶の忘却/ドリーム、スケジュールタスクタイムライン UI、ユーザー管理記憶 | #6227 、#6386 、#6432 |
| 🆕 @kagura-agent | 🎉 初貢献:prompt-cache tools プリフィックス保持、フォアグラウンド同時実行上限、skill スキャンキャッシュ | #6225 、#6300 、#6155 |
| 🆕 @Aleks-0 | 🎉 初貢献:tools.visible 設定、UTF-8 cmd.exe、KV-cache | #6372 、#6216 、#6420 |
| 🆕 @Nas01010101 | 🎉 初貢献:リクエストタイムアウト、@-attached ファイル | #6288 、#6295 、#6324 |
| 🆕 @zjunothing | 🎉 初貢献:per-worktree auto-memory、/clear ブロック解除、ステータス行ジッター修正 | #6462 、#6499 、#6533 |
| 🆕 @minmax | 🎉 初貢献:glob パフォーマンス最適化、per-tool-call タイムアウト | #6123 、#6136 |
| 🆕 @pomelo-nwu | 🎉 初貢献:PR ゲート強化、review 提案ルーティング | #5723 、#5786 |
| 🆕 @chiga0 | 🎉 初貢献:セッション artifact API、daemon side-channel ドキュメント | #5895 、#4511 |
| 🆕 @gauravyad86 | 🎉 初貢献:bootstrap クイックパス、transform_data 分離 | #6188 、#6285 |
| 🆕 @mvanhorn | 🎉 初貢献:macOS seatbelt 設定パス、ストリーミングアイドルタイムアウトデフォルト値 | #6172 、#6107 |
| 🆕 @AmariahAK | 🎉 初貢献:ビジュアルモデル選択 | #6209 、#6236 |
| 🆕 @barry166 | 🎉 初貢献:VSCode 認証、audio prebuild | #6274 、#6275 |
| 🆕 @chenghuichen | 🎉 初貢献:dmPolicy DM メッセージ無効化 | #6521 |
| 🆕 @beantownbytes | 🎉 初貢献:非 DashScope 環境での qwen thinking 無効化 | #6271 |
| 🆕 @heyparth1 | 🎉 初貢献:コンテキストウィンドウ計算修正 | #6266 |
| 🆕 @tomsen-ai | 🎉 初貢献:パラメータなしツール呼び出し | #6250 |
アップグレード方法:npm i @qwen-code/qwen-code@latest -g を実行して最新バージョンにアップグレードしてください。
質問やフィードバックがありましたら、GitHub Issues までお気軽にお寄せください。