Qwen Agent MCP 实战:淘宝京东闲鱼比价评论员
百炼智能体挂自定义 MCP 的写法、开源 Qwen-Agent 跑通的配置,加一次真实比价:闲鱼 Pocket 3 二手中位价比新品低 37.5%。

想在淘宝、京东、闲鱼之间比一件东西,最费时间的不是看价格,而是把三个平台的结果放到同一张表里:淘宝搜索给的是一堆标题和价格,京东要点进详情页才知道是不是自营、有没有货,闲鱼的价格和成色都写在卖家自己编的标题里。本文用 Qwen 当「电商评论员」,让它通过 MCP(Model Context Protocol,一种让模型调用外部工具的公开协议)一次拿到三个平台的数据,再写成一页选购结论。我们分两条路写:阿里云百炼的 Managed Agents(百炼的托管智能体服务)怎样挂自定义 MCP,以及开源 Qwen-Agent 框架怎样接同一个 MCP 服务。
先交代哪些是真跑的、哪些是配置示例。本机没有百炼账号,所以百炼一侧的智能体配置全部按 help.aliyun.com 原文写成配置示例,本文没有在百炼上运行过。开源 Qwen-Agent 一侧是真跑的:2026-11-03 00:20 新加坡时间起,我们在一台 Mac 上用 Qwen-Agent 0.0.34 的 MCP 管理器连上 EveryInfra 的远程 MCP 端点,真调了淘宝评价、淘宝问大家和闲鱼搜索,另外用 REST 接口调了淘宝搜索、京东搜索和京东商品详情。全部真调一共 20 次,扣费 11 次,合计 $0.066279。
一、Qwen Agent MCP 能做出什么样的「电商评论员」
我们给这个评论员定的任务很具体:用户说一句「Pocket 3 现在在哪买值」,它要依次查淘宝搜索、淘宝评价(拿不到就查淘宝问大家)、京东搜索、京东商品详情、闲鱼搜索,最后写出一页结论,包括三个平台的价格区间和中位数、二手相对新品便宜多少、买家最常问的问题,以及下单前该问卖家的几句话。这件事单靠模型做不了,因为模型不知道今天的价格;单靠接口也做不好,因为闲鱼标题里的「官换」「随心换」「验货宝」要有人读懂才能分类。把两者接起来的正是 MCP:模型决定调哪个工具、传什么参数,工具负责去平台拿数据。

下表是本文真跑的结果概览。表里的「条数」是这次调用实际返回的条数,「花费」按 EveryInfra 目录价逐次扣费的实际金额,返回为空的调用不扣费。
| 能力 | 本次真调结果 | 单次花费 | 耗时 |
|---|---|---|---|
taobao/search | Pocket 3 搜索 20 条,只返回 9 个字段 | $0.0135 | 1.8–3.7 秒 |
taobao/reviews | 7 个商品各试 1 次,都是 0 条,自动退款 | $0 | 11.8–19.8 秒 |
taobao/questions | 问大家 20 条,时间 2026-03-01 到 2026-10-21 | $0.001389 | 7.3 秒 |
jd/search | 5 条,4 条是 Pocket 3 | $0.002472 | 6.1 秒 |
jd/product_detail | 自营旗舰店缺货,价格被遮成「2??9」 | $0.001389 | 11.4–14.0 秒 |
jd/reviews | 目录标为暂不可用,返回 503,不扣费 | $0 | 0.1 秒 |
xianyu/search | 50 条二手,价格 1,199–1,900 元 | $0.005556 | 8.9–9.2 秒 |
这张表已经能看出这个评论员的边界:价格和二手成色拿得很全,淘宝评价这次一条都没拿到,京东评价能力目前暂停。下面先把百炼一侧的规则查清,再讲开源框架怎么接,最后看真实数据和账。
二、百炼智能体挂 MCP:型号、字段、数量上限和四种自定义方式
百炼现在有两套「智能体」,名字相近但规则不同,很多讨论把它们混在一起。第一套是控制台里的「智能体应用」,在应用管理页面点「创建应用」生成,界面上勾选 MCP 服务;第二套是 Managed Agents,也就是本文标题说的 Agent API,用 POST /agents 创建智能体、用 POST /sessions 开会话,智能体在百炼的沙箱里跑。百炼的 API 总览写明基地址是 https://{workspace_id}.{region}.maas.aliyuncs.com/api/v1/agentstudio,地域目前只有 cn-beijing,Python SDK 要 1.26.2 以上,会话级 MCP 请求头要 1.27.7 以上(百炼 API 总览)。
型号以百炼「定义智能体」页面为准。2026-11-03 读取时,可选模型是 qwen3.8-max、qwen3.8-flash、qwen3.7-max、qwen3.7-plus、qwen3.6-plus、qwen3.6-flash,另外还有 deepseek-v4.1-flash、deepseek-v4-pro、glm-5.3、kimi-k3 等第三方模型;运行模式有 auto、performance、balanced、economy 四种(定义智能体)。同一页还写明智能体只能归档、不能删除,更新是整份替换并且要带上当前版本号做乐观锁;智能体 API 页补充了一句很实用的话:会话创建时锁定当时的版本,之后改智能体配置不影响已经在跑的会话(智能体 API)。
mcp_servers 这个字段的写法,创建智能体的接口文档讲得最清楚:它是一个数组,每项只有 type 和 name 两个键,type 取 official(MCP 市场里的服务)或 customer(你自己注册的服务)。注意不是很多文章里写的 custom。真正决定工具能不能用的是另一个字段 tools:里面要放一项 type 为 mcp_toolkit 的工具包,mcp_server_name 写同一个服务名,configs 里逐个工具写 enabled: true;审批策略 permission_policy 也写在这里,不写在 mcp_servers 里(创建智能体)。
| 字段 | 取值 | 要点 | 原文 |
|---|---|---|---|
model | 对象,必填子字段 id,如 qwen3.8-max | 可选 enable_thinking、max_tokens、temperature | 创建智能体 |
mcp_servers[].type | official 或 customer | 自己的服务用 customer | 创建智能体 |
mcp_servers[].name | 自定义服务填服务 ID,形如 mcp-xxxxxxxx | 填显示名称会报「查询MCP详情异常」 | 自定义 MCP 与 Skills |
tools[].type | builtin_toolkit 至多一项,mcp_toolkit 可多项 | 不逐个启用工具时,运行时工具静默缺失 | 创建智能体、自定义 MCP 与 Skills |
permission_policy | {"type": "always_allow"} 或 {"type": "always_ask"} | 只接受对象形态;审批只支持主智能体 | 内置工具 |
两种类型的校验时机完全相反,这是最容易踩的坑。百炼文档的对照表写得很直白:official 类型创建时不校验名字是否存在,写错了照样创建成功,到运行时工具才静默缺失,模型只会回答「没有可用工具」;customer 类型创建时强制校验,名字没注册过直接返回 400,错误码 AGENT_010。所以挂自己的服务反而更好排查:先在控制台注册,再写进智能体配置,顺序不能反。文档还提到,自定义 MCP 的注册和增删改目前只能在控制台做,API 总览里没有对应端点(自定义 MCP 与 Skills)。

