mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-04-28 19:52:02 +00:00
* feat(web-search): add GLM (ZhipuAI) web search provider - Add GlmProvider class implementing BaseWebSearchProvider using the ZhipuAI Web Search API (https://open.bigmodel.cn/api/paas/v4/web_search) - Support multiple search engines: search_std, search_pro, search_pro_sogou, search_pro_quark - Support optional config: maxResults, searchIntent, searchRecencyFilter, contentSize, searchDomainFilter - Truncate query to 70 characters per API limit - Register 'glm' in the provider discriminated union (types.ts) and createProvider() switch (index.ts) - Add GlmProviderConfig to settingsSchema, ConfigParams, and Config class - Add --glm-api-key CLI flag and GLM_API_KEY env var support in webSearch.ts - Forward GLM_API_KEY in sandbox environment - Update provider priority list: Tavily > Google > GLM > DashScope - Add 17 unit tests for GlmProvider and 4 integration tests in index.test.ts - Update docs/developers/tools/web-search.md with GLM configuration, env vars, CLI args, pricing, and corrected DashScope billing info - Fix stale OAuth/free-tier references in web-search.md Closes #3496 * docs(web-search): fix DashScope note and add GLM server-side limitations * fix(web-search): make DashScope provider work with standard API key, remove qwen-oauth dependency - DashScopeProvider.isAvailable() now checks config.apiKey instead of authType - Remove OAuth credential file reading and resource_url requirement - Use standard DashScope endpoint: dashscope.aliyuncs.com/api/v1/indices/plugin/web_search - Read DASHSCOPE_API_KEY env var and --dashscope-api-key CLI flag - Forward DASHSCOPE_API_KEY into sandbox environment - Update integration test to detect DASHSCOPE_API_KEY - Update docs to reflect new API key based configuration * feat(web-search): remove built-in web search tool The web_search tool and all related provider implementations are removed. Web search functionality will be provided via MCP integrations instead, which is the direction the broader agent ecosystem is moving. Removed: - packages/core/src/tools/web-search/ (entire directory) - packages/cli/src/config/webSearch.ts - integration-tests/cli/web_search.test.ts - ToolNames.WEB_SEARCH, ToolErrorCode.WEB_SEARCH_FAILED - webSearch config in ConfigParams, Config class, settingsSchema - CLI options: --tavily-api-key, --google-api-key, --google-search-engine-id, --glm-api-key, --dashscope-api-key, --web-search-default - Sandbox env forwarding for TAVILY/GLM/DASHSCOPE/GOOGLE search keys - web_search from rule-parser, permission-manager, speculation gate, microcompact tool set, and builtin-agents tool list * fix: remove websearch reference * docs: remove websearch tool * docs: add break change guide * fix review
215 lines
6.3 KiB
Markdown
215 lines
6.3 KiB
Markdown
# Web Search
|
|
|
|
Qwen Code supports web search capabilities through **MCP (Model Context Protocol)** integrations. Rather than a built-in search tool, web search is provided by connecting to external MCP servers, giving you full flexibility to choose the search service that best fits your needs.
|
|
|
|
## ⚠️ Breaking Change: Built-in `web_search` Tool Removed
|
|
|
|
> **Affected versions:** `V0.0.7+` through the last release with built-in web search support.
|
|
|
|
The built-in `web_search` tool and all its associated configuration have been **removed**. If you were using any of the following, you should migrate to the MCP-based approach described in this document:
|
|
|
|
| Removed | What to do |
|
|
| ---------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
|
| `webSearch` block in `settings.json` | Configure an MCP server in `mcpServers` instead (see below) |
|
|
| `advanced.tavilyApiKey` in `settings.json` | Use the [Tavily MCP server](#tavily-websearch) |
|
|
| `TAVILY_API_KEY` environment variable | Use the [Tavily MCP server](#tavily-websearch) |
|
|
| `DASHSCOPE_API_KEY` for web search | Use the [Alibaba Cloud Bailian WebSearch MCP](#alibaba-cloud-bailian-websearch-recommended) |
|
|
| `GLM_API_KEY` for web search | Use the [GLM WebSearch Prime MCP](#glm-websearch-prime-zhipuai) |
|
|
| `--tavily-api-key` / `--glm-api-key` / `--dashscope-api-key` CLI flags | Configure via `mcpServers` in `settings.json` |
|
|
|
|
### Migration Examples
|
|
|
|
**Before (Tavily via built-in tool):**
|
|
|
|
```json
|
|
{
|
|
"webSearch": {
|
|
"provider": [{ "type": "tavily", "apiKey": "tvly-xxx" }],
|
|
"default": "tavily"
|
|
}
|
|
}
|
|
```
|
|
|
|
**After (Tavily via MCP):**
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"tavily": {
|
|
"httpUrl": "https://mcp.tavily.com/mcp/?tavilyApiKey=tvly-xxx"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
**Before (DashScope via built-in tool):**
|
|
|
|
```json
|
|
{
|
|
"webSearch": {
|
|
"provider": [{ "type": "dashscope", "apiKey": "sk-xxx" }],
|
|
"default": "dashscope"
|
|
}
|
|
}
|
|
```
|
|
|
|
**After (Alibaba Cloud Bailian WebSearch via MCP):**
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"WebSearch": {
|
|
"httpUrl": "https://dashscope.aliyuncs.com/api/v1/mcps/WebSearch/mcp",
|
|
"headers": {
|
|
"Authorization": "Bearer sk-xxx"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
## Supported MCP Web Search Services
|
|
|
|
### Alibaba Cloud Bailian WebSearch (Recommended)
|
|
|
|
The official web search MCP service provided by Alibaba Cloud Bailian platform, powered by DashScope.
|
|
|
|
- **MCP Marketplace:** https://bailian.console.aliyun.com/cn-beijing?tab=mcp#/mcp-market/detail/WebSearch
|
|
- **Cost:** Paid (billed via Alibaba Cloud DashScope)
|
|
- **Get API Key:** https://help.aliyun.com/zh/model-studio/get-api-key
|
|
- **Best for:** Chinese-language queries, access to Chinese web content, integration with the Alibaba Cloud ecosystem
|
|
|
|
#### Setup
|
|
|
|
**Method 1: CLI command**
|
|
|
|
```bash
|
|
qwen mcp add WebSearch \
|
|
-t http \
|
|
"https://dashscope.aliyuncs.com/api/v1/mcps/WebSearch/mcp" \
|
|
-H "Authorization: Bearer ${DASHSCOPE_API_KEY}"
|
|
```
|
|
|
|
**Method 2: `settings.json`**
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"WebSearch": {
|
|
"httpUrl": "https://dashscope.aliyuncs.com/api/v1/mcps/WebSearch/mcp",
|
|
"headers": {
|
|
"Authorization": "Bearer ${DASHSCOPE_API_KEY}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Replace `${DASHSCOPE_API_KEY}` with your actual API key, or set it as an environment variable so Qwen Code picks it up automatically.
|
|
|
|
---
|
|
|
|
### Tavily WebSearch
|
|
|
|
A production-ready MCP server providing real-time web search, extract, map, and crawl capabilities.
|
|
|
|
- **Repository:** https://github.com/tavily-ai/tavily-mcp
|
|
- **Cost:** Paid (free tier available)
|
|
- **Get API Key:** https://app.tavily.com/home
|
|
- **Best for:** General-purpose web search with high-quality AI-generated answers
|
|
|
|
#### Available Tools
|
|
|
|
- `tavily_search` — Real-time web search
|
|
- `tavily_extract` — Intelligent data extraction from web pages
|
|
- `tavily_map` — Create a structured map of a website
|
|
- `tavily_crawl` — Systematically explore websites
|
|
|
|
#### Setup
|
|
|
|
**Method 1: CLI command (Remote MCP)**
|
|
|
|
```bash
|
|
qwen mcp add tavily \
|
|
-t http \
|
|
"https://mcp.tavily.com/mcp/?tavilyApiKey=${TAVILY_API_KEY}"
|
|
```
|
|
|
|
**Method 2: `settings.json` (Remote MCP)**
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"tavily": {
|
|
"httpUrl": "https://mcp.tavily.com/mcp/?tavilyApiKey=${TAVILY_API_KEY}"
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Replace `${TAVILY_API_KEY}` with your actual API key, or set it as an environment variable.
|
|
|
|
**Method 3: `settings.json` (Local NPX)**
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"tavily-mcp": {
|
|
"command": "npx",
|
|
"args": ["-y", "tavily-mcp@latest"],
|
|
"env": {
|
|
"TAVILY_API_KEY": "your-api-key-here"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
---
|
|
|
|
### GLM WebSearch Prime (ZhipuAI)
|
|
|
|
The official web search Remote MCP service provided by ZhipuAI (智谱AI), designed for GLM Coding Plan users. Provides real-time web search including news, stock prices, weather, and more.
|
|
|
|
- **Documentation:** https://docs.bigmodel.cn/cn/coding-plan/mcp/search-mcp-server
|
|
- **Cost:** Included in GLM Coding Plan subscription (Lite: 100 calls/month, Pro: 1,000/month, Max: 4,000/month)
|
|
- **Get API Key:** https://open.bigmodel.cn/apikey/platform
|
|
- **Best for:** Chinese-language queries, real-time information retrieval
|
|
|
|
#### Available Tools
|
|
|
|
- `webSearchPrime` — Web search returning page title, URL, summary, site name, and favicon
|
|
|
|
#### Setup
|
|
|
|
**Method 1: CLI command**
|
|
|
|
```bash
|
|
qwen mcp add web-search-prime \
|
|
-t http \
|
|
"https://open.bigmodel.cn/api/mcp/web_search_prime/mcp" \
|
|
-H "Authorization: Bearer ${GLM_API_KEY}"
|
|
```
|
|
|
|
**Method 2: `settings.json`**
|
|
|
|
```json
|
|
{
|
|
"mcpServers": {
|
|
"web-search-prime": {
|
|
"httpUrl": "https://open.bigmodel.cn/api/mcp/web_search_prime/mcp",
|
|
"headers": {
|
|
"Authorization": "Bearer ${GLM_API_KEY}"
|
|
}
|
|
}
|
|
}
|
|
}
|
|
```
|
|
|
|
Replace `${GLM_API_KEY}` with your actual ZhipuAI API key, or set it as an environment variable.
|
|
|
|
---
|