42 KiB
Команды CLI
Qwen Code поддерживает несколько встроенных команд, которые помогут вам управлять сессией, настраивать интерфейс и контролировать его поведение. Эти команды начинаются с косой черты (/), символа @ (@) или восклицательного знака (!).
Слэш-команды (/)
Слэш-команды предоставляют мета-уровень управления самим CLI.
Встроенные команды
-
/bug- Описание: Создать issue о Qwen Code. По умолчанию issue создается в репозитории GitHub проекта Qwen Code. Строка, которую вы вводите после
/bug, становится заголовком создаваемого баг-репорта. Поведение команды/bugможно изменить с помощью настройкиbugCommandв файле.qwen/settings.json.
- Описание: Создать issue о Qwen Code. По умолчанию issue создается в репозитории GitHub проекта Qwen Code. Строка, которую вы вводите после
-
/chat- Описание: Сохранить и возобновить историю разговора для интерактивного управления состоянием диалога или восстановления предыдущего состояния в следующей сессии.
- Подкоманды:
save- Описание: Сохраняет текущую историю разговора. Необходимо указать
<tag>для идентификации состояния диалога. - Использование:
/chat save <tag> - Детали о местоположении чекпоинтов: По умолчанию сохраненные чекпоинты чата находятся в следующих директориях:
- Linux/macOS:
~/.config/qwen-code/checkpoints/ - Windows:
C:\Users\<YourUsername>\AppData\Roaming\qwen-code\checkpoints\ - При выполнении
/chat listCLI сканирует только эти конкретные директории для поиска доступных чекпоинтов. - Примечание: Эти чекпоинты предназначены для ручного сохранения и восстановления состояний диалога. Для автоматических чекпоинтов, создаваемых перед изменениями файлов, см. документацию по Checkpointing.
- Linux/macOS:
- Описание: Сохраняет текущую историю разговора. Необходимо указать
resume- Описание: Возобновляет диалог из предыдущего сохранения.
- Использование:
/chat resume <tag>
list- Описание: Выводит список доступных тегов для восстановления состояния чата.
delete- Описание: Удаляет сохраненный чекпоинт диалога.
- Использование:
/chat delete <tag>
-
/clear- Описание: Очистить экран терминала, включая видимую историю сессии и прокрутку внутри CLI. Данные сессии (для восстановления истории) могут сохраняться в зависимости от реализации, но визуальное отображение будет очищено.
- Горячая клавиша: Нажмите Ctrl+L в любое время для очистки экрана.
-
/summary- Описание: Генерирует полный обзор проекта на основе текущей истории разговора и сохраняет его в файл
.qwen/PROJECT_SUMMARY.md. Этот обзор включает общую цель, ключевые знания, последние действия и текущий план, что идеально подходит для возобновления работы в будущих сессиях. - Использование:
/summary - Функции:
- Анализирует всю историю разговора для извлечения важного контекста
- Создает структурированный markdown-обзор с разделами по целям, знаниям, действиям и планам
- Автоматически сохраняет в
.qwen/PROJECT_SUMMARY.mdв корне проекта - Показывает индикаторы прогресса во время генерации и сохранения
- Интегрируется с функцией Welcome Back для бесшовного возобновления сессии
- Примечание: Эта команда требует активного диалога как минимум с 2 сообщениями для создания содержательного обзора.
- Описание: Генерирует полный обзор проекта на основе текущей истории разговора и сохраняет его в файл
-
/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 Extensions.
-
/help(или/?)- Описание: Отображает справочную информацию о Qwen Code, включая доступные команды и их использование.
-
/mcp- Описание: Выводит список настроенных серверов Model Context Protocol (MCP), их статус подключения, информацию о серверах и доступные инструменты.
- Подкоманды:
descилиdescriptions:- Описание: Показывает подробные описания серверов и инструментов MCP.
nodescилиnodescriptions:- Описание: Скрывает описания инструментов, отображая только их названия.
schema:- Описание: Показывает полную JSON-схему параметров инструмента.
- Горячая клавиша: Нажмите Ctrl+T в любое время для переключения отображения описаний инструментов.
-
/memory- Описание: Управление инструкционным контекстом ИИ (иерархическая память, загружаемая по умолчанию из файлов
QWEN.md; настраивается черезcontextFileName). - Подкоманды:
add:- Описание: Добавляет следующий текст в память ИИ. Использование:
/memory add <text to remember>
- Описание: Добавляет следующий текст в память ИИ. Использование:
show:- Описание: Отображает полное содержимое текущей иерархической памяти, загруженной из всех контекстных файлов (например,
QWEN.md). Это позволяет проверить инструкционный контекст, передаваемый модели.
- Описание: Отображает полное содержимое текущей иерархической памяти, загруженной из всех контекстных файлов (например,
refresh:- Описание: Перезагружает иерархическую инструкционную память из всех контекстных файлов (по умолчанию:
QWEN.md), найденных в настроенных местоположениях (глобальные, проект/предки и поддиректории). Это обновляет модель с последним контекстом.
- Описание: Перезагружает иерархическую инструкционную память из всех контекстных файлов (по умолчанию:
- Примечание: За дополнительной информацией о том, как контекстные файлы формируют иерархическую память, см. документацию по CLI Configuration.
- Описание: Управление инструкционным контекстом ИИ (иерархическая память, загружаемая по умолчанию из файлов
-
/restore- Описание: Восстанавливает файлы проекта в состояние, в котором они находились до выполнения инструмента. Особенно полезно для отмены изменений файлов, сделанных инструментом. Если запущено без ID вызова инструмента, выводит список доступных чекпоинтов для восстановления.
- Использование:
/restore [tool_call_id] - Примечание: Доступно только при запуске CLI с опцией
--checkpointingили настройке через settings. См. документацию по Checkpointing для подробностей.
-
/settings- Описание: Открывает редактор настроек для просмотра и изменения параметров Qwen Code.
- Детали: Эта команда предоставляет удобный интерфейс для изменения настроек, управляющих поведением и внешним видом Qwen Code. Эквивалентно ручному редактированию файла
.qwen/settings.json, но с валидацией и подсказками для предотвращения ошибок. - Использование: Просто выполните
/settings, и откроется редактор. Вы можете просматривать или искать конкретные настройки, видеть их текущие значения и изменять их. Некоторые изменения применяются сразу, другие требуют перезапуска.
-
/stats- Описание: Отображает подробную статистику текущей сессии Qwen Code, включая использование токенов, экономию за счет кэширования (если доступно) и продолжительность сессии. Примечание: Информация о кэшированных токенах отображается только при их использовании, что происходит при аутентификации по API-ключу, но не при OAuth-аутентификации.
-
- Описание: Открывает диалог для изменения визуальной темы Qwen Code.
-
/auth- Описание: Открывает диалог для изменения метода аутентификации.
-
/about- Описание: Показывает информацию о версии. Пожалуйста, делитесь этой информацией при создании issue.
-
/agents- Описание: Управление специализированными AI-подагентами для выполнения конкретных задач. Подагенты — это независимые AI-ассистенты с конкретной экспертизой и доступом к инструментам.
- Подкоманды:
create:- Описание: Запускает интерактивный мастер создания нового подагента. Мастер помогает выбрать местоположение, сгенерировать промпт с помощью ИИ, выбрать инструменты и настроить внешний вид.
- Использование:
/agents create
manage:- Описание: Открывает интерактивный диалог управления для просмотра, редактирования и удаления существующих подагентов. Показывает агентов на уровне проекта и пользователя.
- Использование:
/agents manage
- Места хранения:
- На уровне проекта:
.qwen/agents/(общие с командой, имеют приоритет) - На уровне пользователя:
~/.qwen/agents/(личные агенты, доступны во всех проектах)
- На уровне проекта:
- Примечание: За подробной информацией о создании и управлении подагентами см. документацию по Subagents.
-
- Описание: Отображает список инструментов, доступных в текущей сессии Qwen Code.
- Подкоманды:
descилиdescriptions:- Описание: Показывает подробные описания каждого инструмента, включая его название и полное описание, передаваемое модели.
nodescилиnodescriptions:- Описание: Скрывает описания инструментов, отображая только их названия.
-
/privacy- Описание: Отображает Уведомление о конфиденциальности и позволяет пользователям выбрать, согласны ли они на сбор их данных для улучшения сервиса.
-
/quit-confirm- Описание: Показывает диалог подтверждения перед выходом из Qwen Code, позволяя выбрать, как обработать текущую сессию.
- Использование:
/quit-confirm - Функции:
- Выйти немедленно: Завершить работу без сохранения (эквивалентно
/quit) - Создать обзор и выйти: Сгенерировать обзор проекта с помощью
/summaryперед выходом - Сохранить диалог и выйти: Сохранить текущий диалог с автоматически сгенерированным тегом перед выходом
- Выйти немедленно: Завершить работу без сохранения (эквивалентно
- Горячая клавиша: Нажмите Ctrl+C дважды для вызова диалога подтверждения выхода
- Примечание: Эта команда автоматически вызывается при однократном нажатии Ctrl+C, обеспечивая защиту от случайного выхода.
-
/quit(или/exit)- Описание: Немедленно завершает работу Qwen Code без диалога подтверждения.
-
/vim- Описание: Включает или выключает режим vim. В режиме vim область ввода поддерживает команды навигации и редактирования в стиле vim в режимах NORMAL и INSERT.
- Функции:
- Режим NORMAL: Навигация с помощью
h,j,k,l; переход по словам сw,b,e; переход к началу/концу строки с0,$,^; переход к конкретным строкам сG(илиggдля первой строки) - Режим INSERT: Стандартный ввод текста с возможностью выхода в NORMAL по Escape
- Команды редактирования: Удаление с
x, изменение сc, вставка сi,a,o,O; сложные операции типаdd,cc,dw,cw - Поддержка счетчиков: Префикс команд цифрами (например,
3h,5w,10G) - Повтор последней команды: Используйте
.для повтора последней операции редактирования - Постоянное сохранение: Предпочтение режима vim сохраняется в
~/.qwen/settings.jsonи восстанавливается между сессиями
- Режим NORMAL: Навигация с помощью
- Индикатор статуса: При включении показывает
[NORMAL]или[INSERT]в нижнем колонтитуле
-
/init- Описание: Анализирует текущую директорию и создает файл контекста
QWEN.mdпо умолчанию (или имя файла, указанное вcontextFileName). Если файл уже существует и не пуст, изменения не вносятся. Команда созд
- Описание: Анализирует текущую директорию и создает файл контекста
Пользовательские команды
Для быстрого начала работы ознакомьтесь с примером ниже.
Пользовательские команды позволяют сохранять и повторно использовать ваши любимые или наиболее часто используемые prompts в виде персональных shortcuts внутри 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(String): Подсказка, которая будет отправлена модели при выполнении команды. Может быть однострочной или многострочной строкой.
Необязательные поля
description(String): Краткое однострочное описание того, что делает команда. Этот текст будет отображаться рядом с вашей командой в меню/help. Если вы опустите это поле, будет сгенерировано общее описание на основе имени файла.
Работа с аргументами
Пользовательские команды поддерживают два мощных метода обработки аргументов. CLI автоматически выбирает правильный метод на основе содержимого prompt вашей команды.
1. Контекстно-зависимая инъекция с {{args}}
Если ваш prompt содержит специальный placeholder {{args}}, CLI заменит этот placeholder на текст, который пользователь ввел после имени команды.
Поведение этой инъекции зависит от места использования:
A. Прямая инъекция (вне shell-команд)
Когда используется в основном теле prompt, аргументы инжектируются точно так, как их ввел пользователь.
Пример (git/fix.toml):
```markdown
# Вызывается через: /git:fix "Button is misaligned"
description = "Генерирует фикс для указанной проблемы."
prompt = "Пожалуйста, предоставьте код фикса для проблемы, описанной здесь: {{args}}."
Модель получает: Пожалуйста, предоставьте код фикса для проблемы, описанной здесь: "Button is misaligned".
B. Использование аргументов в Shell командах (внутри блоков !{...})
Когда вы используете {{args}} внутри блока инъекции shell (!{...}), аргументы автоматически экранируются для shell перед подстановкой. Это позволяет безопасно передавать аргументы в shell команды, гарантируя, что результирующая команда будет синтаксически корректной и безопасной, предотвращая уязвимости инъекции команд.
Пример (/grep-code.toml):
prompt = """
Пожалуйста, подведите итоги поиска для паттерна `{{args}}`.
Результаты поиска:
!{grep -r {{args}} .}
"""
Когда вы запускаете /grep-code It's complicated:
- CLI видит, что
{{args}}используется как вне, так и внутри!{...}. - Вне: Первый
{{args}}заменяется как есть наIt's complicated. - Внутри: Второй
{{args}}заменяется на экранированную версию (например, в Linux:"It's complicated"). - Выполняемая команда:
grep -r "It's complicated" .. - CLI запрашивает у вас подтверждение этой точной и безопасной команды перед выполнением.
- Финальный prompt отправляется.
##### 2. Обработка аргументов по умолчанию
Если ваш `prompt` **не** содержит специальный placeholder `{{args}}`, CLI использует поведение по умолчанию для обработки аргументов.
Если вы передаёте аргументы команде (например, `/mycommand arg1`), CLI добавит полную команду, которую вы ввели, в конец prompt, отделив её двумя символами новой строки. Это позволяет модели видеть как оригинальные инструкции, так и конкретные аргументы, которые вы только что передали.
Если вы **не** передаёте аргументы (например, `/mycommand`), prompt отправляется модели в точности как есть, без каких-либо дополнений.
**Пример (`changelog.toml`):**
Этот пример показывает, как создать надёжную команду, определив роль для модели, объяснив, где искать пользовательский ввод, и указав ожидаемый формат и поведение.
```toml
# In: <project>/.qwen/commands/changelog.toml
# Вызывается через: /changelog 1.2.0 added "Support for default argument parsing."
description = "Добавляет новую запись в файл CHANGELOG.md проекта."
prompt = """
# Задача: Обновление Changelog
Вы являетесь экспертом по поддержке этого программного проекта. Пользователь вызвал команду для добавления новой записи в changelog.
**Необработанная команда пользователя приведена ниже ваших инструкций.**
Ваша задача — распарсить `<version>`, `<change_type>` и `<message>` из ввода пользователя и использовать инструмент `write_file`, чтобы правильно обновить файл `CHANGELOG.md`.
## Ожидаемый формат
Команда имеет следующий формат: `/changelog <version> <type> <message>`
- `<type>` должен быть одним из: "added", "changed", "fixed", "removed".
```markdown
## Поведение
1. Прочитать файл `CHANGELOG.md`.
2. Найти секцию для указанной `<version>`.
3. Добавить `<message>` под правильным заголовком `<type>`.
4. Если секция версии или типа не существует, создать её.
5. Строго придерживаться формата "Keep a Changelog".
"""
Когда вы запускаете /changelog 1.2.0 added "New feature", финальный текст, отправляемый модели, будет состоять из оригинального prompt, за которым следуют два символа новой строки и введённая вами команда.
3. Выполнение Shell-команд с помощью !{...}
Вы можете сделать свои команды динамичными, выполняя shell-команды прямо внутри вашего prompt и подставляя их вывод. Это идеально подходит для сбора контекста из локального окружения, например, чтения содержимого файлов или проверки статуса Git.
Когда кастомная команда пытается выполнить shell-команду, Qwen Code теперь будет запрашивать подтверждение перед выполнением. Это мера безопасности, чтобы убедиться, что выполняются только намеренные команды.
Как это работает:
- Инъекция команд: Используйте синтаксис
!{...}. - Подстановка аргументов: Если внутри блока присутствует
{{args}}, он автоматически экранируется для shell (см. Context-Aware Injection выше). - Надежный парсинг: Парсер корректно обрабатывает сложные shell-команды, включая вложенные фигурные скобки, например, JSON-полезные нагрузки.
- Проверка безопасности и подтверждение: CLI выполняет проверку безопасности финальной команды (после экранирования и подстановки аргументов). Появится диалог с точной командой(ами), которая будет выполнена.
- Выполнение и отчет об ошибках: Команда выполняется. Если команда завершается с ошибкой, вывод, вставленный в prompt, будет содержать сообщения об ошибках (stderr), за которыми следует строка статуса, например,
[Shell command exited with code 1]. Это помогает модели понять контекст ошибки.
Пример (git/commit.toml):
Эта команда получает staged git diff и использует его, чтобы попросить модель написать commit message.
# In: <project>/.qwen/commands/git/commit.toml
# Invoked via: /git:commit
description = "Генерирует сообщение Git commit на основе staged изменений."
# В prompt используется !{...} для выполнения команды и вставки её вывода.
prompt = """
Пожалуйста, сгенерируйте сообщение Conventional Commit на основе следующего git diff:
```diff
!{git diff --staged}
```
"""
Когда вы запускаете /git:commit, CLI сначала выполняет git diff --staged, затем заменяет !{git diff --staged} на вывод этой команды перед отправкой финального prompt в модель.
Пример: Команда рефакторинга "Чистая функция"
Давайте создадим глобальную команду, которая будет запрашивать у модели рефакторинг фрагмента кода.
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
```markdown
# Эта команда будет вызываться через: /refactor:pure
description = "Просит модель рефакторить текущий контекст в чистую функцию (pure function)."
prompt = """
Пожалуйста, проанализируй код, который я предоставил в текущем контексте.
Рефактори его в чистую функцию (pure function).
Твой ответ должен включать:
1. Блок кода с рефакторинговой, чистой функцией.
2. Краткое объяснение ключевых изменений, которые ты сделал, и почему они способствуют чистоте функции.
"""
3. Запусти команду:
Вот и всё! Теперь ты можешь запустить свою команду в CLI. Сначала можно добавить файл в контекст, а затем вызвать команду:
> @my-messy-function.js
> /refactor:pure
Qwen Code выполнит многострочный prompt, определённый в твоем TOML-файле.
Команды с @
Команды с @ используются для включения содержимого файлов или директорий в ваш запрос к модели. Эти команды поддерживают фильтрацию с учетом Git.
-
@<путь_к_файлу_или_директории>- Описание: Вставляет содержимое указанного файла или файлов в ваш текущий запрос. Это удобно, когда вы хотите задать вопрос о конкретном коде, тексте или наборе файлов.
- Примеры:
@path/to/your/file.txt Объясни этот текст.@src/my_project/ Расскажи, что за код лежит в этой директории.Что это за файл? @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 и команды прямого выполнения (!)
Префикс ! позволяет напрямую взаимодействовать с shell вашей системы прямо из Qwen Code.
-
!<shell_command>- Описание: Выполняет указанную
<shell_command>с использованиемbashв Linux/macOS илиcmd.exeв Windows. Весь вывод и ошибки команды отображаются в терминале. - Примеры:
!ls -la(выполняетls -laи возвращается в Qwen Code)!git status(выполняетgit statusи возвращается в Qwen Code)
- Описание: Выполняет указанную
-
!(Переключение в режим shell)- Описание: Ввод только символа
!переключает режим shell.- Вход в режим shell:
- При активации режима shell используется другая цветовая схема и отображается "индикатор режима Shell".
- В режиме shell весь ввод интерпретируется как команды shell.
- Выход из режима shell:
- При выходе интерфейс возвращается к стандартному виду, и работа Qwen Code продолжается в обычном режиме.
- Вход в режим shell:
- Описание: Ввод только символа
-
Предупреждение по использованию
!: Команды, выполняемые в режиме shell, имеют те же права и влияют на систему так же, как если бы вы запускали их напрямую в терминале. -
Переменная окружения: При выполнении команды через
!или в режиме shell в окружении подпроцесса устанавливается переменнаяQWEN_CODE=1. Это позволяет скриптам и инструментам определять, запущены ли они из CLI.