@qwen-code/qwen-code 0.18.0 → 0.18.1-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.
Files changed (115) hide show
  1. package/bundled/loop/SKILL.md +2 -1
  2. package/bundled/qc-helper/docs/common-workflow.md +4 -4
  3. package/bundled/qc-helper/docs/configuration/auth.md +1 -1
  4. package/bundled/qc-helper/docs/configuration/model-providers.md +13 -6
  5. package/bundled/qc-helper/docs/configuration/settings.md +90 -87
  6. package/bundled/qc-helper/docs/features/dual-output.md +37 -3
  7. package/bundled/qc-helper/docs/features/skills.md +29 -3
  8. package/bundled/qc-helper/docs/features/sub-agents.md +5 -4
  9. package/bundled/qc-helper/docs/qwen-serve.md +32 -23
  10. package/bundled/qc-helper/docs/reference/keyboard-shortcuts.md +30 -30
  11. package/bundled/review/SKILL.md +3 -1
  12. package/bundled/simplify/SKILL.md +1 -1
  13. package/chunks/{agent-LOTJK6AH.js → agent-WK5GYOPC.js} +21 -20
  14. package/chunks/{agent-headless-TU3EPMYU.js → agent-headless-KZJALDQF.js} +21 -20
  15. package/chunks/{anthropicContentGenerator-2HBRNQ3B.js → anthropicContentGenerator-DCI26OQF.js} +4 -4
  16. package/chunks/{askUserQuestion-OGCMIBQM.js → askUserQuestion-NDNFGC35.js} +2 -2
  17. package/chunks/{ca-BARBRL6N.js → ca-RK4QPLIX.js} +18 -1
  18. package/chunks/{chunk-BIVG75CP.js → chunk-26QELEL2.js} +1 -1
  19. package/chunks/{chunk-LBP46COL.js → chunk-27STU35P.js} +83 -15
  20. package/chunks/{chunk-ZTZ4DDQE.js → chunk-3NRO6NHX.js} +2 -2
  21. package/chunks/{chunk-XV4HCEVI.js → chunk-6WPY6ES3.js} +41 -22
  22. package/chunks/{chunk-A7B4ISQP.js → chunk-B4ZF2KSI.js} +1 -1
  23. package/chunks/chunk-BJ5HQ23U.js +178 -0
  24. package/chunks/{chunk-PL3MVCWD.js → chunk-BW7CMDF3.js} +11 -11
  25. package/chunks/{chunk-OHEGWO4L.js → chunk-CPVI5J2L.js} +1 -1
  26. package/chunks/{chunk-LEJ42GNY.js → chunk-DYCU43TE.js} +6 -6
  27. package/chunks/{chunk-6YIUGZTC.js → chunk-E322ZT4P.js} +281 -132
  28. package/chunks/{chunk-SEGYWKIH.js → chunk-FIQECJTQ.js} +1 -1
  29. package/chunks/{chunk-HR7SV7AY.js → chunk-HA2UEYZP.js} +6 -2
  30. package/chunks/{chunk-2Y5SYSD3.js → chunk-IDYDPBBN.js} +3 -3
  31. package/chunks/{chunk-3HTIVKZE.js → chunk-IQHSD7K5.js} +1 -1
  32. package/chunks/{chunk-MFBBBTNY.js → chunk-JZFEL3RB.js} +1 -1
  33. package/chunks/{chunk-B7HXHOHU.js → chunk-LXYWINWF.js} +1 -1
  34. package/chunks/{chunk-IDX6COTE.js → chunk-LYRSMKLS.js} +2 -2
  35. package/chunks/{chunk-M6VTDSVR.js → chunk-LYSND7KR.js} +9 -4
  36. package/chunks/{chunk-EYENRK4D.js → chunk-NNIYWQIS.js} +1 -1
  37. package/chunks/chunk-OMX7CUOE.js +356 -0
  38. package/chunks/{chunk-R7ODSGTK.js → chunk-OT6JA3KQ.js} +2 -2
  39. package/chunks/{chunk-IWAYOW5Q.js → chunk-Q3NN2XUW.js} +6661 -4210
  40. package/chunks/{chunk-72LDN5PP.js → chunk-QP4R5FTG.js} +1 -1
  41. package/chunks/{chunk-7BCMOPIM.js → chunk-RLFLJVHU.js} +31 -12
  42. package/chunks/{chunk-3DHXZ6EV.js → chunk-SFRV6BGY.js} +6 -4
  43. package/chunks/{chunk-JTQAQBTV.js → chunk-VU6A2OBJ.js} +20 -6
  44. package/chunks/{chunk-HLPLOD42.js → chunk-VXHYMZXW.js} +1 -1
  45. package/chunks/{chunk-J5MDQKJL.js → chunk-WPTCDQN6.js} +2 -347
  46. package/chunks/{chunk-SNGELLWX.js → chunk-ZMIBJS45.js} +1 -1
  47. package/chunks/{chunk-XBY7E2FX.js → chunk-ZOFNJQNJ.js} +6 -4
  48. package/chunks/computer-use-4ELNIZMF.js +2052 -0
  49. package/chunks/{contextCommand-K347QT6O.js → contextCommand-E2V26QGD.js} +23 -22
  50. package/chunks/cron-create-7CXEAJ2K.js +184 -0
  51. package/chunks/{cron-delete-WKWSJZQA.js → cron-delete-2FQYYNQ6.js} +27 -4
  52. package/chunks/{cron-list-B52XEXAZ.js → cron-list-QCAJ73XE.js} +39 -6
  53. package/chunks/{de-YGKK2BC4.js → de-FGPM4KW5.js} +18 -1
  54. package/chunks/{dist-4LXD6L6X.js → dist-2UCAYOX7.js} +2 -2
  55. package/chunks/{dist-H6ONXVLG.js → dist-33LHH26D.js} +1 -1
  56. package/chunks/{dist-PK7DFCAW.js → dist-KF43SZZV.js} +1 -1
  57. package/chunks/{dist-KAZ3SEBX.js → dist-PF2IYSMD.js} +1 -1
  58. package/chunks/{edit-KU4PJGEX.js → edit-IC3ECG44.js} +23 -24
  59. package/chunks/{en-DHGYHIHX.js → en-VP6XPGEC.js} +5 -2
  60. package/chunks/{enter-worktree-PPYIDCWI.js → enter-worktree-ETQWM7BB.js} +21 -20
  61. package/chunks/{enterPlanMode-5CZDMCB4.js → enterPlanMode-VL3F45RF.js} +21 -20
  62. package/chunks/{exit-worktree-UY3CGHKC.js → exit-worktree-F5BJXBFB.js} +21 -20
  63. package/chunks/{exitPlanMode-3DN4QNSG.js → exitPlanMode-VOC7G5FJ.js} +71 -31
  64. package/chunks/{fr-JXBKPJKQ.js → fr-ATYBVCLT.js} +18 -1
  65. package/chunks/{geminiContentGenerator-7A6I2RWB.js → geminiContentGenerator-7D2QZ5FE.js} +4 -4
  66. package/chunks/{glob-OFNQSS52.js → glob-XTABUPPR.js} +21 -20
  67. package/chunks/{grep-6J2MSUM5.js → grep-MRCXYH2N.js} +30 -26
  68. package/chunks/{ja-TGPZSP2B.js → ja-W2QEA2OI.js} +18 -1
  69. package/chunks/{keychain-token-storage-6IU6ORQN.js → keychain-token-storage-QSTRHKKL.js} +2 -2
  70. package/chunks/{ls-V3O6A5PT.js → ls-XVGXRYWD.js} +3 -3
  71. package/chunks/{lsp-G2OCIFUA.js → lsp-S6SHPULC.js} +2 -2
  72. package/chunks/{monitor-FKLHV423.js → monitor-LNRRNJJB.js} +21 -20
  73. package/chunks/{notebook-edit-KTBYFKWG.js → notebook-edit-IS3UYVGM.js} +22 -21
  74. package/chunks/{openaiContentGenerator-L5KSWQY7.js → openaiContentGenerator-P772OZ6K.js} +11 -11
  75. package/chunks/{pt-TIBG6BIO.js → pt-ZKEWJFBW.js} +18 -1
  76. package/chunks/{qwenContentGenerator-PYOXLMBW.js → qwenContentGenerator-Y6YGZRHH.js} +23 -22
  77. package/chunks/{qwenOAuth2-2KCKWDCF.js → qwenOAuth2-KK433U33.js} +4 -4
  78. package/chunks/{read-file-JQVRK4NU.js → read-file-2JIJ646W.js} +8 -8
  79. package/chunks/{ripGrep-2L4LPNAJ.js → ripGrep-Z74CN4MW.js} +21 -20
  80. package/chunks/{ru-JBCHCK4L.js → ru-VEKTPJ74.js} +18 -1
  81. package/chunks/{scheduler-FGNXY4JQ.js → scheduler-KFG4TT3A.js} +21 -20
  82. package/chunks/{send-message-SZFWNOCL.js → send-message-SMNR5DBG.js} +2 -2
  83. package/chunks/{serve-N2IBLA3G.js → serve-XDZAE3KF.js} +998 -278
  84. package/chunks/{shell-PTEG6UX4.js → shell-BTAJJJHO.js} +21 -20
  85. package/chunks/{skill-X4NTK4NH.js → skill-LSM726DP.js} +10 -10
  86. package/chunks/{src-GLLQ3R5W.js → src-JMUZP4A4.js} +44 -26
  87. package/chunks/{syntheticOutput-IKAY5F6X.js → syntheticOutput-KMNF7YG6.js} +3 -3
  88. package/chunks/{task-create-MQICOJFV.js → task-create-LIJHK75G.js} +7 -6
  89. package/chunks/{task-list-RIHJCH32.js → task-list-S4GNSILM.js} +6 -5
  90. package/chunks/{task-stop-FWZRFANS.js → task-stop-3GBRYJHM.js} +2 -2
  91. package/chunks/{task-update-2LHPXOYM.js → task-update-F3UTVJMS.js} +7 -6
  92. package/chunks/{team-create-2E4PF4KN.js → team-create-S5ZBN464.js} +21 -20
  93. package/chunks/{team-delete-DAUDQS4J.js → team-delete-54434EB7.js} +6 -5
  94. package/chunks/{todoWrite-HTUACZES.js → todoWrite-4ENGSBUX.js} +4 -4
  95. package/chunks/{tool-search-KTVULRES.js → tool-search-NUOEJ4LF.js} +8 -8
  96. package/chunks/{web-fetch-CZ7LLKPE.js → web-fetch-RHZMF3MP.js} +4 -4
  97. package/chunks/{workflow-L2ZUUDT2.js → workflow-ZI3ZXNU6.js} +503 -49
  98. package/chunks/{write-file-ZEB2JDYH.js → write-file-MHQLLZWY.js} +22 -21
  99. package/chunks/{zh-7H5OQC4I.js → zh-OIXDDQHB.js} +5 -2
  100. package/chunks/{zh-TW-P4IDHD3M.js → zh-TW-6YFNCKTA.js} +5 -2
  101. package/cli-entry.js +19 -0
  102. package/cli.js +6645 -4971
  103. package/locales/ca.js +20 -2
  104. package/locales/de.js +21 -2
  105. package/locales/en.js +7 -4
  106. package/locales/fr.js +22 -2
  107. package/locales/ja.js +22 -2
  108. package/locales/pt.js +21 -2
  109. package/locales/ru.js +20 -2
  110. package/locales/zh-TW.js +6 -4
  111. package/locales/zh.js +6 -4
  112. package/package.json +4 -3
  113. package/chunks/chunk-SKBPNJEW.js +0 -45
  114. package/chunks/computer-use-3RH2DOM6.js +0 -825
  115. package/chunks/cron-create-YJL3KFWI.js +0 -140
