Skip to Content
用户指南配置设置

Qwen Code 配置

Tip

认证 / API 密钥: 认证(Qwen OAuth 与 OpenAI 兼容 API)和认证相关的环境变量(如 OPENAI_API_KEY)在 认证 中有详细说明。

Note

关于新配置格式的说明settings.json 文件的格式已更新为新的、更有组织的结构。旧格式将自动迁移。 Qwen Code 提供了多种配置其行为的方式,包括环境变量、命令行参数和设置文件。本文档概述了不同的配置方法和可用设置。

配置层级

配置按以下优先级顺序应用(数字较小的会被数字较大的覆盖):

级别配置源说明
1默认值应用程序内部的硬编码默认值
2系统默认文件系统范围的默认设置,可被其他设置文件覆盖
3用户设置文件当前用户的全局设置
4项目设置文件项目特定的设置
5系统设置文件系统范围的设置,会覆盖所有其他设置文件
6环境变量系统范围或会话特定的变量,可能从 .env 文件加载
7命令行参数启动 CLI 时传递的值

设置文件

Qwen Code 使用 JSON 设置文件进行持久化配置。这些文件有四个位置:

文件类型位置作用域
系统默认文件Linux: /etc/qwen-code/system-defaults.json
Windows: C:\ProgramData\qwen-code\system-defaults.json
macOS: /Library/Application Support/QwenCode/system-defaults.json
路径可以通过 QWEN_CODE_SYSTEM_DEFAULTS_PATH 环境变量覆盖。
提供系统范围默认设置的基础层。这些设置具有最低优先级,旨在被用户、项目或系统覆盖设置所覆盖。
用户设置文件~/.qwen/settings.json(其中 ~ 是你的主目录)。适用于当前用户的所有 Qwen Code 会话。
项目设置文件项目根目录下的 .qwen/settings.json仅在从该特定项目运行 Qwen Code 时生效。项目设置会覆盖用户设置。
系统设置文件Linux: /etc/qwen-code/settings.json
Windows: C:\ProgramData\qwen-code\settings.json
macOS: /Library/Application Support/QwenCode/settings.json
路径可以通过 QWEN_CODE_SYSTEM_SETTINGS_PATH 环境变量覆盖。
适用于系统上所有用户的 Qwen Code 会话。系统设置会覆盖用户和项目设置。对企业系统管理员来说很有用,可以控制用户的 Qwen Code 配置。
Note

关于设置中的环境变量:settings.json 文件中的字符串值可以使用 $VAR_NAME${VAR_NAME} 语法引用环境变量。这些变量在加载设置时会自动解析。例如,如果你有一个环境变量 MY_API_TOKEN,你可以在 settings.json 中这样使用它:"apiKey": "$MY_API_TOKEN"

项目中的 .qwen 目录

除了项目设置文件外,项目的 .qwen 目录还可以包含其他与 Qwen Code 操作相关的项目特定文件,例如:

  • 自定义沙盒配置文件(例如 .qwen/sandbox-macos-custom.sb.qwen/sandbox.Dockerfile)。
  • .qwen/skills/ 下的 Agent Skills(实验性功能)(每个 Skill 都是一个包含 SKILL.md 的目录)。

settings.json 中的可用设置

设置按类别组织。所有设置都应放置在 settings.json 文件中对应的顶级类别对象内。

general

设置类型描述默认值
general.preferredEditorstring打开文件时首选的编辑器。undefined
general.vimModeboolean启用 Vim 键位绑定。false
general.disableAutoUpdateboolean禁用自动更新。false
general.disableUpdateNagboolean禁用更新通知提示。false
general.gitCoAuthorboolean通过 Qwen Code 提交代码时,自动在 Git 提交信息中添加 Co-authored-by 标记。true
general.checkpointing.enabledboolean启用会话检查点以进行恢复。false

output

设置类型描述默认值可能的值
output.formatstringCLI 输出的格式。"text""text", "json"

ui

