@qwen-code/qwen-code 0.18.5 → 0.19.1

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.
Files changed (145) hide show
  1. package/bundled/qc-helper/docs/configuration/qwen-ignore.md +31 -15
  2. package/bundled/qc-helper/docs/configuration/settings.md +15 -14
  3. package/bundled/qc-helper/docs/extension/introduction.md +24 -6
  4. package/bundled/qc-helper/docs/features/mcp.md +15 -8
  5. package/chunks/{agent-2TEY55UD.js → agent-7CZOLKXM.js} +24 -22
  6. package/chunks/{agent-headless-SCUAXEEE.js → agent-headless-K37PBQK5.js} +24 -22
  7. package/chunks/{anthropicContentGenerator-5S4OMMNL.js → anthropicContentGenerator-6MCH4X6S.js} +12 -11
  8. package/chunks/artifact-tool-PBX64YTT.js +675 -0
  9. package/chunks/{askUserQuestion-WHVYL2S2.js → askUserQuestion-5ZQOWSRT.js} +20 -7
  10. package/chunks/chunk-22IFUCVR.js +291 -0
  11. package/chunks/{chunk-XGU3ETVO.js → chunk-255L5QYW.js} +3 -3
  12. package/chunks/{chunk-26ZYKTYZ.js → chunk-2BIF2NVV.js} +2 -2
  13. package/chunks/{chunk-VECKCOH6.js → chunk-2X2WXY6L.js} +6104 -4673
  14. package/chunks/{chunk-LTN3VYMZ.js → chunk-3UALQ56H.js} +1 -1
  15. package/chunks/{chunk-2O3NAOJG.js → chunk-57XRIZVC.js} +1 -1
  16. package/chunks/{chunk-MSJ2MXJ6.js → chunk-BGUDAULQ.js} +11 -290
  17. package/chunks/{chunk-FH4P6RQA.js → chunk-BNXANYLH.js} +1 -1
  18. package/chunks/{chunk-WE6TNQJU.js → chunk-C4K3FEQ2.js} +36 -0
  19. package/chunks/{chunk-G4BUMVEY.js → chunk-CGEGHF2C.js} +2 -217
  20. package/chunks/chunk-EEEZIVFJ.js +908 -0
  21. package/chunks/chunk-EJYJYJZ2.js +3703 -0
  22. package/chunks/{chunk-ATLUHLZE.js → chunk-EW6C27XX.js} +1 -1
  23. package/chunks/{chunk-SIJKWK35.js → chunk-FXT37TZS.js} +6 -6
  24. package/chunks/{chunk-C6MI2ASN.js → chunk-GZCJS5WH.js} +2 -2
  25. package/chunks/{chunk-KGV3F6UF.js → chunk-HGNSRCRB.js} +1 -1
  26. package/chunks/{chunk-42HGOMED.js → chunk-JDV3VBPY.js} +216 -1
  27. package/chunks/{chunk-CX3SGIPK.js → chunk-JRVB4QUY.js} +2 -2
  28. package/chunks/{chunk-C7JA3XCX.js → chunk-NQDRRVJD.js} +5 -5
  29. package/chunks/{chunk-F5E6IKYN.js → chunk-OJMCOR55.js} +560 -18
  30. package/chunks/{chunk-ID533GA3.js → chunk-OTBK43JR.js} +1 -1
  31. package/chunks/{chunk-GOMVJKBL.js → chunk-PLY4F7QW.js} +5 -3
  32. package/chunks/{chunk-KZGQ3G3Q.js → chunk-PNT7QCLK.js} +80 -83
  33. package/chunks/{chunk-VKILGMZQ.js → chunk-PO5LVPK3.js} +1 -1
  34. package/chunks/{chunk-AE6RQU6F.js → chunk-PRYMDRBV.js} +1 -1
  35. package/chunks/{chunk-GBN55AWZ.js → chunk-QKUAGMGE.js} +2 -2
  36. package/chunks/{chunk-KQIKOTQJ.js → chunk-RYLJU2DY.js} +60 -5
  37. package/chunks/{chunk-CTHZVIMD.js → chunk-T2VDEFUU.js} +2 -2
  38. package/chunks/{chunk-LF6BKGZT.js → chunk-TXVGVZYR.js} +3 -3
  39. package/chunks/{chunk-XU7BKR3B.js → chunk-XU5P23GN.js} +3 -3
  40. package/chunks/{chunk-2CNO5W47.js → chunk-YMBWB67C.js} +146 -5005
  41. package/chunks/{computer-use-OB3C5QG2.js → computer-use-AY6HODX4.js} +24 -22
  42. package/chunks/contextCommand-KVKJ63NZ.js +56 -0
  43. package/chunks/{cron-create-THNDTYXU.js → cron-create-NHRAAWT5.js} +12 -9
  44. package/chunks/{cron-delete-BS5H6TFJ.js → cron-delete-WGO4PZTF.js} +4 -4
  45. package/chunks/{cron-list-7OBVHT7K.js → cron-list-EY7D3ZUC.js} +4 -4
  46. package/chunks/{dist-GKRNVFBH.js → dist-ZBX7LPJZ.js} +2 -1
  47. package/chunks/{edit-GNCLIF67.js → edit-OXD4P5YK.js} +24 -22
  48. package/chunks/{en-S3OQBISC.js → en-7OGNWWME.js} +48 -0
  49. package/chunks/{enter-worktree-E7BNZOGT.js → enter-worktree-NKNFTLNO.js} +24 -22
  50. package/chunks/{enterPlanMode-IA42A5EU.js → enterPlanMode-7W2FCILY.js} +27 -23
  51. package/chunks/{exit-worktree-QJ2K74UT.js → exit-worktree-NCRZ52XD.js} +24 -22
  52. package/chunks/{exitPlanMode-UKKHBUYJ.js → exitPlanMode-AZIUQQHA.js} +36 -28
  53. package/chunks/{geminiContentGenerator-ICSDM37U.js → geminiContentGenerator-5HKVP4JF.js} +4 -4
  54. package/chunks/{glob-IGD7LWYX.js → glob-VCPO3AQO.js} +26 -23
  55. package/chunks/{grep-IZM3IVND.js → grep-R3W7SG6T.js} +24 -22
  56. package/chunks/{keychain-token-storage-YHXIWXIB.js → keychain-token-storage-CSYMNRPP.js} +2 -2
  57. package/chunks/{loop-wakeup-SSBWZ64K.js → loop-wakeup-XVSDE7QR.js} +5 -5
  58. package/chunks/{ls-YPFUHZRQ.js → ls-LPY3ATQQ.js} +6 -6
  59. package/chunks/{lsp-FD6DNVAF.js → lsp-ZT3AAXIF.js} +2 -2
  60. package/chunks/{monitor-ALJNE3R4.js → monitor-TQCZALTB.js} +24 -22
  61. package/chunks/{notebook-edit-7XRZX55T.js → notebook-edit-RYYGIJTA.js} +25 -23
  62. package/chunks/{openaiContentGenerator-FWKITDFJ.js → openaiContentGenerator-2AUZ47JU.js} +12 -15
  63. package/chunks/{qwenContentGenerator-5RPGQZ63.js → qwenContentGenerator-QM6ENWSO.js} +26 -24
  64. package/chunks/{qwenOAuth2-WZ54YZ4J.js → qwenOAuth2-K4AASPCV.js} +5 -4
  65. package/chunks/{read-file-4WN2DT5N.js → read-file-ZSIMNYPB.js} +9 -8
  66. package/chunks/{ripGrep-4ZKT6KBQ.js → ripGrep-LONCTNP3.js} +24 -22
  67. package/chunks/{scheduler-O2E65VDK.js → scheduler-FMNCHQQH.js} +73 -27
  68. package/chunks/{send-message-FWFTX62Q.js → send-message-447W6NH6.js} +24 -4
  69. package/chunks/{serve-3DM6CRGD.js → serve-XLPTFQOQ.js} +458 -77
  70. package/chunks/{shell-ARVZK6RF.js → shell-G2CEO7D7.js} +24 -22
  71. package/chunks/{skill-BFUBGA4I.js → skill-E5YLTHY3.js} +11 -10
  72. package/chunks/{src-5YMCDSII.js → src-GCZS2DES.js} +112 -67
  73. package/chunks/{syntheticOutput-JY5NEDTV.js → syntheticOutput-GQRDRLGR.js} +3 -3
  74. package/chunks/{task-create-IGILDV25.js → task-create-66DDSTVI.js} +6 -6
  75. package/chunks/{task-list-KBEJVAAG.js → task-list-GOPXRSHG.js} +5 -5
  76. package/chunks/{task-stop-WFTMQ6AC.js → task-stop-M7NKGFX2.js} +2 -2
  77. package/chunks/{task-update-UIVX7ZEV.js → task-update-M5TBHLZV.js} +6 -6
  78. package/chunks/{team-create-HRBV5ATK.js → team-create-RQCITTFK.js} +28 -26
  79. package/chunks/{team-delete-LPOXDPVB.js → team-delete-DKKDS65W.js} +5 -5
  80. package/chunks/{todoWrite-R4RIJKOD.js → todoWrite-4VX7X44D.js} +4 -4
  81. package/chunks/{tool-search-67HI54YA.js → tool-search-2COFGD5N.js} +9 -8
  82. package/chunks/{web-fetch-JU7SS6KE.js → web-fetch-YPP3V4FJ.js} +4 -4
  83. package/chunks/{workflow-W4SCLWLU.js → workflow-A5VAXYUS.js} +557 -97
  84. package/chunks/{write-file-TLNXC2NR.js → write-file-P2RNFLJR.js} +24 -22
  85. package/chunks/{zh-QXLZV2PX.js → zh-3RMSEO5M.js} +48 -0
  86. package/chunks/{zh-TW-3OKU7LDA.js → zh-TW-R7WRLTJS.js} +48 -0
  87. package/cli.js +8200 -4981
  88. package/locales/en.js +69 -0
  89. package/locales/zh-TW.js +66 -0
  90. package/locales/zh.js +66 -0
  91. package/package.json +3 -2
  92. package/web-shell/assets/{arc-CRFN10gD.js → arc-pxOt9B72.js} +1 -1
  93. package/web-shell/assets/{architectureDiagram-3BPJPVTR-IRlu1CpH.js → architectureDiagram-3BPJPVTR-B9XuYYOT.js} +1 -1
  94. package/web-shell/assets/{blockDiagram-GPEHLZMM-htIZ6iw8.js → blockDiagram-GPEHLZMM-5yK68iu4.js} +1 -1
  95. package/web-shell/assets/{c4Diagram-AAUBKEIU-A2GoRq3O.js → c4Diagram-AAUBKEIU-B1LY-qNI.js} +1 -1
  96. package/web-shell/assets/channel-Cx7egbSX.js +1 -0
  97. package/web-shell/assets/{chunk-2J33WTMH-CdP2AC6u.js → chunk-2J33WTMH-DkgXg7cM.js} +1 -1
  98. package/web-shell/assets/{chunk-4BX2VUAB-DrA07nW2.js → chunk-4BX2VUAB-DdM45KFM.js} +1 -1
  99. package/web-shell/assets/{chunk-55IACEB6-CFGnVU2f.js → chunk-55IACEB6-CmdsDjD4.js} +1 -1
  100. package/web-shell/assets/{chunk-727SXJPM-BTMkq3Tk.js → chunk-727SXJPM-CQ4pJ5GH.js} +1 -1
  101. package/web-shell/assets/{chunk-AQP2D5EJ-C9sYg04Z.js → chunk-AQP2D5EJ-Dy6UWz37.js} +1 -1
  102. package/web-shell/assets/{chunk-FMBD7UC4-Cag-cj6I.js → chunk-FMBD7UC4-CC8nFqap.js} +1 -1
  103. package/web-shell/assets/{chunk-ND2GUHAM-CDSTFoR7.js → chunk-ND2GUHAM-CkmS7lx7.js} +1 -1
  104. package/web-shell/assets/{chunk-QZHKN3VN-CN9Z6oOs.js → chunk-QZHKN3VN-DynyqleZ.js} +1 -1
  105. package/web-shell/assets/classDiagram-4FO5ZUOK-CwH_F8cH.js +1 -0
  106. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CwH_F8cH.js +1 -0
  107. package/web-shell/assets/{cose-bilkent-S5V4N54A-DuN9j8Du.js → cose-bilkent-S5V4N54A-DA0fzCsY.js} +1 -1
  108. package/web-shell/assets/{dagre-BM42HDAG-ByCWe45f.js → dagre-BM42HDAG-DHYXRqCo.js} +1 -1
  109. package/web-shell/assets/{diagram-2AECGRRQ-eWyU_pKZ.js → diagram-2AECGRRQ-DWD6BcPs.js} +1 -1
  110. package/web-shell/assets/{diagram-5GNKFQAL-0Bfu3Fq5.js → diagram-5GNKFQAL-CX9wnqVc.js} +1 -1
  111. package/web-shell/assets/{diagram-KO2AKTUF-B6KBKkQP.js → diagram-KO2AKTUF-BpE8Kbt8.js} +1 -1
  112. package/web-shell/assets/{diagram-LMA3HP47-TToDmeA_.js → diagram-LMA3HP47-DLPcrP0C.js} +1 -1
  113. package/web-shell/assets/{diagram-OG6HWLK6-CQCkC2Yx.js → diagram-OG6HWLK6-CSUCBsCe.js} +1 -1
  114. package/web-shell/assets/{erDiagram-TEJ5UH35-Cm9ls1iB.js → erDiagram-TEJ5UH35-d3Z0uMXS.js} +1 -1
  115. package/web-shell/assets/{flowDiagram-I6XJVG4X-Dyoz80Pv.js → flowDiagram-I6XJVG4X-C7vj5FX3.js} +1 -1
  116. package/web-shell/assets/{ganttDiagram-6RSMTGT7-Cfut9yaU.js → ganttDiagram-6RSMTGT7-BV9UvDV_.js} +1 -1
  117. package/web-shell/assets/{gitGraphDiagram-PVQCEYII-BCuJdlfD.js → gitGraphDiagram-PVQCEYII-CoWp0mW4.js} +1 -1
  118. package/web-shell/assets/index-CjTH6cLP.js +516 -0
  119. package/web-shell/assets/{infoDiagram-5YYISTIA-CXKxF2VL.js → infoDiagram-5YYISTIA-DUswfJHA.js} +1 -1
  120. package/web-shell/assets/{ishikawaDiagram-YF4QCWOH-DE7HWSU8.js → ishikawaDiagram-YF4QCWOH-WidEKukx.js} +1 -1
  121. package/web-shell/assets/{journeyDiagram-JHISSGLW-D__YUfds.js → journeyDiagram-JHISSGLW-D7IRK3VN.js} +1 -1
  122. package/web-shell/assets/{kanban-definition-UN3LZRKU-D82R169M.js → kanban-definition-UN3LZRKU-CwFJ6Cja.js} +1 -1
  123. package/web-shell/assets/{linear-DpyMbKqT.js → linear-BQ8GvDRY.js} +1 -1
  124. package/web-shell/assets/{mermaid.core-D1KEFDhn.js → mermaid.core-CwF8A_xO.js} +5 -5
  125. package/web-shell/assets/{mindmap-definition-RKZ34NQL-BwVUFGFE.js → mindmap-definition-RKZ34NQL-TR1s0iZi.js} +1 -1
  126. package/web-shell/assets/{pieDiagram-4H26LBE5-BO_qoEGx.js → pieDiagram-4H26LBE5-Cd91pMl9.js} +1 -1
  127. package/web-shell/assets/{quadrantDiagram-W4KKPZXB-Cx0ZaWPo.js → quadrantDiagram-W4KKPZXB-BGxGDNMl.js} +1 -1
  128. package/web-shell/assets/{requirementDiagram-4Y6WPE33-BJPXejOA.js → requirementDiagram-4Y6WPE33-Cq3fWmYz.js} +1 -1
  129. package/web-shell/assets/{sankeyDiagram-5OEKKPKP-C1xeIL9i.js → sankeyDiagram-5OEKKPKP-ChLyGdq0.js} +1 -1
  130. package/web-shell/assets/{sequenceDiagram-3UESZ5HK-CSYKQUjf.js → sequenceDiagram-3UESZ5HK-tazy79aB.js} +1 -1
  131. package/web-shell/assets/{stateDiagram-AJRCARHV-d9hiHlAW.js → stateDiagram-AJRCARHV-dIYLUNSf.js} +1 -1
  132. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-luL7KTiX.js +1 -0
  133. package/web-shell/assets/{timeline-definition-PNZ67QCA-BhCBkq8k.js → timeline-definition-PNZ67QCA-BuENhrC2.js} +1 -1
  134. package/web-shell/assets/{vennDiagram-CIIHVFJN-DPPFWp_y.js → vennDiagram-CIIHVFJN-DLtum9dF.js} +1 -1
  135. package/web-shell/assets/{wardley-L42UT6IY-CcOUIgXY.js → wardley-L42UT6IY-Bf7OSF3y.js} +1 -1
  136. package/web-shell/assets/{wardleyDiagram-YWT4CUSO-p7oR5X7r.js → wardleyDiagram-YWT4CUSO-slMw3OB3.js} +1 -1
  137. package/web-shell/assets/{xychartDiagram-2RQKCTM6-Dfr7-SEy.js → xychartDiagram-2RQKCTM6-CdxOm8oC.js} +1 -1
  138. package/web-shell/index.html +1 -1
  139. package/chunks/chunk-77WXWU44.js +0 -26
  140. package/chunks/contextCommand-3327KUC4.js +0 -54
  141. package/web-shell/assets/channel-WwImfsc7.js +0 -1
  142. package/web-shell/assets/classDiagram-4FO5ZUOK-CJKQYFeJ.js +0 -1
  143. package/web-shell/assets/classDiagram-v2-Q7XG4LA2-CJKQYFeJ.js +0 -1
  144. package/web-shell/assets/index-DaebdpHq.js +0 -516
  145. package/web-shell/assets/stateDiagram-v2-BHNVJYJU-DgReoybQ.js +0 -1