@@ -97,30 +97,30 @@ Settings are organized into categories. Most settings should be placed within th
97
97
 
98
98
  #### ui
99
99
 
100
- | Setting | Type | Description | Default |
101
- | --------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- |
102
- | `ui.theme` | string | The color theme for the UI. See [Themes](../configuration/themes) for available options. | `undefined` |
103
- | `ui.customThemes` | object | Custom theme definitions. | `{}` |
104
- | `ui.statusLine` | object | Custom status line configuration. Supports `command`, `refreshInterval`, `respectUserColors`, and `hideContextIndicator` options. See [Status Line](../features/status-line). | `undefined` |
105
- | `ui.hideWindowTitle` | boolean | Hide the window title bar. | `false` |
106
- | `ui.hideTips` | boolean | Hide all tips (startup and post-response) in the UI. See [Contextual Tips](../features/tips). | `false` |
107
- | `ui.hideBanner` | boolean | Hide the startup ASCII logo and info panel. Tips and chat input still render unless `ui.hideTips` is also set. | `false` |
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
- | `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
- | `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.showLineNumbers` | boolean | Show line numbers in code blocks in the CLI output. | `true` |
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"` |
113
- | `ui.showCitations` | boolean | Show citations for generated text in the chat. | `false` |
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` |
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` |
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` |
117
- | `ui.accessibility.enableLoadingPhrases` | boolean | Enable loading phrases (disable for accessibility). | `true` |
118
- | `ui.accessibility.screenReader` | boolean | Enables screen reader mode, which adjusts the TUI for better compatibility with screen readers. | `false` |
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. | `[]` |
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` |
121
- | `ui.enableCacheSharing` | boolean | Use cache-aware forked queries for suggestion generation. Reduces cost on providers that support prefix caching (experimental). | `true` |
122
- | `ui.enableSpeculation` | boolean | Speculatively execute accepted suggestions before submission. Results appear instantly when you accept (experimental). | `false` |
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` |
100
+ | Setting | Type | Description | Default |
101
+ | --------------------------------------- | ---------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------- |
102
+ | `ui.theme` | string | The color theme for the UI. See [Themes](../configuration/themes) for available options. | `"Qwen Dark"` |
103
+ | `ui.customThemes` | object | Custom theme definitions. | `{}` |
104
+ | `ui.statusLine` | object | Custom status line configuration. Supports `command`, `refreshInterval`, `respectUserColors`, and `hideContextIndicator` options. See [Status Line](../features/status-line). | `undefined` |
105
+ | `ui.hideWindowTitle` | boolean | Hide the window title bar. | `false` |
106
+ | `ui.hideTips` | boolean | Hide all tips (startup and post-response) in the UI. See [Contextual Tips](../features/tips). | `false` |
107
+ | `ui.hideBanner` | boolean | Hide the startup ASCII logo and info panel. Tips and chat input still render unless `ui.hideTips` is also set. | `false` |
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
+ | `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
+ | `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.showLineNumbers` | boolean | Show line numbers in code blocks in the CLI output. | `true` |
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"` |
113
+ | `ui.showCitations` | boolean | Show citations for generated text in the chat. | `false` |
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` |
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` |
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` |
117
+ | `ui.accessibility.enableLoadingPhrases` | boolean | Enable loading phrases (disable for accessibility). | `true` |
118
+ | `ui.accessibility.screenReader` | boolean | Enables screen reader mode, which adjusts the TUI for better compatibility with screen readers. | `false` |
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. | `[]` |
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` |
121
+ | `ui.enableCacheSharing` | boolean | Use cache-aware forked queries for suggestion generation. Reduces cost on providers that support prefix caching (experimental). | `true` |
122
+ | `ui.enableSpeculation` | boolean | Speculatively execute accepted suggestions before submission. Results appear instantly when you accept (experimental). | `false` |
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` |
124
124
 
125
125
  #### ide
126
126
 
@@ -149,7 +149,7 @@ Settings are organized into categories. Most settings should be placed within th
149
149
  | `model.chatCompression.maxRecentImagesToRetain` | number | Number of most-recent images (tool screenshots / user pastes) restored into history after auto-compaction. `0` restores none. Env override: `QWEN_COMPACT_MAX_RECENT_IMAGES`. | `3` |
150
150
  | `model.chatCompression.enableScreenshotTrigger` | boolean | When `true`, auto-compaction also fires once the number of tool-returned images accumulated in history reaches `screenshotTriggerThreshold`, independent of token usage — aimed at computer-use sessions where frequent screenshots dilute model attention. Counts only images returned inside tool results, not user-pasted images. Env override: `QWEN_COMPACT_SCREENSHOT_TRIGGER` (`1`/`true`/`0`/`false`). | `true` |
151
151
  | `model.chatCompression.screenshotTriggerThreshold` | number | Tool-returned image count at or above which the screenshot trigger fires (only when `enableScreenshotTrigger`). Compaction resets the count — surviving images are re-embedded as top-level parts, which the trigger doesn't count — so it won't immediately re-fire. Env override: `QWEN_COMPACT_SCREENSHOT_THRESHOLD`. | `50` |
152
- | `model.skipNextSpeakerCheck` | boolean | Skip the next speaker check. | `false` |
152
+ | `model.skipNextSpeakerCheck` | boolean | Skip the next speaker check. | `true` |
153
153
  | `model.skipLoopDetection` | boolean | Disables streaming loop detection checks. Defaults to `true` (loop detection is skipped) to avoid false positives interrupting legitimate workflows. Set to `false` to re-enable streaming loop detection — useful as a guardrail in headless / non-interactive runs where stuck repetition can otherwise waste budget. | `true` |
154
154
  | `model.skipStartupContext` | boolean | Skips sending the startup workspace context (environment summary and acknowledgement) at the beginning of each session. Enable this if you prefer to provide context manually or want to save tokens on startup. | `false` |
155
155
  | `model.enableOpenAILogging` | boolean | Enables logging of OpenAI API calls for debugging and analysis. When enabled, API requests and responses are logged to JSON files. | `false` |
@@ -228,18 +228,19 @@ The `extra_body` field allows you to add custom parameters to the request body s
228
228
 
229
229
  #### context
230
230
 
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. | `60` |
242
- | `context.clearContextOnIdle.toolResultsNumToKeep` | number | Number of most-recent compactable tool results to preserve when clearing. Floor at 1. | `5` |
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` |
243
244
 
