Qwen Code: CLI with Chinese Characteristics
Taking the new terminal AI agent from Alibaba Qwen for a test drive
Qwen Code is a new terminal-based coding agent from Qwen, Alibaba's AI lab. Released alongside their powerful Qwen3 Coder model, Qwen Code is a direct fork of Gemini CLI. It offers a virtually identical user experience but with one crucial difference: it is open to any model that supports the OpenAI completions API. This review explores the experience of using Qwen Code, both with its native model and with other popular open models.
Google's Gemini CLI has been a popular choice for its intuitive interface and direct access to Google's powerful models. However, its closed ecosystem, restricting users to only Gemini models, has been a point of frustration for many. The Qwen Code fork addresses this problem and adds access to Qwen's flagship coding model on top.
First Impressions and Setup
For anyone familiar with Gemini CLI, getting started with Qwen Code is effortless. Installation is a single command via npm, and the initial setup feels immediately familiar. The only difference is the location of the configuration director (.qwen/
) and the availability of the Qwen model by default.
Qwen offers a remarkably generous free tier, providing up to 2,000 requests per day. This is more than enough for a full day of intensive coding, making it a highly attractive option for developers looking for a powerful and free AI coding assistant.
Migrating from an existing Gemini CLI setup is straightforward. The configuration files are identical, just located in a different directory. I kept my AGENTS.md
file, containing custom instructions, and renamed the settings directory to get started with various MCP servers. Upon launching, the interface is a mirror image of Gemini CLI, distinguished only by the Qwen title and a slightly different color scheme. It clearly indicates that it's using the qwen3-coder
model by default and supports all the same commands and behaviors.
Putting Qwen3 Coder to the Test
To evaluate its capabilities, I assigned Qwen Code a real-world task: adding support for itself to Ruler, a tool for managing coding agents. The task was defined in a detailed GitHub issue that included a clear implementation plan. I instructed the agent to read the issue, work in a new feature branch, and create a pull request upon completion.
The agent performed the initial steps well:
It correctly fetched the GitHub issue URL to understand the requirements.
Operating in
approvals
mode, it sought permission before executing commands, just as Gemini CLI would.It created a new feature branch and began implementing the required changes.
The model worked at a pleasant pace. While not as blazing-fast as some optimized deployments of Qwen models available through services like Cerebras and Groq, it was certainly responsive enough for interactive work. It clearly communicated the files it was creating and the modifications it was making. Based on its initial progress, it seemed to have a solid grasp of the task, so I allowed it to proceed.
Eventually, the agent announced it had completed the task, provided a summary of its work, and created a pull request. However, upon testing the implementation, I discovered it was incorrect. The agent had missed a crucial aspect of the plan related to the configuration of MCP servers.
This highlighted a key characteristic of the Qwen3 Coder model. It excels at direct, immediate coding tasks, performing on par with capable models like Claude 3 Sonnet. However, its ability to reason about complex, multi-step problems doesn't yet match that of frontier models like GPT-5, Gemini 2.5 Pro, or Claude 4.1 Opus. It followed the explicit instructions well but failed to infer the implicit dependencies required for a fully functional implementation.
When I pointed out the omission, the agent's response — "You're absolutely right" — made me chuckle. Where did it learn this particular phrase from? It then attempted to fix the issue, but its subsequent efforts were clumsy. It struggled to understand how to test its own changes, making repeated mistakes. Ultimately, I had to manually run the tool, capture the error output, and feed it back into the prompt. With this explicit guidance, Qwen Code was finally able to correct the implementation and finalize the pull request, which I was then able to merge.
Notably, this entire complex interaction, including the debugging and correction cycles, used only 150 of my 2,000 daily requests, underscoring the value of Qwen's free tier.
The Power of an Open Platform
The true standout feature of Qwen Code is its model-agnostic architecture. This is the "open" version of Gemini CLI that the community has been asking for. To test this flexibility, I configured it to use other models via OpenRouter.
The process is straightforward. You create a .env
file and specify the API key, the base URL for the OpenAI-compatible endpoint, and the desired model name.
Test 1: GPT-OSS-120b
First, I configured Qwen Code to use GPT-OSS-120b, an open model from OpenAI. The tool immediately recognized the new model. I gave it a simple task: create a small Django application. It handled the request quickly and correctly. I even directed it to use a Playwright MCP server to interact with the Django admin interface, a task it completed without any issues.
Test 2: GLM-4.5
Next, I switched to the popular GLM-4.5 model from Zhipu AI. This time, I requested a Next.js application implementing a Kanban board. Once again, the agent successfully completed the task and presented the end result to me using the Playwright browser.
These tests confirm that Qwen Code works seamlessly as a universal front-end for any compatible model. It successfully abstracts the tool's interface from the underlying model, giving developers the freedom to experiment and choose the best model for their specific needs.
Final Verdict
Qwen Code is an excellent tool that successfully addresses the primary limitation of its predecessor. It delivers the polished, intuitive user experience of Gemini CLI while adding the critical flexibility of model choice, along with access to the Qwen3 Coder model out of the box.
The Good
Familiar Interface: If you like Gemini CLI, you will feel right at home with Qwen Code.
Truly Open: Its ability to connect to any OpenAI-compatible API is its killer feature, making it a versatile tool for working with a wide range of models.
Generous Free Tier: The 2,000 daily requests for the native Qwen3 Coder model provide a lot of value for developers on a tight budget.
Capable Default Model: For many common coding tasks, Qwen3 Coder is a fast and effective assistant, comparable in capability to models like Claude 4 Sonnet or GPT-4.1.
The Areas for Improvement
Limited Reasoning: The default Qwen3 Coder model lacks the deep reasoning and planning capabilities of top-tier models, making it less suitable for highly complex or ambiguous tasks that require significant interpretation.
Inherited Quirks: Minor UI annoyances from Gemini CLI, such as the distracting jokes displayed during wait times, are also present here.
In summary, Qwen Code is a viable choice for developers. It serves as an open and flexible alternative to the more restrictive Gemini CLI. Whether you want to take advantage of the powerful and free Qwen3 Coder model or use it as a universal terminal interface for experimenting with the latest open models, Qwen Code is a valuable addition to the growing list of open AI coding agents in the terminal.
I leverage a mix of qwen and opencode sonic model as fallbacks when rate limits are reached.
Love the detailed breakdown on where qwen shines and where it falls short.