单个智能体能挂几个 MCP 服务,控制台应用和 Managed Agents 的答案不同,详见文末问答(控制台应用的原文见 官方 MCP 服务)。
自定义 MCP 的接入方式,百炼在两份文档里的说法也不完全一样。较早的「自定义 MCP」文档按部署方式列了三种:脚本部署、AI 网关、阿里云 OpenAPI(自定义 MCP);较新的 Managed Agents 文档写的是「自定义支持四种接入类型:插件、脚本部署、AI 网关、阿里云 OpenAPI」。四种里只有脚本部署写了费用:npx / uvx 把服务部署到函数计算,按函数计算计费;http 只登记一个已在运行的远程端点,是纯注册,不产生部署费用。AI 网关适合已经用阿里云 AI 网关统一管理 MCP 的团队,OpenAPI 适合把阿里云产品的接口变成 MCP 工具,插件一项文档只列了名称。
像 EveryInfra 这样已经对外提供远程 MCP 端点的服务,选「脚本部署」里的 http 安装方式即可。文档原话的意思是:这一步只是把端点地址和鉴权方式告诉百炼,不会真正部署任何东西。函数计算的文档也给了同样的思路:托管在别处的 MCP 服务,接入百炼时安装方式选 http(函数计算 MCP 服务)。如果你的 MCP 是阿里云产品的接口,阿里云另有一份 OpenAPI MCP Server 的用户指南可以参考(OpenAPI MCP Server)。
三、「MCP 广场下线」到底下线了什么
搜「百炼 MCP 广场」时,常能看到「MCP 广场要下线了」的说法。我们把阿里云公告页的原文读了一遍,结论是:下线的是几个具体服务,不是整个广场。2026-01-05 发布的公告写明,北京时间 2026-06-30 00:00 起,MCP 广场下线 7 个服务:Ever Art、博查AI搜索(旧版)、小宿智能搜索(旧版)、抖音助手、乾坤挂动、万兴天幕、股票数据,其中博查和小宿可以开通新版(公告 117858)。2026-03-26 又发了一份公告,企百科的 4 个旧版服务(知识产权、工商信息、招投标、风险信息)在 2026-04-01 下线,建议开通新版(公告 118111)。
| 公告 | 发布日期 | 生效日期 | 范围 |
|---|---|---|---|
| 117858 | 2026-01-05 | 2026-06-30 | 7 个服务,其中 2 个有新版 |
| 118111 | 2026-03-26 | 2026-04-01 | 企百科 4 个旧版服务,有新版 |
| 118456 | 2026-07-16 | 2026-08-17 | Managed Agents 开始收费,与下线无关 |
对做电商评论员的人来说,这两份公告的影响很小:本文用的是自己注册的 customer 类型服务,不依赖广场里的任何一个服务。真正需要留意的是第三份公告:Managed Agents 从 2026-08-17 09:00 起开始收费,会话运行时按 0.5 元/小时计费,运行中计费、空闲不收,新用户赠 10 小时、30 天有效,模型费和工具、MCP 调用费另算(公告 118456)。这一条我们放到后面的成本一节一起算。
四、流程:一次比价怎么走
整个流程只有一条主线。第一步,用户把问题交给 Qwen,系统提示词里写清楚评论员的工作顺序和输出格式。第二步,Qwen 通过 MCP 拿到工具清单,EveryInfra 的远程 MCP 一共暴露 12 个工具,评论员真正要用的只有两个:everyinfra_list_capabilities 用来查有哪些平台和能力、各要什么参数,everyinfra_call_api 用来真正调能力。第三步,Qwen 按顺序调 6 次能力,每次都是同一个工具,只是 platform、action、params 三个参数不同。第四步,6 份结果回到模型,模型按提示词把价格、成色、问题归类,写成一页结论。
这条主线里有两个容易忽视的细节。一是结果的长度差别很大:闲鱼 50 条结果折算成 Qwen 的分词数有 21,710 个,而淘宝评价返回 0 条时只有 432 个,模型每一轮都要把之前的结果再读一遍,所以把最长的结果放在最后调,能少读几遍。二是空结果不扣费:淘宝评价返回 0 条时,返回体里直接写着 "charged": false 和 "reason": "empty_result_refunded",模型可以据此告诉用户「这家店暂时拿不到评价,已改查问大家」,而不是把空结果当成「没有差评」。
五、百炼一侧的配置示例(本文没有在百炼上运行)
下面三段配置都是按百炼帮助中心原文写的示例,字段名、取值和顺序逐项对过文档,但我们没有百炼账号,没有在百炼上运行过,不能保证你照抄就一次成功。如果你在百炼上跑通了,或者发现哪里与文档不一致,欢迎告诉我们。
第一段是在百炼控制台注册 EveryInfra 的远程 MCP。路径是控制台「Managed Agent → MCP」的「自定义」标签页,点「创建MCP服务」,类型选「脚本部署」,安装方式选 http,然后在「MCP服务配置」里粘贴下面的 JSON。这里有一个只在百炼才有的写法:传输类型写 streamableHttp(驼峰),而开源 Qwen-Agent 要写 streamable-http(连字符),两边不能混用。鉴权头我们用了百炼的动态 Header 占位符:注册时写 "Authorization": "${Authorization}",真实的 Key 在每次开会话时再传,这样同一个注册可以给不同的客户用不同的 Key。
{
"mcpServers": {
"everyinfra": {
"type": "streamableHttp",
"url": "https://api.everyinfra.com/mcp",
"headers": {
"Authorization": "${Authorization}"
}
}
}
}第二段是创建智能体。注册成功后,到 MCP 管理列表里记下服务 ID(形如 mcp-xxxxxxxx),它要同时出现在 mcp_servers[].name 和 tools[].mcp_server_name 两处。我们只启用两个工具:查能力目录和调能力。everyinfra_call_api 在我们的工具声明里带有 destructiveHint: true,因为它每次调用都可能产生费用,所以默认策略写 always_ask,需要无人值守时再改成 always_allow;百炼文档说明审批只对主智能体生效,子智能体里不支持。
curl -X POST "https://${WORKSPACE_ID}.cn-beijing.maas.aliyuncs.com/api/v1/agentstudio/agents" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "ecommerce-review-analyst",
"description": "比较同一商品在淘宝、京东、闲鱼的价格与评价",
"model": {"id": "qwen3.8-max"},
"system": "你是电商评论员。先用 everyinfra_list_capabilities 确认参数;再依次调用 taobao/search、taobao/reviews(0 条就改调 taobao/questions)、jd/search、jd/product_detail、xianyu/search;最后输出一页结论:三个平台的价格区间和中位数、二手比新品便宜多少、买家最常问的问题、下单前要问卖家的三句话。jd/reviews 暂不可用,不要调用。",
"mcp_servers": [{"type": "customer", "name": "mcp-xxxxxxxx"}],
"tools": [{
"type": "mcp_toolkit",
"mcp_server_name": "mcp-xxxxxxxx",
"default_config": {"enabled": false, "permission_policy": {"type": "always_ask"}},
"configs": [
{"name": "everyinfra_list_capabilities", "enabled": true, "permission_policy": {"type": "always_allow"}},
{"name": "everyinfra_call_api", "enabled": true}
]
}]
}'第三段是开会话时把真实 Key 传进去。mcp_configs 放在 POST /sessions 请求体的顶层,mcp_server_name 也写服务 ID。百炼文档特别提醒了两点:传一个不存在的服务名不会报错,只是运行时不生效;mcp_configs 不会出现在创建会话的响应里,要用 GET /sessions/{id} 才能看到(创建会话)。
curl -X POST "https://${WORKSPACE_ID}.cn-beijing.maas.aliyuncs.com/api/v1/agentstudio/sessions" \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"agent": {"id": "agent_xxx"},
"environment_id": "env_xxx",
"title": "Pocket 3 比价",
"mcp_configs": [{
"mcp_server_name": "mcp-xxxxxxxx",
"headers": {"Authorization": "Bearer <你的 EveryInfra API Key>"}
}]
}'百炼的 Vault 密钥库管的是沙箱里 bash 之类工具发出的请求(密钥库安全注入与出网网关),自定义 MCP 的请求由平台代发、不走它,所以 Key 用注册时的 Header 或上面会话级的 mcp_configs 传。
六、开源 Qwen-Agent 接同一个 MCP:我们跑通的部分
如果你不想用百炼的托管服务,或者想把评论员跑在自己的机器上,开源的 Qwen-Agent 框架可以直接接远程 MCP。它是通义千问团队在 GitHub 上维护的智能体框架(Qwen-Agent 仓库),PyPI 上最新版本是 0.0.34,发布于 2026-02-16(PyPI:qwen-agent)。我们在 Python 3.11 的干净虚拟环境里装了它,用它自带的 MCP 管理器连上 https://api.everyinfra.com/mcp,这部分是真跑的;调用模型写结论的部分需要通义千问的 API Key,本机没有,所以下面配置里的 llm_cfg 和 bot.run 是配置示例。
# pip install "qwen-agent[mcp]==0.0.34" "mcp==1.30.0" numpy soundfile tqdm python-dateutil
import os
from qwen_agent.agents import Assistant
tools = [{
"mcpServers": {
"everyinfra": {
"type": "streamable-http", # 不写 type 时,只给 url 会按 sse 连接
"url": "https://api.everyinfra.com/mcp",
"headers": {"Authorization": "Bearer " + os.environ["EVERYINFRA_API_KEY"]},
}
}
}]
# 下面两段是配置示例:本文没有调用模型
llm_cfg = {"model": "qwen3.8-flash", "model_server": "dashscope",
"api_key": os.environ["DASHSCOPE_API_KEY"]}
bot = Assistant(llm=llm_cfg, function_list=tools,
system_message="你是电商评论员……(与百炼示例里的 system 相同)")
for reply in bot.run(messages=[{"role": "user", "content": "Pocket 3 现在在哪买值?"}]):
pass
print(reply[-1]["content"])这段配置里每一行依赖都是我们踩出来的。第一,只装 qwen-agent[mcp] 时,导入 qwen_agent.agents 依次缺 numpy、soundfile、tqdm 和 python-dateutil,其中 numpy 和 python-dateutil 在它的另一个可选依赖组里,soundfile 和 tqdm 我们没在它的依赖声明里找到。第二,mcp 这个 Python 包在 2026-07-28 发布了 2.0.0,2026-10-02 已经到 2.3.0(PyPI:mcp);2.0 起 streamablehttp_client 改名为 streamable_http_client,迁移指南写明旧名已移除(MCP Python SDK 迁移指南)。Qwen-Agent 0.0.34 还在用旧名,所以装上最新 mcp 后一导入就报 ImportError,GitHub 上 2026-08-25 就有人报了这个问题(issue #949)。我们的解决办法是固定 mcp==1.30.0,之后一切正常。
连上之后能看到 Qwen-Agent 怎样把 MCP 工具交给模型。它把每个工具注册成「服务名-工具名」,所以 everyinfra_call_api 在模型眼里叫 everyinfra-everyinfra_call_api;除了我们的 12 个工具,它还自动加了 everyinfra-list_resources 和 everyinfra-read_resource 两个读资源的工具,一共 14 个。它读工具的参数声明时只保留 type、properties、required 三个键,参数里的说明文字和枚举值都还在,模型照样知道 mode 只能填 sync 或 async。工具清单本身不小:我们的 tools/list 返回 16,634 个字符,按 Qwen-Agent 自带的千问分词器算是 4,211 个 token,模型每一轮都要读一遍。
| 对照项 | 百炼 Managed Agents | 开源 Qwen-Agent 0.0.34 |
|---|---|---|
| 传输类型写法 | streamableHttp 或 sse | streamable-http 或 sse,不写默认 sse |
| 服务从哪来 | 先在控制台注册,拿服务 ID | 直接写 URL |
| 鉴权 | 注册时写 Header,或会话级 mcp_configs | 配置里写 headers |
| 工具名 | 原名,在 configs 里逐个启用 | 「服务名-工具名」,自动全量注册 |
| 审批 | always_ask 可让人确认 | 框架不管,要自己在代码里拦 |
| 运行在哪 | 百炼沙箱,按会话时长收费 | 你自己的机器 |
| 本文状态 | 配置示例,没有运行 | MCP 部分真跑,模型部分是配置示例 |

我们没有让模型自己挑工具,而是直接用 MCP 管理器按顺序发调用,这样每次请求的参数都可复查。这和模型自己调的唯一区别是「谁决定调哪个工具」,请求本身完全一样:都是对 everyinfra_call_api 发一次 tools/call,参数是 {"platform": "xianyu", "action": "search", "params": {"keyword": "大疆 Pocket 3", "limit": 50}} 这样的结构。想先看看有哪些平台和能力,可以打开 MCP 接入说明 和 远程 MCP 配置指南,第一次调用前的准备在 快速开始。
七、真实往返:同一台 Pocket 3 在三个平台
我们选 DJI Osmo Pocket 3 做主案例,原因有三个:它在三个平台都有大量商品;它的新品价格比较统一,方便算二手折价;它的下一代 Pocket 4 已经在 2026-04-16 发布,标准套装 2,999 元、全能套装 3,799 元(大疆 Pocket 4 发布公告),老款二手价格正处在变动中。
2026-11-03 00:20 新加坡时间,taobao/search 搜「大疆 Pocket 3」返回 20 条。我们按标题分了类:14 条只写 Pocket 3 一个型号,5 条同时挂了其他型号(例如把 Pocket 4、Action 系列写在同一个标题里),1 条是二手。只看单一型号的 14 条,中位价 2,399 元,最低 1,508 元,最高 4,823 元,有 7 条正好标 2,399 元。最低和最高的都不能直接当行情:低价那条需要点进去看是不是只卖配件或是官翻,高价的多半是套装。还有一个细节值得记下:这次淘宝搜索只返回了 9 个字段(编号、链接、标题、价格、原价、币种、地区、图片、平台),没有销量和店铺名;另一次加了「只看天猫」的搜索却返回了 14 个字段,含店铺名和包邮,我们不知道这两次为什么不同。所以评论员的提示词里要写一句:字段缺了就说缺了,不要猜。
淘宝的 20 条里有 4 条标题写了「国家补贴」或「国补」。商务部 2026 年的通知里,国家层面的数码产品补贴只列了手机、平板、智能手表(手环)、智能眼镜四类,单价 6,000 元以下、补贴 15%、每件最多 500 元,相机不在其中,通知还要求不得冒用政府补贴名义(商务部 2026 年以旧换新通知)。这不等于这些商品一定有问题,地方可能有自己的补贴,但评论员应该把这一点列进「下单前要问的话」:标题写的补贴是哪一级、哪一项,到手价是多少。
00:20:32 新加坡时间,jd/search 返回 5 条,其中 4 条是 Pocket 3:京东自营旗舰店、两家专卖店都是 2,399 元,另一条全能套装 3,199 元;第 5 条是一家二手店挂的 Pocket 4,1,489 元。京东搜索返回的评价数是页面上的原文,像 50 万、10 万这样的约数,好评率 98% 到 99%,不能拿来做精确比较。00:21:57 新加坡时间,我们用 jd/product_detail 查了自营旗舰店那一条,返回显示缺货,价格被京东遮成了「2??9」,price_masked 为真,有 7 个款式可选,1 年质保,重量 0.35kg。价格被遮罩时目录里的字段说明写得很清楚:不要把显示价当成精确成交价。所以评论员拿京东自营的价格时,应以搜索结果的 2,399 元为准,并注明详情页缺货。
00:22:55 新加坡时间,xianyu/search 通过 MCP 返回 50 条,价格从 1,199 元到 1,900 元,中位数 1,499 元,四分位在 1,388.5 元和 1,607.25 元。和新品常见价 2,399 元比,中位价低 37.5%;和 Pocket 4 标准套装 2,999 元比,正好低一半。50 条里有 31 条是 2026-10-16 以后发布的,说明这批货大多是最近两三周挂出来的;最多人「想要」的一条有 42,000 人想要,它的标题写着「未拆封·未激活|官换全新机」,标价 1,299 元。闲鱼的成色标签是卖家自选的,我们按卡片标签分类,没有标签的看标题里的「未拆封」「官换」等字样,结果见下表。
| 成色 | 条数 | 中位价(元) | 相对新品 2,399 元 |
|---|---|---|---|
| 全新 | 4 | 1,749 | 低 27.1% |
| 未拆封·官换(标题) | 3 | 1,350 | 低 43.7% |
| 几乎全新 | 20 | 1,499.5 | 低 37.5% |
| 细微磕碰划痕 | 8 | 1,549.5 | 低 35.4% |
| 轻微磕碰划痕 | 2 | 1,288 | 低 46.3% |
| 明显磕碰划痕 | 1 | 1,350 | 低 43.7% |
| 未标注 | 12 | 1,449 | 低 39.6% |
这张表最反直觉的是第二行:标着「未拆封·官换」的 3 条,中位价 1,350 元,比标「全新」的 4 条(1,749 元)还低 23%。「官换」一般指售后换回来的机器,这类机器的保修怎么算、能不能激活、有没有随心换服务,正是闲鱼标题里反复出现的话题:50 条里 18 条提到随心换,3 条写了官换,17 条用了验货宝,free_shipping 为真的 26 条。评论员遇到这种低于全新、又写着「未拆封」的商品,结论不应该是「最划算」,而应该是「最需要问清楚」:序列号能不能在大疆官网查到激活日期,随心换是否随机器转让。
评价这一块是本文最大的缺口。00:22:36 新加坡时间起,我们用 taobao/reviews 通过 MCP 前后试了 7 个商品(包括一家天猫店,另有 1 个是后文的 Labubu),7 次全部返回 0 条,返回体写着 empty_result_refunded,没有扣费。0 条不等于「没有差评」,我们这次也不知道这 7 个商品为什么一条都没返回,所以改用 taobao/questions 拿「问大家」:00:25:53 新加坡时间返回 20 条,发布时间从 2026-03-01 到 2026-10-21,最新两条分别是 2026-10-21 的「容易操作吗?」和 2026-10-17 问存储卡要不要自己买。按话题分(一条可以属于几类),画质和拍照 6 条,拍演唱会、装在车上、拍第一视角这类场景 5 条,真伪、是不是授权店、要不要当面激活 5 条,配件和存储 4 条,上手难度 2 条,价格 1 条。
问大家的回答本身也要核对,不能当成事实直接写进结论。这 20 个问题每个只带回了 1 条回答,而 answer_count 显示其中 14 个问题有 2 到 4 条回答,所以评论员看到的只是每个问题的第一条。在这 20 条回答里,至少有三处需要模型拿官方参数核对。第一处,2026-04-19 有人问「自带麦克风吗?」,回答是「麦克风需要自己买」;大疆官网的技术参数页写的是 Pocket 3 有 3 个麦克风(Osmo Pocket 3 技术参数),这位买家说的多半是另配的无线麦克风,不是机身没有麦克风。第二处,2026-10-17 有人问内存卡是不是要自己买,回答「是的」,这一条和官网一致:参数页写明机身无内置存储,要插 microSD 卡,最大支持 1TB。第三处,演唱会这个场景出现了两次,回答相互矛盾:2026-07-08 那条提问下的回答是「还可以,没有想象中效果那么好」,2026-04-11 那条提问下的回答是「不适合」。评论员遇到这种情况,应该写「买家意见不一致」,而不是挑一条当结论。
问大家里还有一条和价格有关的线索:2026-03-04 有人问「你们购买时价格多少」,回答是 2,700 元,而这次淘宝和京东的中位价都是 2,399 元。这只是一个买家的一句话,不能算行情,但它和 Pocket 4 在 2026-04-16 发布的时间对得上,说明老款新品半年里大约降了 300 元。另外,「需要当面激活吗」的回答是「不用」,「是激活发的吗」的回答是「未激活未开封」,这两条和闲鱼标题里反复出现的「未激活」放在一起看,激活状态是这台相机买卖双方最在意的一件事。
| 问题(提问日期) | 买家回答 | 官方参数或其他数据 | 评论员该怎么写 |
|---|---|---|---|
| 自带麦克风吗(2026-04-19) | 要自己买 | 机身有 3 个麦克风 | 回答有误,或指另配的无线麦克风 |
| 内卡要自己买吗(2026-10-17) | 是的 | 无内置存储,microSD 最大 1TB | 回答正确,预算里加一张卡 |
| 适合拍演唱会吗(2026-07-08、2026-04-11) | 「还可以」和「不适合」 | 参数不涉及 | 买家意见不一致 |
| 你们买时多少钱(2026-03-04) | 2,700 元 | 本次中位价 2,399 元 | 只是一个数据点,不算行情 |
把问大家和闲鱼标题放在一起看,买家的担心高度一致:一是真伪和激活,二是存储卡等配件要不要另买,三是能不能满足某个具体场景。这三条就是评论员该替用户问卖家的话。至于京东评价,jd/reviews 在能力目录里目前标为暂不可用,我们 00:20:53 新加坡时间调了一次,返回 503、不扣费、建议 900 秒后重试;所以本文不用京东评价,只在结论里写「京东评价暂缺」。各能力的说明可以在 淘宝评价接口、淘宝问大家接口 和 京东评价接口 页面查看。
八、一页选购结论:评论员应该写成什么样
把上面的数据交给模型之前,我们先自己按提示词写了一遍「标准答案」,用来判断模型写得对不对。下面就是这份结论,所有数字都来自 2026-11-03 00:20 到 00:29 新加坡时间的真调。
买新品。淘宝单一型号 14 条和京东 4 条的中位价都是 2,399 元,京东自营旗舰店显示缺货。新品在两个平台差别不大,选能开票、能走官方保修的店即可;标题写「国补」的,先问清是哪一项补贴和到手价。买二手。闲鱼 50 条中位价 1,499 元,比新品低 37.5%;成色「几乎全新」的 20 条中位价 1,499.5 元,是最主流的选择。标「未拆封·官换」的 3 条中位价 1,350 元,价格最诱人,但要先确认序列号的激活日期和保修。该问卖家的三句话:序列号能否在官网查到激活和保修日期;随心换是否在有效期、能否转让;是否含存储卡和标题里写的配件。数据缺口:淘宝评价这次一条都没拿到,京东评价能力暂停,评价方面只有淘宝问大家 20 条。
对卖家和选品的人,结论换一个角度写。如果你在闲鱼卖 Pocket 3,50 条挂价里有一半落在 1,388.5 元到 1,607.25 元之间,这是买家最常看到的价格带;标价低于 1,388.5 元就进了最便宜的四分之一,买家会更想问清原因;标题里写清序列号可查、附件齐全、能走验货宝,比再降 100 元更有用。如果你在淘宝或京东卖新品,2,399 元已经是大多数店的价格,Pocket 4 标准套装只贵 600 元,老款新品的空间正在被压缩。这类判断是模型最擅长的部分:数字是工具拿来的,怎样把数字翻译成一句建议,才是我们想让 Qwen 做的事。
怎样判断模型写的结论对不对?我们的做法是把上面这份手写结论当成答案,逐条核对模型的输出,而不是让模型给自己打分。核对的点有五个:三个平台的中位价是否分别是 2,399 元、2,399 元和 1,499 元;二手相对新品的折价是否写成 37.5% 左右;淘宝评价为空、京东评价暂停这两处缺口有没有如实写出来,而不是被写成「口碑很好」;标题里的「国补」有没有被提醒核实;成色分类里「未拆封·官换」有没有被单独拿出来提醒。五条里任何一条不对,就回去改提示词,而不是换一个更贵的模型。数字类的错误几乎都来自模型自己算中位数,所以更稳妥的做法是在工具结果回来后,用一小段代码先把价格排好序、算出分位数,再把算好的数交给模型写文字。
九、提示词怎么写:先归类,再下结论
评论员的提示词我们改了三版,最后保留下来的原则只有三条。第一条,先归类、再统计:模型拿到每份结果后,先逐条判断「是不是这个商品、是新品还是二手、是单品还是套装或配件」,再只用通过检查的条目算价格。Pocket 3 的淘宝结果里有 5 条同时挂了别的型号、1 条是二手,如果不先归类,中位价会被拉低。第二条,缺什么就说缺什么:字段为空、结果为空、能力暂停,都要原样写进结论,并说明这会让哪一部分判断变弱;空结果尤其不能被解读成「没有差评」。第三条,只在最后一步写建议:前面几轮只做收集和归类,最后一轮才写给用户看的文字,这样每一轮的输出都很短,模型费也更低。
这三条原则也决定了调用顺序。我们把最便宜、最快的淘宝搜索放在第一个,用它确认商品名和型号写法;把最长的闲鱼搜索放在最后,让它的两万多个 token 只被模型读一遍(这一点在第十一节算账时会看得更清楚);把可能为空的淘宝评价放在问大家之前,空了就顺势改查问大家。顺序一换,同样的六次调用,模型要读的内容可以差出好几万个 token。
十、第二个商品:为什么不能直接相信闲鱼搜索
为了检验这个评论员在别的品类上是否同样可靠,我们在 00:27 到 00:29 新加坡时间换了一个热门潮玩:泡泡玛特 Labubu「前方高能」系列。淘宝搜索返回 20 条,按标题分,12 条是挂件或盲盒,中位价 104.9 元,区间 60.9 元到 268 元;4 条是大娃,4 条是展示盒等配件。京东搜索 5 条:泡泡玛特旗舰店单个盲盒 99 元、整盒 6 个 594 元,三家潮玩买手店分别标 109 元、1,146 元和 2,399 元。京东详情页同样缺货,价格被遮成「9?」。
问题出在闲鱼。我们先搜「labubu 前方高能 三代」,返回 50 条,标题全是股票、炒股类的书和资料,没有一条是 Labubu;换成中文「拉布布 前方高能 盲盒」再搜一次,返回的是同样 50 个商品编号,只是顺序不同,例如「【书籍两册】《量价关系》+《交易之路》」。两次都按正常结果扣了费,各 $0.005556。对评论员的启发是明确的:工具返回了 50 条,不等于返回了 50 条相关结果。提示词里要加一步「先检查标题是否包含商品名,相关条数低于一半就换关键词或告诉用户」,否则模型会一本正经地用 50 本股票书算出 Labubu 的二手中位价。
更实用的结论是:评论员不能只看「调用成功」,还要看「结果对不对」。在 Pocket 3 上,闲鱼 50 条全部相关;在 Labubu 上,50 条全部不相关。同一个工具、同一种调用方式,结果质量可以差这么远,所以相关性检查必须写进流程,而不是指望模型自己发现。淘宝和京东的 Labubu 结果则都正常,可以照常比价:在京东,买手店的单个盲盒 109 元,比旗舰店贵 10 元。
十一、成本:一次比价要花多少钱
先算数据费。EveryInfra 按目录价逐次扣费,taobao/search 每次 $0.0135,xianyu/search 每次 $0.005556,jd/search 每次 $0.002472,jd/product_detail、taobao/reviews、taobao/questions 每次 $0.001389,返回为空的调用自动退款。按本文的流程跑一遍(淘宝评价返回空、改查问大家),数据费是 $0.024306;如果淘宝评价能返回结果,再加 $0.001389,是 $0.025695。具体价格以 价格页 和各能力页为准,例如 淘宝搜索接口、京东搜索接口、京东商品详情接口 和 闲鱼搜索接口。
| 能力 | 每次价格 | 本流程调用次数 | 小计 |
|---|---|---|---|
taobao/search | $0.0135 | 1 | $0.0135 |
taobao/reviews | $0.001389(空结果退款) | 1 | $0 |
taobao/questions | $0.001389 | 1 | $0.001389 |
jd/search | $0.002472 | 1 | $0.002472 |
jd/product_detail | $0.001389 | 1 | $0.001389 |
xianyu/search | $0.005556 | 1 | $0.005556 |
| 合计 | 6 | $0.024306 |
模型费要看结果有多长。我们用 Qwen-Agent 自带的千问分词器数了这次 6 份真实返回:闲鱼 50 条 21,710 个 token,淘宝问大家 4,923 个,淘宝搜索 3,961 个,京东搜索 1,955 个,京东详情 1,831 个,淘宝评价空结果 432 个,合计 34,812 个,闲鱼一项占 62%。这个分词器是开源框架附带的,和百炼计费用的分词器可能有出入,所以下面的模型费是估算。估算的假设写在这里:工具清单 4,211 个 token、系统提示词 500 个、用户问题 100 个,一共 7 轮(6 次调用加 1 次写结论),每轮模型都重读前面所有内容,每次调用模型输出 80 个 token,最后的结论 1,500 个 token,不计缓存。按这个算法,一次比价输入 116,703 个 token、输出 1,980 个 token。
百炼北京地域的 qwen3.8-max 价格是输入 12 元/百万 token、输出 36 元/百万 token,缓存命中 1.5 元,页面更新于 2026-10-10(qwen3.8-max 模型页);qwen3.8-flash 是输入 0.8 元、输出 2.7 元、缓存命中 0.1 元,页面更新于 2026-10-29(qwen3.8-flash 模型页)。按国家外汇管理局公布的 2026-11-02 人民币中间价 1 美元兑 6.7146 元换算(外汇管理局人民币汇率中间价),一次比价用 qwen3.8-max 约 1.4717 元,约合 $0.2192,是数据费的 9.02 倍;用 qwen3.8-flash 约 0.0987 元,约合 $0.0147。百炼国际站新加坡地域的 qwen3.8-max 标价是输入 $2、输出 $6 每百万 token,页面更新于 2026-10-11(qwen3.8-max 国际站),比北京地域的人民币价折算后略贵。
| 场景 | 数据费 | 模型费 | 会话运行时 | 每次合计 | 每天 100 个商品 | 30 天 |
|---|---|---|---|---|---|---|
| qwen3.8-max,百炼托管 | $0.0243 | $0.2192 | $0.0037 | $0.2472 | $24.72 | $741.62 |
| qwen3.8-flash,百炼托管 | $0.0243 | $0.0147 | $0.0037 | $0.0427 | $4.27 | $128.12 |
| 只算数据费 | $0.0243 | — | — | $0.0243 | $2.43 | $72.92 |
表里会话运行时按 0.5 元/小时、每次 3 分钟算,约 0.025 元,约合 $0.0037;百炼内置的 web_search 工具每次 0.03 元,约合 $0.00447,本文的流程没有用它(内置工具)。这张表告诉我们两件事。第一,评论员的主要成本在模型,不在数据:用 qwen3.8-max 时,模型费占每次合计的 89%。第二,省钱的办法不是少调一个能力,而是让模型少读:我们试算过把闲鱼从 50 条减到 20 条,qwen3.8-max 的模型费只从 $0.2192 降到 $0.1959,省了约 11%,因为闲鱼排在最后,长结果只被读一遍;真正有效的是换 qwen3.8-flash 做逐条归类,只把归类后的摘要交给 qwen3.8-max 写结论,或者开启缓存。
十二、做不到的地方
| 问题 | 本文看到的现象 | 建议怎么处理 |
|---|---|---|
| 淘宝评价拿不到 | 7 个商品 7 次都是 0 条,空结果自动退款 | 改用问大家;在结论里注明评价缺失 |
| 京东评价暂停 | jd/reviews 目录标为暂不可用,返回 503 | 结论写「京东评价暂缺」,不要编 |
| 京东价格被遮罩 | 详情页显示「2??9」「9?」,缺货 | 以搜索结果价格为准,注明缺货 |
| 淘宝搜索字段时多时少 | 一次 9 个字段,另一次 14 个 | 提示词要求「缺字段就说缺」 |
| 闲鱼关键词跑偏 | Labubu 两个关键词都返回 50 本股票书 | 先做相关性检查,相关不足一半就换词 |
| 闲鱼成色靠卖家自报 | 「全新」比「未拆封·官换」还贵 | 成色只作参考,序列号和保修要单独问 |
| 百炼没有实跑 | 本机没有百炼账号 | 文中配置均为示例,以你的实测为准 |
| 百炼 MCP 数量上限 | 控制台应用 5 个;Managed Agents 未写 | 多挂之前先在自己的空间试 |
| 分词器差异 | 用开源框架的分词器估算 | 模型费是估算,以百炼账单为准 |
还有两条是这次没有测到、但上线前必须考虑的。一是退货规则:《网络购买商品七日无理由退货暂行办法》约束的是网络商品经营者,闲鱼上个人转卖闲置是否适用,要看卖家身份和平台规则(国家网信办转载的暂行办法),淘宝也有商品标题直接写「拆封不支持 7 天无理由」,评论员的结论里应当提醒。二是并发和限流:我们的测试 Key 每分钟只能调 10 次,京东详情第一次就碰到了 429,等待 7 秒后重试成功;正式用时要么用异步模式,要么在流程里留重试。
异步模式值得多说一句。每次同步调用的返回里都附了一句提示:请求体加上 "mode": "async",就会立刻拿到一个任务编号,之后用 everyinfra_get_job 工具或 GET /api/v1/jobs/{job_id} 取结果。对评论员来说,京东详情一次要 11 到 14 秒、淘宝评价一次要 12 到 20 秒,如果一次要比十几个商品,同步等待会把会话时间拉得很长;在百炼上会话按运行时长收费,等得越久越贵。我们这次只比了两个商品,没有用异步模式,所以这一条是建议,不是实测。
十三、行业动向:近 30 天和 Qwen、MCP 有关的变化
开源一侧变化最大。mcp Python 包 2026-07-28 发布 2.0.0,把 streamablehttp_client 改名为 streamable_http_client,之后一路更新到 2026-10-02 的 2.3.0;Qwen-Agent 的最新版本仍停在 2026-02-16 的 0.0.34。对读者的意义是:今天新装环境的人,不钉版本就会直接碰到 issue #949 的导入错误,第六节那行 pip install 里的 mcp==1.30.0 不能省。
模型一侧,2026-10-29 更新的 qwen3.8-flash 模型页标价输入 0.8 元、输出 2.7 元每百万 token,2026-10-10 更新的 qwen3.8-max 模型页写明上下文 100 万 token、最大输出 131,072 个 token,快照版本是 qwen3.8-max-0902。对评论员的意义有两点:一次比价 116,703 个输入 token 离上下文上限还很远,不需要为了塞进窗口去删闲鱼结果;flash 的价格不到 max 的十分之一,第十一节说的「flash 归类、max 写结论」分工就是按这两个价格算出来的。2026-10-11 更新的国际站页面给新加坡地域的 qwen3.8-max 标的是美元价,在海外开百炼账号的读者可以直接按美元算。
平台规则一侧,2026-10-16 百炼更新了「自定义 MCP 与 Skills」最佳实践,customer 类型、服务 ID、mcp_toolkit 逐个启用这几条都以这一版为准;如果你看到的教程早于这个日期、写的是 custom 或显示名称,按新版改。我们在 2026-11-03 读取的所有页面和真调的数据,在一个月后可能都会变,建议把评论员做成定期运行,而不是一次性的报告。
如果你想把这个评论员扩展到更多平台,可以从 淘宝数据接口、京东数据接口 和 闲鱼数据接口 三个平台页开始看能力清单。用别的智能体框架做类似的事,可以参考我们之前的两篇:用 Agent Skills 做竞品评论分析 和 用 OpenAI Agents API 做评论监控;在魔搭上接 MCP 的写法见 魔搭 MCP 接小红书和抖音。
常见问题
Qwen Agent MCP 怎么连远程 MCP 服务器?
在 Qwen-Agent 的 function_list 里放一个 mcpServers 配置,远程服务要写 "type": "streamable-http" 和 url,鉴权放在 headers 里;不写 type 时,框架会按 sse 去连。连上后工具名会变成「服务名-工具名」。百炼 Managed Agents 则要先在控制台注册,传输类型写 streamableHttp。问题来源:搜索引擎联想词「qwen agent mcp server」「qwen agent 调用 mcp」(2026-11-03 查询);依据:Qwen-Agent 仓库、自定义 MCP 与 Skills。
装好 Qwen-Agent 后报 ImportError: streamablehttp_client 怎么办?
这是 mcp 包 2.0 起把 streamablehttp_client 改名为 streamable_http_client 造成的,Qwen-Agent 0.0.34 还在用旧名。把 mcp 固定在 2.0 以前即可,本文用 mcp==1.30.0 跑通。问题来源:GitHub issue #949(2026-08-25);依据:MCP Python SDK 迁移指南。
百炼 MCP 广场是不是下线了?
没有整体下线。2026-06-30 起下线的是 7 个具体服务,2026-04-01 下线的是企百科 4 个旧版服务,其余服务照常可用,自己注册的自定义 MCP 不受影响。问题来源:搜索引擎联想词「百炼mcp广场」(2026-11-03 查询);依据:公告 117858、公告 118111。
百炼的一个智能体最多能挂几个 MCP 服务?
控制台「智能体应用」的文档写明最多同时添加 5 个;Managed Agents 的创建接口只写了 mcp_toolkit 可以多项,没有写上限;社区文章里的 10 个不是帮助中心原文。问题来源:帮助中心与阿里云开发者社区文章的说法不一致(2026-11-03 核对);依据:官方 MCP 服务、创建智能体。
Qwen Agent API 和开源 Qwen-Agent 是一回事吗?
不是。百炼的 Agent API(Managed Agents)是托管服务,智能体在百炼的沙箱里跑,按会话时长和模型用量收费,地域目前只有 cn-beijing;开源 Qwen-Agent 是一个 Python 框架,跑在你自己的机器上,只付模型 API 的钱。两者都能接 MCP,但写法不同。问题来源:搜索引擎联想词「qwen agent api」(2026-11-03 查询);依据:百炼 API 总览、PyPI:qwen-agent。
参考资料
- Managed Agents 进阶:自定义 MCP 与 Skills(阿里云帮助中心,2026-10-16 更新)
- 创建智能体 API:POST /agents(阿里云帮助中心)
- Managed Agents MCP(阿里云帮助中心)
- 定义智能体:可选模型与运行模式(阿里云帮助中心)
- Managed Agents API 总览与认证(阿里云帮助中心)
- 智能体 API:接口列表与版本机制(阿里云帮助中心)
- 自定义 MCP(阿里云帮助中心)
- 官方 MCP 服务:智能体应用最多 5 个 MCP 服务(阿里云帮助中心)
- 创建会话:mcp_configs(阿里云帮助中心)
- Managed Agents 内置工具与审批策略(阿里云帮助中心)
- 密钥库安全注入与出网网关(阿里云帮助中心)
- Managed Agents 生产化(阿里云帮助中心)
- Managed Agents 多智能体(阿里云帮助中心)
- Managed Agents 技能(阿里云帮助中心)
- qwen3.8-max 模型页(阿里云帮助中心,2026-10-10 更新)
- qwen3.8-flash 模型页(阿里云帮助中心,2026-10-29 更新)
- 百炼模型价格(阿里云帮助中心)
- 百炼新人免费额度(阿里云帮助中心)
- 函数计算 MCP 服务(阿里云帮助中心)
- OpenAPI MCP Server 用户指南(阿里云帮助中心)
- 什么是百炼(阿里云帮助中心)
- 百炼模型列表(阿里云帮助中心)
- 阿里云公告 117858:MCP 广场下线 7 个服务(2026-01-05)
- 阿里云公告 118111:企百科旧版服务下线(2026-03-26)
- 阿里云公告 118456:Managed Agents 商业化(2026-07-16)
- qwen3.8-max 国际站模型页(2026-10-11 更新)
- QwenLM/Qwen-Agent(GitHub)
- Qwen-Agent issue #949:streamablehttp_client 导入错误(GitHub,2026-08-25)
- qwen-agent(PyPI,0.0.34,2026-02-16)
- mcp(PyPI,2.3.0,2026-10-02)
- MCP Python SDK 迁移指南
- MCP 规范 2025-06-18:传输方式
- MCP 规范 2025-06-18:工具
- MCP 规范 2025-06-18:生命周期
- EveryInfra 远程 MCP 端点
- EveryInfra 能力目录(免费,含 price_usd)
- 国家外汇管理局:人民币汇率中间价(2026-11-02)
- 商务部:2026 年消费品以旧换新相关通知
- 网络购买商品七日无理由退货暂行办法(国家网信办转载)
- 大疆 Osmo Pocket 4 发布公告(2026-04-16)
- 大疆 Osmo Pocket 3 发布公告
- Osmo Pocket 3 技术参数(大疆官网)
引用编号 BL-74