Qwen3.7-Plus:好用便宜的读屏AI

一个前沿级的屏幕定位模型,价格却像预算文本模型一样便宜,你只需修改四行代码就能用标准 OpenAI SDK 调用它。

Qwen3.7-Plus:好用便宜的读屏AI
AI模型价格对比 | AI工具导航 | ONNX模型库 | Vibe Coding教程 | PLC在线仿真器 | Tripo 3D | Meshy AI | ElevenLabs | KlingAI | ArtSpace | Phot.AI | InVideo

我上传了一张混乱的 AWS 控制台截图,问了一个问题:我该点击哪个像素来启动实例?模型返回了 click at (x=1147, y=283)。我在图片上叠加了这个坐标——它精准地落在了橙色的"Launch instance"按钮正中央。然后我查看了价格:每百万输入 token $0.40——仅为阿里巴巴纯文本 Qwen3.7-Max 价格的六分之一,而且该模型在 ScreenSpot Pro(决定"计算机使用"智能体是否真正有效的基准测试)上得分 79.0

这个组合就是故事的全部。一个前沿级的屏幕定位模型,价格却像预算文本模型一样便宜,你只需修改四行代码就能用标准 OpenAI SDK 调用它。我花了几天时间将它指向截图、设计稿和实时浏览器。以下是它的功能、背后的数据,以及——我最关心的一部分——如何自己运行它的完整代码。

1、为什么 GUI 定位是全部的关键

你见过的每一个"计算机使用"演示——Claude 操作浏览器、OpenAI 的 Operator 点击完成结账——都取决于一项能力:GUI 定位。给模型一张截图和一条指令,它必须返回正确的 UI 元素的精确像素坐标。一个模型可以有完美的语言推理能力,但如果它找不到按钮,作为智能体仍然毫无用处。

ScreenSpot Pro 就是隔离测试这一能力的基准。它向模型展示真实软件的截图——Photoshop、Excel、管理面板、企业 SaaS——附带一条自然语言指令,并评分选择正确元素的百分比。所有报告模型中的最先进水平在 75-82 范围内。开源的 7B 视觉模型通常在 45-60 之间。Qwen3.7-Plus 以 79.0 的成绩让一个非西方实验室 squarely 进入了与闭源领导者相同的水平带。

实际上,79.0 意味着大约每五次点击中有四次在第一次就正确。这听起来不算什么,直到你计算复合数学:在 50 步的工作流中,每步 70% 和 79% 定位准确率的差距,就是智能体能完成任务和在第 8 步就脱轨的区别。

2、"带眼睛的 Max"

Qwen3.7-Plus 构建在与 Qwen3.7-Max 相同的主干上,后者于 5 月底作为阿里巴巴纯文本的 100 万 token 旗舰模型发布。Plus 增加了 Max 没有的一件事:视觉。它接受文本、图像和视频作为输入——重要的是,它只输出文本。它不生成图像或视频;视觉在输入端。它生成的是结构化的操作计划,如 click at (x=487, y=232)type "hello@example.com" into the email field,这正是计算机使用循环所需要的。

它也是一个混合智能体:同一个模型可以读取浏览器截图并决定点击什么,然后转而在终端中运行 shell 命令。一个模型,两个操作面。以下是核心数据对比:

+--------------------------------+--------------------------------+---------------+
| 能力                            | Qwen3.7-Plus                   | Qwen3.7-Max   |
+================================+================================+===============+
| 输入模态                         | 文本、图像、视频                 | 仅文本        |
| 上下文窗口                       | 1M tokens(与视觉共享)          | 1M tokens     |
| 输入/输出 每 1M                  | $0.40 / $1.60                  | $2.50 / $7.50 |
| 缓存输入 每 1M                   | $0.08                          | $0.25         |
| GUI 定位 (ScreenSpot Pro)        | 79.0                           | 无法运行      |
| Terminal-Bench                   | 70.3                           | 69.7          |
| SWE-Bench Pro                    | ~60%                           | 60.6%         |
| MCP-Atlas(工具使用)             | 76.4                           | 76.4          |
+--------------------------------+--------------------------------+---------------+

