1. 为什么 Computer Use Preview 值得你花一个下午跑通
Computer Use Preview 是 Google 开源的一套「自然语言驱动浏览器」实验项目,它把大模型的指令理解能力和 Playwright 的页面操作能力缝在一起:你用中文或英文描述一个任务,模型负责拆解成点击、输入、滚动、截图这些原子动作,Playwright 负责在真实浏览器里执行。它适合谁?适合已经会写一点 Python、被 Selenium 的等待和选择器折磨过、想让 Agent 帮忙跑重复网页流程的开发者。说白了,它是「会自己看页面、自己决定下一步点哪里」的自动化,而不是你写死page.click("#submit")那种。
但真正卡住大多数人的不是 Playwright,而是模型通道。Computer Use Preview 默认走 Gemini 或 OpenAI 的接口,国内直连经常超时,于是「OpenAI API Key 获取两种方式」成了搜索热词——一种是官方渠道自己注册,另一种是走兼容 OpenAI 协议的统一通道。我这次的做法是:代码逻辑完全不动,只把base_url和api_key换成 TaoToken 的统一入口,让 Computer Use Preview 的模型调用落到一个稳定可达的地址上,然后跑一次「打开页面→搜索→截图」的最小闭环,验证整条链路是否可用。
这篇文章不讲空泛概念,直接给你三样东西:一份能复制的 Key 配置片段、Playwright 的启动参数、一次端到端验证动作。你照着做,半小时内能判断自己的环境到底通没通。核心检索词先摆在这:Computer Use Preview 怎么接入、Playwright 自然语言自动化怎么跑、OpenAI API Key 怎么配到统一通道。下面从环境准备开始。
2. 前置准备:TaoToken 通道与 Computer Use Preview 环境搭建
先说通道这块。TaoToken 提供的是 OpenAI 兼容接口,官网在 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 根地址是 https://taotoken.net/api 。注意这个/api后面不加 UTM 参数,代码里填的就是它。你需要先去控制台建一个 Key,入口在 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,Key 管理页在 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite 。建完 Key 先别关页面,后面配置要用。
Computer Use Preview 的环境我建议用独立虚拟环境,避免和你机器上已有的 Playwright 版本打架。Python 用 3.11 比较稳,3.10 也能跑。步骤如下:
git clone https://github.com/google/computer-use-preview.git cd computer-use-preview python3 -m venv .venv source .venv/bin/activate # Windows 用 .venv\Scripts\activate pip install --upgrade pip pip install -r requirements.txt playwright install --with-depsplaywright install --with-deps这步在 Linux 上会装系统依赖,macOS 和 Windows 一般只下浏览器内核。如果卡在下载 Chromium,可以加--only-shell先装精简版,或者设置PLAYWRIGHT_DOWNLOAD_HOST指向国内镜像。装完后用playwright --version确认,我这边是 1.4x 系列。
接下来是模型通道的环境变量。Computer Use Preview 读的是GEMINI_API_KEY或 OpenAI 风格的配置,我们要做的是把 OpenAI 兼容的那条路指向 TaoToken。先导出两个变量:
export OPENAI_API_KEY="sk-你的TaoToken密钥" export OPENAI_BASE_URL="https://taotoken.net/api"Windows PowerShell 用$env:OPENAI_API_KEY="..."的写法。这里有个坑:有些项目读的是OPENAI_API_BASE而不是OPENAI_BASE_URL,两个都设上最保险。设完用echo $OPENAI_BASE_URL确认没多空格。
注意:Key 不要写进 git 仓库,用
.env文件并加进.gitignore。下面第三节会给完整的.env片段。
环境到这一步就算齐了。判断标准很简单:python -c "import playwright; print(playwright.__version__)"能打印版本,且curl https://taotoken.net/api/models -H "Authorization: Bearer $OPENAI_API_KEY"能返回模型列表,说明通道和环境都活着。下一节进入可复制的配置。
3. 可复制配置:settings.json / .env 与 Playwright 启动参数
这一节是全文最该抄的部分。Computer Use Preview 的配置分散在环境变量和启动参数里,我把它整理成一份.env加一份启动脚本,你直接改 Key 就能用。
先看.env,放在项目根目录:
# .env —— Computer Use Preview 模型通道配置 OPENAI_API_KEY=sk-替换成你的TaoToken密钥 OPENAI_BASE_URL=https://taotoken.net/api OPENAI_API_BASE=https://taotoken.net/api # 模型 ID,按你控制台里可用的填 COMPUTER_USE_MODEL=gpt-4o # 备用:如果走 Gemini 原生通道 GEMINI_API_KEY=your_gemini_key_if_any USE_VERTEXAI=false # 浏览器参数 BROWSER_TYPE=chromium BROWSER_HEADLESS=false LOG_LEVEL=INFO三件套在这里对齐:Base URL 是https://taotoken.net/api,Key 是sk-开头那串,Model ID 填gpt-4o或你控制台里实际可用的名字。这三样缺一不可,很多人 401 就是 Model ID 写了个不存在的名字。
再看 Playwright 的启动参数。Computer Use Preview 内部会拉起浏览器,但你可以通过环境变量控制它的行为。我实测下来,调试阶段一定要BROWSER_HEADLESS=false,能看到浏览器在动,出问题好定位。启动脚本run.sh:
#!/usr/bin/env bash set -a source .env set +a python main.py \ --query "打开 https://www.bing.com,搜索 Computer Use Preview,把前三条结果标题截图保存到 ./shots" \ --browser chromium \ --headless false \ --max-steps 15 \ --screenshot-dir ./shots参数说明:--max-steps限制模型最多执行多少步,防止它在一个页面上无限循环;--screenshot-dir指定截图落盘目录,验证时直接看这个目录有没有文件。如果你的版本没有这些参数,就用环境变量MAX_STEPS=15代替。
如果你用的是 Cline MCP 或 Claude Code 这类工具去调 Computer Use Preview,配置形态会变成 JSON。以 MCP 的settings.json为例:
{ "mcpServers": { "computer-use": { "command": "python", "args": ["main.py", "--mcp"], "env": { "OPENAI_API_KEY": "sk-替换成你的TaoToken密钥", "OPENAI_BASE_URL": "https://taotoken.net/api", "COMPUTER_USE_MODEL": "gpt-4o" } } } }这份 JSON 里同样能看到 Base URL、Key、Model ID 三件套。Codex 的auth.json思路一样,把base_url指向https://taotoken.net/api,api_key填你的 Key。配置写完先别急着跑大任务,下一节用最小动作验证。
4. 端到端验证:一次自然语言驱动的浏览器动作
验证的目标只有一个:确认「自然语言→模型拆解→Playwright 执行→截图落盘」这条链路是通的。任务越小越好,我选的是「打开 Bing,搜索一个词,截图」。
先激活环境并加载变量:
source .venv/bin/activate set -a; source .env; set +a然后跑一个最小查询:
python main.py --query "打开 https://www.bing.com,在搜索框输入 Playwright,回车,等页面加载完后截图" --headless false --max-steps 10你会看到终端打印类似这样的步骤日志:
[step 1] action=goto url=https://www.bing.com [step 2] action=click selector=input[name=q] [step 3] action=type text=Playwright [step 4] action=press key=Enter [step 5] action=screenshot path=./shots/step5.png [step 6] action=finish如果看到action=finish且./shots目录里出现了 png 文件,恭喜,链路通了。这一步同时验证了三件事:模型通道能返回结构化的动作指令、Playwright 能执行这些指令、截图能落盘。
再补一个纯 API 层的验证,确认你的 Key 和 Base URL 真的对:
from openai import OpenAI client = OpenAI( api_key="sk-替换成你的TaoToken密钥", base_url="https://taotoken.net/api" ) resp = client.chat.completions.create( model="gpt-4o", messages=[{"role": "user", "content": "只回复两个字:通了"}] ) print(resp.choices[0].message.content)这段跑出「通了」,说明模型通道没问题,剩下的就是 Computer Use Preview 自己的逻辑。如果这段报错,先别碰 Playwright,问题在通道层。两段都过,你就可以把--query换成自己的真实任务了,比如「登录后台,导出昨天的订单表格」。验证阶段建议全程headless false,看得见才敢信。
5. 常见报错排查:401、local proxy failed 与 reading choices
这一节按真实报错来对。我踩过的坑基本集中在这几个。
401 Unauthorized。最常见,九成是 Key 或 Base URL 的问题。先确认echo $OPENAI_API_KEY打印的是完整sk-串,没有换行和空格。再确认OPENAI_BASE_URL是https://taotoken.net/api,注意结尾不要多加/v1,有些库会自动补,你手动加了就变成/api/v1/v1。如果用的是.env,确认source生效了,python -c "import os; print(os.getenv('OPENAI_BASE_URL'))"能打印出来才算数。
local proxy failed / connection refused。这个报错通常出现在你本地设了HTTP_PROXY或HTTPS_PROXY,但代理没开。检查env | grep -i proxy,如果有残留就unset HTTP_PROXY HTTPS_PROXY ALL_PROXY。Playwright 启动浏览器时也会读这些变量,代理不通会导致浏览器起不来。清掉再跑。
reading 'choices' of undefined。这是模型返回体里没有choices字段,一般是 Base URL 指错了,请求打到了一个不兼容 OpenAI 协议的地址,返回了 HTML 或别的结构。确认你的base_url是https://taotoken.net/api,并且 Model ID 是控制台里真实存在的。还有一种情况是流式和非流式混用,Computer Use Preview 默认非流式,你手动开了stream=True又没处理 chunk,也会报这个。
OAuth / token expired。如果你用的是 Codex 或 Claude Code 的 OAuth 登录态,过期后会报这个。解决办法是重新走一遍授权,或者干脆改用 API Key 方式,把auth.json里的api_key填上 TaoToken 的 Key,base_url指向统一通道,就不依赖 OAuth 了。
Playwright 报 browser not found。playwright install没跑成功,或者虚拟环境切换后浏览器内核路径变了。重新执行playwright install chromium,确认~/.cache/ms-playwright下有对应版本目录。
排查顺序建议:先跑第 4 节的纯 API 脚本,过了再跑 Playwright。这样能把「通道问题」和「浏览器问题」分开,不然两个混在一起很难定位。每次改完配置记得重新source .env,环境变量不会自动刷新。
6. 把通道固定下来:长期跑 Agent 的接入建议
链路验证通过后,接下来要考虑的是怎么让它稳定跑下去。我的建议是把模型通道固定成 TaoToken 的统一入口,代码里所有base_url都指向https://taotoken.net/api,Key 统一从环境变量读,不硬编码。这样换模型、换项目都不用改代码,只改.env。
如果你打算长期跑编码类或 Agent 类任务,可以看下 Coding Plan,入口在 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,它更适合高频调用的场景。日常调试模型返回是否正常,用模型对话页 https://taotoken.net/chat?utm_source=taotoken_aicg_blog_end&utm_content=chat&utm_campaign=rewrite 快速试一句就行。接入文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite ,遇到参数不确定时翻一下比猜快。
最后给一个实用技巧:把 Computer Use Preview 的--max-steps设成 15 到 20 之间,太小任务做不完,太大模型容易在动态页面上绕圈。截图目录定期清理,不然跑几天磁盘就满了。任务脚本跑通后,把--query里的自然语言固化成模板,下次直接换参数复用,比每次重新描述省事。链路通了之后,真正的价值在于你用它替代了多少重复点击。