@@ -1,33 +1,49 @@
1
1
  # Ignoring Files
2
2
 
3
- This document provides an overview of the Qwen Ignore (`.qwenignore`) feature of Qwen Code.
3
+ This document provides an overview of the Qwen Ignore (`.qwenignore`) feature of Qwen Code. Qwen Code also recognizes custom ignore files configured by `context.fileFiltering.customIgnoreFiles`, which defaults to the compatibility files `.agentignore` and `.aiignore`.
4
4
 
5
- Qwen Code includes the ability to automatically ignore files, similar to `.gitignore` (used by Git). Adding paths to your `.qwenignore` file will exclude them from tools that support this feature, although they will still be visible to other services (such as Git).
5
+ Qwen Code includes the ability to automatically ignore files, similar to `.gitignore` (used by Git). Adding paths to `.qwenignore` or a configured custom ignore file will exclude them from tools that support this feature, although they will still be visible to other services (such as Git).
6
6
 
7
7
  ## How it works
8
8
 
9
- When you add a path to your `.qwenignore` file, tools that respect this file will exclude matching files and directories from their operations. For example, when you use the [`read_many_files`](../../developers/tools/multi-file) command, any paths in your `.qwenignore` file will be automatically excluded.
9
+ When you add a path to one of these ignore files, tools that respect Qwen ignore rules will exclude matching files and directories from their operations. For example, when you use the [`read_many_files`](../../developers/tools/multi-file) command, any paths in `.qwenignore` or configured custom ignore files will be automatically excluded.
10
10
 
