跑 AI Agent 最大的开销是模型调用费。Qwen 3.5 9B 在 sub-$0.20 价位的 benchmark 排第一,比主流模型便宜 30-150 倍。我把 OpenClaw 的主力模型换成它跑了 7 天,记录哪些任务它能扛住、哪些扛不住。
什么是 Qwen 3.5 9B
Qwen 3.5 9B 是通义千问 3.5 系列里最小的版本,90 亿参数。API 价格 0.30/MTok 输出——对比一下 DeepSeek V4 的 1.20,或者 Claude Sonnet 的 15。便宜了 30 到 150 倍。
但 benchmark 数据很有意思:在多个评测里,Qwen 3.5 9B 在 sub-$0.20 价位段排第一,部分指标接近去年的旗舰模型。
问题来了:benchmark 分数高不代表能跑 Agent。Agent 场景对模型的要求和做题不一样——要理解多轮上下文、正确选工具、处理模糊指令。9B 参数的小模型能撑住吗?
实验设计
我把 OpenClaw 的日常助手 Agent 的主力模型从 DeepSeek V4 切到 Qwen 3.5 9B,跑了 7 天。
from openai import OpenAI
# 通过 API 网关调用,切模型只改一个字符串
client = OpenAI(
base_url="https://api.therouter.ai/v1",
api_key="your-key"
)
response = client.chat.completions.create(
model="qwen/qwen3.5-9b",
messages=messages,
tools=tool_definitions,
)
环境
| 项目 | 配置 |
|---|---|
| Agent | OpenClaw 日常助手,接飞书 + Discord |
| 工具数量 | 8 个(在之前测出的 12 个安全线以内) |
| 日均消息 | ~180 条 |
| 降级链 | Qwen 3.5 9B → DeepSeek V4 → Claude Sonnet |
| 记录方式 | 每条消息标注:成功/需修正/失败 |
降级链兜底——如果 Qwen 3.5 9B 连续失败 3 次,熔断器自动切 DeepSeek V4。
任务分类
根据之前的运行经验,日常消息大致分 6 类:
| 类别 | 占比 | 典型任务 |
|---|---|---|
| 简单问答 | 35% | "今天天气?" "帮我算一下 XX" |
| 文本处理 | 20% | 翻译、摘要、改写 |
| 工具调用(简单) | 18% | 查数据库、搜索网页 |
| 工具调用(多步) | 12% | 先搜索→分析→生成报告 |
| 代码相关 | 10% | 写函数、review 代码、解释报错 |
| 复杂推理 | 5% | 架构决策、多因素分析 |
7 天实测结果
总消息量:1,247 条。逐条标注后的数据:
| 任务类别 | 消息数 | 成功率 | 需修正 | 失败 |
|---|---|---|---|---|
| 简单问答 | 437 | 97.3% | 2.1% | 0.6% |
| 文本处理 | 249 | 94.0% | 4.8% | 1.2% |
| 工具调用(简单) | 225 | 89.3% | 7.6% | 3.1% |
| 工具调用(多步) | 150 | 71.3% | 18.0% | 10.7% |
| 代码相关 | 125 | 76.0% | 16.0% | 8.0% |
| 复杂推理 | 61 | 52.5% | 24.6% | 22.9% |
| 总计 | 1,247 | 87.1% | 8.4% | 4.5% |
关键发现
发现 1:73% 的任务(简单问答 + 文本处理 + 简单工具调用),Qwen 3.5 9B 的成功率超过 89%。 这些任务占了日常消息的绝大多数。用 $0.10/MTok 的模型处理,完全够用。
发现 2:复杂推理几乎腰斩。 成功率只有 52.5%,接近一半的时候给出的答案有明显问题。典型失败案例:让它分析"这个 API 设计方案的三个潜在问题",它能找到 1 个,另外 2 个要么遗漏要么不靠谱。
发现 3:多步工具调用是分水岭。 单步工具调用("查一下 XX")成功率 89.3%,和大模型差距不大。但多步工具调用("先查 XX,然后基于结果做 YY")成功率掉到 71.3%。小模型在跨步骤保持逻辑连贯性上确实弱。
和 DeepSeek V4 的对比
同期我保留了 DeepSeek V4 的日志(降级时触发的 + 之前的历史数据),可以做直接对比:
| 任务类别 | Qwen 3.5 9B | DeepSeek V4 | 差距 |
|---|---|---|---|
| 简单问答 | 97.3% | 98.1% | -0.8pp |
| 文本处理 | 94.0% | 96.2% | -2.2pp |
| 简单工具调用 | 89.3% | 94.7% | -5.4pp |
| 多步工具调用 | 71.3% | 86.0% | -14.7pp |
| 代码相关 | 76.0% | 88.5% | -12.5pp |
| 复杂推理 | 52.5% | 79.0% | -26.5pp |
规律很清晰:任务越简单,差距越小。任务越复杂,差距呈指数扩大。
简单问答只差 0.8 个百分点——几乎无感。复杂推理差了 26.5 个百分点——不可接受。
成本对比
这才是最有意思的部分。
| 指标 | 纯 DeepSeek V4 | 纯 Qwen 3.5 9B | 混合路由 |
|---|---|---|---|
| 7 天总消息 | 1,247 | 1,247 | 1,247 |
| 总 token | ~2.1M | ~2.1M | ~2.1M |
| 7 天费用 | $3.15 | $0.31 | $0.89 |
| 月度估算 | $13.50 | $1.33 | $3.81 |
| 总成功率 | 93.2% | 87.1% | 91.8% |
纯 Qwen 3.5 9B 比纯 DeepSeek V4 便宜 90%,但成功率低了 6 个百分点。
最佳方案是混合路由——简单任务走 Qwen 3.5 9B,复杂任务走 DeepSeek V4:
def route_by_complexity(message, tools_needed):
"""根据任务复杂度选择模型"""
# 复杂任务 → 大模型
if tools_needed > 1: # 多步工具调用
return "deepseek/deepseek-v4"
if needs_reasoning(message): # 分析/推理/架构
return "deepseek/deepseek-v4"
if is_code_task(message): # 代码 review/生成
return "deepseek/deepseek-v4"
# 简单任务 → 小模型
return "qwen/qwen3.5-9b"
def needs_reasoning(message):
"""简单的复杂度判断"""
reasoning_signals = ["分析", "为什么", "比较", "优缺点", "方案", "设计", "架构"]
return any(s in message for s in reasoning_signals)
def is_code_task(message):
code_signals = ["代码", "函数", "bug", "报错", "review", "实现"]
return any(s in message for s in code_signals)
混合路由的结果:月费 $3.81(比纯大模型省 72%),成功率 91.8%(只比纯大模型低 1.4 个百分点)。
用 28% 的成本获得 98.5% 的质量。
小模型翻车的三种典型模式
翻了 7 天的失败日志,Qwen 3.5 9B 的失败案例可以归为三类:
模式一:工具参数构造错误(占失败的 41%)
小模型理解了要调哪个工具,但构造的参数有问题。
用户: "帮我查一下上周新注册的用户"
期望 SQL: SELECT * FROM users WHERE created_at > datetime('now', '-7 days')
实际生成: SELECT * FROM users WHERE created_at > '上周'
它理解了意图,但没有正确把"上周"转换成 SQL 的时间函数。大模型在这种类型转换上更稳。
模式二:多步骤逻辑断裂(占失败的 35%)
第一步做对了,第二步开始偏:
用户: "搜一下最新的 MCP 安全漏洞,然后总结出前 3 个最严重的"
第一步: 搜索成功,返回了 5 条相关结果 ✓
第二步: 只总结了 1 条,剩下 2 条瞎编的 ✗
小模型处理完第一步之后,上下文已经很长了(搜索结果塞进来),第二步的注意力被稀释。
模式三:指令理解偏差(占失败的 24%)
对复杂或模糊的指令理解出错:
用户: "把这段英文改成更地道的中文,不要翻译腔"
Qwen 3.5 9B: 直接翻译了一遍,翻译腔很重
DeepSeek V4: 重写成了口语化的中文表述
"更地道"和"不要翻译腔"是需要理解语言风格的指令,小模型对这种细粒度的要求把握不够。
实战建议:什么时候用小模型
| 场景 | 推荐模型 | 原因 |
|---|---|---|
| 闲聊、查天气、算术 | Qwen 3.5 9B | 大材小用没意义 |
| 翻译短文本 | Qwen 3.5 9B | 精度够用,成本低 30x |
| 单步工具调用 | Qwen 3.5 9B | 89% 成功率,可接受 |
| 多步工具链 | DeepSeek V4+ | 小模型跨步骤容易断 |
| 代码生成/review | DeepSeek V4+ | 代码质量差距明显 |
| 架构分析/推理 | Opus 4.7 | 只有旗舰模型靠谱 |
核心原则:用最小够用的模型完成任务。 73% 的日常 Agent 任务用 9B 参数的小模型就够了。剩下 27% 的复杂任务再调大模型。
通过 API 网关做自动路由,代码里不用 if-else 判断:在网关后台配置规则,按任务特征(关键词、工具数量、上下文长度)自动分流到不同模型。一个 Key 搞定。
常见问题
Q: Qwen 3.5 9B 和 Qwen 3.5 Plus(397B)差距有多大? A: 简单任务差距 2-3%,可以忽略。复杂推理差距 20-25%——参数量差了 44 倍,复杂场景差距确实大。日常 Agent 场景建议 9B 兜底、需要时升级到 Plus。
Q: 小模型跑 Agent 最大的坑是什么? A: 多步工具调用。小模型单步没问题,但跨步骤保持逻辑连贯性差。建议把多步任务拆成多个单步,或者多步任务直接路由到大模型。
Q: 混合路由会不会增加延迟? A: 路由判断本身 <1ms,忽略不计。但小模型的推理速度反而更快(参数少),所以混合路由的平均延迟通常比纯大模型更低。实测 Qwen 3.5 9B 平均响应 0.8s,DeepSeek V4 是 2.1s。
TheRouter — 多模型 API 网关,一个 Key 调 30+ 模型。内置按任务复杂度自动路由,73% 的请求走最便宜的模型,月费省 72%。