规律是:在纯文本上,Max 保持小幅领先(LM Arena #13 vs Plus 的 #15)。一旦视觉信号进入——截图、图表、设计稿——Plus 就是你想要的,而且无论哪种方式,价格都只有一小部分。与更广泛的领域相比,Terminal-Bench 70.3 高于 DeepSeek-V4-Pro(67.9)和 Kimi K2.6 Thinking(66.7),略低于 Claude Opus 4.8(在较新的 2.1 分割上为 74.6)。Plus 在 Terminal-Bench 上击败了自己的纯文本兄弟,同时承载了额外的视觉参数,这是真正令人惊讶的结果。

3、5 分钟快速开始

以下所有内容都在阿里云模型工作室上运行。端点兼容 OpenAI,所以你使用官方的 openai 包,只需修改两个参数:base_urlapi_key。模型 id 是 qwen3.7-plus

pip install openai pyautogui pillow
export DASHSCOPE_API_KEY="sk-your-model-studio-key"

从模型工作室控制台获取密钥(国际区域在 dashscope-intl.aliyuncs.com;中国区域去掉 -intl)。一个需要提前纳入成本模型的注意事项:图像和视频与文本共享同一个 1M token 预算。一张高分辨率截图可能会消耗数千个 token,所以你的有效文本空间会随着视觉负载的增加而缩小。

调用 1:定位原语

这是最有用的单一调用:给模型一张截图,询问点击目标,获取坐标返回。我以 base64 数据 URL 的方式传递截图,这样它可以处理本地文件,而不仅仅是公共图片 URL。

import base64, os
from openai import OpenAI
client = OpenAI(
    api_key=os.environ["DASHSCOPE_API_KEY"],
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
def encode(path):
    with open(path, "rb") as f:
        return "data:image/png;base64," + base64.b64encode(f.read()).decode()
resp = client.chat.completions.create(
    model="qwen3.7-plus",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text":
                "This is a screenshot. I want to launch a new EC2 instance. "
                "Return ONLY the pixel coordinates to click, as JSON: "
                '{"x": <int>, "y": <int>, "label": "<button text>"}'},
            {"type": "image_url",
             "image_url": {"url": encode("aws_console.png")}},
        ],
    }],
)
print(resp.choices[0].message.content)

我的运行结果返回了:

{"x": 1147, "y": 283, "label": "Launch instance"}

关键操作是在提示词中强制 JSON 输出。模型很乐意对其看到的内容侃侃而谈;将其约束为坐标模式才能使响应在程序上可用。

调用 2:将坐标转化为实际点击

坐标在被执行之前是惰性的。在桌面上,pyautogui 是最简单的执行工具。这个辅助函数完成了闭环:截图、询问模型、点击。

import json, pyautogui
def ground_and_click(instruction, screenshot_path):
    msg = [{
        "role": "user",
        "content": [
            {"type": "text", "text":
                f"{instruction}\nReturn ONLY JSON: "
                '{"x": int, "y": int, "confidence": 0-1}'},
            {"type": "image_url", "image_url": {"url": encode(screenshot_path)}},
        ],
    }]
    out = client.chat.completions.create(
        model="qwen3.7-plus", messages=msg).choices[0].message.content
    action = json.loads(out)
    if action["confidence"] < 0.6:
        print("Low confidence, skipping:", action)
        return action
    pyautogui.click(action["x"], action["y"])
    return action
# Usage:
pyautogui.screenshot("frame.png")
ground_and_click("Click the Settings gear icon", "frame.png")

confidence 门控很重要。79.0 的平均值告诉你的是典型的 SaaS 和办公 UI;在大量动画或游戏风格的界面上,每个模型的定位能力都会下降。要求提供置信度分数并拒绝低置信度的点击,是你能添加的最便宜的护栏,它能防止智能体在迷失时盲目点击。

调用 3:使用 Playwright 的真实观察-行动循环

桌面点击适合演示,但浏览器自动化才是这个模型真正发挥价值的地方。模式与 Claude Computer Use 和 OpenAI Operator 使用的循环相同:捕获页面、询问模型的下一步操作、执行、重复。