11
- For the most part, `.qwenignore` follows the conventions of `.gitignore` files:
11
+ For the most part, these ignore files follow the conventions of `.gitignore` files:
12
12
 
13
13
  - Blank lines and lines starting with `#` are ignored.
14
14
  - Standard glob patterns are supported (such as `*`, `?`, and `[]`).
15
15
  - Putting a `/` at the end will only match directories.
16
- - Putting a `/` at the beginning anchors the path relative to the `.qwenignore` file.
16
+ - Putting a `/` at the beginning anchors the path relative to the ignore file.
17
17
  - `!` negates a pattern.
18
18
 
19
- You can update your `.qwenignore` file at any time. To apply the changes, you must restart your Qwen Code session.
19
+ You can update these ignore files at any time. To apply the changes, you must restart your Qwen Code session.
20
20
 
21
- ## How to use `.qwenignore`
21
+ ## How to use ignore files
22
22
 
23
- | Step | Description |
24
- | ---------------------- | -------------------------------------------------------------------------------------- |
25
- | **Enable .qwenignore** | Create a file named `.qwenignore` in your project root directory |
26
- | **Add ignore rules** | Open `.qwenignore` file and add paths to ignore, example: `/archive/` or `apikeys.txt` |
23
+ | Step | Description |
24
+ | ----------------------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
25
+ | **Enable ignore rules** | Create `.qwenignore`, a default custom file (`.agentignore` / `.aiignore`), or a configured custom ignore file in your project root directory |
26
+ | **Add ignore rules** | Open the ignore file and add paths to ignore, example: `/archive/` or `apikeys.txt` |
27
27
 