244
245
  #### Troubleshooting File Search Performance
245
246
 
@@ -251,21 +252,23 @@ If you are experiencing performance issues with file searching (e.g., with `@` c
251
252
 
252
253
  #### tools
253
254
 
254
- | Setting | Type | Description | Default | Notes |
255
- | ------------------------------------ | ----------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
256
- | `tools.sandbox` | boolean or string | Sandbox execution environment (can be a boolean or a path string). | `undefined` | |
257
- | `tools.sandboxImage` | string | Sandbox image URI used by Docker/Podman when `--sandbox-image` and `QWEN_SANDBOX_IMAGE` are not set. | `undefined` | |
258
- | `tools.shell.enableInteractiveShell` | boolean | Use `node-pty` for an interactive shell experience. Fallback to `child_process` still applies. | `false` | |
259
- | `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` | |
260
- | `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` | |
261
- | `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` | |
262
- | `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) |
263
- | `tools.discoveryCommand` | string | Command to run for tool discovery. | `undefined` | |
264
- | `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` | |
265
- | `tools.useRipgrep` | boolean | Use ripgrep for file content search instead of the fallback implementation. Provides faster search performance. | `true` | |
266
- | `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` | |
267
- | `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 |
268
- | `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 |
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. | `true` | |
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), `auto` (LLM classifier auto-approves safe actions, blocks risky ones), `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) |
269
272
 
