我盯着屏幕,鼠标自己动了
我盯着屏幕,鼠标自己动了
那是一个普通的周三下午,我正准备去泡第三杯咖啡。
回来坐下的时候,屏幕上的鼠标指针正在缓缓移动——没有人碰键盘,没有人碰触控板。它停在一个输入框上,然后开始打字。
我愣了大概三秒钟。然后意识到:这是我刚才让 Codex 干的事情。
这种荒诞感很难描述。不是恐怖,是一种「这个世界的规则刚刚被悄悄改写了一条」的感觉。
---
这篇文章是一次完整的 Mac 端实测记录。我不打算给你看官方 Demo 视频——那些都是精心挑选过的最佳状态。我想告诉你的是:在真实工作环境里,Codex 的屏幕操控能力到底能干什么、不能干什么,以及你现在就可以上手的最低门槛是多少。
---
它是怎么「看」你的屏幕的
在讲实测之前,先用两分钟理解一下它的工作原理——不然你看到它失败的时候,会不知道问题出在哪。
传统的 RPA 工具(比如 macOS 自带的 Automator)是怎么操作界面的?坐标定位。你告诉它「点击屏幕 (450, 320) 这个位置」,它就去点。问题是,一旦窗口大小变了、分辨率变了、界面更新了,它立刻失效。脆得像饼干。
Codex 的方式完全不同,用一个类比来说:
传统 RPA 是个近视眼,它记住的是「第三排第五个座位」;Codex 是个正常人,它看的是「那个穿红衣服的人」。
具体的执行闭环是这样的:
截图 → 视觉理解 → 意图规划 → 动作执行 → 截图验证 → 下一步
每一步执行完,它会重新截一张图,确认「我刚才做的事情是不是我想要的效果」,然后再决定下一步。这个感知-执行-验证的闭环,是它比传统 RPA 聪明的根本原因。
它不依赖固定坐标,而是理解语义:「找到页面上写着『提交』的按钮」,而不是「点击 (780, 440)」。这让它对界面变化有相当强的容错能力。
---
完整实测:我让它干了这五件事
实验环境: MacBook Pro M3、macOS Sonoma 14.5、任务通过 API 调用触发,非官方 GUI 客户端。我按难度递进设计了五个任务,结果如下:
任务一:打开应用并导航到指定页面
任务描述: 打开 Safari,导航到一个本地运行的表单页面(localhost:3000)。 结果:✅ 成功耗时约 8 秒。它识别了 Dock 栏里的 Safari 图标,点击打开,在地址栏输入 URL,回车。全程无误。
这是它的甜区——结构清晰、步骤固定、没有歧义。
---
任务二:识别并填写本地表单
任务描述: 填写一份包含姓名、邮箱、下拉菜单(选择「产品反馈」)、多行文本框的表单。 结果:✅ 成功(含一次自我纠错)有意思的细节:它在填写下拉菜单时,第一次点击位置偏了,选中了「技术支持」而不是「产品反馈」。但它截图确认之后发现不对,自动重新点击,选了正确选项。
这个自我纠错过程,是让我印象最深的一幕。
耗时约 34 秒,包含纠错时间。
---
任务三:跨应用复制粘贴数据
任务描述: 从一个 Numbers 表格中读取第一列的三个数值,粘贴到浏览器表单的对应字段。 结果:⚠️ 部分成功它成功打开了 Numbers,也正确识别了目标单元格,复制操作没问题。但在切换回浏览器时,它粘贴的是最后一个值,前两个值没有成功传递——这是剪贴板单次写入的限制,它没有用更聪明的方式(比如逐个复制粘贴)来绕过。
耗时约 52 秒,最终需要人工补填两个字段。
---
任务四:处理弹窗异常
任务描述: 在提交表单时,触发一个「确认提交?」的系统弹窗,让它处理。 结果:✅ 成功它识别了弹窗,读取了按钮文字「确认」,点击。干净利落,耗时 6 秒。
这类模态弹窗对它来说不是问题,只要弹窗内容是静态文字。
---
任务五:提交并验证结果
任务描述: 点击提交按钮,确认页面出现「提交成功」的提示,截图保存。 结果:✅ 成功它点击提交,等待页面响应,识别到「提交成功」文字,调用截图工具保存了结果图片。
整个五步流程下来,4个完全成功,1个部分成功,全程没有需要人工干预的崩溃性失败。
---
任务汇总表
| 任务 | 结果 | 耗时 | 失败/问题原因 | | 打开应用并导航 | ✅ 成功 | 8s | — | | 识别并填写表单 | ✅ 成功(含纠错) | 34s | 首次点击偏移,自动纠正 | | 跨应用复制粘贴 | ⚠️ 部分成功 | 52s | 剪贴板多值传递失败 | | 处理弹窗异常 | ✅ 成功 | 6s | — | | 提交并验证结果 | ✅ 成功 | 11s | — |对比参考: 用 macOS Automator 完成同样的表单填写任务,前期配置(录制坐标、调试流程)需要约 25 分钟;Codex 的方式,写一段自然语言描述,5 分钟内可以跑通第一次。但 Automator 一旦配置好,稳定性更高——这是两种工具不同的价值定位。
---
翻车现场:别以为它万能
诚信要求我把这个放出来。
我额外测试了一个任务:让它在一个动态加载的 SPA 页面(React 写的,数据异步渲染)上找到一个特定的数据行并点击编辑。
结果是灾难性的。
它截图的时候,页面数据还没加载完,它「看到」的是骨架屏(loading 状态)。它以为页面出了问题,开始尝试刷新——然后再次截图,数据加载了一半,它又刷新了一次。这个循环持续了将近 90 秒,最终我手动终止了任务。
这是它目前最大的硬伤:它不理解「等待」。 它没有「这个页面正在加载,我应该等一等」的概念,只有「我现在看到的是什么」。---
能力地图:什么能交给它,什么别指望它
根据实测结果,我整理了一份速查表,可以截图收藏:
✅ 能做(放心交给它)
- 结构固定的表单填写(静态页面)
- 应用启动和基础导航
- 模态弹窗处理(确认/取消/关闭)
- 固定流程的重复操作(每次步骤相同)
- 截图、记录、验证结果
⚠️ 勉强能做(需要容错设计)
- 跨应用数据传递(建议拆成单步任务)
- 有少量动态元素的页面(给它加等待时间的提示)
- 需要滚动查找内容的长页面
- 多窗口并行操作
❌ 别指望它(当前版本硬伤)
- 验证码(图形验证码、滑块验证码)
- 动态加载 / 异步渲染页面(不加等待策略的情况下)
- 需要像素级精确操作(图像编辑、精确拖拽)
- 视频内容识别(它只看静态截图)
- 需要理解上下文历史的复杂决策流程
---
怎么真正用起来——三类用户的接入姿势
职场白领:从「最烦的那20分钟」开始
不要上来就想自动化整个工作流。找到你每天最重复、最无聊的那个操作——比如把邮件里的数据手动填到内部系统,或者每天早上截图几个页面存档。
这类任务:步骤固定、界面稳定、没有验证码——正好是 Codex 的甜区。
先自动化这一个点,跑稳了再扩展。
开发者:API 调用是正确姿势
如果你想把屏幕操控能力集成到自己的工具里,直接走 API。核心调用逻辑大概是这样:
import anthropic # 示例结构,实际以官方 SDK 为准
import base64
from PIL import ImageGrab
初始化客户端,替换为你的 API 地址
client = anthropic.Anthropic(
api_key="your_api_key",
base_url="https://api.884819.xyz" # 国内稳定访问通道
)
def take_screenshot():
"""截取当前屏幕"""
screenshot = ImageGrab.grab()
# 转为 base64 供模型识别
import io
buffer = io.BytesIO()
screenshot.save(buffer, format="PNG")
return base64.b64encode(buffer.getvalue()).decode()
def ask_model_what_to_do(screenshot_b64, task_description):
"""让模型分析截图并决定下一步操作"""
response = client.messages.create(
model="claude-sonnet-4-6", # 使用支持视觉的模型
max_tokens=1024,
messages=[{
"role": "user",
"content": [
{
"type": "image",
"source": {
"type": "base64",
"media_type": "image/png",
"data": screenshot_b64
}
},
{
"type": "text",
# 告诉模型当前任务和截图内容
"text": f"当前任务:{task_description}\n请分析截图,告诉我下一步应该点击哪里或输入什么。"
}
]
}]
)
return response.content[0].text
主流程示例
task = "找到页面上的'提交'按钮并点击它"
screenshot = take_screenshot()
next_action = ask_model_what_to_do(screenshot, task)
print(f"模型建议的下一步操作:{next_action}")
如果你想直接跑通这段代码,不需要排队申请官方访问权限——通过 [api.884819.xyz](https://api.884819.xyz) 可以直接接入,价格和官方同步,国内访问稳定,把 base_url 换成这个地址就能用,我测试用的就是这个通道。新用户注册即送体验 token,国产模型完全免费,没有月租。
内容创作者:用它做「截图苦力」
每次发文章要截图十几个步骤?让它帮你自动执行操作流程并截图存档。你只需要写一段「操作步骤描述」,它帮你把每一步的截图都存好,你直接取用。
这不是最酷的用法,但可能是最省时间的用法。
---
写在最后
它不是要替代你,是要替代你最烦的那20分钟重复操作。
这次实测让我对「AI 操控电脑」这件事的判断更清晰了:它已经越过了「玩具阶段」,但还没到「闭眼信任阶段」。现阶段最正确的使用姿势,是把它当一个需要你设计好边界条件的助手,而不是一个可以扔进去随便跑的自动化引擎。
但有一个问题,这次测试过程中一直在我脑子里转,我没有找到满意的答案:
当 Codex 在操控我的电脑时,它截的那些图,发给了谁?存在了哪里?我翻了官方文档,答案比我想象的模糊。你的屏幕上可能有邮件、密码、合同、聊天记录——这些内容在「感知-执行-验证」的闭环里,以截图的形式流向了哪里?
下一篇,我打算把这个问题问清楚。
---
本文由8848AI原创,转载请注明出处。关注8848AI,带你从零开始学AI。#AI工具 #Codex #屏幕自动化 #RPA #8848AI #AI实测 #工作效率 #人工智能