28
- ### `.qwenignore` examples
28
+ By default, Qwen Code reads `.qwenignore`, `.agentignore`, and `.aiignore`.
29
+ To use a different custom ignore file, configure:
29
30
 
30
- You can use `.qwenignore` to ignore directories and files:
31
+ ```json
32
+ {
33
+ "context": {
34
+ "fileFiltering": {
35
+ "customIgnoreFiles": [".cursorignore"]
36
+ }
37
+ }
38
+ }
39
+ ```
40
+
41
+ `.qwenignore` is always included when `context.fileFiltering.respectQwenIgnore`
42
+ is enabled. Custom ignore file paths are relative to the project root.
43
+
44
+ ### Ignore file examples
45
+
46
+ You can use any supported ignore file to ignore directories and files:
31
47
 
32
48
  ```
33
49
  # Exclude your /packages/ directory and all subdirectories
@@ -37,7 +53,7 @@ You can use `.qwenignore` to ignore directories and files:
37
53
  apikeys.txt
38
54
  ```
39
55
 
40
- You can use wildcards in your `.qwenignore` file with `*`:
56
+ You can use wildcards in your ignore file with `*`:
41
57
 
42
58
  ```
43
59
  # Exclude all .md files
@@ -52,4 +68,4 @@ Finally, you can exclude files and directories from exclusion with `!`:
52
68
  !README.md
53
69
  ```
