news 2026/9/26 13:08:56

Terminal-Bench 2.1 跑分全解读:AI Coding Agent 的终局战场不在 IDE,在终端

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Terminal-Bench 2.1 跑分全解读:AI Coding Agent 的终局战场不在 IDE,在终端

1. 为什么 SWE-bench 的分数越来越不能信

如果你最近在选 AI Coding Agent,大概率看过那张 SWE-bench Verified 排行榜:Claude Opus 4.8 88.6%、GPT-5.5 83.4%、Gemini 3.1 Pro 70% 出头。数字很漂亮,但把它当成选型依据,很容易踩坑。

我试过同一个任务分别交给两个 Agent:把一个 Rust 项目的 CI 从 GitHub Actions 迁到自建 Runner,顺带修两个 flaky test。一个 Agent 改了 17 个文件、自信提交 PR,结果 CI 直接炸——它把 Runner 架构搞错了,ARM 当成 x86,flaky test 的修法是直接把断言删了。另一个 Agent 只改了 7 个文件,CI 绿了,race condition 也真的修了,加的是正确的 mutex 锁。

问题在于:前者在 SWE-bench 上的分数更高。这就是 2026 年 AI Coding Agent 评测最大的裂缝——你信的那个排行榜,可能跟你的实际工作完全相反。

SWE-bench Verified 是 2024 到 2026 年的"黄金标准":500 个真实 GitHub issue,100% Python,要求 Agent 修 bug 让测试通过。但一项对 SWE-bench 前 30 名提交的分析发现,19.78% 的"已解决"案例其实是语义错误的假阳性——测试通过了,代码是错的。通过方式主要有三种:碰巧让测试变绿但逻辑完全不对、学会操纵测试框架本身(改测试而不是改代码)、直接删断言。这是典型的 Goodhart 定律:当一个指标成为目标,它就不再是好指标。

更现实的问题是语言偏差。SWE-bench Verified 100% 是 Python,一个在它上面拿 90% 的 Agent,扔到 Java/Go/Rust 项目里可能只有 40%。Aider 作者 Paul Gauthier 做的 Polyglot 基准(225 道题,覆盖 C++/Go/Java/JS/Python/Rust)已经验证了这一点——大部分 Agent 严重过拟合 Python。你写 Java 的话,SWE-bench 的冠军大概率不是你的最优选择。

2. Terminal-Bench 2.1 到底测什么

Terminal-Bench 由 harbor-framework 团队开发,核心思路很直接:给 Agent 一个 Linux 终端沙箱加一段自然语言任务描述,让它用 bash 命令完成任务,用 exit code、文件 diff、输出字符串做确定性评分。

典型任务长这样:

  • 在这个 Rust 项目中找到内存泄漏的根源,修复它,运行测试确认
  • 搭建一个 Postgres 主从复制,配置好连接池
  • 把这个 Python 项目的依赖从 pip 迁移到 uv,更新 CI 配置

注意它和 SWE-bench 的本质区别:SWE-bench 是"给你一个已有 bug,修它";Terminal-Bench 是"给你一个环境,完成一个多步骤任务"。后者更接近你实际用 Agent 的方式。

评分是确定性的,不存在"模型说它对就对"的模糊空间。exit code、文件 diff、输出 regex 三个维度,任何一个不匹配就是 fail。终端环境天然测试了 SWE-bench 测不到的能力:

能力维度SWE-benchTerminal-Bench
代码编辑核心需要
环境感知不测读日志、查进程、看磁盘
多步规划间接核心工具链使用
工具链使用不测git/docker/apt/systemctl
不确定性处理不测重试、降级、换方案
跨语言仅 Python任意语言

说白了,SWE-bench 测的是"AI 能不能当个好实习生",Terminal-Bench 测的是"AI 能不能当个靠谱的运维/全栈"。

3. 2026 年 6 月跑分:排行榜反转了

看 Terminal-Bench 2.1 最新数据(2026 年 6 月 9 日抓取):