设置类型描述默认值
ui.themestringUI 的颜色主题。可用选项请参见 主题undefined
ui.customThemesobject自定义主题定义。{}
ui.hideWindowTitleboolean隐藏窗口标题栏。false
ui.hideTipsboolean隐藏 UI 中的提示信息。false
ui.hideBannerboolean隐藏应用横幅。false
ui.hideFooterboolean隐藏 UI 中的页脚。false
ui.showMemoryUsageboolean在 UI 中显示内存使用信息。false
ui.showLineNumbersboolean在 CLI 输出的代码块中显示行号。true
ui.showCitationsboolean在聊天中显示生成文本的引用来源。true
enableWelcomeBackboolean当返回到有对话历史的项目时显示欢迎回来对话框。启用后,Qwen Code 将自动检测你是否返回到包含先前生成的项目摘要 (.qwen/PROJECT_SUMMARY.md) 的项目,并显示一个对话框,允许你继续之前的对话或重新开始。此功能与 /summary 命令和退出确认对话框集成。true
ui.accessibility.disableLoadingPhrasesboolean为无障碍功能禁用加载短语。false
ui.accessibility.screenReaderboolean启用屏幕阅读器模式,该模式会调整 TUI 以更好地兼容屏幕阅读器。false
ui.customWittyPhrasesarray of strings在加载状态期间显示的自定义短语列表。提供时,CLI 将循环显示这些短语而不是默认短语。[]

ide

设置类型描述默认值
ide.enabledboolean启用 IDE 集成模式。false
ide.hasSeenNudgeboolean用户是否已看到 IDE 集成提示。false

privacy

设置类型描述默认值
privacy.usageStatisticsEnabledboolean启用使用统计信息收集。true

model

设置类型描述默认值
model.namestring用于对话的 Qwen 模型。undefined
model.maxSessionTurnsnumber会话中保留的最大用户/模型/工具轮次数。-1 表示无限制。-1
model.summarizeToolOutputobject启用或禁用工具输出的摘要。你可以使用 tokenBudget 设置指定摘要的 token 预算。注意:目前仅支持 run_shell_command 工具。例如 {"run_shell_command": {"tokenBudget": 2000}}undefined
model.generationConfigobject传递给底层内容生成器的高级覆盖配置。支持请求控制参数,如 timeoutmaxRetriesdisableCacheControl,以及 samplingParams 下的微调参数(例如 temperaturetop_pmax_tokens)。保持未设置状态以依赖提供者的默认值。undefined
model.chatCompression.contextPercentageThresholdnumber将聊天历史压缩阈值设置为模型总 token 限制的百分比。这是一个 0 到 1 之间的值,适用于自动压缩和手动 /compress 命令。例如,值为 0.6 时,当聊天历史超过 token 限制的 60% 时将触发压缩。使用 0 完全禁用压缩。0.7
model.skipNextSpeakerCheckboolean跳过下一个说话者检查。false
model.skipLoopDetectionboolean禁用循环检测检查。循环检测可防止 AI 响应中的无限循环,但可能产生误报,中断合法的工作流程。如果你经常遇到误报的循环检测中断,请启用此选项。false
model.skipStartupContextboolean跳过在每个会话开始时发送启动工作区上下文(环境摘要和确认)。如果你更喜欢手动提供上下文或希望节省启动时的 token,请启用此选项。false
model.enableOpenAILoggingboolean启用 OpenAI API 调用的日志记录,用于调试和分析。启用后,API 请求和响应将记录到 JSON 文件中。false
model.openAILoggingDirstringOpenAI API 日志的自定义目录路径。如果未指定,默认为当前工作目录下的 logs/openai。支持绝对路径、相对路径(从当前工作目录解析)和 ~ 展开(主目录)。undefined

model.generationConfig 示例:

{ "model": { "generationConfig": { "timeout": 60000, "disableCacheControl": false, "samplingParams": { "temperature": 0.2, "top_p": 0.8, "max_tokens": 1024 } } } }

model.openAILoggingDir 示例:

  • "~/qwen-logs" - 日志记录到 ~/qwen-logs 目录
  • "./custom-logs" - 日志记录到相对于当前目录的 ./custom-logs
  • "/tmp/openai-logs" - 日志记录到绝对路径 /tmp/openai-logs

context

设置类型描述默认值
context.fileNamestring 或 string 数组上下文文件的名称。undefined
context.importFormatstring导入内存时使用的格式。undefined
context.discoveryMaxDirsnumber搜索内存的最大目录数。200
context.includeDirectoriesarray在工作区上下文中包含的额外目录。指定要在工作区上下文中包含的额外绝对路径或相对路径数组。默认情况下,缺失的目录将被跳过并显示警告。路径可以使用 ~ 来引用用户的主目录。此设置可以与 --include-directories 命令行标志结合使用。[]
context.loadFromIncludeDirectoriesboolean控制 /memory refresh 命令的行为。如果设置为 true,应该从所有添加的目录中加载 QWEN.md 文件。如果设置为 false,应该只从当前目录加载 QWEN.mdfalse
context.fileFiltering.respectGitIgnoreboolean搜索时是否遵循 .gitignore 文件。true
context.fileFiltering.respectQwenIgnoreboolean搜索时是否遵循 .qwenignore 文件。true
context.fileFiltering.enableRecursiveFileSearchboolean在提示中完成 @ 前缀时,是否启用在当前树下递归搜索文件名。true
context.fileFiltering.disableFuzzySearchboolean当为 true 时,在搜索文件时禁用模糊搜索功能,这可以在文件数量较多的项目中提高性能。false