54
70
 
55
- To remove paths from your `.qwenignore` file, delete the relevant lines.
71
+ To remove paths from an ignore file, delete the relevant lines.
@@ -235,25 +235,26 @@ The `extra_body` field allows you to add custom parameters to the request body s
235
235
 
236
236
  #### context
237
237
 
238
- | Setting | Type | Description | Default |
239
- | ----------------------------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
240
- | `context.fileName` | string or array of strings | The name of the context file(s). | `undefined` |
241
- | `context.importFormat` | string | The format to use when importing memory. | `undefined` |
242
- | `context.includeDirectories` | array | Additional directories to include in the workspace context. Specifies an array of additional absolute or relative paths to include in the workspace context. Missing directories will be skipped with a warning by default. Paths can use `~` to refer to the user's home directory. This setting can be combined with the `--include-directories` command-line flag. | `[]` |
243
- | `context.loadFromIncludeDirectories` | boolean | Controls the behavior of the `/memory refresh` command. If set to `true`, `QWEN.md` files should be loaded from all directories that are added. If set to `false`, `QWEN.md` should only be loaded from the current directory. | `false` |
244
- | `context.fileFiltering.respectGitIgnore` | boolean | Respect .gitignore files when searching. | `true` |
245
- | `context.fileFiltering.respectQwenIgnore` | boolean | Respect .qwenignore files when searching. | `true` |
246
- | `context.fileFiltering.enableRecursiveFileSearch` | boolean | Whether to enable searching recursively for filenames under the current tree when completing `@` prefixes in the prompt. | `true` |
247
- | `context.fileFiltering.enableFuzzySearch` | boolean | When `true`, enables fuzzy search capabilities when searching for files. Set to `false` to improve performance on projects with a large number of files. | `true` |
248
- | `context.clearContextOnIdle.toolResultsThresholdMinutes` | number | Minutes of inactivity before clearing old tool result content. Use `-1` to disable the idle trigger. | `60` |
249
- | `context.clearContextOnIdle.toolResultsNumToKeep` | number | Number of most-recent compactable tool results to preserve when clearing. Floor at 1. | `5` |
250
- | `context.clearContextOnIdle.toolResultsTotalCharsThreshold` | number | Total compactable tool result output characters allowed in history before clearing oldest results. Use `-1` to disable the size trigger. This is a soft threshold: protected recent tool results may keep the total above it. | `500000` |
238
+ | Setting | Type | Description | Default |
239
+ | ----------------------------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------- |
240
+ | `context.fileName` | string or array of strings | The name of the context file(s). | `undefined` |
241
+ | `context.importFormat` | string | The format to use when importing memory. | `undefined` |
242
+ | `context.includeDirectories` | array | Additional directories to include in the workspace context. Specifies an array of additional absolute or relative paths to include in the workspace context. Missing directories will be skipped with a warning by default. Paths can use `~` to refer to the user's home directory. This setting can be combined with the `--include-directories` command-line flag. | `[]` |
243
+ | `context.loadFromIncludeDirectories` | boolean | Controls the behavior of the `/memory refresh` command. If set to `true`, `QWEN.md` files should be loaded from all directories that are added. If set to `false`, `QWEN.md` should only be loaded from the current directory. | `false` |
244
+ | `context.fileFiltering.respectGitIgnore` | boolean | Respect .gitignore files when searching. | `true` |
245
+ | `context.fileFiltering.respectQwenIgnore` | boolean | Respect .qwenignore and configured custom ignore files when searching. | `true` |
246
+ | `context.fileFiltering.customIgnoreFiles` | array | Project-root-relative ignore files to use instead of the default compatibility files (`.agentignore`, `.aiignore`) when `respectQwenIgnore` is enabled. `.qwenignore` is always included. | `[".agentignore", ".aiignore"]` |
247
+ | `context.fileFiltering.enableRecursiveFileSearch` | boolean | Whether to enable searching recursively for filenames under the current tree when completing `@` prefixes in the prompt. | `true` |
248
+ | `context.fileFiltering.enableFuzzySearch` | boolean | When `true`, enables fuzzy search capabilities when searching for files. Set to `false` to improve performance on projects with a large number of files. | `true` |
249
+ | `context.clearContextOnIdle.toolResultsThresholdMinutes` | number | Minutes of inactivity before clearing old tool result content. Use `-1` to disable the idle trigger. | `60` |
250
+ | `context.clearContextOnIdle.toolResultsNumToKeep` | number | Number of most-recent compactable tool results to preserve when clearing. Floor at 1. | `5` |
251
+ | `context.clearContextOnIdle.toolResultsTotalCharsThreshold` | number | Total compactable tool result output characters allowed in history before clearing oldest results. Use `-1` to disable the size trigger. This is a soft threshold: protected recent tool results may keep the total above it. | `500000` |
251
252
 
252
253
  #### Troubleshooting File Search Performance
253
254
 
254
255
  If you are experiencing performance issues with file searching (e.g., with `@` completions), especially in projects with a very large number of files, here are a few things you can try in order of recommendation:
255
256
 
256
- 1. **Use `.qwenignore`:** Create a `.qwenignore` file in your project root to exclude directories that contain a large number of files that you don't need to reference (e.g., build artifacts, logs, `node_modules`). Reducing the total number of files crawled is the most effective way to improve performance.
257
+ 1. **Use an ignore file:** Create a `.qwenignore` or configured custom ignore file in your project root to exclude directories that contain a large number of files that you don't need to reference (e.g., build artifacts, logs, `node_modules`). Reducing the total number of files crawled is the most effective way to improve performance.
257
258
  2. **Disable Fuzzy Search:** If ignoring files is not enough, you can disable fuzzy search by setting `enableFuzzySearch` to `false` in your `settings.json` file. This will use a simpler, non-fuzzy matching algorithm, which can be faster.
