Qwen Coder Cli
Qwen Code 支持多个内置命令,可帮助您管理会话、自定义界面并控制其行为。这些命令以正斜杠 ( /
)、@ 符号 ( @
) 或感叹号 ( !
) 为前缀。
斜线命令 ( /
)
斜线命令为 CLI 本身提供元级别控制。
内置命令
/bug
- **描述:**提交关于 Qwen Code 的问题。默认情况下,问题会在 Qwen Code 的 GitHub 仓库中提交。您输入的字符串
/bug
将成为所提交错误的标题。您可以使用文件中的设置/bug
修改默认行为。bugCommand``.qwen/settings.json
- **描述:**提交关于 Qwen Code 的问题。默认情况下,问题会在 Qwen Code 的 GitHub 仓库中提交。您输入的字符串
/chat
**描述:**保存并恢复对话历史记录,以便以交互方式分支对话状态,或从稍后的会话恢复先前的状态。
子命令:
save
**描述:**保存当前对话历史记录。您必须添加一个
<tag>
用于标识对话状态。用法:
/chat save <tag>
检查点位置的详细信息:
保存的聊天检查点的默认位置是:
- Linux/macOS:
~/.config/google-generative-ai/checkpoints/
- 视窗:
C:\Users\<YourUsername>\AppData\Roaming\google-generative-ai\checkpoints\
- 当您运行时
/chat list
,CLI 仅扫描这些特定目录以查找可用的检查点。 - **注意:**这些检查点用于手动保存和恢复对话状态。有关文件修改前创建的自动检查点,请参阅检查点文档。
- Linux/macOS:
resume
- **描述:**从先前保存的内容恢复对话。
- 用法:
/chat resume <tag>
list
- **描述:**列出可用于恢复聊天状态的标签。
delete
- **描述:**删除已保存的对话检查点。
- 用法:
/chat delete <tag>
/clear
- **描述:**清除终端屏幕,包括 CLI 中可见的会话历史记录和回滚内容。底层会话数据(用于历史记录调用)可能会根据具体实现保留,但视觉显示会被清除。
- 键盘快捷键:随时按Ctrl+L执行清除操作。
/compress
- **描述:**用摘要替换整个聊天上下文。这可以节省用于未来任务的令牌,同时保留已发生事件的概要。
/copy
- **描述:**将 Qwen Code 生成的最后输出复制到剪贴板,以便于共享或重复使用。
/directory
(或者**/dir
**)**描述:**管理工作区目录以实现多目录支持。
子命令:
add
:
- **描述:**向工作区添加目录。路径可以是绝对路径,也可以是相对于当前工作目录的相对路径。此外,还支持从主目录引用。
- 用法:
/directory add <path1>,<path2>
- **注意:**在限制性沙盒配置文件中禁用。如果您正在使用该配置文件,请
--include-directories
在启动会话时使用。
show
:
- 描述:
/directory add
显示由和添加的所有目录--include-directories
。 - 用法:
/directory show
- 描述:
/directory
(或者**/dir
**)**描述:**管理工作区目录以实现多目录支持。
子命令:
add
:
- **描述:**向工作区添加目录。路径可以是绝对路径,也可以是相对于当前工作目录的相对路径。此外,还支持从主目录引用。
- 用法:
/directory add <path1>,<path2>
- **注意:**在限制性沙盒配置文件中禁用。如果您正在使用该配置文件,请
--include-directories
在启动会话时使用。
show
:
- 描述:
/directory add
显示由和添加的所有目录--include-directories
。 - 用法:
/directory show
- 描述:
/editor
- **描述:**打开一个对话框来选择支持的编辑器。
/extensions
- **描述:**列出当前 Qwen Code 会话中所有活动的扩展。请参阅Qwen Code 扩展。
/help
(或者**/?
**)- **描述:**显示有关 Qwen 代码的帮助信息,包括可用的命令及其用法。
/mcp
**描述:**列出已配置的模型上下文协议 (MCP) 服务器、它们的连接状态、服务器详细信息和可用工具。
子命令:
desc
或者
descriptions
:
- **描述:**显示 MCP 服务器和工具的详细描述。
nodesc
或者
nodescriptions
:
- **描述:**隐藏工具描述,仅显示工具名称。
schema
:
- **描述:**显示该工具配置参数的完整 JSON 模式。
键盘快捷键:随时按Ctrl+T可在显示和隐藏工具描述之间切换。
/memory
**描述:**管理 AI 的教学上下文(
QWEN.md
默认从文件加载的分层内存;可通过配置contextFileName
)。子命令:
add
:
- **描述:**将以下文本添加到AI的内存中。用法:
/memory add <text to remember>
- **描述:**将以下文本添加到AI的内存中。用法:
show
:
- **描述:**显示已从所有上下文文件(例如)加载的当前分层内存的完整、串联内容
QWEN.md
。这可让您检查提供给模型的教学上下文。
- **描述:**显示已从所有上下文文件(例如)加载的当前分层内存的完整、串联内容
refresh
:
- 描述:
QWEN.md
从配置位置(全局、项目/祖先目录和子目录)中找到的所有上下文文件(默认值:)重新加载分层指令记忆。这将使用最新的上下文内容更新模型。
- 描述:
**注意:**有关上下文文件如何贡献分层内存的更多详细信息,请参阅CLI 配置文档。
/restore
/settings
- **描述:**打开设置编辑器以查看和修改 Qwen Code 设置。
- **详细信息:**此命令提供了一个用户友好的界面,用于更改控制 Qwen Code 行为和外观的设置。它相当于手动编辑
.qwen/settings.json
文件,但具有验证和指导以防止错误。 - **使用方法:**只需运行
/settings
,编辑器就会打开。然后,您可以浏览或搜索特定设置,查看其当前值,并根据需要进行修改。某些设置的更改会立即生效,而其他设置的更改则需要重启。
/stats
- **描述:**显示当前 Qwen Code 会话的详细统计信息,包括令牌使用情况、缓存令牌节省量(如有)以及会话时长。注意:仅在使用缓存令牌时显示缓存令牌信息,这种情况在 API 密钥身份验证中发生,但目前在 OAuth 身份验证中不显示。
- **描述:**打开一个对话框,让您更改 Qwen Code 的视觉主题。
/auth
- **描述:**打开一个对话框,让您更改身份验证方法。
/about
- **描述:**显示版本信息。请在提交问题时提供此信息。
**描述:**显示 Qwen Code 中当前可用的工具列表。
子命令:
desc
或者
descriptions
:
- **描述:**显示每个工具的详细描述,包括每个工具的名称及其提供给模型的完整描述。
nodesc
或者
nodescriptions
:
- **描述:**隐藏工具描述,仅显示工具名称。
/privacy
- **描述:**显示隐私声明并允许用户选择是否同意为改进服务而收集其数据。
/quit
(或者**/exit
**)- **描述:**退出 Qwen 代码。
/vim
- **描述:**切换 Vim 模式。启用 Vim 模式后,输入区域在 NORMAL 和 INSERT 模式下均支持 Vim 风格的导航和编辑命令。
- 特征:
- **正常模式:**使用
h
、j
、k
、进行导航;使用、、l
按字跳转;使用、 、转到行首/行末;使用 转到特定行(或第一行)w``b``e``0``$``^``G``gg
- **INSERT 模式:**标准文本输入,按 Esc 键返回到 NORMAL 模式
- **编辑命令:**用 删除
x
,用 更改,c
用 插入i
,,,,;复杂操作如,,,,a``o``O``dd``cc``dw``cw
- **计数支持:**在命令前添加数字(例如,
3h
,5w
,10G
) - **重复上一个命令:**用于
.
重复上一次编辑操作 - 持久设置: Vim 模式首选项保存到
~/.qwen/settings.json
会话中并在会话之间恢复
- **正常模式:**使用
- **状态指示器:**启用后,在页脚中显示
[NORMAL]
或[INSERT]
/init
- **描述:**分析当前目录并
QWEN.md
默认创建一个上下文文件(或由 指定的文件名contextFileName
)。如果已存在非空文件,则不进行任何更改。该命令会播种一个空文件,并提示模型使用项目特定的指令填充该文件。
- **描述:**分析当前目录并
自定义命令
要快速入门,请参见下面的示例。
自定义命令允许您在 Qwen Code 中将您最喜欢或最常用的提示保存为个人快捷方式并重复使用。您可以创建特定于单个项目的命令,也可以创建适用于所有项目的全局命令,从而简化工作流程并确保一致性。
文件位置和优先级
Qwen Code 从两个位置发现命令,并按特定顺序加载:
- **用户命令(全局):**位于
~/.qwen/commands/
。这些命令可用于您正在处理的任何项目。 - **项目命令(本地):**位于
<your-project-root>/.qwen/commands/
。这些命令特定于当前项目,可以签入版本控制以与您的团队共享。
如果项目目录中的命令与用户目录中的命令同名,**则始终使用项目命令。**这允许项目使用项目特定版本的命令覆盖全局命令。
命名和命名空间
命令的名称由其相对于commands
目录的文件路径决定。子目录用于创建命名空间命令,路径分隔符(/
或\
)会被转换为冒号(:
)。
- 处的文件
~/.qwen/commands/test.toml
将成为命令/test
。 - 处的文件
<project>/.qwen/commands/git/commit.toml
将成为命名空间命令/git:commit
。
TOML 文件格式 (v1)
您的命令定义文件必须以 TOML 格式编写并使用.toml
文件扩展名。
必填字段
prompt
(字符串):执行命令时将发送给模型的提示。可以是单行或多行字符串。
可选字段
description
(字符串):一行简短的描述,描述该命令的功能。此文本将显示在菜单中该命令的旁边/help
。如果省略此字段,则将根据文件名生成通用描述。
处理参数
自定义命令支持两种强大且低摩擦的参数处理方法。CLI 会根据命令的内容自动选择正确的方法prompt
。
1. 简写注入{{args}}
如果您的命令prompt
中包含特殊占位符{{args}}
,CLI 会将该占位符替换为用户在命令名称后输入的所有文本。这非常适合简单、确定性的命令,因为您需要将用户输入注入到较大的提示模板中的特定位置。
例子 (git/fix.toml
):
# In: ~/.qwen/commands/git/fix.toml
# Invoked via: /git:fix "Button is misaligned on mobile"
description = "Generates a fix for a given GitHub issue."
prompt = "Please analyze the staged git changes and provide a code fix for the issue described here: {{args}}."
模型将收到最后的提示:Please analyze the staged git changes and provide a code fix for the issue described here: "Button is misaligned on mobile".
2. 默认参数处理
如果您的prompt
不包含特殊占位符{{args}}
,则 CLI 使用默认行为来处理参数。
如果您为命令提供了参数(例如/mycommand arg1
),CLI 会将您输入的完整命令附加到提示符的末尾,并以两个换行符分隔。这使得模型能够同时看到原始指令和您刚刚提供的具体参数。
如果您不提供任何参数(例如/mycommand
),则提示将按原样发送到模型,不附加任何内容。
例子 (changelog.toml
):
此示例展示了如何通过为模型定义角色、解释在何处找到用户的输入以及指定预期的格式和行为来创建强大的命令。
# In: <project>/.qwen/commands/changelog.toml
# Invoked via: /changelog 1.2.0 added "Support for default argument parsing."
description = "Adds a new entry to the project's CHANGELOG.md file."
prompt = """
# Task: Update Changelog
You are an expert maintainer of this software project. A user has invoked a command to add a new entry to the changelog.
**The user's raw command is appended below your instructions.**
Your task is to parse the `<version>`, `<change_type>`, and `<message>` from their input and use the `write_file` tool to correctly update the `CHANGELOG.md` file.
## Expected Format
The command follows this format: `/changelog <version> <type> <message>`
- `<type>` must be one of: "added", "changed", "fixed", "removed".
## Behavior
1. Read the `CHANGELOG.md` file.
2. Find the section for the specified `<version>`.
3. Add the `<message>` under the correct `<type>` heading.
4. If the version or type section doesn't exist, create it.
5. Adhere strictly to the "Keep a Changelog" format.
"""
当您运行时/changelog 1.2.0 added "New feature"
,发送给模型的最终文本将是原始提示符后跟两个换行符和您键入的命令。
3. 使用以下命令执行 Shell 命令!{...}
你可以通过直接在命令行中执行 shell 命令prompt
并注入其输出来实现命令的动态化。这对于从本地环境收集上下文信息(例如读取文件内容或检查 Git 状态)非常理想。
当自定义命令尝试执行 shell 命令时,Qwen Code 现在会在继续执行之前提示您确认。这是一项安全措施,旨在确保只有预期的命令才能运行。
工作原理:
**注入命令:**使用
!{...}
语法指定prompt
命令的运行位置及其输出的注入位置。**确认执行:**当您运行该命令时,将出现一个对话框,列出提示符想要执行的 shell 命令。
授予权限:
您可以选择:
- **允许一次:**命令将运行一次。
- **始终允许此会话:**命令将被添加到当前 CLI 会话的临时允许列表中,并且不需要再次确认。
- **否:**取消 shell 命令的执行。
CLI 仍然遵循全局excludeTools
和coreTools
设置。如果配置中明确禁止某个命令,该命令将被阻止,且不会出现确认提示。
例子 (git/commit.toml
):
此命令获取暂存的 git diff 并使用它来要求模型编写提交消息。
# In: <project>/.qwen/commands/git/commit.toml
# Invoked via: /git:commit
description = "Generates a Git commit message based on staged changes."
# The prompt uses !{...} to execute the command and inject its output.
prompt = """
Please generate a Conventional Commit message based on the following git diff:
```diff
!{git diff --staged}
```
"""
当您运行 时/git:commit
,CLI 首先执行git diff --staged
,然后!{git diff --staged}
用该命令的输出替换,然后将最终的完整提示发送给模型。
示例:“纯函数”重构命令
让我们创建一个全局命令,要求模型重构一段代码。
1.创建文件和目录:
首先,确保用户命令目录存在,然后refactor
为组织和最终的 TOML 文件创建一个子目录。
mkdir -p ~/.qwen/commands/refactor
touch ~/.qwen/commands/refactor/pure.toml
2.向文件中添加内容:
在编辑器中打开~/.qwen/commands/refactor/pure.toml
并添加以下内容。我们添加了可选内容,description
以达到最佳实践。
# In: ~/.qwen/commands/refactor/pure.toml
# This command will be invoked via: /refactor:pure
description = "Asks the model to refactor the current context into a pure function."
prompt = """
Please analyze the code I've provided in the current context.
Refactor it into a pure function.
Your response should include:
1. The refactored, pure function code block.
2. A brief explanation of the key changes you made and why they contribute to purity.
"""
3.运行命令:
就这样!现在您可以在 CLI 中运行命令了。首先,您可以将文件添加到上下文中,然后调用命令:
> @my-messy-function.js
> /refactor:pure
然后,Qwen Code 将执行 TOML 文件中定义的多行提示。
At 命令(@
)
At 命令用于将文件或目录的内容作为提示的一部分添加到模型中。这些命令包含 git 感知过滤功能。
@<path_to_file_or_directory>
- **描述:**将指定文件的内容注入当前提示符。这对于询问有关特定代码、文本或文件集合的问题非常有用。
- 例子:
@path/to/your/file.txt Explain this text.
@src/my_project/ Summarize the code in this directory.
What is this file about? @README.md
- 细节:
- 如果提供了单个文件的路径,则读取该文件的内容。
- 如果提供了目录路径,该命令将尝试读取该目录及其任何子目录中的文件内容。
- 路径中的空格应该用反斜杠转义(例如
@My\ Documents/file.txt
)。 - 该命令在内部使用该
read_many_files
工具。内容被获取,然后插入到查询中,然后再发送到模型。 - **Git 感知过滤:**默认情况下,git 忽略的文件(例如
node_modules/
、dist/
、.env
、.git/
)会被排除。此行为可以通过fileFiltering
设置进行更改。 - **文件类型:**此命令适用于基于文本的文件。虽然它可能会尝试读取任何文件,但底层
read_many_files
工具可能会跳过或截断二进制文件或非常大的文件,以确保性能和相关性。该工具会指示文件是否被跳过。
- 输出: CLI 将显示一条工具调用消息,指示
read_many_files
已使用的内容,以及一条详细说明状态和已处理路径的消息。
@
(符号处孤独)- **描述:**如果您输入一个单独的
@
符号而没有路径,查询将按原样传递给模型。如果您在提示中专门讨论该符号,这可能会很有用。@
- **描述:**如果您输入一个单独的
@
命令的错误处理
- 如果未找到或指定的路径
@
无效,则会显示错误消息,并且查询可能不会发送到模型,或者发送时不包含文件内容。 - 如果该
read_many_files
工具遇到错误(例如权限问题),也会报告此错误。
Shell 模式和直通命令(!
)
该!
前缀允许您直接从 Qwen Code 内部与系统的 shell 进行交互。
!<shell_command>
- **描述:**在 Linux/macOS 或Windows 上执行
<shell_command>
给定命令。命令的任何输出或错误都会显示在终端中。bash``cmd.exe
- 例子:
!ls -la
(执行ls -la
并返回 Qwen 代码)!git status
(执行git status
并返回 Qwen 代码)
- **描述:**在 Linux/macOS 或Windows 上执行
!
(切换 shell 模式)描述:
!
自行 输入即可切换 shell 模式。
- 进入shell模式:
- 激活后,shell 模式会使用不同的颜色和“Shell 模式指示器”。
- 在 shell 模式下,您键入的文本将直接解释为 shell 命令。
- 退出 shell 模式:
- 退出时,UI 恢复其标准外观并恢复正常的 Qwen Code 行为。
- 进入shell模式:
**所有
!
使用注意事项:**在 shell 模式下执行的命令具有与直接在终端中运行的命令相同的权限和影响。环境变量:
!
当通过 shell 模式执行命令时,QWEN_CODE=1
环境变量会在子进程的环境中设置。这允许脚本或工具检测它们是否在 CLI 中运行。