故障排除:文件搜索性能

如果你在文件搜索(例如 @ 补全)时遇到性能问题,特别是在文件数量非常多的项目中,你可以按以下推荐顺序尝试以下方法:

  1. 使用 .qwenignore 在项目根目录创建一个 .qwenignore 文件,排除包含大量不需要引用的文件的目录(例如构建产物、日志、node_modules)。减少被爬取的文件总数是提升性能最有效的方法。
  2. 禁用模糊搜索: 如果忽略文件还不够,你可以在 settings.json 文件中将 disableFuzzySearch 设置为 true 来禁用模糊搜索。这将使用更简单、非模糊的匹配算法,速度可能更快。
  3. 禁用递归文件搜索: 作为最后的手段,你可以通过将 enableRecursiveFileSearch 设置为 false 来完全禁用递归文件搜索。这将是最快的选项,因为它避免了对项目的递归爬取。但是,这意味着在使用 @ 补全时你需要输入文件的完整路径。

tools

设置类型描述默认值备注
tools.sandboxboolean 或 string沙箱执行环境(可以是布尔值或路径字符串)。undefined
tools.shell.enableInteractiveShellboolean使用 node-pty 提供交互式 shell 体验。后备到 child_process 仍然适用。false
tools.corestring 数组这可以用来通过白名单限制内置工具的集合。您还可以为支持的工具指定特定命令的限制,比如 run_shell_command 工具。例如,"tools.core": ["run_shell_command(ls -l)"] 将只允许执行 ls -l 命令。undefined
tools.excludestring 数组从发现中排除的工具名称。您还可以为支持的工具指定特定命令的限制,比如 run_shell_command 工具。例如,"tools.exclude": ["run_shell_command(rm -rf)"] 将阻止 rm -rf 命令。安全说明: tools.excluderun_shell_command 的特定命令限制基于简单的字符串匹配,容易被绕过。此功能不是安全机制,不应依赖它来安全执行不受信任的代码。建议使用 tools.core 明确选择可以执行的命令。undefined
tools.allowedstring 数组将绕过确认对话框的工具名称列表。这对于您信任且频繁使用的工具很有用。例如,["run_shell_command(git)", "run_shell_command(npm test)"] 将跳过确认对话框来运行任何 gitnpm test 命令。undefined
tools.approvalModestring设置工具使用的默认审批模式。default可能的值:plan(仅分析,不修改文件或执行命令)、default(在文件编辑或 shell 命令运行前需要审批)、auto-edit(自动批准文件编辑)、yolo(自动批准所有工具调用)
tools.discoveryCommandstring用于工具发现的命令。undefined
tools.callCommandstring定义用于调用使用 tools.discoveryCommand 发现的特定工具的自定义 shell 命令。shell 命令必须满足以下条件:它必须将函数 name(与函数声明 中的完全相同)作为第一个命令行参数。它必须在 stdin 上以 JSON 格式读取函数参数,类似于 functionCall.args。它必须在 stdout 上以 JSON 格式返回函数输出,类似于 functionResponse.response.contentundefined
tools.useRipgrepboolean使用 ripgrep 进行文件内容搜索,而不是后备实现。提供更快的搜索性能。true
tools.useBuiltinRipgrepboolean使用捆绑的 ripgrep 二进制文件。当设置为 false 时,将使用系统级的 rg 命令。此设置仅在 tools.useRipgreptrue 时有效。true
tools.enableToolOutputTruncationboolean启用大型工具输出的截断。true需要重启:是
tools.truncateToolOutputThresholdnumber如果工具输出大于此字符数,则进行截断。适用于 Shell、Grep、Glob、ReadFile 和 ReadManyFiles 工具。25000需要重启:是
tools.truncateToolOutputLinesnumber截断工具输出时保留的最大行数或条目数。适用于 Shell、Grep、Glob、ReadFile 和 ReadManyFiles 工具。1000需要重启:是
tools.autoAcceptboolean控制 CLI 是否自动接受和执行被认为是安全的工具调用(例如,只读操作)而无需显式用户确认。如果设置为 true,CLI 将绕过对被认为安全的工具的确认提示。false

mcp

