mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-04-28 03:30:40 +00:00
* Codex worktree snapshot: startup-cleanup Co-authored-by: Codex * Add Python SDK real smoke test Adds a repository-only real E2E smoke script for the Python SDK, plus npm and developer documentation entry points. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): address review findings — bugs, type safety, and test coverage - Fix prepare_spawn_info: JS files now use "node" instead of sys.executable - Fix protocol.py: correct total=False misuse on 7 TypedDicts (required fields were optional) - Fix query.py: add _closed guard in _ensure_started, suppress exceptions in close() - Fix sync_query.py: prevent close() deadlock, add context manager, add timeouts - Fix transport.py: handle malformed JSON lines, add _closed guard in start() - Fix validation.py: use uuid.RFC_4122 instead of magic UUID - Fix __init__.py: export TextBlock, widen query_sync signature - Remove dead code: ensure_not_aborted, write_json_line, _thread_error - Add 12 new tests (29 → 41): context managers, JSON skip, closed guards, spawn info, timeouts Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): address wenshao review — session_id, bool validation, debug stderr - Fix continue_session=True generating a wrong random session_id - Add _as_optional_bool helper for strict type validation on bool fields - Default debug stderr to sys.stderr when no custom callback is provided Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): address remaining wenshao review feedback Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * test(cli): harden settings dialog restart prompt test Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): review fixes — UUID compat, stderr fallback, sync cleanup - Remove UUID version restriction to support v6/v7/v8 (RFC 9562) - Always write to sys.stderr when stderr callback raises (was silent when debug=False) - Prevent duplicate _STOP sentinel in SyncQuery.close() via _stop_sent flag - Add ruff format --check to CI workflow - Fix smoke_real.py version guard: fail early before imports instead of NameError - Apply ruff format to existing files Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): remaining review fixes — exit_code attr, guard strictness, sync timeout - Add exit_code attribute to ProcessExitError for programmatic access - Strengthen is_control_response/is_control_cancel guards to require payload fields, preventing misrouting of malformed messages - Expose control_request_timeout property on Query so SyncQuery uses the configured timeout instead of a hardcoded 30s default - Use dataclasses.replace() instead of direct mutation on frozen-style QueryOptions in query() factory - Add ResourceWarning in SyncQuery.__del__ when not properly closed Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): add exit_code default and guard __del__ against partial GC - Give ProcessExitError.exit_code a default value (-1) so user code can construct the exception with just a message string - Wrap SyncQuery.__del__ in try/except AttributeError to prevent crashes when the object is partially garbage-collected Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): review fixes — resource leak, type safety, CI matrix, docs - Fix SyncQuery.__del__ to call close() on GC instead of only warning - Replace hasattr duck-type check with isinstance(prompt, AsyncIterable) - Type-validate permission_mode/auth_type in QueryOptions.from_mapping - Use TypeGuard return types on all is_sdk_*/is_control_* predicates - Add 5s margin to sync wrapper timeouts to prevent error type masking - Expand CI matrix to test Python 3.10, 3.11, 3.12 - Change ProcessExitError.exit_code default from -1 to None - Add stderr to docs QueryOptions listing - Update README sync example to use context manager pattern Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): preserve iterator exhaustion state and suppress detached task warning - Add _exhausted flag to Query.__anext__ and SyncQuery.__next__ so repeated iteration after end-of-stream raises Stop(Async)Iteration instead of blocking forever. - Remove re-raise in _initialize() to prevent asyncio "Task exception was never retrieved" warning on detached tasks; the error is already surfaced via _finish_with_error(). Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): reject mcp_servers at validation time and add iterator/init tests - Reject mcp_servers in validate_query_options() with a clear error instead of advertising MCP support to the CLI and then failing at runtime when mcp_message arrives. - Remove dead mcp_servers branch from _initialize(). - Add tests for async/sync iterator exhaustion, detached init task warning suppression, and mcp_servers validation. Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * fix(sdk-python): fix ruff lint errors in new tests - Use ControlRequestTimeoutError instead of bare Exception (B017) - Fix import sorting for stdlib vs third-party (I001) - Break long line to stay within 88-char limit (E501) Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> * style(sdk-python): apply ruff format to new tests Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com> --------- Co-authored-by: jinye.djy <jinye.djy@alibaba-inc.com> Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
562 lines
20 KiB
Markdown
562 lines
20 KiB
Markdown
<div align="center">
|
|
|
|
[](https://www.npmjs.com/package/@qwen-code/qwen-code)
|
|
[](./LICENSE)
|
|
[](https://nodejs.org/)
|
|
[](https://www.npmjs.com/package/@qwen-code/qwen-code)
|
|
|
|
<a href="https://trendshift.io/repositories/15287" target="_blank"><img src="https://trendshift.io/api/badge/repositories/15287" alt="QwenLM%2Fqwen-code | Trendshift" style="width: 250px; height: 55px;" width="250" height="55"/></a>
|
|
|
|
**An open-source AI agent that lives in your terminal.**
|
|
|
|
<a href="https://qwenlm.github.io/qwen-code-docs/zh/users/overview">中文</a> |
|
|
<a href="https://qwenlm.github.io/qwen-code-docs/de/users/overview">Deutsch</a> |
|
|
<a href="https://qwenlm.github.io/qwen-code-docs/fr/users/overview">français</a> |
|
|
<a href="https://qwenlm.github.io/qwen-code-docs/ja/users/overview">日本語</a> |
|
|
<a href="https://qwenlm.github.io/qwen-code-docs/ru/users/overview">Русский</a> |
|
|
<a href="https://qwenlm.github.io/qwen-code-docs/pt-BR/users/overview">Português (Brasil)</a>
|
|
|
|
</div>
|
|
|
|
## 🎉 News
|
|
|
|
- **2026-04-15**: Qwen OAuth free tier has been discontinued. To continue using Qwen Code, switch to [Alibaba Cloud Coding Plan](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index), [OpenRouter](https://openrouter.ai), [Fireworks AI](https://app.fireworks.ai), or bring your own API key. Run `qwen auth` to configure.
|
|
|
|
- **2026-04-13**: Qwen OAuth free tier policy update: daily quota adjusted to 100 requests/day (from 1,000).
|
|
|
|
- **2026-04-02**: Qwen3.6-Plus is now live! Get an API key from [Alibaba Cloud ModelStudio](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=doc#/doc/?type=model&url=2840914_2&modelId=qwen3.6-plus) to access it through the OpenAI-compatible API.
|
|
|
|
- **2026-02-16**: Qwen3.5-Plus is now live!
|
|
|
|
## Why Qwen Code?
|
|
|
|
Qwen Code is an open-source AI agent for the terminal, optimized for Qwen series models. It helps you understand large codebases, automate tedious work, and ship faster.
|
|
|
|
- **Multi-protocol, flexible providers**: use OpenAI / Anthropic / Gemini-compatible APIs, [Alibaba Cloud Coding Plan](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index), [OpenRouter](https://openrouter.ai), [Fireworks AI](https://app.fireworks.ai), or bring your own API key.
|
|
- **Open-source, co-evolving**: both the framework and the Qwen3-Coder model are open-source—and they ship and evolve together.
|
|
- **Agentic workflow, feature-rich**: rich built-in tools (Skills, SubAgents) for a full agentic workflow and a Claude Code-like experience.
|
|
- **Terminal-first, IDE-friendly**: built for developers who live in the command line, with optional integration for VS Code, Zed, and JetBrains IDEs.
|
|
|
|

|
|
|
|
## Installation
|
|
|
|
### Quick Install (Recommended)
|
|
|
|
#### Linux / macOS
|
|
|
|
```bash
|
|
bash -c "$(curl -fsSL https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.sh)"
|
|
```
|
|
|
|
#### Windows (Run as Administrator)
|
|
|
|
Works in both Command Prompt and PowerShell:
|
|
|
|
```cmd
|
|
powershell -Command "Invoke-WebRequest 'https://qwen-code-assets.oss-cn-hangzhou.aliyuncs.com/installation/install-qwen.bat' -OutFile (Join-Path $env:TEMP 'install-qwen.bat'); & (Join-Path $env:TEMP 'install-qwen.bat')"
|
|
```
|
|
|
|
> **Note**: It's recommended to restart your terminal after installation to ensure environment variables take effect.
|
|
|
|
### Manual Installation
|
|
|
|
#### Prerequisites
|
|
|
|
Make sure you have Node.js 20 or later installed. Download it from [nodejs.org](https://nodejs.org/en/download).
|
|
|
|
#### NPM
|
|
|
|
```bash
|
|
npm install -g @qwen-code/qwen-code@latest
|
|
```
|
|
|
|
#### Homebrew (macOS, Linux)
|
|
|
|
```bash
|
|
brew install qwen-code
|
|
```
|
|
|
|
## Quick Start
|
|
|
|
```bash
|
|
# Start Qwen Code (interactive)
|
|
qwen
|
|
|
|
# Then, in the session:
|
|
/help
|
|
/auth
|
|
```
|
|
|
|
On first use, you'll be prompted to sign in. You can run `/auth` anytime to switch authentication methods.
|
|
|
|
Example prompts:
|
|
|
|
```text
|
|
What does this project do?
|
|
Explain the codebase structure.
|
|
Help me refactor this function.
|
|
Generate unit tests for this module.
|
|
```
|
|
|
|
<details>
|
|
<summary>Click to watch a demo video</summary>
|
|
|
|
<video src="https://cloud.video.taobao.com/vod/HLfyppnCHplRV9Qhz2xSqeazHeRzYtG-EYJnHAqtzkQ.mp4" controls>
|
|
Your browser does not support the video tag.
|
|
</video>
|
|
|
|
</details>
|
|
|
|
## 🦞 Use Qwen Code for Coding Tasks in Claw
|
|
|
|
Copy the prompt below and paste it into your agent:
|
|
|
|
```
|
|
Use Qwen Code as a coding agent. First, fetch and read this skill reference:
|
|
https://raw.githubusercontent.com/QwenLM/qwen-code/refs/heads/main/.qwen/skills/qwen-code-claw/SKILL.md
|
|
Then follow the instructions inside to install, authenticate, and use Qwen Code via acpx for all coding tasks.
|
|
```
|
|
|
|
## Authentication
|
|
|
|
Qwen Code supports the following authentication methods:
|
|
|
|
- **API Key (recommended)**: use an API key from Alibaba Cloud Model Studio ([Beijing](https://bailian.console.aliyun.com/) / [intl](https://modelstudio.console.alibabacloud.com/)) or any supported provider (OpenAI, Anthropic, Google GenAI, and other compatible endpoints).
|
|
- **Coding Plan**: subscribe to the Alibaba Cloud Coding Plan ([Beijing](https://bailian.console.aliyun.com/cn-beijing?tab=coding-plan#/efm/coding-plan-index) / [intl](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index)) for a fixed monthly fee with higher quotas.
|
|
|
|
> ⚠️ **Qwen OAuth was discontinued on April 15, 2026.** If you were previously using Qwen OAuth, please switch to one of the methods above. Run `qwen` and then `/auth` to reconfigure.
|
|
|
|
#### API Key (recommended)
|
|
|
|
Use an API key to connect to Alibaba Cloud Model Studio or any supported provider. Supports multiple protocols:
|
|
|
|
- **OpenAI-compatible**: Alibaba Cloud ModelStudio, ModelScope, OpenAI, OpenRouter, and other OpenAI-compatible providers
|
|
- **Anthropic**: Claude models
|
|
- **Google GenAI**: Gemini models
|
|
|
|
The **recommended** way to configure models and providers is by editing `~/.qwen/settings.json` (create it if it doesn't exist). This file lets you define all available models, API keys, and default settings in one place.
|
|
|
|
##### Quick Setup in 3 Steps
|
|
|
|
**Step 1:** Create or edit `~/.qwen/settings.json`
|
|
|
|
Here is a complete example:
|
|
|
|
```json
|
|
{
|
|
"modelProviders": {
|
|
"openai": [
|
|
{
|
|
"id": "qwen3.6-plus",
|
|
"name": "qwen3.6-plus",
|
|
"baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|
"description": "Qwen3-Coder via Dashscope",
|
|
"envKey": "DASHSCOPE_API_KEY"
|
|
}
|
|
]
|
|
},
|
|
"env": {
|
|
"DASHSCOPE_API_KEY": "sk-xxxxxxxxxxxxx"
|
|
},
|
|
"security": {
|
|
"auth": {
|
|
"selectedType": "openai"
|
|
}
|
|
},
|
|
"model": {
|
|
"name": "qwen3.6-plus"
|
|
}
|
|
}
|
|
```
|
|
|
|
**Step 2:** Understand each field
|
|
|
|
| Field | What it does |
|
|
| ---------------------------- | ------------------------------------------------------------------------------------------------------------------------------------- |
|
|
| `modelProviders` | Declares which models are available and how to connect to them. Keys like `openai`, `anthropic`, `gemini` represent the API protocol. |
|
|
| `modelProviders[].id` | The model ID sent to the API (e.g. `qwen3.6-plus`, `gpt-4o`). |
|
|
| `modelProviders[].envKey` | The name of the environment variable that holds your API key. |
|
|
| `modelProviders[].baseUrl` | The API endpoint URL (required for non-default endpoints). |
|
|
| `env` | A fallback place to store API keys (lowest priority; prefer `.env` files or `export` for sensitive keys). |
|
|
| `security.auth.selectedType` | The protocol to use on startup (`openai`, `anthropic`, `gemini`, `vertex-ai`). |
|
|
| `model.name` | The default model to use when Qwen Code starts. |
|
|
|
|
**Step 3:** Start Qwen Code — your configuration takes effect automatically:
|
|
|
|
```bash
|
|
qwen
|
|
```
|
|
|
|
Use the `/model` command at any time to switch between all configured models.
|
|
|
|
##### More Examples
|
|
|
|
<details>
|
|
<summary>Coding Plan (Alibaba Cloud ModelStudio) — fixed monthly fee, higher quotas</summary>
|
|
|
|
```json
|
|
{
|
|
"modelProviders": {
|
|
"openai": [
|
|
{
|
|
"id": "qwen3.6-plus",
|
|
"name": "qwen3.6-plus (Coding Plan)",
|
|
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
|
|
"description": "qwen3.6-plus from ModelStudio Coding Plan",
|
|
"envKey": "BAILIAN_CODING_PLAN_API_KEY"
|
|
},
|
|
{
|
|
"id": "qwen3.5-plus",
|
|
"name": "qwen3.5-plus (Coding Plan)",
|
|
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
|
|
"description": "qwen3.5-plus with thinking enabled from ModelStudio Coding Plan",
|
|
"envKey": "BAILIAN_CODING_PLAN_API_KEY",
|
|
"generationConfig": {
|
|
"extra_body": {
|
|
"enable_thinking": true
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "glm-4.7",
|
|
"name": "glm-4.7 (Coding Plan)",
|
|
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
|
|
"description": "glm-4.7 with thinking enabled from ModelStudio Coding Plan",
|
|
"envKey": "BAILIAN_CODING_PLAN_API_KEY",
|
|
"generationConfig": {
|
|
"extra_body": {
|
|
"enable_thinking": true
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"id": "kimi-k2.5",
|
|
"name": "kimi-k2.5 (Coding Plan)",
|
|
"baseUrl": "https://coding.dashscope.aliyuncs.com/v1",
|
|
"description": "kimi-k2.5 with thinking enabled from ModelStudio Coding Plan",
|
|
"envKey": "BAILIAN_CODING_PLAN_API_KEY",
|
|
"generationConfig": {
|
|
"extra_body": {
|
|
"enable_thinking": true
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"env": {
|
|
"BAILIAN_CODING_PLAN_API_KEY": "sk-xxxxxxxxxxxxx"
|
|
},
|
|
"security": {
|
|
"auth": {
|
|
"selectedType": "openai"
|
|
}
|
|
},
|
|
"model": {
|
|
"name": "qwen3.6-plus"
|
|
}
|
|
}
|
|
```
|
|
|
|
> Subscribe to the Coding Plan and get your API key at [Alibaba Cloud ModelStudio(Beijing)](https://bailian.console.aliyun.com/cn-beijing?tab=coding-plan#/efm/coding-plan-index) or [Alibaba Cloud ModelStudio(intl)](https://modelstudio.console.alibabacloud.com/?tab=coding-plan#/efm/coding-plan-index).
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Multiple providers (OpenAI + Anthropic + Gemini)</summary>
|
|
|
|
```json
|
|
{
|
|
"modelProviders": {
|
|
"openai": [
|
|
{
|
|
"id": "gpt-4o",
|
|
"name": "GPT-4o",
|
|
"envKey": "OPENAI_API_KEY",
|
|
"baseUrl": "https://api.openai.com/v1"
|
|
}
|
|
],
|
|
"anthropic": [
|
|
{
|
|
"id": "claude-sonnet-4-20250514",
|
|
"name": "Claude Sonnet 4",
|
|
"envKey": "ANTHROPIC_API_KEY"
|
|
}
|
|
],
|
|
"gemini": [
|
|
{
|
|
"id": "gemini-2.5-pro",
|
|
"name": "Gemini 2.5 Pro",
|
|
"envKey": "GEMINI_API_KEY"
|
|
}
|
|
]
|
|
},
|
|
"env": {
|
|
"OPENAI_API_KEY": "sk-xxxxxxxxxxxxx",
|
|
"ANTHROPIC_API_KEY": "sk-ant-xxxxxxxxxxxxx",
|
|
"GEMINI_API_KEY": "AIzaxxxxxxxxxxxxx"
|
|
},
|
|
"security": {
|
|
"auth": {
|
|
"selectedType": "openai"
|
|
}
|
|
},
|
|
"model": {
|
|
"name": "gpt-4o"
|
|
}
|
|
}
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>Enable thinking mode (for supported models like qwen3.5-plus)</summary>
|
|
|
|
```json
|
|
{
|
|
"modelProviders": {
|
|
"openai": [
|
|
{
|
|
"id": "qwen3.5-plus",
|
|
"name": "qwen3.5-plus (thinking)",
|
|
"envKey": "DASHSCOPE_API_KEY",
|
|
"baseUrl": "https://dashscope.aliyuncs.com/compatible-mode/v1",
|
|
"generationConfig": {
|
|
"extra_body": {
|
|
"enable_thinking": true
|
|
}
|
|
}
|
|
}
|
|
]
|
|
},
|
|
"env": {
|
|
"DASHSCOPE_API_KEY": "sk-xxxxxxxxxxxxx"
|
|
},
|
|
"security": {
|
|
"auth": {
|
|
"selectedType": "openai"
|
|
}
|
|
},
|
|
"model": {
|
|
"name": "qwen3.5-plus"
|
|
}
|
|
}
|
|
```
|
|
|
|
</details>
|
|
|
|
> **Tip:** You can also set API keys via `export` in your shell or `.env` files, which take higher priority than `settings.json` → `env`. See the [authentication guide](https://qwenlm.github.io/qwen-code-docs/en/users/configuration/auth/) for full details.
|
|
|
|
> **Security note:** Never commit API keys to version control. The `~/.qwen/settings.json` file is in your home directory and should stay private.
|
|
|
|
#### Local Model Setup (Ollama / vLLM)
|
|
|
|
You can also run models locally — no API key or cloud account needed. This is not an authentication method; instead, configure your local model endpoint in `~/.qwen/settings.json` using the `modelProviders` field.
|
|
|
|
<details>
|
|
<summary>Ollama setup</summary>
|
|
|
|
1. Install Ollama from [ollama.com](https://ollama.com/)
|
|
2. Pull a model: `ollama pull qwen3:32b`
|
|
3. Configure `~/.qwen/settings.json`:
|
|
|
|
```json
|
|
{
|
|
"modelProviders": {
|
|
"openai": [
|
|
{
|
|
"id": "qwen3:32b",
|
|
"name": "Qwen3 32B (Ollama)",
|
|
"baseUrl": "http://localhost:11434/v1",
|
|
"description": "Qwen3 32B running locally via Ollama"
|
|
}
|
|
]
|
|
},
|
|
"security": {
|
|
"auth": {
|
|
"selectedType": "openai"
|
|
}
|
|
},
|
|
"model": {
|
|
"name": "qwen3:32b"
|
|
}
|
|
}
|
|
```
|
|
|
|
</details>
|
|
|
|
<details>
|
|
<summary>vLLM setup</summary>
|
|
|
|
1. Install vLLM: `pip install vllm`
|
|
2. Start the server: `vllm serve Qwen/Qwen3-32B`
|
|
3. Configure `~/.qwen/settings.json`:
|
|
|
|
```json
|
|
{
|
|
"modelProviders": {
|
|
"openai": [
|
|
{
|
|
"id": "Qwen/Qwen3-32B",
|
|
"name": "Qwen3 32B (vLLM)",
|
|
"baseUrl": "http://localhost:8000/v1",
|
|
"description": "Qwen3 32B running locally via vLLM"
|
|
}
|
|
]
|
|
},
|
|
"security": {
|
|
"auth": {
|
|
"selectedType": "openai"
|
|
}
|
|
},
|
|
"model": {
|
|
"name": "Qwen/Qwen3-32B"
|
|
}
|
|
}
|
|
```
|
|
|
|
</details>
|
|
|
|
## Usage
|
|
|
|
As an open-source terminal agent, you can use Qwen Code in four primary ways:
|
|
|
|
1. Interactive mode (terminal UI)
|
|
2. Headless mode (scripts, CI)
|
|
3. IDE integration (VS Code, Zed)
|
|
4. SDKs (TypeScript, Python, Java)
|
|
|
|
#### Interactive mode
|
|
|
|
```bash
|
|
cd your-project/
|
|
qwen
|
|
```
|
|
|
|
Run `qwen` in your project folder to launch the interactive terminal UI. Use `@` to reference local files (for example `@src/main.ts`).
|
|
|
|
#### Headless mode
|
|
|
|
```bash
|
|
cd your-project/
|
|
qwen -p "your question"
|
|
```
|
|
|
|
Use `-p` to run Qwen Code without the interactive UI—ideal for scripts, automation, and CI/CD. Learn more: [Headless mode](https://qwenlm.github.io/qwen-code-docs/en/users/features/headless).
|
|
|
|
#### IDE integration
|
|
|
|
Use Qwen Code inside your editor (VS Code, Zed, and JetBrains IDEs):
|
|
|
|
- [Use in VS Code](https://qwenlm.github.io/qwen-code-docs/en/users/integration-vscode/)
|
|
- [Use in Zed](https://qwenlm.github.io/qwen-code-docs/en/users/integration-zed/)
|
|
- [Use in JetBrains IDEs](https://qwenlm.github.io/qwen-code-docs/en/users/integration-jetbrains/)
|
|
|
|
#### SDKs
|
|
|
|
Build on top of Qwen Code with the available SDKs:
|
|
|
|
- TypeScript: [Use the Qwen Code SDK](./packages/sdk-typescript/README.md)
|
|
- Python: [Use the Python SDK](./packages/sdk-python/README.md)
|
|
- Java: [Use the Java SDK](./packages/sdk-java/qwencode/README.md)
|
|
|
|
Python SDK example:
|
|
|
|
```python
|
|
import asyncio
|
|
|
|
from qwen_code_sdk import is_sdk_result_message, query
|
|
|
|
|
|
async def main() -> None:
|
|
result = query(
|
|
"Summarize the repository layout.",
|
|
{
|
|
"cwd": "/path/to/project",
|
|
"path_to_qwen_executable": "qwen",
|
|
},
|
|
)
|
|
|
|
async for message in result:
|
|
if is_sdk_result_message(message):
|
|
print(message["result"])
|
|
|
|
|
|
asyncio.run(main())
|
|
```
|
|
|
|
## Commands & Shortcuts
|
|
|
|
### Session Commands
|
|
|
|
- `/help` - Display available commands
|
|
- `/clear` - Clear conversation history
|
|
- `/compress` - Compress history to save tokens
|
|
- `/stats` - Show current session information
|
|
- `/bug` - Submit a bug report
|
|
- `/exit` or `/quit` - Exit Qwen Code
|
|
|
|
### Keyboard Shortcuts
|
|
|
|
- `Ctrl+C` - Cancel current operation
|
|
- `Ctrl+D` - Exit (on empty line)
|
|
- `Up/Down` - Navigate command history
|
|
|
|
> Learn more about [Commands](https://qwenlm.github.io/qwen-code-docs/en/users/features/commands/)
|
|
>
|
|
> **Tip**: In YOLO mode (`--yolo`), vision switching happens automatically without prompts when images are detected. Learn more about [Approval Mode](https://qwenlm.github.io/qwen-code-docs/en/users/features/approval-mode/)
|
|
|
|
## Configuration
|
|
|
|
Qwen Code can be configured via `settings.json`, environment variables, and CLI flags.
|
|
|
|
| File | Scope | Description |
|
|
| ----------------------- | ------------- | --------------------------------------------------------------------------------------- |
|
|
| `~/.qwen/settings.json` | User (global) | Applies to all your Qwen Code sessions. **Recommended for `modelProviders` and `env`.** |
|
|
| `.qwen/settings.json` | Project | Applies only when running Qwen Code in this project. Overrides user settings. |
|
|
|
|
The most commonly used top-level fields in `settings.json`:
|
|
|
|
| Field | Description |
|
|
| ---------------------------- | ---------------------------------------------------------------------------------------------------- |
|
|
| `modelProviders` | Define available models per protocol (`openai`, `anthropic`, `gemini`, `vertex-ai`). |
|
|
| `env` | Fallback environment variables (e.g. API keys). Lower priority than shell `export` and `.env` files. |
|
|
| `security.auth.selectedType` | The protocol to use on startup (e.g. `openai`). |
|
|
| `model.name` | The default model to use when Qwen Code starts. |
|
|
|
|
> See the [Authentication](#api-key-flexible) section above for complete `settings.json` examples, and the [settings reference](https://qwenlm.github.io/qwen-code-docs/en/users/configuration/settings/) for all available options.
|
|
|
|
## Benchmark Results
|
|
|
|
### Terminal-Bench Performance
|
|
|
|
| Agent | Model | Accuracy |
|
|
| --------- | ------------------ | -------- |
|
|
| Qwen Code | Qwen3-Coder-480A35 | 37.5% |
|
|
| Qwen Code | Qwen3-Coder-30BA3B | 31.3% |
|
|
|
|
## Ecosystem
|
|
|
|
Looking for a graphical interface?
|
|
|
|
- [**AionUi**](https://github.com/iOfficeAI/AionUi) A modern GUI for command-line AI tools including Qwen Code
|
|
- [**Gemini CLI Desktop**](https://github.com/Piebald-AI/gemini-cli-desktop) A cross-platform desktop/web/mobile UI for Qwen Code
|
|
|
|
## Troubleshooting
|
|
|
|
If you encounter issues, check the [troubleshooting guide](https://qwenlm.github.io/qwen-code-docs/en/users/support/troubleshooting/).
|
|
|
|
**Common issues:**
|
|
|
|
- **`Qwen OAuth free tier was discontinued on 2026-04-15`**: Qwen OAuth is no longer available. Run `qwen` → `/auth` and switch to API Key or Coding Plan. See the [Authentication](#authentication) section above for setup instructions.
|
|
|
|
To report a bug from within the CLI, run `/bug` and include a short title and repro steps.
|
|
|
|
## Connect with Us
|
|
|
|
- Discord: https://discord.gg/RN7tqZCeDK
|
|
- Dingtalk: https://qr.dingtalk.com/action/joingroup?code=v1,k1,+FX6Gf/ZDlTahTIRi8AEQhIaBlqykA0j+eBKKdhLeAE=&_dt_no_comment=1&origin=1
|
|
|
|
## Acknowledgments
|
|
|
|
This project is based on [Google Gemini CLI](https://github.com/google-gemini/gemini-cli). We acknowledge and appreciate the excellent work of the Gemini CLI team. Our main contribution focuses on parser-level adaptations to better support Qwen-Coder models.
|