258
259
  3. **Disable Recursive File Search:** As a last resort, you can disable recursive file search entirely by setting `enableRecursiveFileSearch` to `false`. This will be the fastest option as it avoids a recursive crawl of your project. However, it means you will need to type the full path to files when using `@` completions.
259
260
 
@@ -12,11 +12,11 @@ We offer a suite of extension management tools using both `qwen extensions` CLI
12
12
 
13
13
  You can manage extensions at runtime within the interactive CLI using `/extensions` slash commands. These commands support hot-reloading, meaning changes take effect immediately without restarting the application.
14
14
 
15
- | Command | Description |
16
- | ------------------------------------- | ---------------------------------------------------------------------------- |
17
- | `/extensions` or `/extensions manage` | Manage all installed extensions |
18
- | `/extensions install <source>` | Install an extension from a git URL, local path, npm package, or marketplace |
19
- | `/extensions explore [source]` | Open extensions source page(Gemini or ClaudeCode) in your browser |
15
+ | Command | Description |
16
+ | ------------------------------------- | ---------------------------------------------------------------------------------------------------- |
17
+ | `/extensions` or `/extensions manage` | Manage all installed extensions |
18
+ | `/extensions install <source>` | Install an extension from a git URL, local path or archive, archive URL, npm package, or marketplace |
19
+ | `/extensions explore [source]` | Open extensions source page(Gemini or ClaudeCode) in your browser |
20
20
 
21
21
  #### The interactive extension manager
22
22
 
@@ -141,8 +141,26 @@ This will install the github mcp server extension.
141
141
  qwen extensions install /path/to/your/extension
142
142
  ```
143
143
 
144
+ Local `.zip` and `.tar.gz` archives are also supported:
145
+
146
+ ```bash
147
+ qwen extensions install /path/to/your/extension.zip
148
+ qwen extensions install /path/to/your/extension.tar.gz
149
+ ```
150
+
151
+ The archive must contain a complete extension at its root, or a single top-level directory containing the extension.
152
+
144
153
  Note that we create a copy of the installed extension, so you will need to run `qwen extensions update` to pull in changes from both locally-defined extensions and those on GitHub.
145
154
 
155
+ #### From Archive URL
156
+
157
+ ```bash
158
+ qwen extensions install https://example.com/your/extension.zip
159
+ qwen extensions install https://example.com/your/extension.tar.gz
160
+ ```
161
+
162
+ Archive URLs can be updated later as long as the URL continues to point at a newer archive for the same extension.
163
+
146
164
  #### Choosing an install scope
147
165
 
148
166
  By default, an installed extension is enabled globally (user scope). Pass `--scope project` to enable it only for the current workspace:
@@ -193,7 +211,7 @@ This is useful if you have an extension disabled at the top-level and only enabl
193
211
 
194
212
  ### Updating an extension
195
213
 
196
- For extensions installed from a local path, a git repository, or an npm registry, you can explicitly update to the latest version with `qwen extensions update extension-name`. For npm extensions installed without a version pin (e.g. `@scope/pkg`), updates check the `latest` dist-tag. For those installed with a specific dist-tag (e.g. `@scope/pkg@beta`), updates track that tag. Extensions pinned to an exact version (e.g. `@scope/pkg@1.2.0`) are always considered up-to-date.
214
+ For extensions installed from a local path or archive, an archive URL, a git repository, or an npm registry, you can explicitly update to the latest version with `qwen extensions update extension-name`. For npm extensions installed without a version pin (e.g. `@scope/pkg`), updates check the `latest` dist-tag. For those installed with a specific dist-tag (e.g. `@scope/pkg@beta`), updates track that tag. Extensions pinned to an exact version (e.g. `@scope/pkg@1.2.0`) are always considered up-to-date.
197
215
 
198
216
  You can update all extensions with:
199
217
 
@@ -42,8 +42,8 @@ qwen mcp
42
42
 
43
43
  Most users only need these two scopes:
44
44
 
45
- - **Project scope (default)**: `.qwen/settings.json` in your project root
46
- - **User scope**: `~/.qwen/settings.json` across all projects on your machine
45
+ - **User scope (default)**: `~/.qwen/settings.json` across all projects on your machine
46
+ - **Project scope**: `.qwen/settings.json` in your project root
47
47
 
48
48
  Write to user scope:
49
49
 
@@ -94,7 +94,7 @@ JSON (`.qwen/settings.json`):
94
94
  }
95
95
  ```
96
96
 
97
- CLI (writes to project scope by default):
97
+ CLI (writes to user scope by default):
98
98
 
99
99
  ```bash
100
100
  qwen mcp add pythonTools -e DATABASE_URL=$DB_CONNECTION_STRING -e API_KEY=$EXTERNAL_API_KEY \
@@ -177,8 +177,11 @@ The prompt's messages are sent to the model, which then acts on them.
177
177
 
178
178
  Resources a server advertises via `resources/list` are discovered per
179
179
  server. Open the management dialog with `/mcp` and select a server to see
180
- its **Resources** count alongside its tools and prompts. As with prompts,
181
- the `resources` capability is not required to be declared.
180
+ its **Resources** count alongside its tools and prompts. Choose **View
181
+ resources** to browse the server's resource URIs; selecting one shows its
182
+ description and MIME type along with the exact `@server:uri` reference to
183
+ paste into a message. As with prompts, the `resources` capability is not
184
+ required to be declared.
182
185
 
183
186
  Inject a resource's contents into your message with the `@server:uri`
184
187
  syntax — type `@`, then the server name, a colon, and the resource URI:
@@ -187,8 +190,12 @@ syntax — type `@`, then the server name, a colon, and the resource URI:
187
190
  summarize @myserver:file:///docs/spec.md and list the open questions
188
191
  ```