设置类型描述默认值
mcp.serverCommandstring启动 MCP 服务器的命令。undefined
mcp.allowedarray of strings允许的 MCP 服务器白名单。允许你指定应该对模型可用的 MCP 服务器名称列表。这可用于限制要连接的 MCP 服务器集。注意如果设置了 --allowed-mcp-server-names,此设置将被忽略。undefined
mcp.excludedarray of strings要排除的 MCP 服务器黑名单。同时列在 mcp.excludedmcp.allowed 中的服务器将被排除。注意如果设置了 --allowed-mcp-server-names,此设置将被忽略。undefined
Note

MCP 服务器的安全说明: 这些设置在 MCP 服务器名称上使用简单的字符串匹配,而服务器名称可以被修改。如果你是系统管理员,希望防止用户绕过此限制,请考虑在系统设置级别配置 mcpServers,这样用户将无法配置自己的任何 MCP 服务器。这不应作为严密的安全机制使用。

security

设置类型描述默认值
security.folderTrust.enabledboolean用于跟踪文件夹信任是否启用的设置。false
security.auth.selectedTypestring当前选择的身份验证类型。undefined
security.auth.enforcedTypestring所需的身份验证类型(对企业用户有用)。undefined
security.auth.useExternalboolean是否使用外部身份验证流程。undefined

高级

设置类型描述默认值
advanced.autoConfigureMemoryboolean自动配置 Node.js 内存限制。false
advanced.dnsResolutionOrderstringDNS 解析顺序。undefined
advanced.excludedEnvVarsarray of strings从项目上下文中排除的环境变量。指定应从项目 .env 文件中排除加载的环境变量。这可以防止特定于项目的环境变量(如 DEBUG=true)干扰 CLI 行为。来自 .qwen/.env 文件的变量永远不会被排除。["DEBUG","DEBUG_MODE"]
advanced.bugCommandobject错误报告命令的配置。覆盖 /bug 命令的默认 URL。属性:urlTemplate (string):可以包含 {title}{info} 占位符的 URL。示例:"bugCommand": { "urlTemplate": "https://bug.example.com/new?title={title}&info={info}" }undefined
advanced.tavilyApiKeystringTavily 网络搜索服务的 API 密钥。用于启用 web_search 工具功能。undefined
Note

关于 advanced.tavilyApiKey 的说明: 这是一种旧的配置格式。对于 Qwen OAuth 用户,DashScope 提供商会自动可用,无需任何配置。对于其他认证类型,请使用新的 webSearch 配置格式来配置 Tavily 或 Google 提供商。

mcpServers

配置到一个或多个模型上下文协议 (MCP) 服务器的连接,用于发现和使用自定义工具。Qwen Code 会尝试连接到每个配置的 MCP 服务器以发现可用的工具。如果多个 MCP 服务器暴露了同名的工具,工具名称将被添加你在配置中定义的服务器别名前缀(例如,serverAlias__actualToolName)以避免冲突。请注意,系统可能会为了兼容性而从 MCP 工具定义中移除某些 schema 属性。必须提供 commandurlhttpUrl 中至少一个。如果指定了多个,优先级顺序为 httpUrl,然后是 url,最后是 command

属性类型说明可选
mcpServers.<SERVER_NAME>.commandstring通过标准 I/O 启动 MCP 服务器要执行的命令。
mcpServers.<SERVER_NAME>.argsarray of strings传递给命令的参数。
mcpServers.<SERVER_NAME>.envobject为服务器进程设置的环境变量。
mcpServers.<SERVER_NAME>.cwdstring启动服务器的工作目录。
mcpServers.<SERVER_NAME>.urlstring使用服务器发送事件 (SSE) 进行通信的 MCP 服务器的 URL。
mcpServers.<SERVER_NAME>.httpUrlstring使用可流式 HTTP 进行通信的 MCP 服务器的 URL。
mcpServers.<SERVER_NAME>.headersobject发送到 urlhttpUrl 的请求要发送的 HTTP 头映射。
mcpServers.<SERVER_NAME>.timeoutnumber对此 MCP 服务器请求的超时时间(毫秒)。
mcpServers.<SERVER_NAME>.trustboolean信任此服务器并绕过所有工具调用确认。
mcpServers.<SERVER_NAME>.descriptionstring服务器的简短描述,可能用于显示目的。
mcpServers.<SERVER_NAME>.includeToolsarray of strings从此 MCP 服务器包含的工具名称列表。当指定时,只有此处列出的工具将从此服务器可用(白名单行为)。如果未指定,默认启用服务器的所有工具。
mcpServers.<SERVER_NAME>.excludeToolsarray of strings从此 MCP 服务器排除的工具名称列表。此处列出的工具将对模型不可用,即使服务器暴露了这些工具。注意: excludeTools 优先于 includeTools - 如果一个工具同时在两个列表中,它将被排除。

