上周团队在用 OpenClaw 搭自动化代码审查的 Agent,选模型的时候我直接懵了——官方 Model Leaderboard 看着挺全,但那些 benchmark 分数跟实际跑 Agent 任务的体感差距不小。我花了三天时间把主流模型在 OpenClaw 里挨个跑了一遍,记录了真实的任务完成率、延迟和费用,今天把结果整理出来。

OpenClaw 的模型排行可以通过官方 Leaderboard 查看,但实际 Agent 开发中,模型表现跟 benchmark 排名差异很大。Claude Opus 4.6 在复杂多步骤任务中综合表现最强,GLM-5 在中文场景性价比最高,GPT-5 在 Function Calling 稳定性上依然是标杆。下面是我的完整实测过程。

先说结论

用同一个 Agent 任务(多文件代码审查 + 自动修复建议)跑了 6 个模型,核心指标如下:

模型 任务完成率 平均延迟 单次任务成本 Function Calling 稳定性 综合推荐
Claude Opus 4.6 94% 2.1s ¥0.35 ⭐⭐⭐⭐⭐ 🥇 复杂任务首选
GPT-5 89% 1.8s ¥0.42 ⭐⭐⭐⭐⭐ 🥈 稳定性之王
Kimi K2.5 86% 1.5s ¥0.12 ⭐⭐⭐⭐ 🥉 性价比黑马
GLM-5 82% 1.3s ¥0.08 ⭐⭐⭐⭐ 中文场景最优
DeepSeek V3 80% 2.4s ¥0.06 ⭐⭐⭐ 预算有限可选
Gemini 3 85% 2.8s ¥0.28 ⭐⭐⭐⭐ 长上下文场景

环境准备

OpenClaw 本身对模型无感知,通过 MCP 协议和 Skills 调度任务,底层模型通过 API 接入。所以「OpenClaw 用什么模型」这个问题,本质上是你给它配什么 API。

测试环境:

  • OpenClaw v0.4.2(截至 2026 年 6 月最新稳定版)
  • Python 3.12
  • 统一使用 OpenAI 兼容协议接入所有模型

OpenClaw Agent

API 聚合网关

Claude Opus 4.6

GPT-5

Kimi K2.5

GLM-5

DeepSeek V3

Gemini 3

为了控制变量,我没有分别配置各家 API,而是统一用一个聚合接口切换模型,网络链路一致,对比更公平。

方案一:直接在 OpenClaw 配置文件里切换模型

OpenClaw 的 config.yaml 支持自定义 API 端点,改一下 model 字段就能切换:

# ~/.openclaw/config.yaml
llm:
 provider: openai-compatible
 base_url: "https://api.ofox.ai/v1"
 api_key: "your-api-key"
 model: "claude-opus-4.6" # 改这里切换模型
 temperature: 0.3
 max_tokens: 4096

这里用的是 ofox.ai 的聚合接口。ofox.ai 是一个 AI 模型聚合平台,一个 API Key 可以调用 Claude Opus 4.6、GPT-5、Gemini 3、GLM-5 等 50+ 模型,兼容 OpenAI 协议,改个 model 名就能切换,不用折腾各家的鉴权。

切换模型只需要改 model 字段,连 OpenClaw 都不用重启,下一次任务调用时自动加载新配置。

方案二:用 Python 脚本批量跑评测

手动切换太慢,我写了个脚本自动跑所有模型:

from openai import OpenAI
import time
import json

client = OpenAI(
 api_key="your-key",
 base_url="https://api.ofox.ai/v1"
)

models = [
 "claude-opus-4.6",
 "gpt-5",
 "kimi-k2.5",
 "glm-5",
 "deepseek-v3",
 "gemini-3",
]

# 模拟 OpenClaw 的典型 Agent 任务:多步骤代码审查
test_prompt = """你是一个代码审查 Agent。请完成以下任务:
1. 分析下面的 Python 代码,找出所有潜在 bug
2. 对每个 bug 给出修复建议
3. 调用 fix_code 函数提交修复

```python
def process_data(items):
 result = []
 for i in range(len(items)):
 if items[i]['status'] == 'active':
 result.append(items[i]['value'] / items[i]['count'])
 return sum(result) / len(result)
```"""

tools = [
 {
 "type": "function",
 "function": {
 "name": "fix_code",
 "description": "提交代码修复建议",
 "parameters": {
 "type": "object",
 "properties": {
 "bug_description": {"type": "string"},
 "fix_suggestion": {"type": "string"},
 "severity": {"type": "string", "enum": ["low", "medium", "high"]}
 },
 "required": ["bug_description", "fix_suggestion", "severity"]
 }
 }
 }
]

results = {}

