@qwen-code/qwen-code 0.18.0-preview.2 → 0.18.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.
- package/bundled/loop/SKILL.md +2 -1
- package/bundled/qc-helper/docs/_meta.ts +1 -0
- package/bundled/qc-helper/docs/configuration/auth.md +1 -1
- package/bundled/qc-helper/docs/configuration/model-providers.md +12 -5
- package/bundled/qc-helper/docs/configuration/settings.md +33 -32
- package/bundled/qc-helper/docs/features/approval-mode.md +10 -14
- package/bundled/qc-helper/docs/features/commands.md +33 -11
- package/bundled/qc-helper/docs/features/dual-output.md +37 -3
- package/bundled/qc-helper/docs/features/followup-suggestions.md +2 -2
- package/bundled/qc-helper/docs/features/skills.md +29 -3
- package/bundled/qc-helper/docs/features/sub-agents.md +34 -12
- package/bundled/qc-helper/docs/qwen-serve-deploy-local.md +221 -0
- package/bundled/qc-helper/docs/qwen-serve.md +246 -28
- package/chunks/{agent-QB7TZ4HW.js → agent-XT7NHZ5H.js} +25 -24
- package/chunks/agent-headless-LNRE63ZL.js +51 -0
- package/chunks/{anthropicContentGenerator-M45EVVRM.js → anthropicContentGenerator-DCI26OQF.js} +7 -7
- package/chunks/{askUserQuestion-WM2KHM3K.js → askUserQuestion-ITYUTWLR.js} +45 -3
- package/chunks/{ca-BARBRL6N.js → ca-RK4QPLIX.js} +18 -1
- package/chunks/{chunk-CWV3SJZS.js → chunk-3NRO6NHX.js} +2 -2
- package/chunks/{chunk-BNESGOSJ.js → chunk-55ZMG67I.js} +1 -1
- package/chunks/{chunk-QCG6KPNM.js → chunk-6T7Y7USE.js} +18017 -11621
- package/chunks/{chunk-CNHFPN7T.js → chunk-7KPZFE5A.js} +1 -1
- package/chunks/{chunk-2ZTWI7KH.js → chunk-A2ZIEEGJ.js} +30 -22
- package/chunks/{chunk-JUGRPQAB.js → chunk-B4ZF2KSI.js} +1 -1
- package/chunks/chunk-BJ5HQ23U.js +178 -0
- package/chunks/{chunk-HXJE7VOG.js → chunk-BXYRCW2C.js} +1074 -144
- package/chunks/{chunk-ICOI4E4S.js → chunk-CPVI5J2L.js} +101 -23
- package/chunks/{chunk-HV3ZZ7G4.js → chunk-DHZREJTG.js} +2 -2
- package/chunks/{chunk-GX7VH5JQ.js → chunk-FIQECJTQ.js} +1 -1
- package/chunks/{chunk-SZOEIL6S.js → chunk-H6BD2ELD.js} +1 -0
- package/chunks/{chunk-JXAZUMDW.js → chunk-HA2UEYZP.js} +7 -4
- package/chunks/{chunk-USE2VQ5P.js → chunk-HED55F43.js} +26 -1
- package/chunks/{chunk-PAEBHDIO.js → chunk-HQUWWSSP.js} +1 -1
- package/chunks/{chunk-MVIVIPCU.js → chunk-IDYDPBBN.js} +361 -583
- package/chunks/{chunk-JVQOQ3OU.js → chunk-IQHSD7K5.js} +1 -1
- package/chunks/{chunk-NW5QBUYO.js → chunk-IS7UA4W3.js} +14 -14
- package/chunks/{chunk-UAMOBVVW.js → chunk-LXYWINWF.js} +1 -1
- package/chunks/{chunk-P4J26VDS.js → chunk-LYRSMKLS.js} +2 -2
- package/chunks/{chunk-Y7R6H6FT.js → chunk-LYSND7KR.js} +9 -4
- package/chunks/{chunk-LR62TEET.js → chunk-NNIYWQIS.js} +1 -1
- package/chunks/chunk-OMX7CUOE.js +356 -0
- package/chunks/{chunk-CNSMKPK6.js → chunk-QILTEBWS.js} +1 -1
- package/chunks/chunk-QQDPRDVW.js +25 -0
- package/chunks/{chunk-ZK4AMNIU.js → chunk-RON7LFNH.js} +1294 -314
- package/chunks/chunk-SFRV6BGY.js +243 -0
- package/chunks/{chunk-AVW55ZCO.js → chunk-WJ3SND6W.js} +37 -16
- package/chunks/{chunk-HGJPQK33.js → chunk-WPTCDQN6.js} +188 -534
- package/chunks/{chunk-7YKXFA3D.js → chunk-XZTNBSMW.js} +11 -11
- package/chunks/{chunk-C6WMLUNB.js → chunk-Y7KMDUEP.js} +1 -1
- package/chunks/{chunk-WFVXF3OM.js → chunk-Z2Z3GUXZ.js} +1 -0
- package/chunks/{chunk-KC6ZMJ5X.js → chunk-ZMIBJS45.js} +1 -1
- package/chunks/chunk-ZOFNJQNJ.js +607 -0
- package/chunks/computer-use-4YX3JGBV.js +2052 -0
- package/chunks/contextCommand-KS2H7MW5.js +53 -0
- package/chunks/cron-create-CAPUKK7I.js +184 -0
- package/chunks/{cron-delete-ZGUXWBTG.js → cron-delete-G3KAR26Q.js} +28 -5
- package/chunks/{cron-list-QNNZGMN3.js → cron-list-ZA4ZIUS5.js} +40 -7
- package/chunks/{de-YGKK2BC4.js → de-FGPM4KW5.js} +18 -1
- package/chunks/{devtools-IXE4UP72.js → devtools-FM6GJPYG.js} +1 -1
- package/chunks/{dist-ZMQ4TXD5.js → dist-7YWFWOCJ.js} +2 -2
- package/chunks/{dist-R2SXPG74.js → dist-VEGFONCF.js} +2 -2
- package/chunks/{dist-TE5QKMGR.js → dist-X4EXN7W6.js} +1 -1
- package/chunks/{dist-BXDUQ2QY.js → dist-YLS6NI7H.js} +1 -1
- package/chunks/{edit-6UBTS2J5.js → edit-2ARPEO4B.js} +26 -25
- package/chunks/{en-HSQQNQUB.js → en-VP6XPGEC.js} +9 -2
- package/chunks/{enter-worktree-NN7LIXCM.js → enter-worktree-IXNXNAW5.js} +25 -24
- package/chunks/enterPlanMode-TAKAGAYP.js +159 -0
- package/chunks/{exit-worktree-GGSS5KIE.js → exit-worktree-LHTRV7ML.js} +25 -24
- package/chunks/exitPlanMode-MK5UAITL.js +743 -0
- package/chunks/{fr-JXBKPJKQ.js → fr-ATYBVCLT.js} +18 -1
- package/chunks/{geminiContentGenerator-I4H2NLJG.js → geminiContentGenerator-HFJIGO77.js} +7 -7
- package/chunks/{getMachineId-bsd-F7GNPTER.js → getMachineId-bsd-4CASPIU4.js} +1 -1
- package/chunks/{getMachineId-darwin-T73DJL27.js → getMachineId-darwin-HPQPEMZR.js} +1 -1
- package/chunks/{getMachineId-linux-MKQTFPQM.js → getMachineId-linux-AUARKYHL.js} +1 -1
- package/chunks/{getMachineId-unsupported-MUR5KOQE.js → getMachineId-unsupported-S32ZDA2T.js} +1 -1
- package/chunks/{getMachineId-win-CDYFC6ZM.js → getMachineId-win-4EFLHYIJ.js} +1 -1
- package/chunks/{glob-OLCX57MD.js → glob-I2USLUSC.js} +25 -24
- package/chunks/{grep-7HXIMDOW.js → grep-WBIF7THR.js} +37 -30
- package/chunks/{ja-TGPZSP2B.js → ja-W2QEA2OI.js} +18 -1
- package/chunks/{keychain-token-storage-LB46DAEK.js → keychain-token-storage-QSTRHKKL.js} +3 -3
- package/chunks/{ls-6PEZUK6O.js → ls-2R5RHLX5.js} +4 -4
- package/chunks/{lsp-JZSJOVT7.js → lsp-XKH6ZIAN.js} +3 -3
- package/chunks/{monitor-SQO7MVAV.js → monitor-WU7UFATU.js} +25 -24
- package/chunks/{notebook-edit-72L3EBAL.js → notebook-edit-KUHYPXEM.js} +26 -25
- package/chunks/{openaiContentGenerator-FTR7CDWF.js → openaiContentGenerator-5PLHYJQL.js} +15 -15
- package/chunks/{pt-TIBG6BIO.js → pt-ZKEWJFBW.js} +18 -1
- package/chunks/{qwenContentGenerator-U5UFQ566.js → qwenContentGenerator-TSKW73KY.js} +27 -26
- package/chunks/{qwenOAuth2-EFSECGHF.js → qwenOAuth2-KK433U33.js} +6 -5
- package/chunks/{read-file-UA64EEQC.js → read-file-VIPF2PS6.js} +11 -11
- package/chunks/ripGrep-XLIZTYE7.js +49 -0
- package/chunks/{ru-JBCHCK4L.js → ru-VEKTPJ74.js} +18 -1
- package/chunks/{scheduler-VBASHOCA.js → scheduler-O66SLJGU.js} +25 -24
- package/chunks/{send-message-OYJZ5TPG.js → send-message-CTME7DXD.js} +3 -3
- package/chunks/{serve-A7E2OJDR.js → serve-BWOLYT62.js} +13164 -3840
- package/chunks/{shell-3NFOT6F5.js → shell-XE7UYKOO.js} +25 -24
- package/chunks/{skill-RA5YUREY.js → skill-RZWM6XMC.js} +64 -113
- package/chunks/{src-NFCMARMT.js → src-L5P7K4MH.js} +176 -44
- package/chunks/{syntheticOutput-DETQ2YM6.js → syntheticOutput-ZJGSU7OQ.js} +4 -4
- package/chunks/{task-create-Y3ZKTJIG.js → task-create-EE6JEM7G.js} +8 -7
- package/chunks/{task-list-ONXJ3I3A.js → task-list-EESYAC65.js} +7 -6
- package/chunks/{task-stop-UHDC4N5B.js → task-stop-XZVCFFYY.js} +3 -3
- package/chunks/{task-update-TCNOU3P5.js → task-update-EIO4HNE3.js} +21 -9
- package/chunks/{team-create-6SR4OVRG.js → team-create-R2H7Y3SG.js} +28 -26
- package/chunks/{team-delete-EJ4U4DDP.js → team-delete-A7LXPGV7.js} +9 -6
- package/chunks/{todoWrite-TEYDRS5L.js → todoWrite-VRKSGAWM.js} +5 -5
- package/chunks/{tool-search-OD435A3X.js → tool-search-USSQMTMS.js} +11 -11
- package/chunks/{web-fetch-6W67H5PO.js → web-fetch-GHAZUA54.js} +5 -5
- package/chunks/workflow-5LNNLNUR.js +1414 -0
- package/chunks/{write-file-475L5OPP.js → write-file-2I7HP24C.js} +26 -25
- package/chunks/{zh-VCLWO26Y.js → zh-OIXDDQHB.js} +10 -3
- package/chunks/{zh-TW-G3HFHVVT.js → zh-TW-6YFNCKTA.js} +10 -3
- package/cli-entry.js +19 -0
- package/cli.js +11064 -6628
- package/examples/starter/QWEN.md +30 -0
- package/examples/starter/README.md +59 -0
- package/examples/starter/agents/diary.md +86 -0
- package/examples/starter/commands/writing/polish.md +13 -0
- package/examples/starter/example.ts +64 -0
- package/examples/starter/package.json +18 -0
- package/examples/starter/qwen-extension.json +12 -0
- package/examples/starter/skills/synonyms/SKILL.md +48 -0
- package/examples/starter/tsconfig.json +13 -0
- package/fzfWorker.js +1083 -0
- package/locales/ca.js +20 -2
- package/locales/de.js +21 -2
- package/locales/en.js +13 -4
- package/locales/fr.js +22 -2
- package/locales/ja.js +22 -2
- package/locales/pt.js +21 -2
- package/locales/ru.js +20 -2
- package/locales/zh-TW.js +11 -4
- package/locales/zh.js +11 -4
- package/package.json +5 -3
- package/chunks/agent-headless-APVHH7QM.js +0 -50
- package/chunks/chunk-AJIR24J2.js +0 -59
- package/chunks/chunk-SKBPNJEW.js +0 -45
- package/chunks/chunk-XBFVXFB2.js +0 -216
- package/chunks/computer-use-B7VIUI7F.js +0 -825
- package/chunks/contextCommand-63RZ3O5R.js +0 -52
- package/chunks/cron-create-FI5LJVUS.js +0 -140
- package/chunks/exitPlanMode-H323NHB2.js +0 -235
- package/chunks/ripGrep-WSYCWZVK.js +0 -48
- package/chunks/workflow-62DHH4EO.js +0 -708
package/bundled/loop/SKILL.md
CHANGED
|
@@ -56,7 +56,8 @@ Supported suffixes: `s` (seconds, rounded up to nearest minute, min 1), `m` (min
|
|
|
56
56
|
- `cron`: the expression from the table above
|
|
57
57
|
- `prompt`: the parsed prompt from above, verbatim (slash commands are passed through unchanged)
|
|
58
58
|
- `recurring`: `true`
|
|
59
|
-
|
|
59
|
+
- `durable`: `true` if the user's language implies persistence ("keep doing this", "set this up permanently", "every day even after restart"). Otherwise omit (defaults to session-only).
|
|
60
|
+
2. Briefly confirm: what's scheduled, the cron expression, the human-readable cadence, that recurring tasks auto-expire after 7 days, and that they can cancel sooner with CronDelete (include the job ID).
|
|
60
61
|
3. **Then immediately execute the parsed prompt now** — don't wait for the first cron fire. If it's a slash command, invoke it via the Skill tool; otherwise act on it directly.
|
|
61
62
|
|
|
62
63
|
## Input
|
|
@@ -15,6 +15,7 @@ export default {
|
|
|
15
15
|
'integration-jetbrains': 'JetBrains IDEs',
|
|
16
16
|
'integration-github-action': 'GitHub Actions',
|
|
17
17
|
'qwen-serve': 'Daemon mode (qwen serve)',
|
|
18
|
+
'qwen-serve-deploy-local': 'Daemon mode — local launch templates',
|
|
18
19
|
'Code with Qwen Code': {
|
|
19
20
|
type: 'separator',
|
|
20
21
|
title: 'Code with Qwen Code', // Title is optional
|
|
@@ -50,7 +50,7 @@ Alibaba Cloud Coding Plan is available in two regions:
|
|
|
50
50
|
|
|
51
51
|
Enter `qwen` in the terminal to launch Qwen Code, then run the `/auth` command and select **Alibaba Cloud Coding Plan**. Choose your region, then enter your `sk-sp-xxxxxxxxx` key.
|
|
52
52
|
|
|
53
|
-
After authentication, use the `/model` command to switch between all Alibaba Cloud Coding Plan supported models (including qwen3.5-plus, qwen3-coder-plus, qwen3-coder-next, qwen3-max, glm-4.7,
|
|
53
|
+
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
54
|
|
|
55
55
|
### Headless or scripted setup
|
|
56
56
|
|
|
@@ -299,11 +299,18 @@ Alibaba Cloud Coding Plan provides a pre-configured set of Qwen models optimized
|
|
|
299
299
|
|
|
300
300
|
When you authenticate with an Alibaba Cloud Coding Plan API key using the `/auth` command, Qwen Code automatically configures the following models:
|
|
301
301
|
|
|
302
|
-
| Model ID | Name | Description
|
|
303
|
-
| ---------------------- | -------------------- |
|
|
304
|
-
| `qwen3.5-plus` | qwen3.5-plus | Advanced model with thinking enabled
|
|
305
|
-
| `qwen3-
|
|
306
|
-
| `qwen3-
|
|
302
|
+
| Model ID | Name | Description |
|
|
303
|
+
| ---------------------- | -------------------- | --------------------------------------------------------- |
|
|
304
|
+
| `qwen3.5-plus` | qwen3.5-plus | Advanced model with thinking enabled |
|
|
305
|
+
| `qwen3.6-plus` | qwen3.6-plus | Latest model with thinking enabled (Pro subscribers only) |
|
|
306
|
+
| `qwen3.7-plus` | qwen3.7-plus | Advanced model with thinking enabled |
|
|
307
|
+
| `qwen3-coder-plus` | qwen3-coder-plus | Optimized for coding tasks |
|
|
308
|
+
| `qwen3-coder-next` | qwen3-coder-next | Experimental coding model |
|
|
309
|
+
| `qwen3-max-2026-01-23` | qwen3-max-2026-01-23 | Latest max model with thinking enabled |
|
|
310
|
+
| `glm-5` | glm-5 | GLM model with thinking enabled |
|
|
311
|
+
| `glm-4.7` | glm-4.7 | GLM model with thinking enabled |
|
|
312
|
+
| `kimi-k2.5` | kimi-k2.5 | Kimi model with thinking and vision/video support |
|
|
313
|
+
| `MiniMax-M2.5` | MiniMax-M2.5 | MiniMax model with thinking enabled |
|
|
307
314
|
|
|
308
315
|
### Setup
|
|
309
316
|
|
|
@@ -108,18 +108,16 @@ Settings are organized into categories. Most settings should be placed within th
|
|
|
108
108
|
| `ui.customBannerTitle` | string | Replace the default `>_ Qwen Code` title in the banner info panel. The `(vX.Y.Z)` version suffix is always appended; auth, model, and path lines are not affected. Sanitized; capped at 80 characters. | `""` |
|
|
109
109
|
| `ui.customBannerSubtitle` | string | Optional subtitle line rendered between the banner title and the auth/model line, in place of the blank spacer row. Sanitized; capped at 160 characters. Empty (default) keeps the original blank spacer. | `""` |
|
|
110
110
|
| `ui.customAsciiArt` | string \| object | Replace the QWEN ASCII logo in the banner. Accepts an inline string (used for both width tiers), `{ "path": "./brand.txt" }` (relative paths resolve against the owning settings file's directory; read once at startup with `O_NOFOLLOW` on POSIX, capped at 64 KB), or `{ "small": ..., "large": ... }` for width-aware selection. Sanitized; capped at 200 lines × 200 columns per tier. | `undefined` |
|
|
111
|
-
| `ui.hideFooter` | boolean | Hide the footer from the UI. | `false` |
|
|
112
|
-
| `ui.showMemoryUsage` | boolean | Display memory usage information in the UI. | `false` |
|
|
113
111
|
| `ui.showLineNumbers` | boolean | Show line numbers in code blocks in the CLI output. | `true` |
|
|
114
112
|
| `ui.renderMode` | string | Default Markdown display mode. Use `"render"` for rich visual previews or `"raw"` to show source-oriented Markdown by default. Toggle during a session with `Alt/Option+M`; on macOS the terminal must send Option as Meta. See [Markdown Rendering](../features/markdown-rendering). | `"render"` |
|
|
115
|
-
| `ui.showCitations` | boolean | Show citations for generated text in the chat. | `
|
|
113
|
+
| `ui.showCitations` | boolean | Show citations for generated text in the chat. | `false` |
|
|
116
114
|
| `ui.compactMode` | boolean | Hide tool output and thinking for a cleaner view. Toggle with `Ctrl+O` during a session or via the Settings dialog. Tool approval prompts are never hidden, even in compact mode. The setting persists across sessions. | `false` |
|
|
117
115
|
| `ui.shellOutputMaxLines` | number | Max number of shell output lines shown inline. Set to `0` to disable the cap and show full output. Hidden lines are surfaced via the `+N lines` indicator. Errors, `!`-prefix user-initiated commands, confirming tools, and focused embedded shells always show full output. | `5` |
|
|
118
|
-
| `enableWelcomeBack`
|
|
116
|
+
| `ui.enableWelcomeBack` | boolean | Show welcome back dialog when returning to a project with conversation history. When enabled, Qwen Code will automatically detect if you're returning to a project with a previously generated project summary (`.qwen/PROJECT_SUMMARY.md`) and show a dialog allowing you to continue your previous conversation or start fresh. If you choose **Start new chat session**, that choice is remembered for the current project until the project summary changes. This feature integrates with the `/summary` command and quit confirmation dialog. | `true` |
|
|
119
117
|
| `ui.accessibility.enableLoadingPhrases` | boolean | Enable loading phrases (disable for accessibility). | `true` |
|
|
120
118
|
| `ui.accessibility.screenReader` | boolean | Enables screen reader mode, which adjusts the TUI for better compatibility with screen readers. | `false` |
|
|
121
119
|
| `ui.customWittyPhrases` | array of strings | A list of custom phrases to display during loading states. When provided, the CLI will cycle through these phrases instead of the default ones. | `[]` |
|
|
122
|
-
| `ui.enableFollowupSuggestions` | boolean | Enable [followup suggestions](../features/followup-suggestions) that predict what you want to type next after the model responds. Suggestions appear as ghost text and can be accepted with Tab, Enter, or Right Arrow. | `
|
|
120
|
+
| `ui.enableFollowupSuggestions` | boolean | Enable [followup suggestions](../features/followup-suggestions) that predict what you want to type next after the model responds. Suggestions appear as ghost text and can be accepted with Tab, Enter, or Right Arrow. | `false` |
|
|
123
121
|
| `ui.enableCacheSharing` | boolean | Use cache-aware forked queries for suggestion generation. Reduces cost on providers that support prefix caching (experimental). | `true` |
|
|
124
122
|
| `ui.enableSpeculation` | boolean | Speculatively execute accepted suggestions before submission. Results appear instantly when you accept (experimental). | `false` |
|
|
125
123
|
| `experimental.emitToolUseSummaries` | boolean | Generate short LLM-based labels summarizing each tool-call batch. See [Tool-Use Summaries](../features/tool-use-summaries). Requires `fastModel` to be configured; silently skipped otherwise. Can be overridden per-session with `QWEN_CODE_EMIT_TOOL_USE_SUMMARIES=0` or `=1`. | `true` |
|
|
@@ -230,18 +228,19 @@ The `extra_body` field allows you to add custom parameters to the request body s
|
|
|
230
228
|
|
|
231
229
|
#### context
|
|
232
230
|
|
|
233
|
-
| Setting
|
|
234
|
-
|
|
|
235
|
-
| `context.fileName`
|
|
236
|
-
| `context.importFormat`
|
|
237
|
-
| `context.includeDirectories`
|
|
238
|
-
| `context.loadFromIncludeDirectories`
|
|
239
|
-
| `context.fileFiltering.respectGitIgnore`
|
|
240
|
-
| `context.fileFiltering.respectQwenIgnore`
|
|
241
|
-
| `context.fileFiltering.enableRecursiveFileSearch`
|
|
242
|
-
| `context.fileFiltering.enableFuzzySearch`
|
|
243
|
-
| `context.clearContextOnIdle.toolResultsThresholdMinutes`
|
|
244
|
-
| `context.clearContextOnIdle.toolResultsNumToKeep`
|
|
231
|
+
| Setting | Type | Description | Default |
|
|
232
|
+
| ----------------------------------------------------------- | -------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
|
|
233
|
+
| `context.fileName` | string or array of strings | The name of the context file(s). | `undefined` |
|
|
234
|
+
| `context.importFormat` | string | The format to use when importing memory. | `undefined` |
|
|
235
|
+
| `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. | `[]` |
|
|
236
|
+
| `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` |
|
|
237
|
+
| `context.fileFiltering.respectGitIgnore` | boolean | Respect .gitignore files when searching. | `true` |
|
|
238
|
+
| `context.fileFiltering.respectQwenIgnore` | boolean | Respect .qwenignore files when searching. | `true` |
|
|
239
|
+
| `context.fileFiltering.enableRecursiveFileSearch` | boolean | Whether to enable searching recursively for filenames under the current tree when completing `@` prefixes in the prompt. | `true` |
|
|
240
|
+
| `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` |
|
|
241
|
+
| `context.clearContextOnIdle.toolResultsThresholdMinutes` | number | Minutes of inactivity before clearing old tool result content. Use `-1` to disable the idle trigger. | `60` |
|
|
242
|
+
| `context.clearContextOnIdle.toolResultsNumToKeep` | number | Number of most-recent compactable tool results to preserve when clearing. Floor at 1. | `5` |
|
|
243
|
+
| `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` |
|
|
245
244
|
|
|
246
245
|
#### Troubleshooting File Search Performance
|
|
247
246
|
|
|
@@ -253,21 +252,23 @@ If you are experiencing performance issues with file searching (e.g., with `@` c
|
|
|
253
252
|
|
|
254
253
|
#### tools
|
|
255
254
|
|
|
256
|
-
| Setting
|
|
257
|
-
|
|
|
258
|
-
| `tools.sandbox`
|
|
259
|
-
| `tools.sandboxImage`
|
|
260
|
-
| `tools.shell.enableInteractiveShell`
|
|
261
|
-
| `tools.core`
|
|
262
|
-
| `tools.exclude`
|
|
263
|
-
| `tools.allowed`
|
|
264
|
-
| `tools.approvalMode`
|
|
265
|
-
| `tools.discoveryCommand`
|
|
266
|
-
| `tools.callCommand`
|
|
267
|
-
| `tools.useRipgrep`
|
|
268
|
-
| `tools.useBuiltinRipgrep`
|
|
269
|
-
| `tools.truncateToolOutputThreshold`
|
|
270
|
-
| `tools.truncateToolOutputLines`
|
|
255
|
+
| Setting | Type | Description | Default | Notes |
|
|
256
|
+
| ------------------------------------- | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
257
|
+
| `tools.sandbox` | boolean or string | Sandbox execution environment (can be a boolean or a path string). | `undefined` | |
|
|
258
|
+
| `tools.sandboxImage` | string | Sandbox image URI used by Docker/Podman when `--sandbox-image` and `QWEN_SANDBOX_IMAGE` are not set. | `undefined` | |
|
|
259
|
+
| `tools.shell.enableInteractiveShell` | boolean | Use `node-pty` for an interactive shell experience. Fallback to `child_process` still applies. | `false` | |
|
|
260
|
+
| `tools.core` | array of strings | **Deprecated.** Will be removed in next version. Use `permissions.allow` + `permissions.deny` instead. Restricts built-in tools to an allowlist. All tools not in the list are disabled. | `undefined` | |
|
|
261
|
+
| `tools.exclude` | array of strings | **Deprecated.** Use `permissions.deny` instead. Tool names to exclude from discovery. Automatically migrated to the `permissions` format on first load. | `undefined` | |
|
|
262
|
+
| `tools.allowed` | array of strings | **Deprecated.** Use `permissions.allow` instead. Tool names that bypass the confirmation dialog. Automatically migrated to the `permissions` format on first load. | `undefined` | |
|
|
263
|
+
| `tools.approvalMode` | string | Sets the default approval mode for tool usage. | `default` | Possible values: `plan` (analyze only, do not modify files or execute commands), `default` (require approval before file edits or shell commands run), `auto-edit` (automatically approve file edits), `yolo` (automatically approve all tool calls) |
|
|
264
|
+
| `tools.discoveryCommand` | string | Command to run for tool discovery. | `undefined` | |
|
|
265
|
+
| `tools.callCommand` | string | Defines a custom shell command for calling a specific tool that was discovered using `tools.discoveryCommand`. The shell command must meet the following criteria: It must take function `name` (exactly as in [function declaration](https://ai.google.dev/gemini-api/docs/function-calling#function-declarations)) as first command line argument. It must read function arguments as JSON on `stdin`, analogous to [`functionCall.args`](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#functioncall). It must return function output as JSON on `stdout`, analogous to [`functionResponse.response.content`](https://cloud.google.com/vertex-ai/generative-ai/docs/model-reference/inference#functionresponse). | `undefined` | |
|
|
266
|
+
| `tools.useRipgrep` | boolean | Use ripgrep for file content search instead of the fallback implementation. Provides faster search performance. | `true` | |
|
|
267
|
+
| `tools.useBuiltinRipgrep` | boolean | Use the bundled ripgrep binary. When set to `false`, the system-level `rg` command will be used instead. This setting is only effective when `tools.useRipgrep` is `true`. | `true` | |
|
|
268
|
+
| `tools.truncateToolOutputThreshold` | number | Truncate tool output if it is larger than this many characters. Applies to Shell, Grep, Glob, ReadFile and ReadManyFiles tools. | `25000` | Requires restart: Yes |
|
|
269
|
+
| `tools.truncateToolOutputLines` | number | Maximum lines or entries kept when truncating tool output. Applies to Shell, Grep, Glob, ReadFile and ReadManyFiles tools. | `1000` | Requires restart: Yes |
|
|
270
|
+
| `tools.computerUse.enabled` | boolean | Enable the built-in Computer Use tools (cua-driver native desktop automation). When `true` (default), the `computer_use__*` tools are registered as deferred built-ins; the first invocation downloads the pinned, signed cua-driver binary into `~/.qwen/computer-use/` and walks through macOS Accessibility / Screen Recording permissions. | `true` | Requires restart: Yes |
|
|
271
|
+
| `tools.computerUse.maxImageDimension` | number | Longest-edge pixel cap applied to cua-driver screenshots (via `set_config`'s `max_image_dimension`). `-1` (default) keeps cua-driver's built-in default (1568); `0` disables resizing (full resolution); a positive value caps the longest edge. Lower caps cut vision-token cost at the expense of fine detail. | `-1` | Requires restart: Yes. Env override: `QWEN_COMPUTER_USE_MAX_IMAGE_DIMENSION` (a non-negative integer; takes precedence over this setting) |
|
|
271
272
|
|
|
272
273
|
> [!note]
|
|
273
274
|
>
|
|
@@ -94,8 +94,8 @@ How should we handle database migration?
|
|
|
94
94
|
```json
|
|
95
95
|
// .qwen/settings.json
|
|
96
96
|
{
|
|
97
|
-
"
|
|
98
|
-
"
|
|
97
|
+
"tools": {
|
|
98
|
+
"approvalMode": "plan"
|
|
99
99
|
}
|
|
100
100
|
}
|
|
101
101
|
```
|
|
@@ -157,8 +157,8 @@ You can review each proposed change and approve or reject it individually.
|
|
|
157
157
|
```bash
|
|
158
158
|
// .qwen/settings.json
|
|
159
159
|
{
|
|
160
|
-
"
|
|
161
|
-
"
|
|
160
|
+
"tools": {
|
|
161
|
+
"approvalMode": "default"
|
|
162
162
|
}
|
|
163
163
|
}
|
|
164
164
|
```
|
|
@@ -340,10 +340,8 @@ YOLO Mode grants Qwen Code the highest permissions, automatically approving all
|
|
|
340
340
|
```bash
|
|
341
341
|
// .qwen/settings.json
|
|
342
342
|
{
|
|
343
|
-
"
|
|
344
|
-
"
|
|
345
|
-
"confirmShellCommands": false,
|
|
346
|
-
"confirmFileEdits": false
|
|
343
|
+
"tools": {
|
|
344
|
+
"approvalMode": "yolo"
|
|
347
345
|
}
|
|
348
346
|
}
|
|
349
347
|
```
|
|
@@ -364,10 +362,10 @@ qwen --prompt "Run the test suite, fix all failing tests, then commit changes"
|
|
|
364
362
|
|
|
365
363
|
### Keyboard Shortcut Switching
|
|
366
364
|
|
|
367
|
-
During a Qwen Code session, use **Shift+Tab** (or **Tab** on Windows) to quickly cycle through the
|
|
365
|
+
During a Qwen Code session, use **Shift+Tab** (or **Tab** on Windows) to quickly cycle through the five modes:
|
|
368
366
|
|
|
369
367
|
```
|
|
370
|
-
Ask Permissions Mode → Auto-Edit Mode →
|
|
368
|
+
Plan Mode → Ask Permissions Mode → Auto-Edit Mode → Auto Mode → YOLO Mode → Plan Mode
|
|
371
369
|
```
|
|
372
370
|
|
|
373
371
|
### Persistent Configuration
|
|
@@ -376,10 +374,8 @@ Ask Permissions Mode → Auto-Edit Mode → YOLO Mode → Plan Mode → Ask Perm
|
|
|
376
374
|
// Project-level: ./.qwen/settings.json
|
|
377
375
|
// User-level: ~/.qwen/settings.json
|
|
378
376
|
{
|
|
379
|
-
"
|
|
380
|
-
"
|
|
381
|
-
"confirmShellCommands": true,
|
|
382
|
-
"confirmFileEdits": true
|
|
377
|
+
"tools": {
|
|
378
|
+
"approvalMode": "auto-edit" // or "plan", "default", "auto", "yolo"
|
|
383
379
|
}
|
|
384
380
|
}
|
|
385
381
|
```
|
|
@@ -18,14 +18,21 @@ Slash commands are used to manage Qwen Code sessions, interface, and basic behav
|
|
|
18
18
|
|
|
19
19
|
These commands help you save, restore, and summarize work progress.
|
|
20
20
|
|
|
21
|
-
| Command
|
|
22
|
-
|
|
|
23
|
-
| `/init`
|
|
24
|
-
| `/summary`
|
|
25
|
-
| `/compress`
|
|
26
|
-
| `/
|
|
27
|
-
| `/
|
|
28
|
-
| `/
|
|
21
|
+
| Command | Description | Usage Examples |
|
|
22
|
+
| ---------------- | ------------------------------------------------------------------------ | ------------------------------------------------------------- |
|
|
23
|
+
| `/init` | Analyze current directory and create initial context file | `/init` |
|
|
24
|
+
| `/summary` | Generate project summary based on conversation history | `/summary` |
|
|
25
|
+
| `/compress` | Replace chat history with summary to save Tokens | `/compress` |
|
|
26
|
+
| `/compress-fast` | Fast compression without AI — strips old tool outputs and thinking parts | `/compress-fast` |
|
|
27
|
+
| `/resume` | Resume a previous conversation session | `/resume` |
|
|
28
|
+
| `/recap` | Generate a one-line session recap now | `/recap` |
|
|
29
|
+
| `/restore` | Revert project files to the checkpoint before a tool call ran | `/restore` (list) or `/restore <ID>` |
|
|
30
|
+
| `/delete` | Delete a previous session | `/delete` |
|
|
31
|
+
| `/branch` | Fork the current conversation into a new session | `/branch` |
|
|
32
|
+
| `/fork` | Spawn a background agent that inherits the full conversation | `/fork <directive>` |
|
|
33
|
+
| `/rewind` | Rewind conversation to a previous turn | `/rewind` or `/rollback` |
|
|
34
|
+
| `/export` | Export session history to file | `/export html`, `/export md`, `/export json`, `/export jsonl` |
|
|
35
|
+
| `/rename` | Rename or tag the current session | `/rename My Feature` or `/tag` |
|
|
29
36
|
|
|
30
37
|
### 1.2 Interface and Workspace Control
|
|
31
38
|
|
|
@@ -43,6 +50,7 @@ Commands for adjusting interface appearance and work environment.
|
|
|
43
50
|
| `/editor` | Open dialog to select supported editor | `/editor` |
|
|
44
51
|
| `/statusline` | Open interactive [status line](./status-line.md) preset dialog | `/statusline` |
|
|
45
52
|
| `/statusline <text>` | Generate a command-mode [status line](./status-line.md) via agent | `/statusline show model and git branch` |
|
|
53
|
+
| `/terminal-setup` | Configure terminal keybindings for multiline input | `/terminal-setup` |
|
|
46
54
|
|
|
47
55
|
### 1.3 Language Settings
|
|
48
56
|
|
|
@@ -71,6 +79,7 @@ Commands for managing AI tools and models.
|
|
|
71
79
|
| →`plan` | Analysis only, no execution | Secure review |
|
|
72
80
|
| →`default` | Require approval for edits | Daily use |
|
|
73
81
|
| →`auto-edit` | Automatically approve edits | Trusted environment |
|
|
82
|
+
| →`auto` | Classifier-evaluated approval | Autonomous sessions with safety guardrails |
|
|
74
83
|
| →`yolo` | Automatically approve all | Quick prototyping |
|
|
75
84
|
| `/model` | Switch model used in current session | `/model` |
|
|
76
85
|
| `/model --fast` | Set a lighter model for prompt suggestions | `/model --fast qwen3-coder-flash` |
|
|
@@ -79,6 +88,14 @@ Commands for managing AI tools and models.
|
|
|
79
88
|
| `/remember` | Save a durable memory | `/remember Prefer terse responses` |
|
|
80
89
|
| `/forget` | Remove matching entries from auto-memory | `/forget <query>` |
|
|
81
90
|
| `/dream` | Manually run auto-memory consolidation | `/dream` |
|
|
91
|
+
| `/hooks` | Manage Qwen Code hooks | `/hooks`, `/hooks list` |
|
|
92
|
+
| `/permissions` | Manage permission rules | `/permissions` |
|
|
93
|
+
| `/agents` | Manage subagents | `/agents manage`, `/agents create` |
|
|
94
|
+
| `/arena` | Manage Arena sessions | `/arena start`, `/arena status` |
|
|
95
|
+
| `/goal` | Set a goal — keep working until condition met | `/goal <condition>`, `/goal clear` |
|
|
96
|
+
| `/tasks` | List background tasks | `/tasks` |
|
|
97
|
+
| `/lsp` | Show LSP server status | `/lsp` |
|
|
98
|
+
| `/trust` | Manage folder trust settings | `/trust` |
|
|
82
99
|
|
|
83
100
|
### 1.5 Built-in Skills
|
|
84
101
|
|
|
@@ -192,7 +209,7 @@ progress; otherwise it waits for the current turn to finish and then fires).
|
|
|
192
209
|
Unlike the manual command, the auto-trigger is fully silent on failure: if
|
|
193
210
|
generation errors or there is nothing to summarize, no message is added to
|
|
194
211
|
the history. Controlled by the `general.showSessionRecap` setting
|
|
195
|
-
(default: `
|
|
212
|
+
(default: `false`); the manual `/recap` command always works regardless of
|
|
196
213
|
this setting.
|
|
197
214
|
|
|
198
215
|
**Example:**
|
|
@@ -209,8 +226,8 @@ this setting.
|
|
|
209
226
|
>
|
|
210
227
|
> Configure a fast model via `/model --fast <model>` (e.g.
|
|
211
228
|
> `qwen3-coder-flash`) to make `/recap` fast and cheap. Set
|
|
212
|
-
> `general.showSessionRecap` to `
|
|
213
|
-
>
|
|
229
|
+
> `general.showSessionRecap` to `true` to enable the auto-trigger; the
|
|
230
|
+
> manual `/recap` command always works regardless of this setting.
|
|
214
231
|
|
|
215
232
|
### 1.8 Diff Viewer (`/diff`)
|
|
216
233
|
|
|
@@ -278,6 +295,11 @@ Commands for obtaining information and performing system settings.
|
|
|
278
295
|
| `/stats tools` | Show per-tool call counts | `/stats tools` |
|
|
279
296
|
| `/settings` | Open settings editor | `/settings` |
|
|
280
297
|
| `/auth` | Change authentication method | `/auth` |
|
|
298
|
+
| `/doctor` | Run installation and environment diagnostics | `/doctor`, `/doctor memory` |
|
|
299
|
+
| `/docs` | Open full Qwen Code documentation in browser | `/docs` |
|
|
300
|
+
| `/ide` | Manage IDE integration | `/ide status`, `/ide install` |
|
|
301
|
+
| `/insight` | Generate programming insights from chat history | `/insight` |
|
|
302
|
+
| `/setup-github` | Set up GitHub Actions | `/setup-github` |
|
|
281
303
|
| `/bug` | Submit issue about Qwen Code | `/bug Button click unresponsive` |
|
|
282
304
|
| `/copy` | Copy AI output to clipboard (`/copy N` = Nth-last AI message) | `/copy` or `/copy 2` |
|
|
283
305
|
| `/quit` | Exit Qwen Code immediately | `/quit` or `/exit` |
|
|
@@ -199,10 +199,10 @@ wrappers that throw away stdout anyway.
|
|
|
199
199
|
|
|
200
200
|
## Quick start
|
|
201
201
|
|
|
202
|
-
Run Qwen Code with
|
|
202
|
+
Run Qwen Code with both channels enabled using regular files:
|
|
203
203
|
|
|
204
204
|
```bash
|
|
205
|
-
|
|
205
|
+
touch /tmp/qwen-events.jsonl /tmp/qwen-input.jsonl
|
|
206
206
|
qwen \
|
|
207
207
|
--json-file /tmp/qwen-events.jsonl \
|
|
208
208
|
--input-file /tmp/qwen-input.jsonl
|
|
@@ -211,7 +211,7 @@ qwen \
|
|
|
211
211
|
In a second terminal, tail the event stream:
|
|
212
212
|
|
|
213
213
|
```bash
|
|
214
|
-
|
|
214
|
+
tail -f /tmp/qwen-events.jsonl
|
|
215
215
|
```
|
|
216
216
|
|
|
217
217
|
In a third terminal, push a prompt into the running TUI:
|
|
@@ -223,6 +223,33 @@ echo '{"type":"submit","text":"Explain this repo"}' >> /tmp/qwen-input.jsonl
|
|
|
223
223
|
The prompt appears in the TUI exactly as if the user typed it, and the
|
|
224
224
|
streaming response is mirrored on `/tmp/qwen-events.jsonl`.
|
|
225
225
|
|
|
226
|
+
### Using FIFOs (named pipes) for event output
|
|
227
|
+
|
|
228
|
+
FIFOs deliver lower latency than regular files (no disk I/O) and work
|
|
229
|
+
well when both sides are on the same host. The bridge opens FIFOs with
|
|
230
|
+
`O_RDWR | O_NONBLOCK`, so it **does not block** even if no reader is
|
|
231
|
+
connected yet — events are buffered in the kernel pipe buffer until a
|
|
232
|
+
reader attaches.
|
|
233
|
+
|
|
234
|
+
> **Note:** `--input-file` requires a regular file (not a FIFO) because
|
|
235
|
+
> the watcher relies on `stat.size` to detect new data, which is always
|
|
236
|
+
> 0 for FIFOs.
|
|
237
|
+
|
|
238
|
+
```bash
|
|
239
|
+
mkfifo /tmp/qwen-events.jsonl
|
|
240
|
+
touch /tmp/qwen-input.jsonl
|
|
241
|
+
qwen \
|
|
242
|
+
--json-file /tmp/qwen-events.jsonl \
|
|
243
|
+
--input-file /tmp/qwen-input.jsonl
|
|
244
|
+
# TUI starts immediately — no need to start a reader first.
|
|
245
|
+
|
|
246
|
+
# In a second terminal, connect whenever ready:
|
|
247
|
+
cat /tmp/qwen-events.jsonl
|
|
248
|
+
```
|
|
249
|
+
|
|
250
|
+
If no reader ever connects, the bridge auto-disables once the internal
|
|
251
|
+
buffer exceeds 1 MB. The TUI continues running normally.
|
|
252
|
+
|
|
226
253
|
## Output event schema
|
|
227
254
|
|
|
228
255
|
Events are emitted as JSON Lines (one object per line). The schema is the same
|
|
@@ -325,6 +352,13 @@ polling — events are written synchronously as the TUI emits them.
|
|
|
325
352
|
- **Consumer disconnect.** If the reader on the other side of the channel
|
|
326
353
|
goes away (`EPIPE`), the bridge silently disables itself and the TUI
|
|
327
354
|
keeps running. No retry.
|
|
355
|
+
- **FIFO buffer overflow.** When writing to a FIFO with no reader
|
|
356
|
+
attached, events buffer in the kernel pipe (~64 KB on Linux) and the
|
|
357
|
+
Node.js WriteStream. Once the pipe is full or the internal buffer
|
|
358
|
+
exceeds 1 MB, the bridge disables itself and closes the fd. No
|
|
359
|
+
`session_end` is emitted in this case — consumers should treat a
|
|
360
|
+
closed stream without `session_end` as an abnormal termination. The
|
|
361
|
+
TUI continues running normally.
|
|
328
362
|
- **Adapter exception.** Any exception thrown while emitting an event is
|
|
329
363
|
caught, logged, and disables the bridge. The TUI is never crashed by a
|
|
330
364
|
dual-output failure.
|
|
@@ -32,7 +32,7 @@ Suggestions are generated when all of the following conditions are met:
|
|
|
32
32
|
- There are no errors in the most recent response
|
|
33
33
|
- No confirmation dialogs are pending (e.g., shell confirmation, permissions)
|
|
34
34
|
- The approval mode is not set to `plan`
|
|
35
|
-
- The feature is enabled in settings (
|
|
35
|
+
- The feature is enabled in settings (disabled by default — set `ui.enableFollowupSuggestions` to `true` to turn it on)
|
|
36
36
|
|
|
37
37
|
Suggestions will not appear in non-interactive mode (e.g., headless/SDK mode).
|
|
38
38
|
|
|
@@ -72,7 +72,7 @@ These settings can be configured in `settings.json`:
|
|
|
72
72
|
|
|
73
73
|
| Setting | Type | Default | Description |
|
|
74
74
|
| ------------------------------ | ------- | ------- | ------------------------------------------------------------------ |
|
|
75
|
-
| `ui.enableFollowupSuggestions` | boolean | `
|
|
75
|
+
| `ui.enableFollowupSuggestions` | boolean | `false` | Enable or disable followup suggestions |
|
|
76
76
|
| `ui.enableCacheSharing` | boolean | `true` | Use cache-aware forked queries to reduce cost (experimental) |
|
|
77
77
|
| `ui.enableSpeculation` | boolean | `false` | Speculatively execute suggestions before submission (experimental) |
|
|
78
78
|
| `fastModel` | string | `""` | Model for prompt suggestions and speculative execution |
|
|
@@ -118,9 +118,35 @@ Notes:
|
|
|
118
118
|
|
|
119
119
|
- Globs are matched relative to the project root with [picomatch](https://github.com/micromatch/picomatch); files outside the project root never trigger activation.
|
|
120
120
|
- A path-gated Skill **stays activated for the rest of the session** once a matching file is touched. A new session, or a `refreshCache` triggered by editing any Skill file, resets activations.
|
|
121
|
-
- `paths:` only gates **model** discovery, and only at the SkillTool listing level.
|
|
121
|
+
- `paths:` only gates **model** discovery, and only at the SkillTool listing level. Unless `user-invocable: false` is set, you can always invoke a path-gated Skill yourself via `/<skill-name>` or the `/skills` picker — that user path runs the Skill body regardless of activation state. The model side, however, stays gated until a matching file is touched: a slash invocation does **not** unlock model-side activation, so if you want the model to chain off your invocation (call `Skill { skill: ... }` itself), also access a file matching the skill's `paths:` first.
|
|
122
122
|
- Combining `paths:` with `disable-model-invocation: true` is allowed but the gate has no effect — the Skill is hidden from the model regardless, so path activation never advertises it.
|
|
123
123
|
|
|
124
|
+
### Optional: control user and model invocation
|
|
125
|
+
|
|
126
|
+
Skills are user-invocable by default. To hide a Skill from direct slash-command use while keeping it available for model invocation, set `user-invocable: false`:
|
|
127
|
+
|
|
128
|
+
```yaml
|
|
129
|
+
---
|
|
130
|
+
name: model-only-helper
|
|
131
|
+
description: Helper the model can call when appropriate
|
|
132
|
+
user-invocable: false
|
|
133
|
+
---
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
This removes the Skill from `/<skill-name>` invocation and `/skills` picker results. It does not hide the Skill from the model.
|
|
137
|
+
|
|
138
|
+
To hide a Skill from model invocation while keeping direct user invocation available, set `disable-model-invocation: true`:
|
|
139
|
+
|
|
140
|
+
```yaml
|
|
141
|
+
---
|
|
142
|
+
name: manual-helper
|
|
143
|
+
description: Helper you invoke manually
|
|
144
|
+
disable-model-invocation: true
|
|
145
|
+
---
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
You can combine both fields, but then the Skill is not reachable through the normal user or model invocation paths.
|
|
149
|
+
|
|
124
150
|
## Add supporting files
|
|
125
151
|
|
|
126
152
|
Create additional files alongside `SKILL.md`:
|
|
@@ -170,9 +196,9 @@ To view available Skills, ask Qwen Code directly:
|
|
|
170
196
|
What Skills are available?
|
|
171
197
|
```
|
|
172
198
|
|
|
173
|
-
> **Heads up — model vs. user view.** Asking the model only surfaces Skills the model can currently see. If a Skill uses `paths:` (see "Optional: gate a Skill on file paths" above), it stays out of that listing until a matching file has been touched. The
|
|
199
|
+
> **Heads up — model vs. user view.** Asking the model only surfaces Skills the model can currently see. If a Skill uses `paths:` (see "Optional: gate a Skill on file paths" above), it stays out of that listing until a matching file has been touched. The `/skills` slash command shows Skills you can invoke directly; Skills with `user-invocable: false` remain visible on disk and may still be visible to the model.
|
|
174
200
|
|
|
175
|
-
Or browse the
|
|
201
|
+
Or browse the user-invocable list with the slash command (including path-gated Skills that have not activated yet):
|
|
176
202
|
|
|
177
203
|
```text
|
|
178
204
|
/skills
|