telemetry

配置 Qwen Code 的日志记录和指标收集。更多信息请参见 telemetry

设置类型描述默认值
telemetry.enabledboolean是否启用遥测。
telemetry.targetstring收集的遥测数据的目标位置。支持的值为 localgcp
telemetry.otlpEndpointstringOTLP Exporter 的端点。
telemetry.otlpProtocolstringOTLP Exporter 的协议(grpchttp)。
telemetry.logPromptsboolean是否在日志中包含用户提示的内容。
telemetry.outfilestringtargetlocal 时,写入遥测数据的文件。
telemetry.useCollectorboolean是否使用外部 OTLP 收集器。

示例 settings.json

以下是 v0.3.0 新增的嵌套结构的 settings.json 文件示例:

{ "general": { "vimMode": true, "preferredEditor": "code" }, "ui": { "theme": "GitHub", "hideBanner": true, "hideTips": false, "customWittyPhrases": [ "You forget a thousand things every day. Make sure this is one of 'em", "Connecting to AGI" ] }, "tools": { "approvalMode": "yolo", "sandbox": "docker", "discoveryCommand": "bin/get_tools", "callCommand": "bin/call_tool", "exclude": ["write_file"] }, "mcpServers": { "mainServer": { "command": "bin/mcp_server.py" }, "anotherServer": { "command": "node", "args": ["mcp_server.js", "--verbose"] } }, "telemetry": { "enabled": true, "target": "local", "otlpEndpoint": "http://localhost:4317", "logPrompts": true }, "privacy": { "usageStatisticsEnabled": true }, "model": { "name": "qwen3-coder-plus", "maxSessionTurns": 10, "enableOpenAILogging": false, "openAILoggingDir": "~/qwen-logs", "summarizeToolOutput": { "run_shell_command": { "tokenBudget": 100 } } }, "context": { "fileName": ["CONTEXT.md", "QWEN.md"], "includeDirectories": ["path/to/dir1", "~/path/to/dir2", "../path/to/dir3"], "loadFromIncludeDirectories": true, "fileFiltering": { "respectGitIgnore": false } }, "advanced": { "excludedEnvVars": ["DEBUG", "DEBUG_MODE", "NODE_ENV"] } }

Shell 历史记录

CLI 会保存你运行的 shell 命令历史记录。为了避免不同项目之间的冲突,这些历史记录会存储在用户主文件夹内的项目特定目录中。

  • 位置: ~/.qwen/tmp/<project_hash>/shell_history
    • <project_hash> 是根据你的项目根路径生成的唯一标识符。
    • 历史记录存储在名为 shell_history 的文件中。

环境变量和 .env 文件

环境变量是配置应用程序的常见方式,特别是对于敏感信息(如令牌)或可能在不同环境之间变化的设置。

Qwen Code 可以从 .env 文件中自动加载环境变量。 对于认证相关的变量(如 OPENAI_*)和推荐的 .qwen/.env 方法,请参见 认证

Tip

环境变量排除: 某些环境变量(如 DEBUGDEBUG_MODE)默认情况下会自动从项目 .env 文件中排除,以防止干扰 CLI 行为。来自 .qwen/.env 文件的变量永远不会被排除。你可以使用 settings.json 文件中的 advanced.excludedEnvVars 设置来自定义此行为。

环境变量表

