@qwen-code/qwen-code 0.18.4 → 0.18.5-preview.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundled/qc-helper/SKILL.md +13 -5
- package/bundled/qc-helper/docs/configuration/_meta.ts +1 -0
- package/bundled/qc-helper/docs/configuration/auth.md +75 -54
- package/bundled/qc-helper/docs/configuration/model-providers.md +221 -185
- package/bundled/qc-helper/docs/configuration/qwen-ignore.md +31 -15
- package/bundled/qc-helper/docs/configuration/settings.md +70 -53
- package/bundled/qc-helper/docs/configuration/themes.md +7 -4
- package/bundled/qc-helper/docs/extension/extension-releasing.md +1 -1
- package/bundled/qc-helper/docs/extension/introduction.md +27 -21
- package/bundled/qc-helper/docs/features/approval-mode.md +2 -0
- package/bundled/qc-helper/docs/features/arena.md +3 -3
- package/bundled/qc-helper/docs/features/channels/overview.md +1 -1
- package/bundled/qc-helper/docs/features/channels/plugins.md +1 -1
- package/bundled/qc-helper/docs/features/commands.md +6 -1
- package/bundled/qc-helper/docs/features/headless.md +1 -1
- package/bundled/qc-helper/docs/features/mcp.md +78 -10
- package/bundled/qc-helper/docs/features/sandbox.md +2 -2
- package/bundled/qc-helper/docs/features/tool-use-summaries.md +1 -1
- package/bundled/qc-helper/docs/integration-github-action.md +2 -2
- package/bundled/qc-helper/docs/overview.md +1 -1
- package/bundled/qc-helper/docs/quickstart.md +9 -5
- package/bundled/qc-helper/docs/qwen-serve.md +14 -2
- package/bundled/qc-helper/docs/support/tos-privacy.md +1 -1
- package/chunks/{agent-LYTC56HT.js → agent-P4KSTVXX.js} +24 -22
- package/chunks/{agent-headless-FPUP5WHP.js → agent-headless-QUAPWF55.js} +24 -22
- package/chunks/{anthropicContentGenerator-OLOGBVLP.js → anthropicContentGenerator-7352A7I5.js} +17 -14
- package/chunks/artifact-tool-5J4HUZAV.js +675 -0
- package/chunks/{askUserQuestion-ANRVSBIJ.js → askUserQuestion-HF7HCWDD.js} +20 -7
- package/chunks/{ca-K6MD665I.js → ca-7WC7ELX6.js} +1 -0
- package/chunks/chunk-22IFUCVR.js +291 -0
- package/chunks/{chunk-M5VYHAHT.js → chunk-2BIF2NVV.js} +2 -2
- package/chunks/{chunk-AQDPHFDZ.js → chunk-2QDQTWCI.js} +1 -1
- package/chunks/{chunk-2ES3D3TW.js → chunk-3BR4OIOE.js} +3 -3
- package/chunks/{chunk-N5QHMPZU.js → chunk-3UALQ56H.js} +1 -1
- package/chunks/{chunk-5RVEAAD2.js → chunk-BC5POO46.js} +8 -7
- package/chunks/{chunk-DZCZZPCY.js → chunk-BGUDAULQ.js} +11 -290
- package/chunks/{chunk-FPZF3BNV.js → chunk-BNXANYLH.js} +1 -1
- package/chunks/{chunk-IKOWINH4.js → chunk-C4K3FEQ2.js} +42 -2
- package/chunks/{chunk-PTGKSUUJ.js → chunk-CGEGHF2C.js} +2 -207
- package/chunks/chunk-EEEZIVFJ.js +908 -0
- package/chunks/{chunk-GBTJHKQ6.js → chunk-EIJYMXXX.js} +619 -135
- package/chunks/chunk-EJYJYJZ2.js +3703 -0
- package/chunks/{chunk-F6FP3URI.js → chunk-EW6C27XX.js} +1 -1
- package/chunks/{chunk-HU3RKEK2.js → chunk-F6XNTYNE.js} +216 -1
- package/chunks/{chunk-4HMWGHPP.js → chunk-GZCJS5WH.js} +2 -2
- package/chunks/{chunk-E5SRTXRG.js → chunk-HGNSRCRB.js} +1 -1
- package/chunks/{chunk-IUEQOXOI.js → chunk-KBXLIVWQ.js} +2 -2
- package/chunks/{chunk-JJHY7NAD.js → chunk-L7U2RI5O.js} +59 -57
- package/chunks/{chunk-JN6FVOPP.js → chunk-NKJ6LRCR.js} +2 -2
- package/chunks/{chunk-7OCZ77KA.js → chunk-NWLUISRA.js} +1 -1
- package/chunks/{chunk-JIJBNW4A.js → chunk-OTBK43JR.js} +1 -1
- package/chunks/{chunk-WWU2KUSR.js → chunk-PRYMDRBV.js} +1 -1
- package/chunks/{chunk-KQIKOTQJ.js → chunk-RYLJU2DY.js} +60 -5
- package/chunks/{chunk-VWPDSQZY.js → chunk-T2VDEFUU.js} +2 -2
- package/chunks/{chunk-LXUQBWQA.js → chunk-T336V435.js} +93 -45
- package/chunks/{chunk-4TW2JM5Q.js → chunk-TXVGVZYR.js} +3 -3
- package/chunks/{chunk-6Z2MVJIJ.js → chunk-UMRZ7XCR.js} +172 -5017
- package/chunks/{chunk-7GX7XYZU.js → chunk-XU5P23GN.js} +3 -3
- package/chunks/{chunk-SZWDOOGV.js → chunk-ZC675NGC.js} +11 -11
- package/chunks/{chunk-32SSXBMG.js → chunk-ZXNEOCW2.js} +8049 -5520
- package/chunks/{computer-use-P4WQBATW.js → computer-use-4TLHI3UR.js} +26 -23
- package/chunks/contextCommand-HFEITKSR.js +56 -0
- package/chunks/{cron-create-OKGQO6GX.js → cron-create-A5637KCI.js} +12 -9
- package/chunks/{cron-delete-DTJP7L6O.js → cron-delete-AADOSEOZ.js} +4 -4
- package/chunks/{cron-list-VKZUASFG.js → cron-list-OFCPTT2Y.js} +4 -4
- package/chunks/{de-K2F3T3TR.js → de-ACHALDED.js} +1 -0
- package/chunks/{dist-OLC6NBSB.js → dist-DZ6AJDX4.js} +1 -1
- package/chunks/{dist-QUSDBLAK.js → dist-ZBX7LPJZ.js} +6 -1
- package/chunks/{edit-CS7DSS4Z.js → edit-B7H73V6O.js} +24 -22
- package/chunks/{en-KGSAKBJP.js → en-7OGNWWME.js} +49 -0
- package/chunks/{enter-worktree-PA4HPHJK.js → enter-worktree-GG7ZHYPS.js} +24 -22
- package/chunks/{enterPlanMode-SFE5AFKZ.js → enterPlanMode-RHTAKG52.js} +32 -28
- package/chunks/{exit-worktree-FR3AZTC6.js → exit-worktree-U7VQZRMG.js} +24 -22
- package/chunks/{exitPlanMode-AHOUO44D.js → exitPlanMode-S35A36II.js} +36 -28
- package/chunks/{fr-2CAQEOK6.js → fr-GVKZ27MF.js} +1 -0
- package/chunks/{geminiContentGenerator-AXCVDKGI.js → geminiContentGenerator-W7KVATBA.js} +4 -4
- package/chunks/{glob-BQPAW3IW.js → glob-WOFF7ECI.js} +26 -23
- package/chunks/{grep-2F7BL5TQ.js → grep-MWNYWYWQ.js} +24 -22
- package/chunks/{ja-QWL7V6OJ.js → ja-FKZ2WZ4D.js} +1 -0
- package/chunks/{keychain-token-storage-ALKQXYJQ.js → keychain-token-storage-CSYMNRPP.js} +2 -2
- package/chunks/{loop-wakeup-RX6YIUSG.js → loop-wakeup-DGSMT4N6.js} +5 -5
- package/chunks/{ls-6PLNWHMU.js → ls-UGRZ4ZOM.js} +6 -6
- package/chunks/{lsp-3HFQU4OF.js → lsp-72IJURW3.js} +2 -2
- package/chunks/{monitor-YTTMDFW2.js → monitor-AYUINLYN.js} +24 -22
- package/chunks/{notebook-edit-7TNZMTBR.js → notebook-edit-EP4D4WFD.js} +25 -23
- package/chunks/{openaiContentGenerator-JA6YXXPI.js → openaiContentGenerator-SLYYF7AM.js} +12 -13
- package/chunks/{pt-2SPOLMAY.js → pt-SY5NCFGR.js} +1 -0
- package/chunks/{qwenContentGenerator-NBOVGW7B.js → qwenContentGenerator-VZ7JYU4A.js} +27 -25
- package/chunks/{qwenOAuth2-XWC5SU63.js → qwenOAuth2-K4AASPCV.js} +5 -4
- package/chunks/{read-file-RUBU3KUA.js → read-file-65EQ53KS.js} +9 -8
- package/chunks/{ripGrep-TPFC7KZF.js → ripGrep-5XLHJDDM.js} +24 -22
- package/chunks/{ru-35IVJTEH.js → ru-FWNXJG4F.js} +1 -0
- package/chunks/{scheduler-NTVF45LR.js → scheduler-5GLJSA2H.js} +73 -27
- package/chunks/{send-message-IIT3SHA7.js → send-message-URUZ7PLA.js} +24 -4
- package/chunks/{serve-J6VG37OX.js → serve-MUROZGCG.js} +7575 -6916
- package/chunks/{shell-EQQEHEFI.js → shell-ET3BQWKB.js} +24 -22
- package/chunks/{skill-QWRWJCQJ.js → skill-YEYABCAF.js} +11 -10
- package/chunks/{src-LNADIG5P.js → src-POVOI65Y.js} +165 -66
- package/chunks/{syntheticOutput-H67FYXU7.js → syntheticOutput-65FRJGWM.js} +3 -3
- package/chunks/{task-create-OVXHSHAI.js → task-create-IH45HOFT.js} +6 -6
- package/chunks/{task-list-QUUCQJ3U.js → task-list-FUB6JWSX.js} +5 -5
- package/chunks/{task-stop-WA5DMTKK.js → task-stop-P6IOHQM3.js} +2 -2
- package/chunks/{task-update-PC5427TI.js → task-update-RTUT7LJV.js} +6 -6
- package/chunks/{team-create-TXWQL777.js → team-create-EFZFKQFP.js} +28 -26
- package/chunks/{team-delete-ZTEMYRJ3.js → team-delete-RXGYRMHC.js} +5 -5
- package/chunks/{todoWrite-J6L6ELD6.js → todoWrite-O6JK24G6.js} +4 -4
- package/chunks/{tool-search-JAVM7ABF.js → tool-search-BRJC42TE.js} +9 -8
- package/chunks/{web-fetch-6XLPPTP7.js → web-fetch-KUMBROUI.js} +4 -4
- package/chunks/{workflow-7LN3L6KK.js → workflow-UDRBNFTT.js} +557 -97
- package/chunks/{write-file-DAKE7YKB.js → write-file-F7TAHAHF.js} +24 -22
- package/chunks/{zh-X4KM6MTW.js → zh-3RMSEO5M.js} +49 -0
- package/chunks/{zh-TW-BSG6BUWK.js → zh-TW-R7WRLTJS.js} +49 -0
- package/cli.js +9205 -5426
- package/locales/ca.js +2 -1
- package/locales/de.js +1 -0
- package/locales/en.js +70 -0
- package/locales/fr.js +1 -0
- package/locales/ja.js +1 -0
- package/locales/pt.js +1 -0
- package/locales/ru.js +1 -0
- package/locales/zh-TW.js +67 -0
- package/locales/zh.js +67 -0
- package/package.json +3 -2
- package/web-shell/assets/{arc-CRFN10gD.js → arc-DHUeMnnj.js} +1 -1
- package/web-shell/assets/{architectureDiagram-3BPJPVTR-IRlu1CpH.js → architectureDiagram-3BPJPVTR-DlX12yyj.js} +1 -1
- package/web-shell/assets/{blockDiagram-GPEHLZMM-htIZ6iw8.js → blockDiagram-GPEHLZMM-DTFUXMUT.js} +1 -1
- package/web-shell/assets/{c4Diagram-AAUBKEIU-A2GoRq3O.js → c4Diagram-AAUBKEIU-CWdB54fk.js} +1 -1
- package/web-shell/assets/channel-C3WhMjjP.js +1 -0
- package/web-shell/assets/{chunk-2J33WTMH-CdP2AC6u.js → chunk-2J33WTMH-CF5C5jNR.js} +1 -1
- package/web-shell/assets/{chunk-4BX2VUAB-DrA07nW2.js → chunk-4BX2VUAB-Cw7Ydfji.js} +1 -1
- package/web-shell/assets/{chunk-55IACEB6-CFGnVU2f.js → chunk-55IACEB6-CnbI1ZCw.js} +1 -1
- package/web-shell/assets/{chunk-727SXJPM-BTMkq3Tk.js → chunk-727SXJPM-DmSy00Pe.js} +1 -1
- package/web-shell/assets/{chunk-AQP2D5EJ-C9sYg04Z.js → chunk-AQP2D5EJ-DgNgXqBu.js} +1 -1
- package/web-shell/assets/{chunk-FMBD7UC4-Cag-cj6I.js → chunk-FMBD7UC4-tz2IvOXv.js} +1 -1
- package/web-shell/assets/{chunk-ND2GUHAM-CDSTFoR7.js → chunk-ND2GUHAM-DaBLEBPa.js} +1 -1
- package/web-shell/assets/{chunk-QZHKN3VN-CN9Z6oOs.js → chunk-QZHKN3VN-DVCQST3O.js} +1 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CQ6TXPif.js +1 -0
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CQ6TXPif.js +1 -0
- package/web-shell/assets/{cose-bilkent-S5V4N54A-DuN9j8Du.js → cose-bilkent-S5V4N54A-CAKTcdCQ.js} +1 -1
- package/web-shell/assets/{dagre-BM42HDAG-ByCWe45f.js → dagre-BM42HDAG-BdkBwlKg.js} +1 -1
- package/web-shell/assets/{diagram-2AECGRRQ-eWyU_pKZ.js → diagram-2AECGRRQ-DYt3G65F.js} +1 -1
- package/web-shell/assets/{diagram-5GNKFQAL-0Bfu3Fq5.js → diagram-5GNKFQAL-BWvROWjY.js} +1 -1
- package/web-shell/assets/{diagram-KO2AKTUF-B6KBKkQP.js → diagram-KO2AKTUF-BvvgwIaQ.js} +1 -1
- package/web-shell/assets/{diagram-LMA3HP47-TToDmeA_.js → diagram-LMA3HP47-E7NLSNKg.js} +1 -1
- package/web-shell/assets/{diagram-OG6HWLK6-CQCkC2Yx.js → diagram-OG6HWLK6-CYmUBgpE.js} +1 -1
- package/web-shell/assets/{erDiagram-TEJ5UH35-Cm9ls1iB.js → erDiagram-TEJ5UH35-BU5gY30h.js} +1 -1
- package/web-shell/assets/{flowDiagram-I6XJVG4X-Dyoz80Pv.js → flowDiagram-I6XJVG4X-V_ZssSZ9.js} +1 -1
- package/web-shell/assets/{ganttDiagram-6RSMTGT7-Cfut9yaU.js → ganttDiagram-6RSMTGT7-QIShlsdI.js} +1 -1
- package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BCuJdlfD.js → gitGraphDiagram-PVQCEYII-DJxdu2YS.js} +1 -1
- package/web-shell/assets/index-BPnhI7gl.css +1 -0
- package/web-shell/assets/index-De4rqTsW.js +706 -0
- package/web-shell/assets/{infoDiagram-5YYISTIA-CXKxF2VL.js → infoDiagram-5YYISTIA-BqjdrFeO.js} +1 -1
- package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DE7HWSU8.js → ishikawaDiagram-YF4QCWOH-BP_a2YZ2.js} +1 -1
- package/web-shell/assets/{journeyDiagram-JHISSGLW-D__YUfds.js → journeyDiagram-JHISSGLW-BXg-S3Lk.js} +1 -1
- package/web-shell/assets/{kanban-definition-UN3LZRKU-D82R169M.js → kanban-definition-UN3LZRKU-BksAkdEJ.js} +1 -1
- package/web-shell/assets/{linear-DpyMbKqT.js → linear-D2m9-ODE.js} +1 -1
- package/web-shell/assets/{mermaid.core-D1KEFDhn.js → mermaid.core-dTtkZp2F.js} +5 -5
- package/web-shell/assets/{mindmap-definition-RKZ34NQL-BwVUFGFE.js → mindmap-definition-RKZ34NQL-Bft9my8O.js} +1 -1
- package/web-shell/assets/{pieDiagram-4H26LBE5-BO_qoEGx.js → pieDiagram-4H26LBE5-Cw8S-alZ.js} +1 -1
- package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Cx0ZaWPo.js → quadrantDiagram-W4KKPZXB-DaDoTMts.js} +1 -1
- package/web-shell/assets/{requirementDiagram-4Y6WPE33-BJPXejOA.js → requirementDiagram-4Y6WPE33-Cp5kSpwj.js} +1 -1
- package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C1xeIL9i.js → sankeyDiagram-5OEKKPKP-CW8RsJJZ.js} +1 -1
- package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CSYKQUjf.js → sequenceDiagram-3UESZ5HK-DTfpIiJK.js} +1 -1
- package/web-shell/assets/{stateDiagram-AJRCARHV-d9hiHlAW.js → stateDiagram-AJRCARHV-DixFVzEs.js} +1 -1
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DZgE04s3.js +1 -0
- package/web-shell/assets/{timeline-definition-PNZ67QCA-BhCBkq8k.js → timeline-definition-PNZ67QCA-DYsbXn5l.js} +1 -1
- package/web-shell/assets/{vennDiagram-CIIHVFJN-DPPFWp_y.js → vennDiagram-CIIHVFJN-HUpRpuUp.js} +1 -1
- package/web-shell/assets/{wardley-L42UT6IY-CcOUIgXY.js → wardley-L42UT6IY-cT3nQH_T.js} +1 -1
- package/web-shell/assets/{wardleyDiagram-YWT4CUSO-p7oR5X7r.js → wardleyDiagram-YWT4CUSO-Dmm7J6Qc.js} +1 -1
- package/web-shell/assets/{xychartDiagram-2RQKCTM6-Dfr7-SEy.js → xychartDiagram-2RQKCTM6-CX0L5p9C.js} +1 -1
- package/web-shell/index.html +3 -3
- package/chunks/chunk-77WXWU44.js +0 -26
- package/chunks/contextCommand-POQ6GYN3.js +0 -54
- package/web-shell/assets/channel-WwImfsc7.js +0 -1
- package/web-shell/assets/classDiagram-4FO5ZUOK-CJKQYFeJ.js +0 -1
- package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CJKQYFeJ.js +0 -1
- package/web-shell/assets/index-BDZiTAkl.css +0 -1
- package/web-shell/assets/index-DaebdpHq.js +0 -516
- package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DgReoybQ.js +0 -1
|
@@ -61,11 +61,19 @@ Use this index to locate the right document for the user's question. Load only t
|
|
|
61
61
|
| Headless / non-interactive mode | `docs/features/headless.md` |
|
|
62
62
|
| LSP integration | `docs/features/lsp.md` |
|
|
63
63
|
| Token caching | `docs/features/token-caching.md` |
|
|
64
|
-
| Language / i18n | `docs/features/language.md`
|
|
65
|
-
| Arena mode | `docs/features/arena.md`
|
|
66
|
-
| Status line | `docs/features/status-line.md`
|
|
67
|
-
| Scheduled tasks (cron/loop) | `docs/features/scheduled-tasks.md`
|
|
68
|
-
| Worktree | `docs/features/worktree.md`
|
|
64
|
+
| Language / i18n | `docs/features/language.md` |
|
|
65
|
+
| Arena mode | `docs/features/arena.md` |
|
|
66
|
+
| Status line | `docs/features/status-line.md` |
|
|
67
|
+
| Scheduled tasks (cron/loop) | `docs/features/scheduled-tasks.md` |
|
|
68
|
+
| Worktree | `docs/features/worktree.md` |
|
|
69
|
+
| Code review (`/review`) | `docs/features/code-review.md` |
|
|
70
|
+
| Structured output (JSON schema) | `docs/features/structured-output.md` |
|
|
71
|
+
| Dual output | `docs/features/dual-output.md` |
|
|
72
|
+
| Tool-use summaries | `docs/features/tool-use-summaries.md` |
|
|
73
|
+
| Followup suggestions | `docs/features/followup-suggestions.md` |
|
|
74
|
+
| Markdown rendering | `docs/features/markdown-rendering.md` |
|
|
75
|
+
| Contextual tips | `docs/features/tips.md` |
|
|
76
|
+
| Channels (Telegram/WeChat/DingTalk/etc.) | `docs/features/channels/overview.md` |
|
|
69
77
|
|
|
70
78
|
### IDE Integration
|
|
71
79
|
|
|
@@ -1,10 +1,14 @@
|
|
|
1
1
|
# Authentication
|
|
2
2
|
|
|
3
|
-
Qwen Code
|
|
3
|
+
Qwen Code's first-run `/auth` menu has three top-level options. Pick the one that matches how you want to run the CLI:
|
|
4
4
|
|
|
5
|
-
- **
|
|
6
|
-
- **
|
|
7
|
-
- **
|
|
5
|
+
- **Alibaba ModelStudio**: official recommended setup. Opens a sub-menu with **Coding Plan** (for individual developers · weekly quota included), **Token Plan** (for teams and companies · usage-based billing with a dedicated endpoint), or **Standard API Key** (connect with an existing ModelStudio API key).
|
|
6
|
+
- **Third-party Providers**: choose a built-in provider and connect with an API key (DeepSeek, MiniMax, Z.AI, Idealab, ModelScope, OpenRouter, Requesty).
|
|
7
|
+
- **Custom Provider**: manually connect a local server, proxy, or unsupported provider — supports OpenAI, Anthropic, Gemini, and other compatible endpoints.
|
|
8
|
+
|
|
9
|
+
> [!note]
|
|
10
|
+
>
|
|
11
|
+
> **Qwen OAuth** is no longer a selectable dialog entry — its free tier was discontinued on 2026-04-15. It remains documented below as a hard-coded, discontinued provider only.
|
|
8
12
|
|
|
9
13
|
## Option 1: Qwen OAuth (Discontinued)
|
|
10
14
|
|
|
@@ -23,7 +27,7 @@ Start the CLI and follow the browser flow:
|
|
|
23
27
|
qwen
|
|
24
28
|
```
|
|
25
29
|
|
|
26
|
-
|
|
30
|
+
Qwen OAuth is no longer offered as a selectable entry in the `/auth` dialog; run `/auth` and choose one of the current options (Alibaba ModelStudio, Third-party Providers, or Custom Provider) instead.
|
|
27
31
|
|
|
28
32
|
> [!note]
|
|
29
33
|
>
|
|
@@ -48,7 +52,7 @@ Alibaba Cloud Coding Plan is available in two regions:
|
|
|
48
52
|
|
|
49
53
|
### Interactive setup
|
|
50
54
|
|
|
51
|
-
Enter `qwen` in the terminal to launch Qwen Code, then run the `/auth` command
|
|
55
|
+
Enter `qwen` in the terminal to launch Qwen Code, then run the `/auth` command, select **Alibaba ModelStudio**, and choose **Coding Plan** from the sub-menu. Choose your region, then enter your `sk-sp-xxxxxxxxx` key.
|
|
52
56
|
|
|
53
57
|
After authentication, use the `/model` command to switch between all Alibaba Cloud Coding Plan supported models (including qwen3.5-plus, qwen3.6-plus, qwen3.7-plus, qwen3-coder-plus, qwen3-coder-next, qwen3-max-2026-01-23, glm-5, glm-4.7, kimi-k2.5, and MiniMax-M2.5).
|
|
54
58
|
|
|
@@ -71,15 +75,18 @@ If you prefer to skip the interactive `/auth` flow, add the following to `~/.qwe
|
|
|
71
75
|
```json
|
|
72
76
|
{
|
|
73
77
|
"modelProviders": {
|
|
74
|
-
"openai":
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
78
|
+
"openai": {
|
|
79
|
+
"protocol": "openai",
|
|
80
|
+
"models": [
|
|
81
|
+
{
|
|
82
|
+
"id": "qwen3-coder-plus",
|
|
83
|
+
"name": "qwen3-coder-plus (Coding Plan)",
|
|
84
|
+
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
|
|
85
|
+
"description": "qwen3-coder-plus from Alibaba Cloud Coding Plan",
|
|
86
|
+
"envKey": "BAILIAN_CODING_PLAN_API_KEY"
|
|
87
|
+
}
|
|
88
|
+
]
|
|
89
|
+
}
|
|
83
90
|
},
|
|
84
91
|
"env": {
|
|
85
92
|
"BAILIAN_CODING_PLAN_API_KEY": "sk-sp-xxxxxxxxx"
|
|
@@ -101,7 +108,7 @@ If you prefer to skip the interactive `/auth` flow, add the following to `~/.qwe
|
|
|
101
108
|
|
|
102
109
|
## 🚀 Option 3: API Key (flexible)
|
|
103
110
|
|
|
104
|
-
Use this if you want to connect to third-party providers such as OpenAI, Anthropic, Google, Azure OpenAI, OpenRouter, ModelScope, or a self-hosted endpoint. Supports multiple protocols and providers.
|
|
111
|
+
Use this if you want to connect to third-party providers such as OpenAI, Anthropic, Google, Azure OpenAI, OpenRouter, Requesty, ModelScope, or a self-hosted endpoint. Supports multiple protocols and providers.
|
|
105
112
|
|
|
106
113
|
### Recommended: One-file setup via `settings.json`
|
|
107
114
|
|
|
@@ -110,15 +117,18 @@ The simplest way to get started with API Key authentication is to put everything
|
|
|
110
117
|
```json
|
|
111
118
|
{
|
|
112
119
|
"modelProviders": {
|
|
113
|
-
"openai":
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
120
|
+
"openai": {
|
|
121
|
+
"protocol": "openai",
|
|
122
|
+
"models": [
|
|
123
|
+
{
|
|
124
|
+
"id": "qwen3-coder-plus",
|
|
125
|
+
"name": "qwen3-coder-plus",
|
|
126
|
+
"baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|
127
|
+
"description": "Qwen3-Coder via Dashscope",
|
|
128
|
+
"envKey": "DASHSCOPE_API_KEY"
|
|
129
|
+
}
|
|
130
|
+
]
|
|
131
|
+
}
|
|
122
132
|
},
|
|
123
133
|
"env": {
|
|
124
134
|
"DASHSCOPE_API_KEY": "sk-xxxxxxxxxxxxx"
|
|
@@ -153,15 +163,16 @@ The key concept is **Model Providers** (`modelProviders`): Qwen Code supports mu
|
|
|
153
163
|
|
|
154
164
|
#### Supported protocols
|
|
155
165
|
|
|
156
|
-
| Protocol | `modelProviders` key | Environment variables | Providers
|
|
157
|
-
| ----------------- | -------------------- | ------------------------------------------------------------ |
|
|
158
|
-
| OpenAI-compatible | `openai` | `OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL` | OpenAI, Azure OpenAI, OpenRouter, ModelScope, Alibaba Cloud, any OpenAI-compatible endpoint |
|
|
159
|
-
| Anthropic | `anthropic` | `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL` | Anthropic Claude
|
|
160
|
-
| Google GenAI | `gemini` | `GEMINI_API_KEY`, `GEMINI_MODEL` | Google Gemini
|
|
166
|
+
| Protocol | `modelProviders` key | Environment variables | Providers |
|
|
167
|
+
| ----------------- | -------------------- | ------------------------------------------------------------ | ----------------------------------------------------------------------------------------------------- |
|
|
168
|
+
| OpenAI-compatible | `openai` | `OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_MODEL` | OpenAI, Azure OpenAI, OpenRouter, Requesty, ModelScope, Alibaba Cloud, any OpenAI-compatible endpoint |
|
|
169
|
+
| Anthropic | `anthropic` | `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL`, `ANTHROPIC_MODEL` | Anthropic Claude |
|
|
170
|
+
| Google GenAI | `gemini` | `GEMINI_API_KEY`, `GEMINI_MODEL` | Google Gemini |
|
|
171
|
+
| Vertex AI | `vertex-ai` | `GOOGLE_API_KEY`, `GOOGLE_MODEL` (sets `GOOGLE_GENAI_USE_VERTEXAI=true`; uses the `gemini` protocol) | Google Vertex AI |
|
|
161
172
|
|
|
162
173
|
#### Step 1: Configure models and providers in `~/.qwen/settings.json`
|
|
163
174
|
|
|
164
|
-
Define which models are available for each protocol. Each model entry requires at minimum an `id
|
|
175
|
+
Define which models are available for each protocol. Each model entry requires at minimum an `id`; `envKey` (the environment variable name that holds your API key) is optional and recommended — when omitted, it falls back to the auth type's default env key (e.g. `OPENAI_API_KEY` for `openai`).
|
|
165
176
|
|
|
166
177
|
> [!important]
|
|
167
178
|
>
|
|
@@ -172,28 +183,37 @@ Edit `~/.qwen/settings.json` (create it if it doesn't exist). You can mix multip
|
|
|
172
183
|
```json
|
|
173
184
|
{
|
|
174
185
|
"modelProviders": {
|
|
175
|
-
"openai":
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
186
|
+
"openai": {
|
|
187
|
+
"protocol": "openai",
|
|
188
|
+
"models": [
|
|
189
|
+
{
|
|
190
|
+
"id": "gpt-4o",
|
|
191
|
+
"name": "GPT-4o",
|
|
192
|
+
"envKey": "OPENAI_API_KEY",
|
|
193
|
+
"baseUrl": "https://api.openai.com/v1"
|
|
194
|
+
}
|
|
195
|
+
]
|
|
196
|
+
},
|
|
197
|
+
"anthropic": {
|
|
198
|
+
"protocol": "anthropic",
|
|
199
|
+
"models": [
|
|
200
|
+
{
|
|
201
|
+
"id": "claude-sonnet-4-20250514",
|
|
202
|
+
"name": "Claude Sonnet 4",
|
|
203
|
+
"envKey": "ANTHROPIC_API_KEY"
|
|
204
|
+
}
|
|
205
|
+
]
|
|
206
|
+
},
|
|
207
|
+
"gemini": {
|
|
208
|
+
"protocol": "gemini",
|
|
209
|
+
"models": [
|
|
210
|
+
{
|
|
211
|
+
"id": "gemini-2.5-pro",
|
|
212
|
+
"name": "Gemini 2.5 Pro",
|
|
213
|
+
"envKey": "GEMINI_API_KEY"
|
|
214
|
+
}
|
|
215
|
+
]
|
|
216
|
+
}
|
|
197
217
|
}
|
|
198
218
|
}
|
|
199
219
|
```
|
|
@@ -208,7 +228,7 @@ Edit `~/.qwen/settings.json` (create it if it doesn't exist). You can mix multip
|
|
|
208
228
|
| ------------------ | -------- | -------------------------------------------------------------------- |
|
|
209
229
|
| `id` | Yes | Model ID sent to the API (e.g. `gpt-4o`, `claude-sonnet-4-20250514`) |
|
|
210
230
|
| `name` | No | Display name in the `/model` picker (defaults to `id`) |
|
|
211
|
-
| `envKey` |
|
|
231
|
+
| `envKey` | No | Environment variable name for the API key (e.g. `OPENAI_API_KEY`); optional/recommended — defaults to the auth type's default env key when omitted |
|
|
212
232
|
| `baseUrl` | No | API endpoint override (useful for proxies or custom endpoints) |
|
|
213
233
|
| `generationConfig` | No | Fine-tune `timeout`, `maxRetries`, `samplingParams`, etc. |
|
|
214
234
|
|
|
@@ -315,6 +335,7 @@ The standalone `qwen auth` CLI command has been removed. Use these replacements
|
|
|
315
335
|
| Interactive authentication setup | Run `qwen`, then use `/auth` |
|
|
316
336
|
| Coding Plan setup | Use `/auth`, or set `BAILIAN_CODING_PLAN_API_KEY` with the Coding Plan base URL |
|
|
317
337
|
| OpenRouter setup | Use `/auth`, or set `OPENROUTER_API_KEY` and `OPENAI_BASE_URL=https://openrouter.ai/api/v1` |
|
|
338
|
+
| Requesty setup | Use `/auth`, or set `REQUESTY_API_KEY` and `OPENAI_BASE_URL=https://router.requesty.ai/v1` |
|
|
318
339
|
| API-key or custom provider setup | Configure `~/.qwen/settings.json`, `.env`, or provider-specific environment variables |
|
|
319
340
|
| Check current authentication | Run `/doctor` inside Qwen Code |
|
|
320
341
|
| OAuth browser flow | Run `qwen` interactively and use `/auth`; OAuth cannot be configured with env vars alone |
|