270
273
  > [!note]
271
274
  >
@@ -610,41 +613,41 @@ For sandbox image selection, precedence is:
610
613
 
611
614
  ### Command-Line Arguments Table
612
615
 
613
- | Argument | Alias | Description | Possible Values | Notes |
614
- | ---------------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
615
- | `--model` | `-m` | Specifies the Qwen model to use for this session. | Model name | Example: `npm start -- --model qwen3-coder-plus` |
616
- | `--prompt` | `-p` | Used to pass a prompt directly to the command. This invokes Qwen Code in a non-interactive mode. | Your prompt text | For scripting examples, use the `--output-format json` flag to get structured output. |
617
- | `--prompt-interactive` | `-i` | Starts an interactive session with the provided prompt as the initial input. | Your prompt text | The prompt is processed within the interactive session, not before it. Cannot be used when piping input from stdin. Example: `qwen -i "explain this code"` |
618
- | `--system-prompt` | | Overrides the built-in main session system prompt for this run. | Your prompt text | Loaded context files such as `QWEN.md` are still appended after this override. Can be combined with `--append-system-prompt`. |
619
- | `--append-system-prompt` | | Appends extra instructions to the main session system prompt for this run. | Your prompt text | Applied after the built-in prompt and loaded context files. Can be combined with `--system-prompt`. See [Headless Mode](../features/headless) for examples. |
620
- | `--output-format` | `-o` | Specifies the format of the CLI output for non-interactive mode. | `text`, `json`, `stream-json` | `text`: (Default) The standard human-readable output. `json`: A machine-readable JSON output emitted at the end of execution. `stream-json`: Streaming JSON messages emitted as they occur during execution. For structured output and scripting, use the `--output-format json` or `--output-format stream-json` flag. See [Headless Mode](../features/headless) for detailed information. |
621
- | `--input-format` | | Specifies the format consumed from standard input. | `text`, `stream-json` | `text`: (Default) Standard text input from stdin or command-line arguments. `stream-json`: JSON message protocol via stdin for bidirectional communication. Requirement: `--input-format stream-json` requires `--output-format stream-json` to be set. When using `stream-json`, stdin is reserved for protocol messages. See [Headless Mode](../features/headless) for detailed information. |
622
- | `--include-partial-messages` | | Include partial assistant messages when using `stream-json` output format. When enabled, emits stream events (message_start, content_block_delta, etc.) as they occur during streaming. | | Default: `false`. Requirement: Requires `--output-format stream-json` to be set. See [Headless Mode](../features/headless) for detailed information about stream events. |
623
- | `--sandbox` | `-s` | Enables sandbox mode for this session. | | |
624
- | `--sandbox-image` | | Sets the sandbox image URI. | | |
625
- | `--debug` | `-d` | Enables debug mode for this session, providing more verbose output. | | |
626
- | `--all-files` | `-a` | If set, recursively includes all files within the current directory as context for the prompt. | | |
627
- | `--help` | `-h` | Displays help information about command-line arguments. | | |
628
- | `--show-memory-usage` | | Displays the current memory usage. | | |
629
- | `--yolo` | | Enables YOLO mode, which automatically approves all tool calls. | | |
630
- | `--approval-mode` | | Sets the approval mode for tool calls. | `plan`, `default`, `auto-edit`, `yolo` | Supported modes: `plan`: Analyze only—do not modify files or execute commands. `default`: Require approval for file edits or shell commands (default behavior). `auto-edit`: Automatically approve edit tools (`edit`, `write_file`, `notebook_edit`) while prompting for others. `yolo`: Automatically approve all tool calls (equivalent to `--yolo`). Cannot be used together with `--yolo`. Use `--approval-mode=yolo` instead of `--yolo` for the new unified approach. Example: `qwen --approval-mode auto-edit`<br>See more about [Approval Mode](../features/approval-mode). |
631
- | `--allowed-tools` | | A comma-separated list of tool names that will bypass the confirmation dialog. | Tool names | Example: `qwen --allowed-tools "Shell(git status)"` |
632
- | `--disabled-slash-commands` | | Slash command names to hide/disable (comma-separated or repeated). Unioned with the `slashCommands.disabled` setting and the `QWEN_DISABLED_SLASH_COMMANDS` environment variable. Matched case-insensitively against the final command name. | Command names | Example: `qwen --disabled-slash-commands "auth,mcp,extensions"` |
633
- | `--telemetry` | | Enables [telemetry](/developers/development/telemetry). | | |
634
- | `--telemetry-target` | | Sets the telemetry target. | | See [telemetry](/developers/development/telemetry) for more information. |
635
- | `--telemetry-otlp-endpoint` | | Sets the OTLP endpoint for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
636
- | `--telemetry-otlp-protocol` | | Sets the OTLP protocol for telemetry (`grpc` or `http`). | | Defaults to `grpc`. See [telemetry](../../developers/development/telemetry) for more information. |
637
- | `--telemetry-log-prompts` | | Enables logging of prompts for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
638
- | `--acp` | | Enables ACP mode (Agent Client Protocol). Useful for IDE/editor integrations like [Zed](../integration-zed). | | Stable. Replaces the deprecated `--experimental-acp` flag. |
639
- | `--experimental-lsp` | | Enables experimental [LSP (Language Server Protocol)](../features/lsp) feature for code intelligence (go-to-definition, find references, diagnostics, etc.). | | Experimental. Requires language servers to be installed. |
640
- | `--extensions` | `-e` | Specifies a list of extensions to use for the session. | Extension names | If not provided, all available extensions are used. Use the special term `qwen -e none` to disable all extensions. Example: `qwen -e my-extension -e my-other-extension` |
641
- | `--list-extensions` | `-l` | Lists all available extensions and exits. | | |
642
- | `--proxy` | | Sets the proxy for the CLI. | Proxy URL | Example: `--proxy http://localhost:7890`. |
643
- | `--include-directories` | | Includes additional directories in the workspace for multi-directory support. | Directory paths | Can be specified multiple times or as comma-separated values. 5 directories can be added at maximum. Example: `--include-directories /path/to/project1,/path/to/project2` or `--include-directories /path/to/project1 --include-directories /path/to/project2` |
644
- | `--screen-reader` | | Enables screen reader mode, which adjusts the TUI for better compatibility with screen readers. | | |
645
- | `--version` | | Displays the version of the CLI. | | |
646
- | `--openai-logging` | | Enables logging of OpenAI API calls for debugging and analysis. | | This flag overrides the `enableOpenAILogging` setting in `settings.json`. |
647
- | `--openai-logging-dir` | | Sets a custom directory path for OpenAI API logs. | Directory path | This flag overrides the `openAILoggingDir` setting in `settings.json`. Supports absolute paths, relative paths, and `~` expansion. Example: `qwen --openai-logging-dir "~/qwen-logs" --openai-logging` |
616
+ | Argument | Alias | Description | Possible Values | Notes |
617
+ | ---------------------------- | ----- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ---------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
618
+ | `--model` | `-m` | Specifies the Qwen model to use for this session. | Model name | Example: `npm start -- --model qwen3-coder-plus` |
619
+ | `--prompt` | `-p` | Used to pass a prompt directly to the command. This invokes Qwen Code in a non-interactive mode. | Your prompt text | For scripting examples, use the `--output-format json` flag to get structured output. |
620
+ | `--prompt-interactive` | `-i` | Starts an interactive session with the provided prompt as the initial input. | Your prompt text | The prompt is processed within the interactive session, not before it. Cannot be used when piping input from stdin. Example: `qwen -i "explain this code"` |
621
+ | `--system-prompt` | | Overrides the built-in main session system prompt for this run. | Your prompt text | Loaded context files such as `QWEN.md` are still appended after this override. Can be combined with `--append-system-prompt`. |
622
+ | `--append-system-prompt` | | Appends extra instructions to the main session system prompt for this run. | Your prompt text | Applied after the built-in prompt and loaded context files. Can be combined with `--system-prompt`. See [Headless Mode](../features/headless) for examples. |
623
+ | `--output-format` | `-o` | Specifies the format of the CLI output for non-interactive mode. | `text`, `json`, `stream-json` | `text`: (Default) The standard human-readable output. `json`: A machine-readable JSON output emitted at the end of execution. `stream-json`: Streaming JSON messages emitted as they occur during execution. For structured output and scripting, use the `--output-format json` or `--output-format stream-json` flag. See [Headless Mode](../features/headless) for detailed information. |
624
+ | `--input-format` | | Specifies the format consumed from standard input. | `text`, `stream-json` | `text`: (Default) Standard text input from stdin or command-line arguments. `stream-json`: JSON message protocol via stdin for bidirectional communication. Requirement: `--input-format stream-json` requires `--output-format stream-json` to be set. When using `stream-json`, stdin is reserved for protocol messages. See [Headless Mode](../features/headless) for detailed information. |
625
+ | `--include-partial-messages` | | Include partial assistant messages when using `stream-json` output format. When enabled, emits stream events (message_start, content_block_delta, etc.) as they occur during streaming. | | Default: `false`. Requirement: Requires `--output-format stream-json` to be set. See [Headless Mode](../features/headless) for detailed information about stream events. |
626
+ | `--sandbox` | `-s` | Enables sandbox mode for this session. | | |
627
+ | `--sandbox-image` | | Sets the sandbox image URI. | | |
628
+ | `--debug` | `-d` | Enables debug mode for this session, providing more verbose output. | | |
629
+ | `--all-files` | `-a` | If set, recursively includes all files within the current directory as context for the prompt. | | |
630
+ | `--help` | `-h` | Displays help information about command-line arguments. | | |
631
+ | `--show-memory-usage` | | Displays the current memory usage. | | |
632
+ | `--yolo` | | Enables YOLO mode, which automatically approves all tool calls. | | |
633
+ | `--approval-mode` | | Sets the approval mode for tool calls. | `plan`, `default`, `auto-edit`, `auto`, `yolo` | Supported modes: `plan`: Analyze only—do not modify files or execute commands. `default`: Require approval for file edits or shell commands (default behavior). `auto-edit`: Automatically approve edit tools (`edit`, `write_file`, `notebook_edit`) while prompting for others. `auto`: LLM classifier auto-approves safe actions and blocks risky ones. `yolo`: Automatically approve all tool calls (equivalent to `--yolo`). Cannot be used together with `--yolo`. Use `--approval-mode=yolo` instead of `--yolo` for the new unified approach. Example: `qwen --approval-mode auto-edit`<br>See more about [Approval Mode](../features/approval-mode). |
634
+ | `--allowed-tools` | | A comma-separated list of tool names that will bypass the confirmation dialog. | Tool names | Example: `qwen --allowed-tools "Shell(git status)"` |
635
+ | `--disabled-slash-commands` | | Slash command names to hide/disable (comma-separated or repeated). Unioned with the `slashCommands.disabled` setting and the `QWEN_DISABLED_SLASH_COMMANDS` environment variable. Matched case-insensitively against the final command name. | Command names | Example: `qwen --disabled-slash-commands "auth,mcp,extensions"` |
636
+ | `--telemetry` | | Enables [telemetry](/developers/development/telemetry). | | |
637
+ | `--telemetry-target` | | Sets the telemetry target. | | See [telemetry](/developers/development/telemetry) for more information. |
638
+ | `--telemetry-otlp-endpoint` | | Sets the OTLP endpoint for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
639
+ | `--telemetry-otlp-protocol` | | Sets the OTLP protocol for telemetry (`grpc` or `http`). | | Defaults to `grpc`. See [telemetry](../../developers/development/telemetry) for more information. |
640
+ | `--telemetry-log-prompts` | | Enables logging of prompts for telemetry. | | See [telemetry](../../developers/development/telemetry) for more information. |
641
+ | `--acp` | | Enables ACP mode (Agent Client Protocol). Useful for IDE/editor integrations like [Zed](../integration-zed). | | Stable. Replaces the deprecated `--experimental-acp` flag. |
642
+ | `--experimental-lsp` | | Enables experimental [LSP (Language Server Protocol)](../features/lsp) feature for code intelligence (go-to-definition, find references, diagnostics, etc.). | | Experimental. Requires language servers to be installed. |
643
+ | `--extensions` | `-e` | Specifies a list of extensions to use for the session. | Extension names | If not provided, all available extensions are used. Use the special term `qwen -e none` to disable all extensions. Example: `qwen -e my-extension -e my-other-extension` |
644
+ | `--list-extensions` | `-l` | Lists all available extensions and exits. | | |
645
+ | `--proxy` | | Sets the proxy for the CLI. | Proxy URL | Example: `--proxy http://localhost:7890`. |
646
+ | `--include-directories` | | Includes additional directories in the workspace for multi-directory support. | Directory paths | Can be specified multiple times or as comma-separated values. 5 directories can be added at maximum. Example: `--include-directories /path/to/project1,/path/to/project2` or `--include-directories /path/to/project1 --include-directories /path/to/project2` |
647
+ | `--screen-reader` | | Enables screen reader mode, which adjusts the TUI for better compatibility with screen readers. | | |
648
+ | `--version` | | Displays the version of the CLI. | | |
649
+ | `--openai-logging` | | Enables logging of OpenAI API calls for debugging and analysis. | | This flag overrides the `enableOpenAILogging` setting in `settings.json`. |
650
+ | `--openai-logging-dir` | | Sets a custom directory path for OpenAI API logs. | Directory path | This flag overrides the `openAILoggingDir` setting in `settings.json`. Supports absolute paths, relative paths, and `~` expansion. Example: `qwen --openai-logging-dir "~/qwen-logs" --openai-logging` |
648
651
 
649
652
  ## Context Files (Hierarchical Instructional Context)
650
653
 
@@ -199,10 +199,10 @@ wrappers that throw away stdout anyway.
199
199
 
200
200
  ## Quick start
201
201
 
202
- Run Qwen Code with all three channels enabled:
202
+ Run Qwen Code with both channels enabled using regular files:
203
203
 
204
204
  ```bash
205
- mkfifo /tmp/qwen-events.jsonl /tmp/qwen-input.jsonl
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
- cat /tmp/qwen-events.jsonl
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.