变量描述备注
GEMINI_TELEMETRY_ENABLED设置为 true1 以启用遥测。任何其他值都被视为禁用。覆盖 telemetry.enabled 设置。
GEMINI_TELEMETRY_TARGET设置遥测目标(localgcp)。覆盖 telemetry.target 设置。
GEMINI_TELEMETRY_OTLP_ENDPOINT设置遥测的 OTLP 端点。覆盖 telemetry.otlpEndpoint 设置。
GEMINI_TELEMETRY_OTLP_PROTOCOL设置 OTLP 协议(grpchttp)。覆盖 telemetry.otlpProtocol 设置。
GEMINI_TELEMETRY_LOG_PROMPTS设置为 true1 以启用或禁用用户提示日志记录。任何其他值都被视为禁用。覆盖 telemetry.logPrompts 设置。
GEMINI_TELEMETRY_OUTFILE当目标为 local 时,设置写入遥测数据的文件路径。覆盖 telemetry.outfile 设置。
GEMINI_TELEMETRY_USE_COLLECTOR设置为 true1 以启用或禁用使用外部 OTLP 收集器。任何其他值都被视为禁用。覆盖 telemetry.useCollector 设置。
GEMINI_SANDBOXsettings.jsonsandbox 设置的替代选项。接受 truefalsedockerpodman 或自定义命令字符串。
SEATBELT_PROFILE(macOS 特有)在 macOS 上切换 Seatbelt(sandbox-exec)配置文件。permissive-open:(默认)限制对项目文件夹的写入(以及其他几个文件夹,参见 packages/cli/src/utils/sandbox-macos-permissive-open.sb),但允许其他操作。strict:使用严格的配置文件,默认拒绝操作。<profile_name>:使用自定义配置文件。要定义自定义配置文件,请在项目 .qwen/ 目录中创建名为 sandbox-macos-<profile_name>.sb 的文件(例如 my-project/.qwen/sandbox-macos-custom.sb)。
DEBUGDEBUG_MODE(通常由底层库或 CLI 本身使用)设置为 true1 以启用详细调试日志记录,这有助于故障排除。注意: 这些变量默认会从项目 .env 文件中自动排除,以防止干扰 CLI 行为。如果你需要专门为 Qwen Code 设置这些变量,请使用 .qwen/.env 文件。
NO_COLOR设置为任意值以禁用 CLI 中的所有颜色输出。
CLI_TITLE设置字符串以自定义 CLI 的标题。
CODE_ASSIST_ENDPOINT指定代码辅助服务器的端点。这对于开发和测试很有用。
TAVILY_API_KEY你的 Tavily 网络搜索服务 API 密钥。用于启用 web_search 工具功能。示例:export TAVILY_API_KEY="tvly-your-api-key-here"

命令行参数

在运行 CLI 时直接传入的参数可以覆盖该特定会话的其他配置。

命令行参数表

参数别名描述可能的值备注
--model-m指定此会话使用的 Qwen 模型。模型名称示例: npm start -- --model qwen3-coder-plus
--prompt-p用于直接向命令传递提示。这将在非交互模式下调用 Qwen Code。你的提示文本对于脚本示例,使用 --output-format json 标志来获取结构化输出。
--prompt-interactive-i使用提供的提示作为初始输入启动交互式会话。你的提示文本提示在交互式会话内处理,而不是在会话之前处理。当从 stdin 管道输入时不能使用。示例: qwen -i "explain this code"
--output-format-o指定非交互模式的 CLI 输出格式。text, json, stream-jsontext: (默认) 标准的可读输出。json: 执行结束时发出的机器可读 JSON 输出。stream-json: 执行过程中发生时发出的流式 JSON 消息。对于结构化输出和脚本,使用 --output-format json--output-format stream-json 标志。详细信息请参见 无头模式
--input-format指定从标准输入消费的格式。text, stream-jsontext: (默认) 来自 stdin 或命令行参数的标准文本输入。stream-json: 通过 stdin 的 JSON 消息协议,用于双向通信。要求: --input-format stream-json 需要设置 --output-format stream-json。使用 stream-json 时,stdin 保留用于协议消息。详细信息请参见 无头模式
--include-partial-messages使用 stream-json 输出格式时包含部分助手消息。启用时,在流式传输过程中发生时发出流事件 (message_start, content_block_delta 等)。默认: false。要求: 需要设置 --output-format stream-json。关于流事件的详细信息请参见 无头模式
--sandbox-s为此会话启用沙箱模式。
--sandbox-image设置沙箱镜像 URI。
--debug-d为此会话启用调试模式,提供更详细的输出。
--all-files-a如果设置,将递归包含当前目录中的所有文件作为提示的上下文。
--help-h显示关于命令行参数的帮助信息。
--show-memory-usage显示当前内存使用情况。
--yolo启用 YOLO 模式,自动批准所有工具调用。
--approval-mode设置工具调用的批准模式。plan, default, auto-edit, yolo支持的模式: plan: 仅分析—不修改文件或执行命令。default: 需要批准文件编辑或 shell 命令 (默认行为)。auto-edit: 自动批准编辑工具 (edit, write_file),同时提示其他操作。yolo: 自动批准所有工具调用 (等同于 --yolo)。不能与 --yolo 一起使用。对于新的统一方法,请使用 --approval-mode=yolo 而不是 --yolo。示例: qwen --approval-mode auto-edit
关于 批准模式 的更多信息。
--allowed-tools绕过确认对话框的工具名称逗号分隔列表。工具名称示例: qwen --allowed-tools "Shell(git status)"
--telemetry启用 遥测
--telemetry-target设置遥测目标。更多信息请参见 遥测
--telemetry-otlp-endpoint设置遥测的 OTLP 端点。更多信息请参见 遥测
--telemetry-otlp-protocol设置遥测的 OTLP 协议 (grpchttp)。默认为 grpc。更多信息请参见 遥测
--telemetry-log-prompts启用遥测的提示日志记录。更多信息请参见 遥测
--checkpointing启用 检查点
--experimental-acp启用 ACP 模式 (代理控制协议)。对 Zed 等 IDE/编辑器集成很有用。实验性功能。
--experimental-skills启用实验性 代理技能 (注册 skill 工具并从 .qwen/skills/~/.qwen/skills/ 加载技能)。实验性功能。
--extensions-e指定会话要使用的扩展列表。扩展名称如果未提供,将使用所有可用扩展。使用特殊术语 qwen -e none 来禁用所有扩展。示例: qwen -e my-extension -e my-other-extension
--list-extensions-l列出所有可用扩展并退出。
--proxy设置 CLI 的代理。代理 URL示例: --proxy http://localhost:7890
--include-directories在工作区中包含额外目录以支持多目录。目录路径可以多次指定或作为逗号分隔值。最多可以添加 5 个目录。示例: --include-directories /path/to/project1,/path/to/project2--include-directories /path/to/project1 --include-directories /path/to/project2
--screen-reader启用屏幕阅读器模式,调整 TUI 以更好地兼容屏幕阅读器。
--version显示 CLI 的版本。
--openai-logging启用 OpenAI API 调用的日志记录,用于调试和分析。此标志会覆盖 settings.json 中的 enableOpenAILogging 设置。
--openai-logging-dir为 OpenAI API 日志设置自定义目录路径。目录路径此标志会覆盖 settings.json 中的 openAILoggingDir 设置。支持绝对路径、相对路径和 ~ 展开。示例: qwen --openai-logging-dir "~/qwen-logs" --openai-logging
--tavily-api-key为此会话设置网络搜索功能的 Tavily API 密钥。API 密钥示例: qwen --tavily-api-key tvly-your-api-key-here

