Qwen Code is a powerful command-line AI workflow tool adapted from Gemini CLI (details), specifically optimized for Qwen3-Coder models. It enhances your development workflow with advanced code understanding, automated tasks, and intelligent assistance.
- 🎯 Free Tier: Up to 60 requests/min and 2,000 requests/day with your QwenChat account.
- 🧠 Advanced Model: Specially optimized for Qwen3-Coder for superior code understanding and assistance.
- 🏆 Comprehensive Features: Includes subagents, Plan Mode, TodoWrite, vision model support, and full OpenAI API compatibility—all seamlessly integrated.
- 🔧 Built-in & Extensible Tools: Includes file system operations, shell command execution, web fetch/search, and more—all easily extended via the Model Context Protocol (MCP) for custom integrations.
- 💻 Developer-Centric: Built for terminal-first workflows—perfect for command-line enthusiasts.
- 🛡️ Open Source: Apache 2.0 licensed for maximum freedom and transparency.
Ensure you have Node.js version 20 or higher installed.
curl -qL https://www.npmjs.com/install.sh | shnpm install -g @qwen-code/qwen-code@latest
qwen --versiongit clone https://github.com/QwenLM/qwen-code.git
cd qwen-code
npm install
npm install -g .brew install qwen-code# Start Qwen Code
qwen
# Example commands
> Explain this codebase structure
> Help me refactor this function
> Generate unit tests for this moduleControl your token usage with configurable session limits to optimize costs and performance.
Create or edit .qwen/settings.json in your home directory:
{
"sessionTokenLimit": 32000
}/compress- Compress conversation history to continue within token limits/clear- Clear all conversation history and start fresh/stats- Check current token usage and limits
📝 Note: Session token limit applies to a single conversation, not cumulative API calls.
Qwen Code includes intelligent vision model auto-switching that detects images in your input and can automatically switch to vision-capable models for multimodal analysis. This feature is enabled by default - when you include images in your queries, you'll see a dialog asking how you'd like to handle the vision model switch.
If you don't want to see the interactive dialog each time, configure the default behavior in your .qwen/settings.json:
{
"experimental": {
"vlmSwitchMode": "once"
}
}Available modes:
"once"- Switch to vision model for this query only, then revert"session"- Switch to vision model for the entire session"persist"- Continue with current model (no switching)- Not set - Show interactive dialog each time (default)
You can also set the behavior via command line:
# Switch once per query
qwen --vlm-switch-mode once
# Switch for entire session
qwen --vlm-switch-mode session
# Never switch automatically
qwen --vlm-switch-mode persistTo completely disable vision model support, add to your .qwen/settings.json:
{
"experimental": {
"visionModelPreview": false
}
}💡 Tip: In YOLO mode (
--yolo), vision switching happens automatically without prompts when images are detected.
Choose your preferred authentication method based on your needs:
The easiest way to get started - completely free with generous quotas:
# Just run this command and follow the browser authentication
qwenWhat happens:
- Instant Setup: CLI opens your browser automatically
- One-Click Login: Authenticate with your qwen.ai account
- Automatic Management: Credentials cached locally for future use
- No Configuration: Zero setup required - just start coding!
Free Tier Benefits:
- ✅ 2,000 requests/day (no token counting needed)
- ✅ 60 requests/minute rate limit
- ✅ Automatic credential refresh
- ✅ Zero cost for individual users
- ℹ️ Note: Model fallback may occur to maintain service quality
Use API keys for OpenAI or other compatible providers:
Configuration Methods:
-
Environment Variables
export OPENAI_API_KEY="your_api_key_here" export OPENAI_BASE_URL="your_api_endpoint" export OPENAI_MODEL="your_model_choice"
-
Project
.envFile Create a.envfile in your project root:OPENAI_API_KEY=your_api_key_here OPENAI_BASE_URL=your_api_endpoint OPENAI_MODEL=your_model_choice
API Provider Options
⚠️ Regional Notice:
- Mainland China: Use Alibaba Cloud Bailian or ModelScope
- International: Use Alibaba Cloud ModelStudio or OpenRouter
🇨🇳 For Users in Mainland China
Option 1: Alibaba Cloud Bailian (Apply for API Key)
export OPENAI_API_KEY="your_api_key_here"
export OPENAI_BASE_URL="https://dashscope.aliyuncs.com/compatible-mode/v1"
export OPENAI_MODEL="qwen3-coder-plus"Option 2: ModelScope (Free Tier) (Apply for API Key)
- ✅ 2,000 free API calls per day
⚠️ Connect your Aliyun account to avoid authentication errors
export OPENAI_API_KEY="your_api_key_here"
export OPENAI_BASE_URL="https://api-inference.modelscope.cn/v1"
export OPENAI_MODEL="Qwen/Qwen3-Coder-480B-A35B-Instruct"🌍 For International Users
Option 1: Alibaba Cloud ModelStudio (Apply for API Key)
export OPENAI_API_KEY="your_api_key_here"
export OPENAI_BASE_URL="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
export OPENAI_MODEL="qwen3-coder-plus"Option 2: OpenRouter (Free Tier Available) (Apply for API Key)
export OPENAI_API_KEY="your_api_key_here"
export OPENAI_BASE_URL="https://openrouter.ai/api/v1"
export OPENAI_MODEL="qwen/qwen3-coder:free"cd your-project/
qwen
# Architecture analysis
> Describe the main pieces of this system's architecture
> What are the key dependencies and how do they interact?
> Find all API endpoints and their authentication methods# Refactoring
> Refactor this function to improve readability and performance
> Convert this class to use dependency injection
> Split this large module into smaller, focused components
# Code generation
> Create a REST API endpoint for user management
> Generate unit tests for the authentication module
> Add error handling to all database operations# Git automation
> Analyze git commits from the last 7 days, grouped by feature
> Create a changelog from recent commits
> Find all TODO comments and create GitHub issues
# File operations
> Convert all images in this directory to PNG format
> Rename all test files to follow the *.test.ts pattern
> Find and remove all console.log statements# Performance analysis
> Identify performance bottlenecks in this React component
> Find all N+1 query problems in the codebase
# Security audit
> Check for potential SQL injection vulnerabilities
> Find all hardcoded credentials or API keys> What are the core business logic components?
> What security mechanisms are in place?
> How does the data flow through the system?
> What are the main design patterns used?
> Generate a dependency graph for this module
> What parts of this module can be optimized?
> Help me refactor this class to follow SOLID principles
> Add proper error handling and logging
> Convert callbacks to async/await pattern
> Implement caching for expensive operations
> Generate comprehensive JSDoc comments for all public APIs
> Write unit tests with edge cases for this component
> Create API documentation in OpenAPI format
> Add inline comments explaining complex algorithms
> Generate a README for this module
> Set up a new Express server with authentication
> Create a React component with TypeScript and tests
> Implement a rate limiter middleware
> Add database migrations for new schema
> Configure CI/CD pipeline for this project
/help- Display available commands/clear- Clear conversation history/compress- Compress history to save tokens/stats- Show current session information/exitor/quit- Exit Qwen Code
Ctrl+C- Cancel current operationCtrl+D- Exit (on empty line)Up/Down- Navigate command history