Режим без графического интерфейса
Режим без графического интерфейса позволяет запускать Qwen Code программно из командной строки, скриптов и инструментов автоматизации без какого-либо интерактивного пользовательского интерфейса. Это идеальный вариант для написания сценариев, автоматизации, CI/CD-конвейеров и создания инструментов с поддержкой ИИ.
Обзор
Режим без графического интерфейса предоставляет Qwen Code интерфейс без GUI, который:
- Принимает запросы через аргументы командной строки или стандартный ввод (stdin)
- Возвращает структурированный вывод (текст или JSON)
- Поддерживает перенаправление файлов и конвейеризацию (piping)
- Позволяет автоматизировать рабочие процессы и использовать их в сценариях
- Обеспечивает согласованные коды завершения для обработки ошибок
- Может возобновлять предыдущие сессии в рамках текущего проекта для многошаговой автоматизации
Основное использование
Прямые запросы
Используйте флаг --prompt (или -p) для запуска в режиме без графического интерфейса:
qwen --prompt "Что такое машинное обучение?"Ввод через stdin
Передайте входные данные в Qwen Code через терминал с помощью конвейера:
echo "Объясни этот код" | qwenСочетание с вводом из файлов
Чтение из файлов и обработка с помощью Qwen Code:
cat README.md | qwen --prompt "Кратко изложи эту документацию"Возобновление предыдущих сеансов (без интерфейса)
Повторное использование контекста диалога текущего проекта в скриптах без интерфейса:
# Продолжить самый последний сеанс для этого проекта и выполнить новую команду
qwen --continue -p "Запустить тесты повторно и кратко изложить ошибки"
# Непосредственно возобновить конкретный сеанс по его идентификатору (без интерфейса)
qwen --resume 123e4567-e89b-12d3-a456-426614174000 -p "Применить последующую рефакторизацию"- Данные сеансов хранятся в формате JSONL в рамках проекта по пути
~/.qwen/projects/<sanitized-cwd>/chats. - При возобновлении восстанавливаются история диалога, результаты работы инструментов и контрольные точки сжатия чата перед отправкой новой команды.
Форматы вывода
Qwen Code поддерживает несколько форматов вывода для различных сценариев использования:
Текстовый вывод (по умолчанию)
Стандартный человекочитаемый вывод:
qwen -p "Какова столица Франции?"Формат ответа:
Столица Франции — Париж.Вывод в формате JSON
Возвращает структурированные данные в виде JSON-массива. Все сообщения буферизуются и выводятся одновременно по завершении сессии. Этот формат идеально подходит для программной обработки и скриптов автоматизации.
Вывод в формате JSON представляет собой массив объектов сообщений. В него входят несколько типов сообщений: системные сообщения (инициализация сессии), сообщения ассистента (ответы ИИ) и сообщения результатов (сводка выполнения).
Пример использования
qwen -p "Какова столица Франции?" --output-format jsonВывод (в конце выполнения):
[
{
"type": "system",
"subtype": "session_start",
"uuid": "...",
"session_id": "...",
"model": "qwen3-coder-plus",
...
},
{
"type": "assistant",
"uuid": "...",
"session_id": "...",
"message": {
"id": "...",
"type": "message",
"role": "assistant",
"model": "qwen3-coder-plus",
"content": [
{
"type": "text",
"text": "Столица Франции — Париж."
}
],
"usage": {...}
},
"parent_tool_use_id": null
},
{
"type": "result",
"subtype": "success",
"uuid": "...",
"session_id": "...",
"is_error": false,
"duration_ms": 1234,
"result": "Столица Франции — Париж.",
"usage": {...}
}
]Вывод в формате Stream-JSON
Формат Stream-JSON немедленно выводит JSON-сообщения по мере их возникновения во время выполнения, что позволяет осуществлять мониторинг в реальном времени. Этот формат использует JSON с разделителями строк: каждое сообщение представляет собой полноценный JSON-объект, расположенный в одной строке.
qwen -p "Объясните TypeScript" --output-format stream-jsonВывод (потоковый, по мере возникновения событий):
{"type":"system","subtype":"session_start","uuid":"...","session_id":"..."}
{"type":"assistant","uuid":"...","session_id":"...","message":{...}}
{"type":"result","subtype":"success","uuid":"...","session_id":"..."}При использовании флага --include-partial-messages дополнительно генерируются потоковые события в реальном времени (например, message_start, content_block_delta и др.), что позволяет обновлять пользовательский интерфейс в режиме реального времени.
qwen -p "Напишите скрипт на Python" --output-format stream-json --include-partial-messagesФормат ввода
Параметр --input-format управляет тем, как Qwen Code считывает входные данные из стандартного ввода:
text(по умолчанию): стандартный текстовый ввод из stdin или аргументов командной строкиstream-json: протокол обмена сообщениями в формате JSON через stdin для двустороннего взаимодействия
Примечание. Режим ввода
stream-jsonнаходится в разработке и предназначен для интеграции с SDK. Для его использования необходимо также задать параметр--output-format stream-json.
Перенаправление файлов
Сохранение вывода в файлы или передача в другие команды через конвейер:
# Сохранить в файл
qwen -p "Объясни, что такое Docker" > docker-explanation.txt
qwen -p "Объясни, что такое Docker" --output-format json > docker-explanation.json
# Добавить в конец файла
qwen -p "Добавь больше деталей" >> docker-explanation.txt
# Передать в другие утилиты через конвейер
qwen -p "Что такое Kubernetes?" --output-format json | jq '.response'
qwen -p "Объясни, что такое микросервисы" | wc -w
qwen -p "Перечисли языки программирования" | grep -i "python"
# Вывод Stream-JSON для обработки в реальном времени
qwen -p "Объясните, что такое Docker" --output-format stream-json | jq '.type'
qwen -p "Напишите код" --output-format stream-json --include-partial-messages | jq '.event.type'
## Параметры конфигурации
Ключевые параметры командной строки для работы в безголовом режиме:
| Параметр | Описание | Пример |
| ---------------------------- | --------------------------------------------------- | ------------------------------------------------------------------------ |
| `--prompt`, `-p` | Запуск в безголовом режиме | `qwen -p "запрос"` |
| `--output-format`, `-o` | Указание формата вывода (text, json, stream-json) | `qwen -p "запрос" --output-format json` |
| `--input-format` | Указание формата ввода (text, stream-json) | `qwen --input-format text --output-format stream-json` |
| `--include-partial-messages` | Включение частичных сообщений в выводе stream-json | `qwen -p "запрос" --output-format stream-json --include-partial-messages` |
| `--debug`, `-d` | Включение режима отладки | `qwen -p "запрос" --debug` |
| `--all-files`, `-a` | Включение всех файлов в контекст | `qwen -p "запрос" --all-files` |
| `--include-directories` | Включение дополнительных каталогов | `qwen -p "запрос" --include-directories src,docs` |
| `--yolo`, `-y` | Автоматическое подтверждение всех действий | `qwen -p "запрос" --yolo` |
| `--approval-mode` | Установка режима подтверждения | `qwen -p "запрос" --approval-mode auto_edit` |
| `--continue` | Возобновление последней сессии для этого проекта | `qwen --continue -p "Продолжим с того места, где остановились"` |
| `--resume [sessionId]` | Возобновление конкретной сессии (или выбор в интерактивном режиме) | `qwen --resume 123e... -p "Завершить рефакторинг"` |
Полный список всех доступных параметров конфигурации, файлов настроек и переменных окружения см. в [Руководстве по конфигурации](../configuration/settings).
## Примеры
### Проверка кода
```bash
cat src/auth.py | qwen -p "Проверь этот код аутентификации на наличие проблем с безопасностью" > security-review.txtГенерация сообщений коммитов
result=$(git diff --cached | qwen -p "Сформулируй краткое сообщение коммита для этих изменений" --output-format json)
echo "$result" | jq -r '.response'Документация API
result=$(cat api/routes.js | qwen -p "Сгенерируй спецификацию OpenAPI для этих маршрутов" --output-format json)
echo "$result" | jq -r '.response' > openapi.jsonПакетный анализ кода
for file in src/*.py; do
echo "Анализ $file..."
result=$(cat "$file" | qwen -p "Найди потенциальные ошибки и предложи улучшения" --output-format json)
echo "$result" | jq -r '.response' > "reports/$(basename "$file").analysis"
echo "Анализ $(basename "$file") завершён" >> reports/progress.log
doneПроверка кода в PR
result=$(git diff origin/main...HEAD | qwen -p "Проверьте эти изменения на наличие ошибок, проблем безопасности и вопросов качества кода" --output-format json)
echo "$result" | jq -r '.response' > pr-review.jsonАнализ логов
grep "ERROR" /var/log/app.log | tail -20 | qwen -p "Проанализируйте эти ошибки и предложите возможные причины и способы их устранения" > error-analysis.txtГенерация заметок о релизе
result=$(git log --oneline v1.0.0..HEAD | qwen -p "Создайте заметки о релизе на основе этих коммитов" --output-format json)
response=$(echo "$result" | jq -r '.response')
echo "$response"
echo "$response" >> CHANGELOG.mdОтслеживание использования моделей и инструментов
result=$(qwen -p "Объясните эту схему базы данных" --include-directories db --output-format json)
total_tokens=$(echo "$result" | jq -r '.stats.models // {} | to_entries | map(.value.tokens.total) | add // 0')
models_used=$(echo "$result" | jq -r '.stats.models // {} | keys | join(", ") | if . == "" then "none" else . end')
tool_calls=$(echo "$result" | jq -r '.stats.tools.totalCalls // 0')
tools_used=$(echo "$result" | jq -r '.stats.tools.byName // {} | keys | join(", ") | if . == "" then "none" else . end')
echo "$(date): $total_tokens токенов, $tool_calls вызовов инструментов ($tools_used), использовано моделей: $models_used" >> usage.log
echo "$result" | jq -r '.response' > schema-docs.md
echo "Последние тенденции использования:"
tail -5 usage.logРесурсы
- Конфигурация CLI — Полное руководство по настройке
- Аутентификация — Настройка аутентификации
- Команды — Справочник интерактивных команд
- Учебные пособия — Пошаговые руководства по автоматизации