上下文文件(分层教学上下文)

虽然严格来说不是 CLI 行为 的配置,但上下文文件(默认为 QWEN.md,可通过 context.fileName 设置进行配置)对于配置 教学上下文(也称为”记忆”)至关重要。这个强大功能允许你向 AI 提供特定于项目的说明、编码风格指南或任何相关的背景信息,使其响应更符合你的需求并更加准确。CLI 包含 UI 元素,例如页脚中的指示器显示已加载的上下文文件数量,让你了解当前活动的上下文。

  • 用途: 这些 Markdown 文件包含你在交互过程中希望 Qwen 模型了解的指令、指南或上下文。该系统设计为以分层方式管理这种教学上下文。

上下文文件内容示例(例如 QWEN.md

以下是一个概念性示例,展示了 TypeScript 项目根目录中的上下文文件可能包含的内容:

# 项目:我的超棒 TypeScript 库 ## 一般说明: - 生成新的 TypeScript 代码时,请遵循现有的编码风格。 - 确保所有新函数和类都有 JSDoc 注释。 - 在适当情况下优先使用函数式编程范式。 - 所有代码应与 TypeScript 5.0 和 Node.js 20+ 兼容。 ## 编码风格: - 使用 2 个空格进行缩进。 - 接口名称应以 `I` 为前缀(例如,`IUserService`)。 - 私有类成员应以下划线(`_`)为前缀。 - 始终使用严格相等(`===` 和 `!==`)。 ## 特定组件:`src/api/client.ts` - 此文件处理所有传出的 API 请求。 - 添加新的 API 调用函数时,确保它们包含健壮的错误处理和日志记录。 - 所有 GET 请求都使用现有的 `fetchWithRetry` 实用工具。

关于依赖项:

  • 除非绝对必要,否则避免引入新的外部依赖项。
  • 如果需要新的依赖项,请说明原因。
此示例演示了如何提供通用项目上下文、特定编码规范,甚至特定文件或组件的注释。你的上下文文件越相关和精确,AI 就能更好地协助你。强烈建议使用项目特定的上下文文件来建立规范和上下文。 - **分层加载和优先级:** CLI 通过从多个位置加载上下文文件(例如 `QWEN.md`)实现了一个复杂的分层内存系统。此列表中较低位置(更具体)的文件内容通常会覆盖或补充较高位置(更通用)的文件内容。可以使用 `/memory show` 命令检查确切的连接顺序和最终上下文。典型的加载顺序为: 1. **全局上下文文件:** - 位置:`~/.qwen/<configured-context-filename>`(例如 `~/.qwen/QWEN.md` 在你的用户主目录中)。 - 范围:为所有项目提供默认指令。 2. **项目根目录和祖先目录上下文文件:** - 位置:CLI 在当前工作目录中搜索配置的上下文文件,然后在每个父目录中搜索,直到项目根目录(由 `.git` 文件夹标识)或你的主目录。 - 范围:提供与整个项目或其重要部分相关的上下文。 3. **子目录上下文文件(上下文/本地):** - 位置:CLI 还会在当前工作目录_下方_的子目录中扫描配置的上下文文件(遵循常见的忽略模式,如 `node_modules`、`.git` 等)。此搜索的范围默认限制为 200 个目录,但可以在 `settings.json` 文件中使用 `context.discoveryMaxDirs` 设置进行配置。 - 范围:允许为项目的特定组件、模块或子部分提供高度特定的指令。 - **连接和 UI 指示:** 所有找到的上下文文件的内容都会被连接(带有分隔符指示其来源和路径)并作为系统提示的一部分提供。CLI 页脚显示已加载的上下文文件数量,让你快速了解当前的活动指令上下文。 - **导入内容:** 你可以使用 `@path/to/file.md` 语法导入其他 Markdown 文件来模块化你的上下文文件。有关详细信息,请参阅 [Memory Import Processor 文档](../configuration/memory)。 - **内存管理命令:** - 使用 `/memory refresh` 强制重新扫描和重新加载所有配置位置的所有上下文文件。这会更新 AI 的指令上下文。 - 使用 `/memory show` 显示当前加载的组合指令上下文,让你验证 AI 使用的层次结构和内容。 - 有关 `/memory` 命令及其子命令(`show` 和 `refresh`)的完整详细信息,请参阅 [Commands 文档](../features/commands)。 通过理解和利用这些配置层和上下文文件的分层特性,你可以有效管理 AI 的内存并将 Qwen Code 的响应定制到你的特定需求和项目中。 ## 沙箱 Qwen Code 可以在沙箱环境中执行潜在的不安全操作(如 shell 命令和文件修改),以保护你的系统。 [沙箱](../features/sandbox) 默认是禁用的,但你可以通过以下几种方式启用它: - 使用 `--sandbox` 或 `-s` 标志 - 设置 `GEMINI_SANDBOX` 环境变量 - 使用 `--yolo` 或 `--approval-mode=yolo` 时默认启用沙箱 默认情况下,它使用预构建的 `qwen-code-sandbox` Docker 镜像。 对于特定项目的沙箱需求,你可以在项目根目录下的 `.qwen/sandbox.Dockerfile` 创建自定义 Dockerfile。这个 Dockerfile 可以基于基础沙箱镜像:

FROM qwen-code-sandbox

在这里添加你的自定义依赖或配置

例如:

RUN apt-get update && apt-get install -y some-package

# COPY ./my-config /app/my-config

.qwen/sandbox.Dockerfile 存在时,你可以在运行 Qwen Code 时使用 BUILD_SANDBOX 环境变量来自动构建自定义沙箱镜像:

BUILD_SANDBOX=1 qwen -s

使用统计

为了帮助我们改进 Qwen Code,我们会收集匿名的使用统计数据。这些数据帮助我们了解 CLI 的使用方式,识别常见问题,并确定新功能的优先级。

我们收集的内容:

  • 工具调用: 我们记录被调用的工具名称、调用是否成功以及执行耗时。我们不会收集传递给工具的参数或它们返回的任何数据。
  • API 请求: 我们记录每次请求使用的模型、请求持续时间以及是否成功。我们不会收集提示内容或响应内容。
  • 会话信息: 我们收集 CLI 配置信息,例如启用的工具和审批模式。

我们不收集的内容:

  • 个人身份信息 (PII): 我们不会收集任何个人信息,如您的姓名、电子邮件地址或 API 密钥。
  • 提示和响应内容: 我们不会记录您的提示内容或模型的响应内容。
  • 文件内容: 我们不会记录 CLI 读取或写入的任何文件内容。

如何退出:

您可以通过在 settings.json 文件的 privacy 类别下将 usageStatisticsEnabled 属性设置为 false 来随时退出使用统计数据收集:

{ "privacy": { "usageStatisticsEnabled": false } }
Note

启用使用统计后,事件将发送到阿里云 RUM 收集端点。

Last updated on