# Mode Headless
Le mode headless vous permet d'exécuter Qwen Code de manière programmatique à partir de scripts en ligne de commande
et d'outils d'automatisation sans interface utilisateur interactive. C'est idéal pour
le scripting, l'automatisation, les pipelines CI/CD, et la création d'outils alimentés par l'IA.
- [Mode Headless](#mode-headless)
- [Aperçu](#aperçu)
- [Utilisation de base](#utilisation-de-base)
- [Prompts directs](#prompts-dirents)
- [Entrée via Stdin](#entrée-via-stdin)
- [Combinaison avec une entrée fichier](#combinaison-avec-une-entrée-fichier)
- [Formats de sortie](#formats-de-sortie)
- [Sortie texte (par défaut)](#sortie-texte-par-défaut)
- [Sortie JSON](#sortie-json)
- [Exemple d'utilisation](#exemple-dutilisation)
- [Sortie Stream-JSON](#sortie-stream-json)
- [Format d'entrée](#format-dentrée)
- [Redirection de fichiers](#redirection-de-fichiers)
- [Options de configuration](#options-de-configuration)
- [Exemples](#exemples)
- [Revue de code](#revue-de-code)
- [Génération de messages de commit](#génération-de-messages-de-commit)
- [Documentation API](#documentation-api)
- [Analyse de code en lot](#analyse-de-code-en-lot)
- [Revue de code PR](#revue-de-code-pr)
- [Analyse de logs](#analyse-de-logs)
- [Génération de notes de version](#génération-de-notes-de-version)
- [Suivi de l'utilisation des modèles et outils](#suivi-de-lutilisation-des-modèles-et-outils)
- [Ressources](#ressources)Aperçu
Le mode headless fournit une interface headless pour Qwen Code qui :
- Accepte les prompts via des arguments de ligne de commande ou stdin
- Retourne une sortie structurée (texte ou JSON)
- Supporte la redirection de fichiers et le piping
- Permet l’automatisation et les workflows de script
- Fournit des codes de sortie cohérents pour la gestion d’erreurs
Utilisation de base
Prompts directs
Utilisez le flag --prompt (ou -p) pour exécuter en mode headless :
qwen --prompt "Qu'est-ce que le machine learning ?"Entrée Stdin
Envoyez une entrée à Qwen Code depuis votre terminal :
echo "Explique ce code" | qwenCombiner avec une entrée fichier
Lisez depuis des fichiers et traitez avec Qwen Code :
cat README.md | qwen --prompt "Résume cette documentation"Formats de sortie
Qwen Code supporte plusieurs formats de sortie pour différents cas d’utilisation :
Sortie texte (par défaut)
Sortie standard lisible par un humain :
qwen -p "Quelle est la capitale de la France ?"Format de réponse :
La capitale de la France est Paris.Sortie JSON
Retourne des données structurées sous forme de tableau JSON. Tous les messages sont mis en tampon et affichés ensemble lorsque la session est terminée. Ce format est idéal pour le traitement programmatique et les scripts d’automatisation.
La sortie JSON est un tableau d’objets message. La sortie inclut plusieurs types de messages : les messages système (initialisation de la session), les messages de l’assistant (réponses de l’IA) et les messages de résultat (résumé de l’exécution).
Exemple d’utilisation
qwen -p "Quelle est la capitale de la France ?" --output-format jsonSortie (à la fin de l’exécution) :
[
{
"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": "La capitale de la France est Paris."
}
],
"usage": {...}
},
"parent_tool_use_id": null
},
{
"type": "result",
"subtype": "success",
"uuid": "...",
"session_id": "...",
"is_error": false,
"duration_ms": 1234,
"result": "La capitale de la France est Paris.",
"usage": {...}
}
]Sortie Stream-JSON
Le format Stream-JSON émet des messages JSON immédiatement lorsqu’ils surviennent pendant l’exécution, permettant un monitoring en temps réel. Ce format utilise du JSON délimité par des lignes, où chaque message est un objet JSON complet sur une seule ligne.
qwen -p "Explain TypeScript" --output-format stream-jsonSortie (streaming au fur et à mesure des événements) :
{"type":"system","subtype":"session_start","uuid":"...","session_id":"..."}
{"type":"assistant","uuid":"...","session_id":"...","message":{...}}
{"type":"result","subtype":"success","uuid":"...","session_id":"..."}Lorsqu’il est combiné avec --include-partial-messages, des événements de flux supplémentaires sont émis en temps réel (message_start, content_block_delta, etc.) pour les mises à jour d’interface utilisateur en temps réel.
qwen -p "Write a Python script" --output-format stream-json --include-partial-messagesFormat d’entrée
Le paramètre --input-format contrôle la façon dont Qwen Code consomme l’entrée depuis l’entrée standard :
text(par défaut) : Entrée texte standard depuis stdin ou les arguments de ligne de commandestream-json: Protocole de message JSON via stdin pour une communication bidirectionnelle
Note : Le mode d’entrée stream-json est actuellement en construction et destiné à l’intégration avec le SDK. Il nécessite que
--output-format stream-jsonsoit défini.
Redirection de fichiers
Enregistrez la sortie dans des fichiers ou redirigez-la vers d’autres commandes :
# Enregistrer dans un fichier
qwen -p "Explain Docker" > docker-explanation.txt
qwen -p "Explain Docker" --output-format json > docker-explanation.json
# Ajouter à un fichier
qwen -p "Add more details" >> docker-explanation.txt
# Rediriger vers d'autres outils
qwen -p "What is Kubernetes?" --output-format json | jq '.response'
qwen -p "Explain microservices" | wc -w
qwen -p "List programming languages" | grep -i "python"Sortie Stream-JSON pour le traitement en temps réel
qwen -p “Explain Docker” —output-format stream-json | jq ‘.type’ qwen -p “Write code” —output-format stream-json —include-partial-messages | jq ‘.event.type’
## Options de Configuration
Options principales en ligne de commande pour une utilisation headless :
| Option | Description | Exemple |
| ---------------------------- | ----------------------------------------------------- | ---------------------------------------------------------------------------- |
| `--prompt`, `-p` | Exécuter en mode headless | `qwen -p "query"` |
| `--output-format`, `-o` | Spécifier le format de sortie (text, json, stream-json) | `qwen -p "query" --output-format json` |
| `--input-format` | Spécifier le format d'entrée (text, stream-json) | `qwen --input-format text --output-format stream-json` |
| `--include-partial-messages` | Inclure les messages partiels dans la sortie stream-json | `qwen -p "query" --output-format stream-json --include-partial-messages` |
| `--debug`, `-d` | Activer le mode debug | `qwen -p "query" --debug` |
| `--all-files`, `-a` | Inclure tous les fichiers dans le contexte | `qwen -p "query" --all-files` |
| `--include-directories` | Inclure des répertoires supplémentaires | `qwen -p "query" --include-directories src,docs` |
| `--yolo`, `-y` | Approuver automatiquement toutes les actions | `qwen -p "query" --yolo` |
| `--approval-mode` | Définir le mode d’approbation | `qwen -p "query" --approval-mode auto_edit` |
Pour plus de détails sur toutes les options de configuration disponibles, les fichiers de paramètres et les variables d’environnement, consultez le [Guide de Configuration](./cli/configuration.md).
## Exemples
### Revue de code
```bash
cat src/auth.py | qwen -p "Review this authentication code for security issues" > security-review.txtGénérer des messages de commit
result=$(git diff --cached | qwen -p "Write a concise commit message for these changes" --output-format json)
echo "$result" | jq -r '.response'Documentation d’API
result=$(cat api/routes.js | qwen -p "Generate OpenAPI spec for these routes" --output-format json)
echo "$result" | jq -r '.response' > openapi.jsonAnalyse de code par lot
for file in src/*.py; do
echo "Analyzing $file..."
result=$(cat "$file" | qwen -p "Find potential bugs and suggest improvements" --output-format json)
echo "$result" | jq -r '.response' > "reports/$(basename "$file").analysis"
echo "Completed analysis for $(basename "$file")" >> reports/progress.log
doneRevue de code PR
result=$(git diff origin/main...HEAD | qwen -p "Review these changes for bugs, security issues, and code quality" --output-format json)
echo "$result" | jq -r '.response' > pr-review.jsonAnalyse des logs
grep "ERROR" /var/log/app.log | tail -20 | qwen -p "Analyze these errors and suggest root cause and fixes" > error-analysis.txtGénération des release notes
result=$(git log --oneline v1.0.0..HEAD | qwen -p "Generate release notes from these commits" --output-format json)
response=$(echo "$result" | jq -r '.response')
echo "$response"
echo "$response" >> CHANGELOG.mdSuivi de l’utilisation des modèles et des outils
result=$(qwen -p "Explain this database schema" --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 tokens, $tool_calls tool calls ($tools_used) used with models: $models_used" >> usage.log
echo "$result" | jq -r '.response' > schema-docs.md
echo "Recent usage trends:"
tail -5 usage.logRessources
- Configuration du CLI - Guide complet de configuration
- Authentification - Configuration de l’authentification
- Commandes - Référence interactive des commandes
- Tutoriels - Guides d’automatisation pas à pas