Computer-Use-Agent操控桌面的新范式
> **时效说明**:本文内容以 2026 年 3 月为基准。Computer Use 由 Anthropic 于 2024 年 10 月发布,截至 2026 年 3 月仍处于快速演进阶段,生产应用需谨慎评估。
Computer Use Agent:操控桌面的新范式
时效说明:本文内容以 2026 年 3 月为基准。Computer Use 由 Anthropic 于 2024 年 10 月发布,截至 2026 年 3 月仍处于快速演进阶段,生产应用需谨慎评估。
许多业务系统没有开放 API,却需要定期进行大量重复操作——填写表单、上传附件、触发联动下拉框。传统方式要么写爬虫(但往往需要处理验证码、内网 VPN 等障碍),要么全靠人工。
Computer Use 提供了第三条路:让 AI Agent 像人一样,打开浏览器,看着页面,逐字段填写,点击提交。
说明:Computer Use 目前是 Claude(Anthropic)特有功能,本章以 Claude API 为例讲解。其他模型(如 DeepSeek)暂不支持此功能。如需使用,需申请 Claude API。
1.1 什么是 Computer Use
截图感知、界面理解、操作规划、执行操作、验证结果的完整闭环流程
Computer Use 是 Agent 的一种行动能力。普通的 Agent 通过调用 API(应用程序接口,软件之间通信的规范通道)或工具函数来完成任务,而 Computer Use 让 Agent 可以直接操控计算机界面——截图"看"屏幕,模拟鼠标点击和键盘输入"动"界面。
不需要目标系统有 API。不需要逆向工程。不需要研究网站结构。Agent 像一个会打字的远程操作员,给定任务后,自己去屏幕上找到对应的按钮和输入框,然后操作。
这个能力的意义在于:世界上大多数软件没有 API,但所有软件都有 UI。Computer Use 让 AI 能操控这些没有 API 的系统。
1.2 Anthropic Claude 的 Computer Use
2024 年 10 月,Anthropic 发布了 Claude 的 Computer Use 能力。这是第一个主流 LLM 提供商把这个能力做成正式 API 的。
Claude 的实现提供三个核心工具:
computer:截图 + 鼠标键盘操作。可以截当前屏幕,可以点击指定坐标,可以输入文字,可以按键盘快捷键。
bash:执行 shell 命令。不只是看界面,还能直接跑命令行。
text_editor:读写文件。配合 bash 工具,可以做文件编辑。
三个工具组合在一起,Agent 理论上可以做任何人类在电脑上能做的事情。
1.2.1 工作流程
Computer Use Agent 的工作方式是一个循环:
每一步都要截图,分析,决策,执行,再截图。这个循环就是 Computer Use 的本质。
下面是简化的代码示例,说明调用方式:
# 安装依赖:pip install anthropic
import anthropic
import base64
from pathlib import Path
client = anthropic.Anthropic()
def encode_image(image_path: str) -> str:
"""将截图转成 base64"""
with open(image_path, "rb") as f:
return base64.standard_b64encode(f.read()).decode("utf-8")
def run_computer_use_agent(task: str, screenshot_path: str):
"""
运行 Computer Use Agent
注意:实际使用时需要在沙箱环境中运行,
并且需要将截图和实际操作连接起来。
这里只展示 API 调用方式。
"""
# 获取当前屏幕截图
image_data = encode_image(screenshot_path)
tools = [
{
"type": "computer_20241022",
"name": "computer",
"display_width_px": 1920,
"display_height_px": 1080,
"display_number": 1,
}
]
messages = [
{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": image_data,
},
},
{
"type": "text",
"text": task
}
],
}
]
# 循环执行直到任务完成
while True:
response = client.messages.create(
model="claude-opus-4-5",
max_tokens=4096,
tools=tools,
messages=messages,
)
# 如果没有工具调用,说明任务完成或需要人工介入
if response.stop_reason == "end_turn":
return response.content[-1].text
# 处理工具调用(实际项目中这里要执行真实的鼠标键盘操作)
tool_use = next(
block for block in response.content
if block.type == "tool_use"
)
action = tool_use.input.get("action")
print(f"Agent 决定执行操作:{action}")
# ... 实际执行操作,截新图,继续循环
# 这里省略了实际操作执行的代码
break
# 用法示例
result = run_computer_use_agent(
task="打开浏览器,访问 example.com,找到联系我们页面",
screenshot_path="current_screen.png"
)
1.2.2 局限性
Computer Use 目前有三个明显的问题,在使用前需要清楚认识。
速度慢。每一步都要截图,截图要传给 API,API 处理后返回操作指令,再执行。填一个十几个字段的表单,可能要几分钟。人工操作几十秒就完成的事情,AI 要花几倍时间。
成本高。截图是图片,图片 token 很贵。每次循环都要处理一张截图,长任务下来 token 消耗会相当可观。
容易出错。Agent 认坐标,但是网页布局可能因为窗口大小、操作系统缩放比例、字体设置不同而变化。AI 认为按钮在某个位置点击,实际可能点偏了。复杂表单里的联动逻辑、弹窗处理、验证码,都是容易踩坑的地方。
1.3 Playwright + LLM 的轻量方案
对于网页操作,有一个更轻量、更快、更便宜的替代方案:用 Playwright 操控浏览器,用 LLM 分析页面结构,动态生成操作指令。
这个方案不需要截图。Playwright 可以直接拿到 DOM 结构(Document Object Model,浏览器将网页解析成的树形结构,每个按钮、输入框、链接都是树中的一个节点,可以用代码直接操作)——页面上有哪些按钮、输入框、链接,它们的 id、class、文本内容都一清二楚。LLM 分析 DOM 而不是分析截图,效率高很多。
# 安装依赖:pip install playwright openai beautifulsoup4
# playwright install chromium
import asyncio
from playwright.async_api import async_playwright
from openai import OpenAI
from bs4 import BeautifulSoup
client = OpenAI()
def extract_interactive_elements(html: str) -> str:
"""从 HTML 中提取交互元素,减少 token 消耗"""
soup = BeautifulSoup(html, "html.parser")
elements = []
# 提取表单元素
for el in soup.find_all(["input", "textarea", "select", "button", "a"]):
attrs = {}
for attr in ["id", "name", "type", "placeholder", "value", "href", "class"]:
if el.get(attr):
attrs[attr] = el.get(attr)
text = el.get_text(strip=True)
elements.append(f"<{el.name} {attrs}>{text}</{el.name}>")
return "\n".join(elements)
def ask_llm_for_action(task: str, page_elements: str, completed_steps: list) -> dict:
"""让 LLM 根据当前页面状态决定下一步操作"""
completed_str = "\n".join([f"- {s}" for s in completed_steps]) if completed_steps else "无"
prompt = f"""你正在用 Playwright 控制浏览器完成以下任务:
{task}
已完成的步骤:
{completed_str}
当前页面的交互元素:
{page_elements}
请决定下一步操作,返回 JSON 格式:
{{
"action": "click" | "fill" | "select" | "done" | "navigate",
"selector": "CSS 选择器或元素描述",
"value": "如果是 fill 或 select,这里填入内容",
"url": "如果是 navigate,这里填 URL",
"description": "这一步在做什么"
}}
如果任务已完成,返回 action: "done"。
只返回 JSON,不要其他内容。"""
response = client.chat.completions.create(
model="gpt-4o-mini",
messages=[{"role": "user", "content": prompt}],
response_format={"type": "json_object"}
)
import json
return json.loads(response.choices[0].message.content)
async def run_web_agent(task: str, start_url: str):
"""
基于 Playwright + LLM 的网页自动化 Agent
比 Computer Use 快 10 倍,成本低 90%
"""
async with async_playwright() as p:
browser = await p.chromium.launch(headless=False)
page = await browser.new_page()
await page.goto(start_url)
await page.wait_for_load_state("networkidle")
completed_steps = []
max_steps = 20 # 防止无限循环
for step_num in range(max_steps):
# 获取当前页面的 HTML
html = await page.content()
elements = extract_interactive_elements(html)
# 让 LLM 决定下一步
action = ask_llm_for_action(task, elements, completed_steps)
print(f"步骤 {step_num + 1}: {action['description']}")
if action["action"] == "done":
print("任务完成!")
break
elif action["action"] == "navigate":
await page.goto(action["url"])
elif action["action"] == "click":
await page.click(action["selector"])
elif action["action"] == "fill":
await page.fill(action["selector"], action["value"])
elif action["action"] == "select":
await page.select_option(action["selector"], action["value"])
completed_steps.append(action["description"])
await page.wait_for_timeout(1000) # 等待页面响应
await browser.close()
# 使用示例
asyncio.run(run_web_agent(
task="在搜索框中搜索 'Python 异步编程',点击第一个结果",
start_url="https://www.baidu.com"
))
这个方案的核心思路:用 DOM 替代截图,用文字描述替代图像理解。LLM 处理文字比处理图片快很多,token 消耗也少得多。
当然,它有适用边界。页面结构清晰、交互元素有明确的 id 或 class 时效果好;对于高度动态的 SPA 页面(Single Page Application,单页应用,内容通过 JavaScript 动态渲染而非服务器返回完整 HTML,DOM 结构随时变化)、Canvas 绘制的 UI、需要处理验证码的场景,效果会打折扣。
1.4 实际应用场景
自动化测试。传统的自动化测试需要写详细的操作脚本,每次 UI 改动就要维护脚本。用 LLM + Playwright 的方式,测试用例可以用自然语言描述,Agent 自己去找对应的元素操作,UI 改了也不用手动更新选择器。
RPA 的 AI 升级。企业里有大量重复的操作流程——填表、搬数据、生成报告。传统 RPA(Robotic Process Automation,机器人流程自动化,按预设脚本模拟人工点击操作的技术)工具要录制固定路径,界面一变就挂。AI 加持的 RPA 可以理解意图,遇到轻微变化能自适应。
数据采集。遇到反爬虫、登录墙、动态加载的页面,逆向 API 成本高。用 Computer Use 模拟真实用户行为,绕过一部分反爬措施。注意要遵守法律和网站的使用条款。
1.5 安全风险
Computer Use Agent 拿到的是对整台电脑或浏览器的完整控制权。这意味着它能访问文件、密码管理器、邮件、代码仓库。
一个写得不够谨慎的 Agent,或者一个被注入了恶意指令的网页(Prompt Injection 攻击,即攻击者在网页内容中嵌入伪装成正常文字的恶意指令,让 Agent 在读取页面时被"操控"执行非预期操作),理论上可以做很多危险的事情。
Anthropic 在文档里明确建议:Computer Use 应该在沙箱环境里运行,比如 Docker 容器或专门的虚拟机,和主要的工作环境隔离。不要让 Computer Use Agent 用主力机器直接操作,更不要给它登录有重要数据的账号的权限。
这是实际的工程风险,不是夸大。能力越大,边界限制越要做好。
1.6 技术成熟度判断
Computer Use 是 Agent 能力版图里重要的一块:它让 AI 不再依赖 API,可以操控整个数字世界。这个价值是真实的。
但当前的成熟度还不适合直接上生产。速度慢、出错率高、成本贵,这些问题都需要时间和工程投入去解决。Playwright + LLM 的方案是目前在网页场景里更实用的替代,可以先用这个。
Computer Use 的可靠性和速度会随着模型能力的提升而改善,届时很多需要"人工操作界面"的工作都可以交给 Agent。这个方向值得持续关注。