189
192
 
190
- Typing `@myserver:` shows an autocomplete list of that server's resource
191
- URIs. On submit, the referenced resource is read and its contents are
193
+ Typing `@myserver:` shows an autocomplete list of that server's resources;
194
+ keep typing to filter, matching (case-insensitively) either the resource URI
195
+ or its friendly name/title. You don't have to know a URI by heart — before
196
+ you reach the colon, typing part of a server name also suggests matching
197
+ servers that expose resources, so you can pick one and drill straight into
198
+ its resource list. On submit, the referenced resource is read and its contents are
192
199
  appended to your message (text inline, binary blobs as attachments); the
193
200
  `@server:uri` reference is preserved in the prompt so the model knows what
194
201
  it is looking at. The `server` prefix must match a configured MCP server —
@@ -447,7 +454,7 @@ qwen mcp add [options] <name> <commandOrUrl> [args...]
447
454
  | `<name>` | A unique name for the server. | — | `example-server` |
448
455
  | `<commandOrUrl>` | The command to execute (for `stdio`) or the URL (for `http`/`sse`). | — | `/usr/bin/python` or `http://localhost:8` |
449
456
  | `[args...]` | Optional arguments for a `stdio` command. | — | `--port 5000` |
450
- | `-s`, `--scope` | Configuration scope (user or project). | `project` | `-s user` |
457
+ | `-s`, `--scope` | Configuration scope (user or project). | `user` | `-s user` |
451
458
  | `-t`, `--transport` | Transport type (`stdio`, `sse`, `http`). | `stdio` | `-t sse` |
452
459
  | `-e`, `--env` | Set environment variables. | — | `-e KEY=value` |
453
460
  | `-H`, `--header` | Set HTTP headers for SSE and HTTP transports. | — | `-H "X-Api-Key: abc123"` |
@@ -7,41 +7,43 @@ import {
7
7
  hasRebuiltToolRegistry,
8
8
  rebuildToolRegistryOnOverride,
9
9
  resolveSubagentApprovalMode
10
- } from "./chunk-VECKCOH6.js";
10
+ } from "./chunk-2X2WXY6L.js";
11
11
  import "./chunk-K5PGHDBN.js";
12
- import "./chunk-XU7BKR3B.js";
13
- import "./chunk-2O3NAOJG.js";
14
- import "./chunk-XGU3ETVO.js";
12
+ import "./chunk-TXVGVZYR.js";
13
+ import "./chunk-XU5P23GN.js";
14
+ import "./chunk-2BIF2NVV.js";
15
+ import "./chunk-57XRIZVC.js";
16
+ import "./chunk-255L5QYW.js";
15
17
  import "./chunk-2MPVVENX.js";
16
18
  import "./chunk-ZTQ26VBE.js";
17
- import "./chunk-C6MI2ASN.js";
18
- import "./chunk-LF6BKGZT.js";
19
- import "./chunk-26ZYKTYZ.js";
19
+ import "./chunk-GZCJS5WH.js";
20
20
  import "./chunk-MLZQVCF3.js";
21
21
  import "./chunk-LD2XBG6Z.js";
22
- import "./chunk-ID533GA3.js";
23
- import "./chunk-KGV3F6UF.js";
24
- import "./chunk-77WXWU44.js";
25
- import "./chunk-AE6RQU6F.js";
26
- import "./chunk-2CNO5W47.js";
22
+ import "./chunk-OTBK43JR.js";
23
+ import "./chunk-HGNSRCRB.js";
24
+ import "./chunk-EEEZIVFJ.js";
25
+ import "./chunk-PRYMDRBV.js";
26
+ import "./chunk-YMBWB67C.js";
27
27
  import "./chunk-3PJXIDKI.js";
28
28
  import "./chunk-UWCTAVOD.js";
29
29
  import "./chunk-OFEVLU4C.js";
30
30
  import "./chunk-OMX7CUOE.js";
31
- import "./chunk-FH4P6RQA.js";
32
- import "./chunk-CTHZVIMD.js";
33
- import "./chunk-VKILGMZQ.js";
34
- import "./chunk-GOMVJKBL.js";
35
- import "./chunk-MSJ2MXJ6.js";
36
- import "./chunk-ATLUHLZE.js";
31
+ import "./chunk-BNXANYLH.js";
32
+ import "./chunk-T2VDEFUU.js";
33
+ import "./chunk-PO5LVPK3.js";
34
+ import "./chunk-PLY4F7QW.js";
35
+ import "./chunk-BGUDAULQ.js";
36
+ import "./chunk-EW6C27XX.js";
37
+ import "./chunk-22IFUCVR.js";
37
38
  import "./chunk-64WXLC72.js";
38
- import "./chunk-LTN3VYMZ.js";
39
- import "./chunk-42HGOMED.js";
40
- import "./chunk-G4BUMVEY.js";
39
+ import "./chunk-3UALQ56H.js";
40
+ import "./chunk-JDV3VBPY.js";
41
+ import "./chunk-CGEGHF2C.js";
42
+ import "./chunk-EJYJYJZ2.js";
41
43
  import "./chunk-55ZMG67I.js";
42
44
  import "./chunk-H6BD2ELD.js";
43
45
  import "./chunk-5IFG2VC4.js";
44
- import "./chunk-WE6TNQJU.js";
46
+ import "./chunk-C4K3FEQ2.js";
45
47
  import "./chunk-ZERZSAZL.js";
46
48
  import "./chunk-QN5NZ3UQ.js";
47
49
  import "./chunk-BR4QREVK.js";
