课程大纲
课程大纲系列主页
学习进度已完成 0/19
自动化与 Agent 术语速查表
入门进行中Computer Use Agent7 月 7 日更新
CUA 训练营 · 术语速查表
学到哪查到哪,整门课会冒出来的技术名词这一篇全收。普通词一行说清,核心术语多带一行「坑 / 要点」。想深入看对应周教案。
W?标这个词在第几周讲;贯穿表示全程都在用。- 「可以想成…」是帮你建直觉的类比,不是严格定义——别拿类比去较真。
- 核心术语(尤其第 7 节 Computer Use)按「定义 + 类比 / 坑 / 周次 / 链接」展开;其余保持一行速查。
- 查得最快——在浏览器 / 编辑器里按
Ctrl+F(Mac 是⌘F)直接搜中文或英文名;术语的中英文都写在加粗标题里,搜哪个都能命中。- 第 7 节末尾「官方 Computer Use 工具」子区是 Anthropic API 的实操术语(版本号、actions、坐标映射…),W9 拆官方实现时对着看。
- 这是一份 living document:随课程推进持续补充、修订,版本号、actions、链接都以最新一版为准——尤其 Computer Use 的工具版本变动快,务必回看官方文档。
目录
- 环境与沙箱 · 在隔离环境里安全练习
- Python 与代码基础 · 做 Agent 用得上的那点语法
- 版本管理 · 用 Git 管好逐周累积的代码
- GUI 自动化 · 让程序自己点鼠标、敲键盘
- 浏览器自动化 · 让程序自己开网页、填表单
- 反检测与稳定性 · 合法场景下让脚本跑稳、少被误拦
- 大模型与 Agent 核心 · Agent 的大脑、核心循环和官方 Computer Use 工具
- Agent 框架 · 用现成框架把 Agent 搭得更稳
- 工程化与生产 · 从「能跑」到「能放心交给它跑」
- CUA 特有 vs 传统自动化 · 同样是自动化,到底差在哪
1. 环境与沙箱
- 沙箱(sandbox)
W1·W13— 和你的真实系统隔离的练习环境,Agent 在里面操作出了问题也波及不到真实文件和账号,环境损坏了重建即可。本课第一周就搭。 - 终端(terminal)
W1— 靠打字下命令、而不是点图标来操作电脑的窗口。Docker / Git / SSH 都没有图标可点,只能在终端里用。Mac 是「终端.app」、Windows 用 PowerShell、沙箱里是桌面自带终端。 - 命令行(CLI / shell)
W1— 在终端里敲的那些命令的统称。本周够用的就四个:pwd(我在哪)、ls(这儿有什么)、cd(进出目录)、mkdir(建目录)。 - 路径(path)
W1— 文件 / 目录在哪。绝对路径从根写全(/Users/你/...);相对路径相对当前目录,.当前、..上一级、~家目录。要点:命令要在「对的目录」里敲,敲错地方就找不到文件——先pwd看清自己在哪。 - Docker
W1· 📖 docs.docker.com — 在本机快速启动一个「预装系统和软件、与主系统隔离」的轻量环境的工具,本课用它搭沙箱。 - 镜像(image)
W1— 装好系统和软件的只读模板,本身不运行。可以想成一张装好系统的光盘。 - 容器(container)
W1·W13— 用镜像运行起来、与主系统隔离的运行实例;可在其中自由操作,删除重建后回到初始状态。可以想成用光盘装好、正在开机运行的那台电脑。 - 仓库 / 镜像源(registry)
W1— 存放镜像供人下载的地方,本地没有就从这儿拉(pull)。默认在海外。可以想成下载光盘的应用商店。 - 拉镜像走代理(镜像加速)
W1— 解决「卡在 pulling 不动」:让 Docker 走本机的 Clash 代理直连 Docker Hub(Docker Desktop 的 Settings → Proxies 里填http://127.0.0.1:7890,Windows 填host.docker.internal,端口以 Clash 客户端显示为准)。别用国内镜像源——只同步部分镜像、会过滤、常失效,碰到没收录的直接拉不到。 - Clash(代理客户端)
W1— 本课统一用它给 Docker 拉镜像提速。要在客户端里拿两样:HTTP 代理端口(「General / 设置」页,常见 7890 / 7897,以客户端显示为准);**Allow LAN(允许局域网连接)**开关要打开——不开的话 Docker 的虚拟机连不到代理,Windows 必开。 - docker-compose /
docker-compose.ymlW1·W13— 一张配置单,写清用哪张镜像、开哪些端口、挂哪些文件夹,一条命令就能启动整个沙箱。 - 端口映射(port)
W1— 把容器里的端口接到你电脑的端口,如3001:3001,所以浏览器开https://localhost:3001才能看到沙箱桌面(webtop 还映射了 3000 作 http 备用)。冒号左边是你电脑的端口,被占用时改它。 - 数据卷 / 挂载(volume)
W1— 把容器里的某个文件夹接到你电脑的文件夹,数据保存在你的硬盘上,容器删除重建后数据仍在。 - 虚拟机(VM)
W1— 在你电脑里再开一整台完整电脑,重、慢、占地方。和容器都能隔离,但容器更轻、秒级启动。 - WSL2
W1— Windows 里跑 Linux 的子系统,Windows 版 Docker Desktop 依赖它,装 Docker 前先确认能开。 - webtop
W1· 📖 docs.linuxserver.io — LinuxServer 维护的「装好 Linux 桌面 + 浏览器」现成镜像,本课沙箱用它。2025-06 起已基于 Selkies(WebCodecs 流式、本地不需 TURN),浏览器走https://localhost:3001,首次自签证书点「继续前往」。本课用ubuntu-xfce(apt 装包、多架构含 arm64),并设PIXELFLUX_WAYLAND=false强制 X11——否则 Selkies 默认 Wayland,pyautogui 注入鼠标键盘会打不动。 - 自签证书(self-signed certificate)
W1— webtop 给https://localhost:3001用的是自己签发的证书,浏览器首次会拦「连接不安全 / NET::ERR_CERT_AUTHORITY_INVALID」——正常现象,点「高级 → 继续前往」即可,这是你本机的容器。 - Selkies / WebCodecs
W1·W13· 📖 selkies-project — webtop 现在「把桌面送进浏览器」靠的技术:容器端推流、浏览器用 WebCodecs 解码,低延迟、本地不需 TURN。(更老的 VNC / noVNC 是同类的远程桌面协议,webtop 3.0 前用的 KasmVNC 就是这一路,现已换 Selkies。) - SSH
W1· 📖 docs.github.com — 加密的远程登录方式,让你在自己终端里安全操作另一台机器(云主机、容器)。本课用它免密连 GitHub、连陪跑版云环境、连沙箱容器。连本地容器拿 shell 默认用docker exec,那不是 SSH。 - 密钥对 / 公钥·私钥(key pair)
W1— SSH 用的一对钥匙:公钥(.pub结尾)交给对方、可以公开;私钥只留本机,永远不外传、永远不提交进 Git。配上了才放行,一次配好往后免密码。ssh-keygen生成,放在~/.ssh/。 - known_hosts
W1— SSH 第一次连一台新机器会问 yes / no(确认对方主机指纹),输 yes 后记进~/.ssh/known_hosts,下次不再问。是正常确认,不是报错。 - Windows Sandbox
W13— Windows 专业版 / 企业版自带的一次性沙箱,关闭后即清空。家庭版不提供,用 Docker 方案替代。 - Hyper-V
W13— Windows 的虚拟化技术,W13 用它做能持久化(数据不丢)的 Windows 沙箱。 - 云沙箱 / Hyperbrowser
W13— 把沙箱放到云上,本地配置不够时用。Hyperbrowser 是其中一种云浏览器沙箱方案。 - seccomp
W1— Linux 限制容器能调哪些系统调用的安全机制。桌面镜像有时要放宽(seccomp:unconfined),隔离仍在容器边界内。
2. Python 与代码基础
只收做 Agent 早期反复用到的那几样,够用就行,别提前焦虑。
- 变量(variable)
W2— 给一个值起名字,方便反复用。 - 字符串(string)
W2— 一段文字,要带引号。文件名、路径、要输入的内容都是字符串。 - 数字 / 整数·浮点(int / float)
W2— 用来计数、算坐标、设等待秒数。"2"(字符串)和2(数字)不是一回事。 - 列表(list)
W2— 一排有顺序的东西,用[]。一批坐标、一批文件名就用列表装,下标从 0 开始。 - 元组(tuple)
W2— 和列表像的一组值,用(),常装固定搭配(如一个坐标的 x、y)。(200, 300)就是元组,取下标也从 0 开始。 - 字典(dict)
W2— 带标签的一组值,用{},按 key 取。描述一个对象的多个属性(用户名、超时、重试次数)用它。 - for 循环
W2— 把列表里的东西挨个拿出来处理,「遍历一批目标」的骨架。 - 解包(unpacking)
W2—for x, y in 坐标列表把每个(x, y)元组的两个值一次拆给x、y,比写点[0]、点[1]顺手。 - f-string
W3— 字符串前加f,{}里的变量直接填进文字:f"第 {i+1} 次失败"。比逗号拼接顺手。 - range()
W3—for i in range(3)按次数循环(i从 0 数到 2),不遍历列表、纯计数;重试逻辑就靠它。 - if / else 条件
W2— 让程序看情况办事,满足条件才做某一步。 - 函数(function)
W2— 把一段动作起名字、留几个参数,换参数就能复用。Agent 的每个能力最后都是一个函数。 - 缩进(indentation)
W2— Python 靠缩进分层,for/if下面要缩进,统一 4 个空格、别混 Tab。零基础最大的坑。 - 模块 / 导入(import)
W3— 把别人写好的功能包拿进来用,如import pyautogui。 - 文件 IO
W3— 读写文件:把数据读进来、把结果写出去。 - 异常处理(try / except)
W3— 代码出错时别直接崩,接住错误、处理或重试。自动化里到处要用。 - pip
W3— Python 的装包工具,pip install xxx把第三方库装下来。新版 Ubuntu 直装系统 Python 会报externally-managed-environment(系统保护),沙箱里加--break-system-packages装即可。
3. 版本管理
- Git
贯穿(W1 起)— 管代码版本的工具,改出问题随时退回上一个能跑的版本。W1 就建好仓库、讲全套(首个提交是沙箱配置),往后每周代码都进它。 - .gitignore
W1— 一个清单文件,写明哪些不进仓库(虚拟环境、截图、.env、私钥、挂载数据)。先写它再add,否则仓库会被垃圾和密钥塞满——最容易犯的错。 - 提交(commit)
贯穿— 把当前改动存成一个存档点,带一句说明(沿用type: 说明格式:feat / fix / chore / docs)。 - 推送 / 拉取(push / pull)
W1—push把本地提交传到 GitHub(用 SSH 地址免密),pull把远程改动拉回本地。 - 回滚(restore / revert / reset)
贯穿— 退回之前的状态:restore丢弃还没提交的改动,revert生成一个撤销某次提交的新提交。改崩了的后悔药。 - 分支(branch)
贯穿— 从主线拉一条副本单独改,不影响主线;满意了用merge合回。main始终留着能跑的版本。 - GitHub
贯穿— 把本地 Git 仓库托管到云上的平台,也用来备份和分享。连它用 SSH 密钥免密(见第 1 节 SSH)。 - 仓库(repo)
贯穿— 一个被 Git 管着的项目文件夹。本课每周代码都进同一个仓库(cua-camp),逐周累积成结课作品。 - 标签 / 发布(tag / release)
W16— 给某个提交打一个固定名字(如v1.0、w10),方便随时回到那个形态。成品公开仓库每周挂接合入后打wNNtag、W16 交付打v1.0——学员git checkout w10就能看第 10 周结束时成品长什么样。用语义化版本(MAJOR.MINOR.PATCH)。
4. GUI 自动化
- pyautogui
W3·W4— 控制鼠标键盘的 Python 库,能移动鼠标、点击、输入、截图。本课第一个自动化工具。 - 坐标定位
W4— 用屏幕上的(x, y)像素位置点击。最直接,但换分辨率、换机器容易点偏。 - 图像识别 / 截图定位
W3·W4— 先截一小张目标图(按钮的样子),在屏幕里找到它再点击,比固定坐标更稳定。W3 用locateCenterOnScreen初见,W4 做扎实。 - DPI 缩放
W4— 系统把界面放大显示(如 150%),导致脚本看到的坐标和真实像素对不上,跨机器常见坑。 - FAILSAFE
W3·W4— pyautogui 的紧急停止机制,把鼠标快速移到屏幕左上角即可中止脚本,防止失控(W1 的 hello world 就开着)。 - 失败重试(retry)
W3·W4— 某一步未成功就重试几次,是应对自动化不稳定的基本容错手段。W3 的safe_click就是它的最小版。 - 剪贴板粘贴法 / pyperclip
W3·W4— pyautogui 的write只支持英文 / ASCII,中文输入要先pyperclip.copy("文字")进剪贴板、再hotkey("ctrl","v")粘贴(macOS 用 command)。Linux 沙箱先apt install xclip,否则报 could not find a copy/paste mechanism。本课中文输入的标准做法。 - 辅助功能权限(Accessibility 授权)
W4— macOS 要在「系统设置 → 隐私与安全性 → 辅助功能」里授权,脚本才能控制鼠标键盘。注意这是权限开关,不是 W5 那个用代码读元素树的 Accessibility API——同名不同物,别搞混。 - UAC
W4— Windows 的用户账户控制弹窗,涉及管理员权限的操作会弹,自动化时要留意。 - 元素树(UI 元素树 / accessibility tree,即「无障碍树」)
W5— 把界面看成一棵有层级的树:窗口 → 工具栏 → 按钮 / 输入框,每个节点带角色(role)、名字(name / title)、值(value)。靠这些属性定位控件,不靠死坐标——这是「元素方式」的根。它本是给读屏软件用的,我们做自动化是搭现成便车。Windows / macOS / Linux 三平台各有一套实现(下),概念相通、API 不通用。 - UI Automation
W5— 元素树在 Windows 的实现:系统提供的接口,让程序「认出」窗口里的按钮、输入框直接操作,不靠固定坐标,更准、更稳定。 - uiautomation / pywinauto
W5— 两个用 Windows UI Automation 的 Python 库,用来找元素、点元素。 - Accessibility API(AXUIElement)
W5— 元素树在 macOS 的实现,Windows UI Automation 的对等物:用AXUIElement读控件的角色 / 标题 / 值(AXRole/AXTitle/AXValue)来定位、操作。 坑:别和 W4 的「辅助功能权限」搞混——那是系统设置里的授权开关(开了 pyautogui 才动得了鼠键),这是用代码读元素树的编程接口,只是凑巧都叫 Accessibility;另外不少非原生 app(Electron 之类)元素树暴露不全,拿不到就退回视觉。 - pyobjc / atomacos
W5— macOS 上访问 Accessibility API 的两条 Python 途径:pyobjc直接调系统框架(ApplicationServices),atomacos是更省事的封装。对应 Windows 的 uiautomation / pywinauto。 坑:老教程里的atomac已停更在 2013 年、只支持 Python 2,别装那个;用它的 Python 3 维护分支atomacos(pip install atomacos),底层一样走 pyobjc。 - AT-SPI / dogtail
W5— 元素树在 Linux 的实现,Windows UI Automation、macOS Accessibility API 的对等物:AT-SPI是接口,Python 用dogtail(高层封装,GTK / GNOME 支持好)或更底层的pyatspi2读控件。聚合助手在沙箱里读 xpad 便签走的就是这条。 坑:要装at-spi2-core并开无障碍总线(export GTK_MODULES=gail:atk-bridge后再起应用),否则连不上、读不到。 - 元素查找
W5— 按名字 / 类型 / 位置定位界面上的控件(按钮、输入框),而不是点固定坐标。 - xpad
W4·W5— 沙箱里的桌面便签程序(GTK3),聚合助手 notes 源的采集对象:W4 截图坐标取、W5 升 AT-SPI 元素取。便签内容存在随机文件名里,所以走 GUI 读、不直接读文件——视觉 / 元素采集都有正当对象。 - Inspect 工具 / Accessibility Inspector
W5— 看元素树长什么样的工具,写元素查找前先用它探一眼:Windows 用微软的 Inspect(Win SDK 自带),macOS 用 Xcode 自带的 Accessibility Inspector,Linux 沙箱用 accerciser——鼠标悬到控件上就显示它的角色、名字。 - 视觉 vs 元素
W5·W12— 两种操作思路。「看屏幕截图找位置」(视觉)对各类软件都通用,但容易点偏;「直接拿到控件」(元素)更准,但不是所有软件都提供。 坑:别非此即彼,真实项目里多半混着用(W12 的混合架构);拿不到控件再退回视觉。 - 何时不用元素
W5— 元素是工具不是信仰:自绘界面 / 游戏控件树读不到,退回视觉(W4);表格批量数据(Excel)用win32com/openpyxl直读,别在 UIA 元素树里一格格翻——有官方接口就别绕。
| 维度 | 视觉(看截图) | 元素(拿控件) |
|---|---|---|
| 通用性 | 任何软件 / 画面都行 | 要软件暴露控件树 |
| 精度 | 易点偏(靠坐标) | 准(直接命中控件) |
| 界面变化 | 较稳(换皮肤也认得) | 控件结构一变就失效 |
| 速度 / 成本 | 慢(要模型看图、花 token) | 快(本地查询) |
| 典型代表 | Computer Use、pyautogui 图像识别 | UI Automation / macOS Accessibility API、Playwright 选择器 |
5. 浏览器自动化
- Playwright
W6·W8· 📖 playwright.dev — 微软的浏览器自动化库,能自己开网页、点链接、填表单,自带等待、录屏、抓包。本课浏览器自动化的底座。 - auto-wait
W6— Playwright 自动等元素出现、可点了再操作,省掉手写sleep,脚本更稳。 - HAR
W6— 把一次网页会话的所有网络请求录下来的文件,用来回放、分析页面在跟服务器要什么。 - 录屏 / trace
W6— Playwright 把执行过程录下来,出错时回看到底哪步崩了。 - Browser-use
W6·W11· 📖 GitHub — 在 Playwright 之上加一层 AI,让大模型自己看页面决定点哪。本课用来对比「纯手写 vs AI 增强」。 - LangChain
W6· 📖 GitHub — 把大模型、工具、记忆等串起来的框架,Browser-use 等会接它。 - Stagehand
W8— 另一种「AI + 浏览器」方案(Browserbase 出品,写稿时 v3.x、MIT、TS 为主有官方 Python 实现),W8 拿来和 Browser-use 对照。给三个 AI 原语让你和确定性代码混着写:act("点登录")用自然语言做一步、extract(schema)按结构抽数据、observe()先看页面能做什么。和 Browser-use 是同类不同味(它偏「给个任务全包」、Stagehand 偏「给你原语自己拼」),本课是了解性对照、不进成品主线。 - headless / 有头
W6— 浏览器不显示界面、在后台跑叫 headless(快、省资源);显示界面叫有头(方便看、调试)。反检测里这俩有差别。 - storage_state / 会话复用
W6— 把登录一次的会话(Cookie 等)存成文件,之后无头复用,不必每次重登。Playwright 用storage_state存和带。正路是首登有头、人工过扫码 / 验证(first_login.py),之后无头复用——绝大多数场景到此为止,被拒才上 W7 的反检测。 红线:会话文件就是登录凭证,落~/.aggregator/sessions/(仓库外),.env放 key,二者绝不入库;录屏前查终端无 token 回显。 - Playwright 定位器(get_by_role / get_by_text)
W6— 按角色 / 标签 / 可见文字找元素,别用脆的 CSS / XPath。就是 W5「按 role + name 找控件」在浏览器里的形态;配合 auto-wait,定位即等待。 - 滴答清单 Open API / DIDA_TOKEN
W6— 待办源走官方接口直调:一个带Bearer DIDA_TOKEN的 HTTP 请求拿任务,不开浏览器(DIDA_TOKEN课前 OAuth 办、走 .env)。和 mail「开浏览器登录」成对照——有接口就别开浏览器。 - 手写 vs AI 增强(何时用 AI)
W6— 选型判断:页面稳定 / 高频 / 要可靠 → 手写 Playwright;页面未知 / 常变 / 一次性 → Browser-use;表格批量 / 有接口 → 直接 API。习惯:AI 先探路,手写来固化。 - 跨进程状态传递
W8— 桌面软件(pyautogui)和网页(Playwright)往往是两个独立进程,要把一边拿到的数据交给另一边——靠临时文件、剪贴板、本地小服务或数据库。W8 桌面↔浏览器混合场景的关键。 要点:能同进程传变量就别拆脚本、别上数据库;真要拆两段,中间放一个 JSON(UTF-8 +ensure_ascii=False,出错能打开看)是够用的上限。别按行 split 这种脆解析。 - 动静结合 / 三条路决策
W8— 一个任务片段该走哪条路的判断口诀:先问有没有接口(能直取就 curl_cffi,最省)、再问要不要渲染(要点按填单就 Playwright)、最后才动鼠标(桌面软件走元素、自绘界面走视觉)。「静」= 不开浏览器的接口直取,「动」= 真开浏览器 / 动鼠标。判断锚:这段数据不渲染页面能不能拿到?能→直取,不能→浏览器。 - 失败隔离
W8— 混合脚本稳定性的一半:把易翻车的段(尤其网页)包try,一段崩了保住上游已取的成果(写进中间 JSON、可--resume续跑),不带崩整条链。和 W12 的[[失败回退]]不同——回退是「换一条路把这件事做成」,隔离是「这条路崩了先保住别的成果、别全盘重来」。全源联跑时单源还要有超时上限,失败进「本轮跳过」而非干等。
6. 反检测与稳定性
这两节(W7 / W14)开篇都先划法律与道德边界,只在合法场景讲怎么跑稳、少被误拦,不碰明令禁止的目标、不教灰色服务。
- 合规边界(反检测)
W7·W14— 只在合法、低风险场景讲反检测:合法兜底=登自己的号、被风控误伤时让自动化继续取自己有权访问的数据;坚决不碰=绕付费墙、爬禁止站、批量注册、冒用身份;不教灰产=打码平台、代理黑产、成品级「过 Cloudflare」服务。强风控 + 高敏感的源(如账单)直接「该停手」、不自动化(反面教材)。边界比任何工具都重要。 - 机器人检测(bot detection)
W7— 网站识别「这访问是脚本不是真人」并拦截的机制,自动操作网站很快会撞上。 - 指纹(fingerprint)
W7— 网站把你浏览器的多项特征(分辨率、字体、显卡、时区…)组合成的标识,用来识别「又是这台机器 / 这个脚本」,即便换了 IP 也可能靠它被认出。常见细分:Canvas / WebGL 指纹(画图特征)、字体指纹、TLS / JA3·JA4 指纹(握手特征,curl_cffi 拟态的就是这层)。 - Cloudflare / Akamai / DataDome
W7— 主流的网站防护、反爬服务,2026 年常见的拦截来源。它们多维度打分、不看单一信号——所以反检测是组合拳、不是银弹。 - 行为模拟
W7·W14— 让脚本的鼠标移动、打字节奏更像真人,降低被判为机器的概率,但它不是银弹。 - Playwright Stealth
W7— 给 Playwright 打补丁、隐藏一些明显自动化特征的方案。会失效,要配合其它手段。 - Camoufox
W7— 浏览器层的内核级反检测:开源、重编译的 Firefox,从 C++ 内核改指纹(navigator / 字体 / WebGL… 由 BrowserForge 生成),包了 Playwright 的 API,补上 Stealth 在 Firefox 基本失效的空白。 坑:① 到 2026 它维护明显放缓、效果已衰减,arm64 沙箱可能跑不动(x86 录屏 / 选做);② 用 Camoufox Python 库(旧 launcher 已弃用)。别单押——这正是「别把成品押在单一 / 闭源内核上」的活教材。 - ruyiPage / isTrusted(闭源对照)
W7— 闭源二进制,号称从内核伪造isTrusted(让事件看着像真人触发)。原理可讲,但不押注闭源内核:看不到代码、不可审计、随时失效。开源可重编译的 Camoufox 才适合教学与可控落地。 - curl_cffi
W7·W8— 不开浏览器、直接发网络请求取数的 Python 库,能把 TLS 握手指纹(JA3/JA4)和 HTTP2 设置帧伪装成真实 Chrome 的样子,在握手阶段就不容易被识破,比普通requests更难被一眼拦下(用泛名impersonate="chrome"自动对齐最新版、别写死版本号;Python 3.10+)。可以想成requests的「会伪装浏览器指纹」版。 坑:只适合不用渲染页面、靠接口就能拿到数据的场景;要登录、点按钮、页面靠 JS 动态生成的,还得回浏览器。和 GUI Agent 动静结合——静态取数用它省开销,动态交互交给浏览器。 - CDP(Chrome DevTools Protocol)
W7— 控制 Chrome 的底层协议,Playwright、Puppeteer、nodriver 都靠它给浏览器下指令。可以想成「遥控浏览器的指令格式」。 - nodriver
W7— 〔★进阶〕绕开 Playwright 这类驱动层、用原生 WebSocket 直接对 Chrome 发 CDP 指令的库。Playwright / Puppeteer 连上浏览器的握手阶段会留固定特征(如发一串Runtime.enable),容易被 Cloudflare 这类校验秒拦;nodriver 直连能消掉这层驱动指纹。 坑:是硬核进阶、不是必学;它只解决「驱动层指纹」,IP、行为等其它维度照样要管,仍不是银弹。AGPL-3.0——商用有传染性,落生产先问法务;纯无头不稳;同类还有 zendriver(fork)、patchright,别押单一工具。 - 住宅代理(residential proxy)
W7— 用真实家庭宽带 IP 出口,比机房 IP 不容易被一眼识别,合法场景下用。 - Cookie 持久化
W7— 把登录状态(Cookie)存下来复用,不用每次重新登录,也更像老用户。 - 多账号画像
W7— 不同账号配不同的 IP、指纹、Cookie 互相隔离,不要用同一套环境登录多个账号。 - 验证码(CAPTCHA)
W7— 网站用来拦截机器人的人机验证。本课讲 AI 识别 + 人工接手,不教打码灰产。 - 高斯延迟
W14— 让每步之间的等待按正态分布随机,而不是死板的固定间隔,更像真人。 - 贝塞尔轨迹
W14— 让鼠标走平滑曲线,而不是从一点直接跳到另一点,模拟人手移动,同样不是银弹。 - 人类操作画像
W14— 把「真人怎么操作」整套特征(速度、停顿、轨迹、误触)拼出来照着模拟。 - 法律与道德边界
W7·W14— 反检测只在合法范围讲,两节开篇都先把这条线划清楚。
7. 大模型与 Agent 核心
- 大模型(LLM)
W9·W10— 能理解和生成文字、有的还能看图的 AI 模型。Agent 的「大脑」,负责看屏幕、做判断、决定下一步。 - 多模态 / 视觉模型
W9·W10— 不只读文字、还能看图(截图)的大模型。Computer Use 必须用能看图的。 - token
W1·W15— 大模型计费和计量的单位,文字、图片都折算成 token。每走一步都调一次模型、按 token 收费,所以要控成本。 - API
W6·W10— 用代码调用大模型服务的接口,要 API key,按调用量付费。 - Prompt(提示词)
W10— 你给大模型的指令和上下文。怎么写 Prompt 直接决定 Agent 靠不靠谱。 - Computer Use
W1·W9·W10· 📖 官方 — 让大模型「看屏幕截图 → 决定下一步 → 操作鼠标键盘」的能力,本课要自己实现它的核心循环。 坑:慢、贵、会出错,不适合高频、像素级精确、零容错的活——那些写确定性脚本更划算。 - 确定性脚本(deterministic script)
W1·W8— 步骤写死、每次跑结果都一样的传统脚本(直接用 pyautogui / Playwright,不调大模型判断)。是 Computer Use 的对照面:步骤固定、不用看屏幕理解的活,就用它,别上 Agent(W1 讲过这个区别)。 - 核心循环(agent loop)
W10· 📖 官方 — Agent 的心脏,一个闭环:观察(截图)→ 推理(模型想下一步)→ 动作(输出一个 action)→ 执行(你的程序点击 / 输入)→ 验证(再截图比对结果),然后回到观察、进入下一轮。官方把「不需要人介入、反复跑执行与返回结果」这段叫 agent loop。W10 亲手写一遍。 坑:模型常假设上一步成功就往下走,不复查;每步都要截图验证,必要时在 Prompt 里明确要求它「做完先自查」。
mermaidflowchart LR O[观察 · 截图] --> R[推理 · 想下一步] R --> A[动作 · 输出 action] A --> E[执行 · 点击/输入] E --> V[验证 · 再截图比对] V --> O
python# agent loop 伪代码(简化版,体现观察→推理→动作→执行→验证→反馈) history = [] screenshot = take_screenshot() # 观察:先看一眼屏幕 while True: reply = model.run(history, screenshot, # 推理:模型看截图决定下一步 tools=[computer_tool]) if reply.is_done: # 模型认为任务完成 → 收工 break for action in reply.tool_uses: # 动作:click / type / scroll / zoom … do(action) # 执行:在沙箱里真正操作 screenshot = take_screenshot() # 验证:拿一张新截图 history.append(tool_result(action, screenshot)) # 反馈:把结果回传给模型
- 五部件(截图器 / 大脑 / 解析器 / 执行器 / 验证器)
W10— 把核心循环拆成五块各自能独立写、独立测:① 截图器抓屏 + 编码 + 坐标映射;② 大脑(调模型)把截图+目标+历史发给 Claude 拿回下一步;③ 解析器把返回里的tool_use转成结构化动作;④ 执行器用鼠键真去点 / 输(坐标先过映射);⑤ 验证器执行后自查成没成。写 Agent 不是一口气写 200 行,是分别弄对这五块再串起来。 - max_steps(步数上限)
W10— Agent 循环第一行就该焊死的保险丝:没有它,模型卡在某步会无限循环、无限烧 token。任何 Agent 循环都要有步数上限;还可加「连续几步没进展就停」。 - 动作后验证(post-action check)
W10·W14— 脚本变 Agent 的关键那一步:动作做完要看一眼结果状态(元素出没出现、值变没变、有没有弹错误框),不是「发出了动作就算成」。W10 先做最朴素版(新截图回喂让模型自己看),W14 做硬(代码层确认 + 失败诊断 + 重试)。没有它,Agent 只是个「按模型说的做」的脚本;有了它,才会自查、会纠错。 坑:模型常假设上一步成功就往下走——「假成功」蒙混过关的根源就是不做动作后验证。 - 对话历史 / 上下文(context)
W10·W15— Agent 要记着前几步做了什么才能接着执行。历史越长、调用越贵,需要裁剪。每轮把assistant(模型动作)和user(执行结果 + 新截图)追加进messages、完整前缀每轮重发——这就是 Agent 越跑越贵的原因(截图一张张累积)。治理靠[[提示词缓存]] + [[context editing]] + [compaction]。
官方 Computer Use 工具(API 实操)
上面是通用原理,这里是 Anthropic 官方 API 的具体说法,W9 拆官方实现时按这套术语对。核心术语都按「定义 / 坑 / 链接」展开。
- computer 工具类型 / beta header
W9·W10· 📖 官方 — 调官方 Computer Use,要在工具定义里写type: "computer_20251124",并在请求头开 beta:anthropic-beta: computer-use-2025-11-24(配 2026 现行的 Claude Sonnet 5 / Opus 4.8 等 4.7+ 代次);旧模型用computer_20250124+computer-use-2025-01-24。版本号约等于「这套工具的接口版本」。 坑:工具版本号和 beta header 要跟模型代次对上,错配会直接报错;别照搬旧教程把computer_20250124/ 「必须缩到 1024×768」当唯一真理(那是老模型做法);它仍是 beta、版本变动快,以官方文档当前为准。 - adaptive thinking(自适应思考)
W10— 2026 的 4.7+ 模型(Sonnet 5 / Opus 4.8)控制「思考深浅」用thinking={"type": "adaptive"},让模型自己按难度决定想多少。返回里可能带思考文字(给你 debug 看),执行只认tool_use。 坑:这些模型移除了temperature和budget_tokens——照搬旧教程传temperature=0会当场报错;要更省可设低 effort,别再传那两个旧参数。 - 核心动作(actions)
W9·W10— 模型每轮输出一个动作让你执行。基础(所有版本):screenshot、left_click、type、key、mouse_move;增强(computer_20250124起):scroll、left_click_drag、right_click/double_click/triple_click、left_mouse_down/up、hold_key、wait;computer_20251124再加zoom。按修饰键(shift/ctrl/alt/super)是给点击、滚动动作传text参数。 坑:不同工具版本支持的动作不一样(如zoom只在computer_20251124),用了模型代次不支持的动作会出错。 - zoom(放大)
W9—computer_20251124新增,让模型以全分辨率看屏幕某块区域,定位小目标更准。要在工具定义里开enable_zoom: true,动作带region: [x1, y1, x2, y2](左上角、右下角)。 坑:不开enable_zoom用不了;它专为小目标定位补救,不必每步都缩放(多一次调用就多花 token)。 - display_width_px / display_height_px
W9— 工具定义里必填,告诉模型「屏幕多大」。官方建议:一般桌面 1024×768(即 XGA)或 1280×720,Web 应用 1280×800(即 WXGA)或 1366×768,别超 1920×1080(又慢、精度又掉)。还有可选display_number(X11 显示号)。 坑:这两个值必须和你实际发给模型的截图尺寸一致,对不上会导致点击系统性偏移。 - 坐标缩放 / 映射
W9·W10— 最容易踩的坑。API 把截图限制在最长边 ≤ 1568 像素、约 1.15 百万像素,超了自动降采样(如 1512×982 缩到约 1330×864)。模型在缩小后的图上给坐标,你必须按比例换算回真实屏幕再点击。 坑:点击整体偏移,十有八九是没映射回真实分辨率;macOS Retina 截图是逻辑分辨率的 2 倍,坐标记得除以 2。 - 截图与图像开销
W9·W15— 模型靠截图看屏幕,每张约占 1000–1800 input tokens。 坑:长循环里截图越堆越多、token 暴涨;靠压缩、裁剪、只在上下文里留最近几张控住(见[[成本控制]]、[[提示词缓存]])。 - tool_result / 反馈循环
W9·W10— 官方循环:模型回一个tool_use(动作)→ 你执行 → 把结果(主要是新截图)作为tool_result发回去 → 模型据此决定下一步。这就是「核心循环」在 API 层的样子,是有状态的多轮对话。 坑:执行完一定要把新截图作为tool_result回传,模型才知道发生了什么;漏传它就无从判断下一步。 - 视觉 grounding
W9·W12— 模型「看懂」截图、把「点登录按钮」对应到具体像素坐标的能力。它是纯视觉路线的根基。 坑:小目标、高分辨率下定位会偏,这是会点错的根源——靠zoom、坐标映射、动作后验证来补。 - grounding 专用 VLM(独立定位路)
W9·W12— 定位有两条路:一是 Claude 这样的全能模型包圆(一次推理既决策又吐坐标);二是把「定位」单拎出来交给 grounding 专用 VLM——给它一张图 + 一句「找搜索框」,它只回归一化坐标 /bbox、不掺决策,于是变成「通用大模型想下一步 + grounding 管在哪」的两段式。这条路国内可跑,是「没有 Claude key 怎么办」的真实回答:火山方舟doubao-1.5-ui-tars(字节,有免费额度)直连;开源权重看 Qwen3-VL 系(GUI-Owl / UI-Venus 基于它,国内可下)。别再说「UI-TARS 是开源最强」——它开源权重停在 1.5-7B,更强的只有 API。 坑:grounding 再准也翻不过 W12 的天花板(拿不到控件状态,见[[1c 天花板]])。 - 参考实现(reference implementation)
W9· 📖 GitHub — Anthropic 官方 anthropic-quickstarts / computer-use-demo:一个 Docker 容器(Xvfb 虚拟显示 + 轻量桌面 + Firefox / LibreOffice)+ 工具实现(tools/)+ agent loop(loop.py)+ Web 界面。 要点:W9 先把它跑起来体验,再读源码,别一上来啃代码。 - 安全与限制(allowed actions)
W9·W14— 官方明确建议:跑在专用 VM / 容器、给最小权限;别喂账号密码等敏感数据;网络限制到域名白名单;接受 cookie、付款、同意条款这类有真实后果的动作要人工确认(HITL)。 坑:模型可能被网页 / 截图里的文字指令带偏(prompt injection)——官方有分类器自动拦、必要时让模型先问你再动,但隔离和最小权限仍不能省。功能仍是 beta。
8. Agent 框架
- Claude Agent SDK
W9— Anthropic 的 Agent 工程化方案(Python 包claude-agent-sdk,2026 由原claude-code-sdk更名、自带捆绑 CLI),五件套 = Skills / Sub-agents / Hooks / MCP / Sessions。走读它是为了知道「框架把哪些活替你干了」,本课偏偏要 W10 从零写一遍循环,先造轮子再对比。 - Hooks(钩子)
W9— Agent SDK 五件套之一:在工具调用前后插钩子(PreToolUse/PostToolUse)做审批、日志、改写。W11 的分级审批就是这类「工具调用前拦一道」的思路。 - Sessions(会话存储)
W9— Agent SDK 五件套之一:可插拔的会话存储 + 断点续跑,长任务中断了能接上。和 W11 LangGraph 的[[checkpointer]]是同一件事的不同实现。 - Managed Agents(托管 Agent) / 自托管 vs 云托管
W9·W11— 2026 新格局:除了「自己跑 loop」(Agent SDK / 官方 demo,循环跑在你机器上、可控可定制),还有 Anthropic Managed Agents(beta)、OpenAI Responses 托管容器——云端替你跑 agent loop + 托管执行环境。选型多一问:循环跑在你机器上(自托管,可控、数据不出门),还是交给厂商(云托管,省运维、把执行交出去)? - Skills(技能)
W9— 把某类任务的做法打包成可复用的能力,给 Agent 按需加载。打包一个 Skill ≈ 一个文件夹,写清「什么时候用、步骤、要哪些工具」。 坑:一个 Skill 聚焦一类事、写清触发条件;塞太多反而让模型不知道何时用。 - Sub-agents(子智能体)
W9— 把任务拆给多个各管一块的子 Agent,分工协作。 坑:任务能切成独立子块、或想隔离上下文(别让一个 Agent 的长历史拖累全局)时才拆;拆过头会增加协调成本和 token,能不拆就不拆。 - Code Execution(代码执行)
W9— 让 Agent 写并跑代码来完成任务,而不只是点界面。 - MCP(Model Context Protocol)
W9— 一套让 Agent 统一接外部工具、数据源的协议。 - Harness(智能体 harness)
W9·W11— 把模型包成能干活的 Agent 所需的整套外围:工具(Tools)、提示词(Prompts)、文件系统、Skills、子 Agent、记忆(Memory)。模型是发动机,harness 是让它真正上路的底盘;Claude Agent SDK 给的就是一套现成 harness。 坑:效果好坏一半在 harness 不在模型;Agent 不行时先查工具、Prompt、记忆怎么给的,别只盯着换模型。
Skill vs Sub-agent 怎么选
| Skill(技能) | Sub-agent(子智能体) | |
|---|---|---|
| 是什么 | 一段「怎么做」打包成可复用能力 | 一个独立运行的子 Agent |
| 解决什么 | 复用做法、按需加载知识 | 拆分任务、隔离上下文 |
| 开销 | 轻(加载一段文档 / 指令) | 重(独立的对话和模型调用) |
| 何时用 | 同类操作反复出现 | 任务能切独立块、想隔离长历史 |
- ReAct / Plan-and-Execute
W11— 两种经典 Agent 套路。ReAct = 边想边做(推理与动作交替,走一步看一步);Plan-and-Execute = 先列完整计划再逐条执行。Computer Use 多偏 ReAct(屏幕随时在变),长任务可掺一点先规划。 - Memory(记忆)类型
W10·W11·W15— 三层:短期 = 当前对话的上下文窗口(context window,装着近几步);长期 = 跨任务存下来的知识 / 经验;状态持久化 = 把当前进度落盘,出问题能恢复(见[[持久化 / 回放]])。 - LangGraph
W11· 📖 GitHub — 用「状态机」方式搭 Agent 的框架,能暂停、恢复、让人中途介入。本课把 W10 的裸循环用它重写,装上三样:暂停键(interrupt)、存档点(checkpointer)、安全闸(分级审批)。用 1.x(1.0 于 2025-10 发布、强调零破坏性升级,核心 APIStateGraph/interrupt/ checkpointer 在 1.x 稳定);老教程的MessageGraph/ 0.x 写法别抄。 坑:别当「更高级所以必须用」——简单一次性任务 W10 的裸循环就够;值不值得上,看你要不要状态管理(暂停 / 存档 / 人在环)。 - State / Node / Edge
W11— LangGraph 的三个概念,正好对上 W10:State = 贯穿全程的数据字典(TypedDict),就是 W10 的history+state;Node = 一个函数,读状态、干一件事、返回状态更新(只返回改的键,存档快照才干净),W10 的「截图 / 问模型 / 执行」各是一个节点;Edge = 决定这个节点之后走哪,固定边(A→B)或条件边(看状态决定去向),就是 W10 里的if。 - 状态机(state machine)
W11— 把 Agent 的流程画成「节点 + 跳转」,每步走到哪、下一步去哪都明确。 - 中断点(interrupt)
W11— 在某步停下来等人确认或介入,再继续。HITL 靠它实现。节点里调interrupt(要问的东西),图会停在这、把状态存好、把问题抛出等人;人给了答复用Command(resume=答复)从中断那一行继续——不是重跑整个图,前面的成果都在存档里。 - checkpointer / thread_id
W11— LangGraph 的存档点:给图配一个 checkpointer(教学用InMemorySaver,进程一关即丢;跨重启用SqliteSaver/ Postgres),每个节点跑完自动存一次状态,崩了、停了都能恢复。thread_id是存档的钥匙——同一个 id 才能恢复同一次运行,换 id 就是新一次。 坑:① 恢复时节点从头重放(interrupt 之前的副作用会再执行一遍)——副作用放 interrupt 之后、或让节点保持纯函数;② 往状态里放自定义类(如成品的Item)要给 checkpointer 传登记过的序列化器,否则告警、未来版本直接拒绝;③langgraph dev调试模式强制内存 checkpointer,重启即丢。 - 持久化 / 回放
W11·W15— 把 Agent 每步的状态存下来,崩了能恢复、事后能一步步回放复盘。 - 六框架对照(CrewAI / AutoGen / OpenAI Agents SDK / Pydantic AI …)
W11— W11 给一张对照地图,重点不是记住每个框架、是学会看框架的四个问题快速定位新框架:① 管单 Agent 循环还是多 Agent 协作?② 有没有 human-in-the-loop(能暂停等人)?③ 状态怎么持久化?④ 接外部工具走不走 MCP? 坑(2026 时效):AutoGen 已并入 Microsoft Agent Framework 1.0(2026-04 GA)、进维护模式,新项目别选;Pydantic AI 是 2026 上升快的黑马;别只会背名字——会问「它还维护吗」才不踩坑。选型还多一维:自托管还是[[Managed Agents]]托管? - Skyvern
W12· 📖 GitHub — 一个浏览器 Agent 项目,W12 拿它的「视觉 + 元素混合」思路做案例对照。它的 Route Memorization:首跑让 LLM 探索(贵、慢、能应付没见过的页面),跑通后把路径固化成脚本(便宜、快、稳),页面改版脚本失效再回 LLM——把「探索」和「复跑」的成本分开,和本课「先元素后视觉」同一个思想(贵的能力当兜底、便宜的路当日常)。 坑:它自家 Web Bench 有利益相关,看思路别全信分。 - 混合架构(视觉 + 元素)
W12— 先用元素方式找,找不到再退回看屏幕,两种互补、一种不行自动切另一种。优先一条、失败才切(有明确条件:拿不到 / 置灰 / 超时),不是两条都跑取交集。 - 1c 天花板(视觉拿不到控件状态)
W12— 纯视觉三层局限里翻不过去的那层:1a 通用模型猜坐标不准、1b grounding 专用模型也有 OOD 失手,这两层换更强模型能缓解;1c 是天花板——置灰按钮框得再准,视觉也判断不了能不能点(enabled / value / checked / role 这些状态在无障碍树里、不在像素里)。这是「必须混元素」的根本理由,换什么视觉模型都绕不过。 - 失败回退(fallback)
W12·W14— 一种方法失败时自动换另一种或退回上一步,而不是直接崩。成品里每个源可配多条采集路(mail = Playwright 会话 / Camoufox 兜底),编排层按优先级试、真异常才换路(正常空数据是成功、不换),全失败才进「本轮跳过」。和 W8 的[[失败隔离]]互补:回退换一条路把这件事做成,隔离保住别的事不受连累。 - 失败诊断树
W14— 桌面 Agent 失败时先分类再决定怎么办,别盲目重试:弹窗挡路(关掉再做,可重试)、页面没加载完(等一拍,可重试)、界面改版(停下报告,重试没用)、任务有歧义(停下问清,见[[信息困境 / 主动澄清]])、确定性失败(密码错 / 权限没,立刻停)。不诊断就重试,等于盲赌。 - 信息困境 / 主动澄清(information dilemma / clarification)
W12·W16— 真实任务里信息常常不全或互相打架:指令模糊(「查上周数据做个图」没说看哪个指标)、跑到一半冒出新信息(本地多了张表、页面弹了窗)、要求冲突(让你往未授权网站填凭证)。应对不是硬猜,而是先把待确认的点列成一张小清单,用一个澄清回合问清楚,把不确定性降到零、再动手操作宿主机或发请求。 要点:动真格(改文件、发网络请求)之前澄清,代价最低;这也是[[失败回退]]的一种——信息不够就回退成「反问」,而不是带着猜测往下做。 - Eval 与基准(benchmark)
W11·W15·W16— 怎么衡量 Agent 好不好。公开基准:OSWorld(桌面任务)、WindowsAgentArena(Windows 跨应用)、WebArena(网页任务)、ScreenSpot-Pro(纯静态图定位、便宜,只评「点得准」不评端到端)。 要点(2026 时效):「SOTA 才 30–40% / 不足 21%」是 2025 年初的老黄历——OSWorld-Verified 前沿已到 83–85%、超过人类基线(约 72%)、接近饱和,叙事已从「能不能用」转向「怎么便宜稳定地用」。本课不照搬这些重型基准(对零基础过重、又费 token,且前沿已饱和证明不了你的场景),改用[[自建任务集]]评你自己的活。 - 自建任务集 / TCR / 步数效率
W15·W16— 放手前量化「它在我的场景行不行」:攒 10 来个真实任务(输入固定、期望明确、check客观可判定——关键词 / 结构 / 数值,别用「看起来对不对」),盯两个指标:TCR(任务完成率) = 做成几个 / 总数、步数效率 = 平均几步做完(每步都是一次模型调用,越少越省)。「我的场景完成率 6/10 → 9/10」比「OSWorld 多少分」对你有用得多。
9. 工程化与生产
- 错误处理三层
W15— 把错误分成客户端错(输入不对)、服务端错(内部崩)、外部错(网络、限流)分别处理,不一锅端。 - 重试 / 退避(retry / backoff)
W15— 出现临时故障(网络抖动、限流)时,等待一段时间再重试,等待间隔逐次拉长。 - 熔断(circuit breaker)
W15— 某个外部服务连续失败时,先暂停调用、等它恢复,避免雪崩式的连环失败。 - 自修正(self-correction)
W14·W15— Agent 靠「动作 → 截图 → 比对预期」发现这步错了,主动回退或换个方式重试,而不是带着错误往下走。 - 轨迹记录与回放
W15— 把 Agent 走的每一步都记下来,出问题能原样回放、看它哪步错了。 - 结构化日志
W15— 日志按字段记录(时间、动作、结果),而不是大段纯文本,方便检索分析。 - 可观测性 / 追踪(observability / tracing)
W15— 能随时掌握 Agent 在做什么、卡在哪一步、花了多少成本的整套手段;把一次任务的每步链路串起来看,就是 tracing。 - 快照 / 恢复(snapshot / restore)
W13·W15— 给沙箱存一个干净状态的快照,Agent 跑出问题时一键还原到快照,省去每次重建,长流程调试和反复试错很省时间。 - HITL(人在回路 / human-in-the-loop)
W1·W11·W15— 关键步骤(花钱、不可逆)让人确认了再继续。设计时想清楚拦哪几步(分档见[[分级审批]])、怎么把上下文摆给人看、人改完怎么回传给 Agent。错一次代价高的活必加。 - 分级审批
W11·W15— 按动作危险程度分三档决定要不要拦人确认:总是审批(转账、删文件、填账号密码这类不可逆或敏感操作)、从不审批(移动鼠标、截图这类无害动作)、条件触发(看金额、看目标域名临时判断)。本课接在 W11 的[[中断点]]上实现:命中高危就暂停、等人点同意再继续。 坑:被拒绝后别把审批用的临时消息留在历史里发回模型——要清掉、重建一条干净上下文,再引导它换做法或回退。 - 成本控制
W1·W15— CUA 最烧钱的地方是每轮重发完整历史 + 一张张累积的截图。三件套治它:静态长前缀锁进[[提示词缓存]]、[[context editing]] 清掉没人再看的旧截图、[[compaction]] 把老历史压成摘要;再加「能用便宜模型就用便宜的」([[模型路由]])。 - Prompt Caching(提示词缓存)
W15— 把每轮都重发的那段长前缀(系统提示、工具声明、固定操作说明)在服务端缓存住,命中的部分只按约 1/10 价格计费。在每步都要发长上下文 + 截图的 Computer Use 里尤其值钱。 2026 数字(别照搬旧教程):缓存写入 1.25×(5 分钟 TTL)/ 2×(1 小时 TTL)基础输入价、读取约 0.1×(省约 90%);最少可缓存 token 按模型分档——Opus 4.8/4.7 = 4096、Fable 5 / Sonnet 4.6 = 2048、老 Sonnet = 1024(低于门槛静默不缓存、不报错);每请求最多 4 个断点(cache_control: {"type": "ephemeral"})。回本点:5 分钟 TTL 两次请求回本、1 小时 TTL 需 ≥3 次。 坑:缓存是前缀匹配——前缀里任何一个字节变了(改系统提示 / 换模型 / 插一张新图),其后全部失效。CUA 命门一句话:稳定的(system + 工具定义 + 早期历史)放前面缓存,变化的(截图)追加在 messages 末尾。命中看usage.cache_read_input_tokens > 0。 - context editing / compaction
W15— 两种「把上下文瘦下来」的手段,和缓存配合治 CUA 的 token 大头。context editing(clear_tool_uses)清掉旧的工具结果 / 截图——CUA 里旧截图占大头且没人再看,只留近几轮。compaction:长对话把老历史压成摘要,腾出窗口。 - 幂等(idempotent)
W14·W15— 同一个操作重复执行、结果不变。有副作用的动作(提交订单、支付、发送)重试前要先查状态确认幂等,否则重试可能下三单。采集 / 读取类动作天然可重;成品的简报「同日重跑直接覆盖」也是幂等。 - 模型路由(model routing)
W15— 一个 Agent 里按步骤难度派不同模型:简单步骤用便宜小模型,关键决策才上贵的强模型。是[[成本控制]]的一种具体打法。 - 多 Agent 编排(orchestration)
W11·W16— 多个 Agent 怎么分工、传数据、谁先谁后。常见是一个主控 Agent 把任务分派给若干专职 Agent、再汇总。先把单 Agent 做稳,再考虑上多 Agent。 - 部署形态对比 / 云沙箱四象限
W13— 跑 Agent 的几种方式:本地 Docker 沙箱(便宜、可控、数据不出门、要自己维护)vs 上云。2026 云沙箱分四象限:代码沙箱 E2B(只跑代码、不要图形桌面)、浏览器云 Browserbase(精致)/ Hyperbrowser(走量)/ Steel(开放)(只操作网页、要托管无头浏览器)、全桌面 Scrapybara(完整桌面 + computer use)、厂商托管([[Managed Agents]]、连 loop 都托管)。判断锚:要不要完全可控、数据能不能出本地、有没有运维精力。别把「上云」等同「更高级」——小规模 / 教学自建常更合适;云服务变动快、有的要验活,引用前实测。 - 资源限制 / 数据卷持久化
W13— 成品专属 compose 的两处生产化:deploy.resources.limits(cpus/memory)给容器设上限,别让 Agent 跑飞把宿主机吃垮;会话 / 简报落具名卷(容器可以随时删、数据不能随容器删),删容器重建数据还在。配合PIXELFLUX_WAYLAND=false(强制 X11)、cron 预留,做到「新机器docker compose up五分钟跑起来」。 - cron / DOCKER_MODS
W13·W16— 让成品每天定时自跑:webtop 默认不跑 cron,compose 加DOCKER_MODS=linuxserver/mods:universal-cron起 cron 守护、读/etc/cron.d;crontab 填0 8 * * *每天 08:00 跑一轮落简报。 坑(实测):cron 环境极简、PATH 找不到 webtop 的 Python(在/lsiopyvenv 里)会报ModuleNotFoundError——crontab 顶部加PATH=/lsiopy/bin:...补全。 - fail-closed(失败关闭 / 无人值守安全)
W16— 拿不到人工确认时的安全默认:cron 定时跑没有终端,input()抛EOFError,敏感项(账单等)一律不放行、自动落「本轮跳过」——「敏感项 100% 过人工闸」在无人值守下的正确形态是不批、不是全批。想让敏感项入简报,交互跑一次确认。反义是 fail-open(拿不到确认就放行),在安全敏感场景是错的。
10. CUA 特有 vs 传统自动化
同样是「让程序自己操作」,Computer Use Agent 和传统脚本差在哪。一张表看清什么时候用哪种(W1 讲过这个区别)。
| 维度 | 传统 GUI / 浏览器自动化(pyautogui / Playwright) | Computer Use Agent |
|---|---|---|
| 怎么定位 | 写死坐标、找元素、按固定规则 | 模型看截图自己判断(视觉 grounding) |
| 界面变了 | 容易失效,得改脚本 | 多半能自己适应 |
| 速度 / 成本 | 快、几乎免费 | 慢、每步调模型按 token 收费 |
| 稳定性 | 步骤固定时很稳 | 会看错点偏,要靠验证 + 重试补 |
| 适合场景 | 步骤固定、高频、要精确 | 步骤会变、要看屏幕理解、能容错 |
一句话:固定流程用传统脚本,要「看屏幕随机应变」才上 Agent——这就是 Agent 和传统脚本的分界。两者也常混用:能写死的部分写死,真需要判断的交给模型。