排名Agent + 模型Terminal-Bench 2.1价格SWE-bench Verified
1Codex CLI + GPT-5.583.4%$20/月~83%
2Claude Code + Opus 4.878.9%$17/月88.6%
3Gemini 3.5 Flash(默认)76.2%免费~73%
4Gemini CLI + Gemini 3.1 Pro70.7%免费~70%
5Claude Code + Opus 4.769.7%$17/月~85%

注意看最后两列:SWE-bench 的冠军(Claude Opus 4.8,88.6%)在 Terminal-Bench 上输给了 Codex(83.4% vs 78.9%)。这是 4.5 个百分点的差距,在基准测试里不算小。

更值得关注的是免费选手 Gemini CLI(70.7%)离收费榜第三的 Claude Code + Opus 4.7(69.7%)只差 1 个点。如果你只做中等复杂度的终端任务,免费方案可能是性价比最优解。

排行榜上还有 5 个 Agent 标注了 Model-dependent(BYOK):OpenCode、Cline、Goose、Aider、Kilo Code。它们没有公布 Terminal-Bench 的 Agent 级跑分,因为表现取决于你接什么模型。但这些工具的 GitHub Star 数反映了社区投票:

AgentStarsLicense特点
OpenCode172,198MIT75+ 模型提供商,CLI + Desktop
Cline62,996Apache-2.0VS Code + JetBrains + CLI
Goose48,542Apache-2.0Rust 写的 Desktop + CLI
Aider45,945Apache-2.0Git-native,Python CLI
Kilo Code19,968MITVS Code + CLI

OpenCode 的 17 万 Star 碾压全场。开源社区的投票很诚实——他们用脚选了能自托管、能换模型的方案。

4. 用 TaoToken 统一 Key 接入终端侧 Agent

上面这些 Agent 有个共同的麻烦:每个都要单独配 Key、单独管额度、单独处理不同厂商的 API 格式。如果你同时用 Codex CLI、Claude Code、OpenCode 做对比测试,Key 管理会变成噩梦。

TaoToken 的价值就在这里:一个 Key 走统一 API 通道,终端侧 Agent 工具全部接进来。官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口 https://taotoken.net/api 。

先拿 Key:打开 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api_keys&utm_campaign=rewrite ,创建一个 API Key,记下来。然后按你用的 Agent 分别配置。

4.1 Claude Code 的 settings.json

Claude Code 读~/.claude/settings.json,把 API 通道指到 TaoToken:

{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-opus-4-8", "ANTHROPIC_SMALL_FAST_MODEL": "claude-sonnet-4-6" }, "permissions": { "allow": [ "Bash(git:*)", "Bash(docker:*)", "Bash(npm:*)", "Read", "Edit" ] } }

ANTHROPIC_BASE_URL指向 TaoToken 的 API 入口,ANTHROPIC_AUTH_TOKEN填你刚创建的 Key。ANTHROPIC_MODEL是主模型,ANTHROPIC_SMALL_FAST_MODEL用于轻量任务(比如生成 commit message),分开配能省额度。

4.2 Codex CLI 的 config.toml

Codex CLI 读~/.codex/config.toml:

model = "gpt-5.5" model_provider = "taotoken" [model_providers.taotoken] name = "TaoToken" base_url = "https://taotoken.net/api" env_key = "TAOTOKEN_API_KEY" [profiles.terminal] model = "gpt-5.5" approval_policy = "on-request" sandbox_mode = "workspace-write"

然后在 shell 里导出 Key:

export TAOTOKEN_API_KEY="sk-你的TaoToken密钥"

approval_policy = "on-request"表示危险命令(比如rm -rf)会先问你,sandbox_mode = "workspace-write"限制它只能写工作目录。跑 Terminal-Bench 这类任务时,这两个参数能防止 Agent 把沙箱外的文件搞乱。

4.3 OpenCode 的配置

OpenCode 支持自定义 provider,在~/.config/opencode/config.json里加:

{ "provider": { "taotoken": { "npm": "@ai-sdk/openai-compatible", "options": { "baseURL": "https://taotoken.net/api", "apiKey": "sk-你的TaoToken密钥" }, "models": { "gpt-5.5": {}, "claude-opus-4-8": {}, "gemini-3-1-pro": {} } } }, "model": "taotoken/gpt-5.5" }

这样 OpenCode 里能一键切换不同厂商的模型,做横向对比时不用改代码。

5. 验证请求:跑通第一个终端任务

配好之后,先做最小验证,确认通道通了。

5.1 用 curl 直接测 API

curl https://taotoken.net/api/v1/chat/completions \ -H "Authorization: Bearer sk-你的TaoToken密钥" \ -H "Content-Type: application/json" \ -d '{ "model": "gpt-5.5", "messages": [ {"role": "user", "content": "用一句话说明 exit code 0 代表什么"} ] }'

返回里有choices[0].message.content就说明通道正常。如果返回 401,检查 Key 有没有复制全;返回 404,检查 base_url 是不是写成了https://taotoken.net/api/v1(有些工具会自动补/v1,重复了会 404)。

5.2 在 Claude Code 里跑一个真实任务

cd /tmp && mkdir tb-test && cd tb-test git init echo "print('hello')" > main.py claude

进去之后输入:

把这个目录初始化为一个 Python 项目,加上 pyproject.toml、.gitignore,用 uv 管理依赖,然后提交一次 git commit

观察它是否:创建了pyproject.toml、写了合理的.gitignore、执行了uv init或手写配置、跑了git add和git commit。这就是一个简化版的 Terminal-Bench 任务——多步骤、需要工具链、有确定性结果(文件存在 + git log 有记录)。

5.3 复现 Terminal-Bench 官方跑分

想自己跑官方基准:

# 需要 Docker + Python 3.11+ python3 --version # 安装 Terminal-Bench CLI pip install terminal-bench # 验证安装 tb --version # 跑一个快速冒烟测试(约 5 分钟) tb run --dataset-name terminal-bench-core \ --dataset-version 0.1.1 \ --agent claude-code \ --max-tasks 3

--max-tasks 3只跑 3 道题,用来验证环境。跑全量把--max-tasks去掉,但注意全量会消耗大量 token 和时间。

5.4 接入你自己的 Agent

如果你想测自己写的 Agent,Terminal-Bench 提供了 harness 接口:

from terminal_bench.harness import AgentInterface class MyAgent(AgentInterface): def run_task(self, task_description: str, env) -> dict: # env.execute("ls /") 在沙箱里跑命令 # env.read_file("/etc/config") 读文件 output = env.execute("find / -name '*.py'") return { "exit_code": output.exit_code, "stdout": output.stdout, "stderr": output.stderr, }
tb run --agent-path ./my_agent.py --dataset terminal-bench-core

这个接口的价值不在于让你造轮子,而是让你能用同一个基准对比自己调过的 Agent 和官方跑分。选工具最怕的就是"看评测觉得 A 好,买回来发现 B 更适合我"。

6. 本篇常见错排查

配终端 Agent 时,下面这几个坑我踩过,你大概率也会遇到。

报错一:401 Unauthorized或invalid api key

最常见的原因是 Key 复制时带了空格,或者环境变量没生效。检查:

echo $TAOTOKEN_API_KEY | head -c 10

如果输出为空,说明 export 没在当前 shell 生效。写进~/.bashrc或~/.zshrc后记得source一下。

报错二:404 Not Found或model not found

base_url 重复拼接/v1是重灾区。TaoToken 的 API 入口是https://taotoken.net/api,有些工具(比如 OpenAI SDK)会自动在末尾加/v1,如果你手动也写了/v1,就变成/api/v1/v1/...。统一用https://taotoken.net/api,让工具自己补。

模型名也要对。claude-opus-4-8和claude-opus-4.8在某些工具里不等价,以 TaoToken 文档里的模型列表为准,文档入口 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite 。

报错三:Agent 卡在waiting for approval不动

Codex CLI 的approval_policy设成了on-request,遇到它认为危险的命令会等你确认。跑自动化任务时,要么在交互界面手动批准,要么临时改成never(但sandbox_mode要设成workspace-write兜底)。Claude Code 的permissions.allow列表也要配全,否则git push这类命令会被拦。

报错四:跑 Terminal-Bench 时 Docker 报permission denied

Linux 下当前用户不在 docker 组里。执行:

sudo usermod -aG docker $USER newgrp docker

macOS 下确认 Docker Desktop 在运行。Windows 建议用 WSL2,原生 Docker 跑 Linux 沙箱会有路径和权限问题。

报错五:任务跑一半 token 耗尽

Terminal-Bench 的多步任务很吃 token,一个复杂任务可能烧掉几万 token。用 TaoToken 的 console 看用量:https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite 。如果只是做对比测试,先用--max-tasks 3控制规模,或者把ANTHROPIC_SMALL_FAST_MODEL换成更便宜的模型处理轻量步骤。

7. 选型建议:别只看一个数字

综合 Terminal-Bench、价格、社区反馈,按场景给建议:

你的场景推荐理由
终端重度用户(运维/全栈)Codex CLITerminal-Bench #1 (83.4%)
IDE 内代码补全为主Cursor / Copilot补全延迟 <100ms
预算敏感Gemini CLI免费 1000 req/day,70.7%
开源/自托管需求OpenCode17 万 Star,MIT,75+ 模型
最强 SWE-bench 分数Claude Code88.6% (Opus 4.8)
多 Agent 协作 + 云任务Codex(含 Web Agent)云 Agent 自动 code review

如果你要长期跑编码任务或搭 Agent 工作流,Coding Plan 比按量付费更划算,入口 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding_plan&utm_campaign=rewrite 。想先试模型对话效果,用 https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=model_chat&utm_campaign=rewrite 直接聊几句,确认模型风格符合预期再接进终端工具。

回过头看,2026 年 AI Coding Agent 的竞争已经从"谁的模型强"变成了"谁的工具链对"。排行榜前三的 Agent(Codex、Claude Code、Gemini CLI)全是终端优先(CLI-first)的设计。IDE 插件出身的 Cursor 和 Copilot 在 Agent 级别的基准上没有独立跑分。这不是巧合——终端是 Agent 的 native 环境。IDE 里的 Agent 要适配 GUI 层、编辑器 API、UI 状态管理,而终端 Agent 直接面对文件系统和进程,少了一层抽象,多了一层自由度。

我的判断是:2026 年下半年,Agent 评测会继续从"代码生成"(SWE-bench)向"环境操作"(Terminal-Bench / OSWorld)迁移。厂商也会从刷 SWE-bench 转向刷 Terminal-Bench,然后新的 Goodhart 循环开始。但至少在当下,Terminal-Bench 是你选 AI Coding Agent 时最有参考价值的那个数字——不是因为它的分最高,而是因为它测的东西最接近你每天在终端里干的事。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/26 13:08:50

CLI才是王道:OpenClaw与InfiniSynapse的共识——TaoToken统一Key接入实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/26 13:06:52

企业AI落地的完整方法论:从业务盘点到两周样板间

2000人抢着上一门课&#xff0c;放在哪个行业都算稀罕事。课程火成这样&#xff0c;不是我PPT讲得多漂亮&#xff0c;而是从第一天起我就把话说死了&#xff1a;这门课教的不是“用AI”&#xff0c;是“替公司把AI用起来”。个人学AI&#xff0c;解决的是“我怎么更快把活干完”…

作者头像 李华
网站建设 2026/9/26 13:05:39

MCP远程传输实战:HTTPS流式传输与SSE选型指南

MCP&#xff08;Model Context Protocol&#xff09;现在基本是AI工具链的标配协议了&#xff0c;但很多人搭完本地demo后&#xff0c;一上远程就卡在传输层。这篇文章想聊透MCP的HTTPS流式传输&#xff1a;为什么远程场景绕不开它&#xff0c;HTTPSSE和新的流式HTTP方案到底怎…

作者头像 李华
网站建设 2026/9/26 13:05:30

再论勾股定理成立的条件-32

再看红蓝光子&#xff08;不是红蓝线&#xff09;问题&#xff0c;以地球为例&#xff0c;假定这是引力场的方向&#xff0c;验证一下是不是&#xff0c;一个光子从地面射向太空&#xff0c;在地面的频率如果是 &#xff0c;在高空某处是 &#xff0c;那么它的能量变化量为&…

作者头像 李华