from playwright.sync_api import sync_playwright
SYSTEM = (
    "You are a browser agent. You see a screenshot each turn. "
    "Respond with ONE action as JSON: "
    '{"action": "click|type|done", "x": int, "y": int, '
    '"text": "<for type>", "reason": "<short>"}'
)
def run_agent(goal, start_url, max_steps=12):
    with sync_playwright() as p:
        page = p.chromium.launch(headless=False).new_page()
        page.goto(start_url)
        history = [{"role": "system", "content": SYSTEM},
                   {"role": "user", "content": f"Goal: {goal}"}]
        for step in range(max_steps):
            page.screenshot(path="step.png")
            history.append({"role": "user", "content": [
                {"type": "text", "text": f"Step {step}. Next action?"},
                {"type": "image_url", "image_url": {"url": encode("step.png")}},
            ]})
            reply = client.chat.completions.create(
                model="qwen3.7-plus", messages=history
            ).choices[0].message.content
            act = json.loads(reply)
            history.append({"role": "assistant", "content": reply})
            print(step, act["action"], act.get("reason", ""))
            if act["action"] == "done":
                break
            elif act["action"] == "click":
                page.mouse.click(act["x"], act["y"])
            elif act["action"] == "type":
                page.mouse.click(act["x"], act["y"])
                page.keyboard.type(act["text"])
            page.wait_for_timeout(1200)
run_agent("Search for 'noise cancelling headphones' and open the first result",
          "https://www.amazon.com")

我在接线时学到了两件事。首先,将每张截图追加到运行中的消息历史中,这样模型就能看到自己之前的操作——没有这个记忆,它会在同一个点击上循环。其次,积极裁剪旧截图。因为图像也计入 1M 上下文,一个 12 步的全分辨率帧运行会比你预期的更快消耗上下文;我只保留最近两三帧,其余的总结为文本。

调用 4:截图转代码

相同的视觉加编程组合使"截图转 UI"真正有用。喂给它一张设计稿,得到一个可工作的组件。

resp = client.chat.completions.create(
    model="qwen3.7-plus",
    messages=[{
        "role": "user",
        "content": [
            {"type": "text", "text":
                "Recreate this UI as a single self-contained React component "
                "using Tailwind. Match layout, spacing, and colors."},
            {"type": "image_url", "image_url": {"url": encode("mockup.png")}},
        ],
    }],
)
open("Recreated.jsx", "w").write(resp.choices[0].message.content)

在一个三卡片定价布局上,它重现了网格、相对间距和中间"热门"卡片的强调色,这些我都没有描述过。它不是像素完美的——字体和精确阴影有偏差——但作为第一遍的脚手架,它为我节省了无聊的 80%。

4、你应该选择哪个?

如果你在构建一个严肃的智能体栈,Plus 并不是在与 Max 竞争——它是在互补。用 Plus 来看屏幕并决定点击什么;将生成的 CLI 命令或代码编写任务交给 Max。

与其他多模态智能体相比:Gemini 3.1 Pro 是更成熟的管理产品,具有更深的视频和音频理解以及更紧密的生态工具。Step 3.7 Flash 是开源权重选择(Apache 2.0,可自托管,更便宜,约 $0.20/$1.15)。对于通过单一预算 API 实现前沿 GUI 定位,Plus 是目前最强的非西方选择。而对于最成熟的托管计算机使用体验,Claude Opus 4.8 的栈仍然是开箱即用最流畅的。

5、值得公开说的陷阱

这是发布幻灯片不会提到的地方:Qwen3.7-Plus 是专有的且仅限 API 使用。 没有开源权重。你无法下载它,无法自托管,无法在断网环境中运行。这与建立了 Apache-2.0 发布声誉的 Qwen 产品线是一个真正的背离。Plus 的开源权重变体已在 2026 年第三季度被提及,但尚未确认,且该层级可能保持闭源。

对于受监管或有数据驻留限制的团队来说,这是一个硬性障碍,Step 3.7 Flash 或开源的 Qwen3.6-35B-A3B 仍然是合理的选择。基准数据也是发布方报告的——独立复现才刚刚开始,所以在标准化使用之前请运行自己的评估。此外,Plus 周围的执行工具生态系统比闭源先行者更薄:你需要自带 Playwright 运行时、自带坐标执行器、自带重试逻辑。模型本身很出色;但粘合代码需要你自己写。

6、结束语

Qwen3.7-Plus 是我找到的将前沿级屏幕定位能力放入智能体的最便宜且可靠的方式。让我着迷的数字——从原始截图返回精确像素坐标,每百万 token $0.40——在 AWS 控制台、Figma 风格设计稿和实时购物流程中都经受住了考验。对于希望零胶水代码的团队,它不会替代成熟的托管计算机使用产品,闭源权重也将排除任何需要自托管的人。但如果你正在原型化一个计算机使用智能体,并对前沿价格犹豫不决,这就是本周你应该把截图指向上去的模型。


原文链接: I Gave Qwen3.7-Plus a Screenshot and It Found the Exact Pixel to Click for $0.40

汇智网翻译整理,转载请标明出处