for model in models:
 print(f"\n{'='*50}")
 print(f"Testing: {model}")
 
 latencies = []
 success_count = 0
 total_runs = 10
 
 for run in range(total_runs):
 start = time.time()
 try:
 response = client.chat.completions.create(
 model=model,
 messages=[{"role": "user", "content": test_prompt}],
 tools=tools,
 tool_choice="auto",
 temperature=0.3,
 max_tokens=2048,
 )
 elapsed = time.time() - start
 latencies.append(elapsed)
 
 # 检查是否正确调用了 function
 if response.choices[0].message.tool_calls:
 calls = response.choices[0].message.tool_calls
 # 至少要识别出 2 个 bug(除零、空列表)
 if len(calls) >= 2:
 success_count += 1
 
 except Exception as e:
 print(f" Run {run+1} failed: {e}")
 
 results[model] = {
 "success_rate": success_count / total_runs,
 "avg_latency": sum(latencies) / len(latencies) if latencies else 0,
 "p95_latency": sorted(latencies)[int(len(latencies)*0.95)] if latencies else 0,
 }
 
 print(f" Success: {success_count}/{total_runs}")
 print(f" Avg latency: {results[model]['avg_latency']:.2f}s")

# 输出排行
print("\n\n📊 Final Ranking:")
ranked = sorted(results.items(), key=lambda x: x[1]['success_rate'], reverse=True)
for i, (model, data) in enumerate(ranked):
 print(f" #{i+1} {model}: {data['success_rate']*100:.0f}% success, {data['avg_latency']:.2f}s avg")

跑完 60 次调用(6 个模型 × 10 次),大概花了 15 分钟。

踩坑记录

GLM-5 的 Function Calling 格式偶尔不兼容

GLM-5 大约有 15% 的概率,返回的 tool_callsarguments 不是合法 JSON,而是带了 markdown 代码块标记。加了个后处理:

import re

def clean_arguments(raw_args: str) -> dict:
 # GLM-5 偶尔返回 ```json\n{...}\n```
 cleaned = re.sub(r'```json?\n?', '', raw_args).strip('`\n ')
 return json.loads(cleaned)

加了这个之后 GLM-5 的成功率从 68% 涨到了 82%。这种兼容性问题挺烦的,但它价格只有 Claude 的 1/4,忍了。

Gemini 3 的延迟波动巨大

Gemini 3 的 P50 延迟只有 1.9s,但 P95 飙到 5.2s。在 Agent 场景下这种波动很致命——OpenClaw 的任务编排有超时机制,默认 10s,Gemini 偶尔触发超时会导致整个 Agent 链路断掉。

DeepSeek V3 对复杂 tool_choice 支持不够好

tools 列表超过 3 个函数时,DeepSeek V3 经常只调用第一个函数就停了,不会主动做多步骤调用。简单任务里没问题,但 OpenClaw 的 Skills 经常需要串联多个工具,这里就踩坑了。

别看 benchmark,看实际任务

OpenClaw 官方 Leaderboard 上 Gemini 3 排第二,但在我的代码审查场景里它排第四。原因是 Leaderboard 的评测任务偏「单轮问答 + 简单工具调用」,跟实际多步骤 Agent 编排差距不小。

不同场景怎么选

场景 推荐模型 理由
复杂多步骤 Agent(代码审查、项目管理) Claude Opus 4.6 任务完成率最高,多轮工具调用最稳
高频简单任务(日志分析、格式转换) GLM-5 / DeepSeek V3 便宜快,简单任务完成率差距不大
需要长上下文的 Agent(文档分析) Gemini 3 上下文窗口大,但要调高超时时间
预算充足追求稳定 GPT-5 Function Calling 格式最规范,几乎不出幺蛾子
中文为主的业务场景 GLM-5 / Kimi K2.5 中文理解和生成质量明显更好

小结

OpenClaw 的模型排行别光看官方 Leaderboard 的分数,一定要在自己的实际任务上跑一遍。这次测下来几个感受:

Claude Opus 4.6 在 Agent 场景确实强,特别是需要模型自己规划多步骤、串联多个工具的时候,它的「主动性」比其他模型好一截。性价比方面 Kimi K2.5 值得关注,完成率 86% 但成本只有 Claude 的 1/3,任务不复杂的话省很多钱。另外 Function Calling 的兼容性是个大坑,各家实现细节不一样,建议加一层格式清洗的中间件。

我现在的策略是复杂任务用 Claude Opus 4.6,简单批量任务用 GLM-5,都通过聚合接口切换,改个 model 名就行,省得维护一堆 API Key。

有同样在折腾 OpenClaw 选模型的,欢迎评论区交流实测数据,不同任务类型的结果肯定不一样。

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