@@ -4,41 +4,43 @@ import {
4
4
  AgentHeadless,
5
5
  ContextState,
6
6
  templateString
7
- } from "./chunk-VECKCOH6.js";
7
+ } from "./chunk-2X2WXY6L.js";
8
8
  import "./chunk-K5PGHDBN.js";
9
- import "./chunk-XU7BKR3B.js";
10
- import "./chunk-2O3NAOJG.js";
11
- import "./chunk-XGU3ETVO.js";
9
+ import "./chunk-TXVGVZYR.js";
10
+ import "./chunk-XU5P23GN.js";
11
+ import "./chunk-2BIF2NVV.js";
12
+ import "./chunk-57XRIZVC.js";
13
+ import "./chunk-255L5QYW.js";
12
14
  import "./chunk-2MPVVENX.js";
13
15
  import "./chunk-ZTQ26VBE.js";
14
- import "./chunk-C6MI2ASN.js";
15
- import "./chunk-LF6BKGZT.js";
16
- import "./chunk-26ZYKTYZ.js";
16
+ import "./chunk-GZCJS5WH.js";
17
17
  import "./chunk-MLZQVCF3.js";
18
18
  import "./chunk-LD2XBG6Z.js";
19
- import "./chunk-ID533GA3.js";
20
- import "./chunk-KGV3F6UF.js";
21
- import "./chunk-77WXWU44.js";
22
- import "./chunk-AE6RQU6F.js";
23
- import "./chunk-2CNO5W47.js";
19
+ import "./chunk-OTBK43JR.js";
20
+ import "./chunk-HGNSRCRB.js";
21
+ import "./chunk-EEEZIVFJ.js";
22
+ import "./chunk-PRYMDRBV.js";
23
+ import "./chunk-YMBWB67C.js";
24
24
  import "./chunk-3PJXIDKI.js";
25
25
  import "./chunk-UWCTAVOD.js";
26
26
  import "./chunk-OFEVLU4C.js";
27
27
  import "./chunk-OMX7CUOE.js";
28
- import "./chunk-FH4P6RQA.js";
29
- import "./chunk-CTHZVIMD.js";
30
- import "./chunk-VKILGMZQ.js";
31
- import "./chunk-GOMVJKBL.js";
32
- import "./chunk-MSJ2MXJ6.js";
33
- import "./chunk-ATLUHLZE.js";
28
+ import "./chunk-BNXANYLH.js";
29
+ import "./chunk-T2VDEFUU.js";
30
+ import "./chunk-PO5LVPK3.js";
31
+ import "./chunk-PLY4F7QW.js";
32
+ import "./chunk-BGUDAULQ.js";
33
+ import "./chunk-EW6C27XX.js";
34
+ import "./chunk-22IFUCVR.js";
34
35
  import "./chunk-64WXLC72.js";
35
- import "./chunk-LTN3VYMZ.js";
36
- import "./chunk-42HGOMED.js";
37
- import "./chunk-G4BUMVEY.js";
36
+ import "./chunk-3UALQ56H.js";
37
+ import "./chunk-JDV3VBPY.js";
38
+ import "./chunk-CGEGHF2C.js";
39
+ import "./chunk-EJYJYJZ2.js";
38
40
  import "./chunk-55ZMG67I.js";
39
41
  import "./chunk-H6BD2ELD.js";
40
42
  import "./chunk-5IFG2VC4.js";
41
- import "./chunk-WE6TNQJU.js";
43
+ import "./chunk-C4K3FEQ2.js";
42
44
  import "./chunk-ZERZSAZL.js";
43
45
  import "./chunk-QN5NZ3UQ.js";
44
46
  import "./chunk-BR4QREVK.js";
@@ -3,30 +3,31 @@
3
3
  import {
4
4
  require_abort_controller,
5
5
  require_lib
6
- } from "./chunk-KQIKOTQJ.js";
6
+ } from "./chunk-RYLJU2DY.js";
7
7
  import {
8
8
  RequestTokenizer
9
- } from "./chunk-CX3SGIPK.js";
9
+ } from "./chunk-JRVB4QUY.js";
10
10
  import {
11
11
  Blob,
12
12
  File,
13
13
  isFile,
14
14
  isFunction
15
15
  } from "./chunk-P3MYAZBY.js";
16
- import {
17
- buildRuntimeFetchOptions,
18
- redactProxyError
19
- } from "./chunk-42HGOMED.js";
20
16
  import {
21
17
  CAPPED_DEFAULT_MAX_TOKENS,
22
18
  DEFAULT_TIMEOUT,
23
- convertSchema,
19
+ buildRuntimeFetchOptions,
24
20
  hasExplicitOutputLimit,
25
21
  parsePositiveIntegerEnvValue,
26
- runtimeDiagnostics,
27
- safeJsonParse,
22
+ redactProxyError,
28
23
  tokenLimit
29
- } from "./chunk-G4BUMVEY.js";
24
+ } from "./chunk-JDV3VBPY.js";
25
+ import {
26
+ convertSchema,
27
+ runtimeDiagnostics,
28
+ safeJsonParse
29
+ } from "./chunk-CGEGHF2C.js";
30
+ import "./chunk-EJYJYJZ2.js";
30
31
  import {
31
32
  FinishReason,
32
33
  GenerateContentResponse
@@ -35,7 +36,7 @@ import "./chunk-H6BD2ELD.js";
35
36
  import "./chunk-5IFG2VC4.js";
36
37
  import {
37
38
  createDebugLogger
38
- } from "./chunk-WE6TNQJU.js";
39
+ } from "./chunk-C4K3FEQ2.js";
39
40
  import {
40
41
  require_ms
41
42
  } from "./chunk-BR4QREVK.js";