Understudy:演示一次即可教会的桌面Agent
开源项目提供全新的Agent学习范式,通过演示而非编程来教导自动化。创新度高,实用价值强。
开源项目提供全新的Agent学习范式,通过演示而非编程来教导自动化。创新度高,实用价值强。
替补演员先观察,然后登台表演。
概览 · 中文展示页 · 产品设计 · 展示 · 贡献指南 · 中文 README
开源的本地 AI 智能体,只需一条指令,即可操作你的整台计算机——GUI、浏览器、Shell、消息应用。教它一次,它就能学会。每天使用,它会越来越快。可自带模型。
演示环境:macOS + 通过 Codex(OpenAI)使用 GPT-5.4。所有演示也适用于 Claude、Gemini 及其他提供商。完整列表请参阅“支持的模型”。
以下演示按照产品叙事顺序展开:先展示通用智能体,然后是计算机操作,接着是教学,最后是一条融合全部能力的完整自主流水线。
这是起点:Understudy 首先是一个通用型智能体。它能够研究 Web、控制浏览器、调用技能,并交付完善的成果——所有这些都只需一条指令。无须预先安排,也无须多步提示。只要说出你的需求即可。
示例提示词:“研究 Cowork,并在我的下载文件夹中创建一个科技风格的落地页。”
这就是计算机操作的实际形态:你通过 Telegram 从手机发送一条消息,Understudy 在 Mac 上接收消息,将文件转换为 PDF,打开桌面端 Telegram,找到正确的联系人并发送文件——整个过程全部通过 GUI 自动化完成。演示中并排展示了手机和桌面端的视图。
示例提示词:“将 Cowork 网页转换为 PDF,并通过 Telegram 发送给 Alex。”
Understudy 支持人们已经在使用的消息应用:Telegram、Discord、Slack、WhatsApp、Signal、LINE、iMessage 和 Web。
只需演示一次,即可教会它一项任务。Understudy 学习的是意图,而不是坐标——因此,即使 UI 重新设计、窗口尺寸发生变化,甚至切换到其他应用,技能仍然有效。你可以通过交互方式优化生成的技能,然后用自然语言调用它。重放时,智能体会自动泛化:Google 图片搜索变为浏览器自动化,下载操作变为 Shell 命令,而对原生应用(Pixelmator Pro)的控制仍由 GUI 驱动。
演示流程:/teach start → 在 Google 图片中搜索 Sam Altman → 下载照片 → 在 Pixelmator Pro 中移除背景 → 导出 → 通过 Telegram 发送给 Alex。然后通过交互方式优化技能。最后使用自然语言调用:“查找一张 [person] 的照片,移除背景,然后通过 Telegram 发送给 [contact]”——智能体会发现已经教会的技能,并通过自动升级后的方式重放。
如需查看教学功能实际产出的内容,请参阅此演示发布的技能。完整未剪辑录像。
这是所有能力的综合运用。一条提示词会触发一条包含六个阶段的流水线:智能体在 Chrome 中浏览真实的 App Store,通过 iPhone Mirroring 在真实的 iPhone 上安装 Snapseed,自主探索应用——发现它从未见过的背景移除和滤镜功能——使用 FFmpeg 在本地制作带旁白的竖屏视频,将其上传到 YouTube,最后清理设备。整个过程约一小时,无须任何人工干预。
这条流水线引入了工作区制品组合机制:一本执行手册负责协调工作器(确定性的浏览器/设备自动化)和技能(能够自行决策的智能体式子智能体)。每个阶段都作为独立的子会话运行,并拥有自己的上下文。中间的应用探索阶段是真正由智能体驱动的:51 条质量门禁规则为智能体提供指导,但它可以在一个从未见过的应用中自由导航。
示例提示词:“从零开始制作一段 Snapseed iPhone 应用评测视频:使用真实的 App Store 和 iPhone Mirroring,录制以证据为先的片段,重点展示背景移除和滤镜(例如黑白滤镜),添加英文旁白和字幕,导出竖屏视频,以不公开方式上传到 YouTube,清理设备,并分享结果。”
完整未剪辑录像。
截至 2026 年 3 月 26 日的快照。采用保守表述:信息来自官方文档;如果某款产品未明确宣传某项能力,相关措辞将保持克制。
OpenClaw — GitHub · 浏览器文档 · 定价
Cowork — 定价 · 计算机操作公告 · Cowork 网络研讨会
Vy — Vercept → Anthropic · Watch & Repeat 发布 · 工作流更新
Understudy — 本仓库(README、docs/)
Understudy 被设计为一种分层递进的系统——就像一名新员工逐渐成长为可靠同事时所经历的历程。
第 1 天: 观察事情是如何完成的
第 1 周: 模仿流程,提出问题
第 1 个月:记住日常流程,独立完成
第 3 个月:找到捷径和更好的方法
第 6 个月:预判需求,主动行动
这就是它被称为 Understudy 的原因——在戏剧中,替补演员会观察主演、学习角色,并在需要时登台接替。
五个层级分别对应这段历程中的一个阶段:
第 1 层 ┃ 原生操作软件 像人类一样操作任何应用——观察、点击、输入、验证
───────╋──────────────────────────────────────────────────────────────────────────────────
第 2 层 ┃ 从演示中学习 用户演示一次任务——智能体提取意图、验证并学习
───────╋──────────────────────────────────────────────────────────────────────────────────
第 3 层 ┃ 结晶化记忆 智能体从日常使用中积累经验,固化成功路径
───────╋──────────────────────────────────────────────────────────────────────────────────
第 4 层 ┃ 路由优化 自动发现并升级到更快的执行路径
───────╋──────────────────────────────────────────────────────────────────────────────────
第 5 层 ┃ 主动自主性 在不打扰用户的情况下,察觉自身工作区中的情况并采取行动
当前状态:第 1~2 层现已实现并可用。第 3~4 层已部分实现。第 5 层仍是长期发展方向。
每一层都依赖其下方的层级。没有捷径——系统必须凭自身能力逐层向上。阅读完整故事:概览 → | 中文概览 → | 产品设计 →
Understudy 的教学和结晶化流水线可以生成三类工作区制品,并将它们组合成更大型的自动化流程:
执行手册会将每个阶段作为子智能体启动——即拥有独立上下文窗口和工具的子会话。工作器是确定性的:它们遵循指令并生成结构化输出。技能由智能体驱动:它们接收目标和质量门禁,然后自行决定如何实现目标。这种分离方式让同一条流水线既能融合脚本化的可靠性,又能具备真正的自主性。
app-review-pipeline (playbook)
├─ Stage 1: appstore-browser-package (worker) → Chrome automation
├─ Stage 2: appstore-device-install (worker) → iPhone Mirroring
├─ Stage 3: app-explore (skill) → agentic exploration
├─ Stage 4: local-video-edit (skill) → FFmpeg + Python
├─ Stage 5: youtube-upload (skill) → Chrome automation
└─ Stage 6: app-review-cleanup (skill) → iPhone Mirroring
制品类型在每个 SKILL.md 的 metadata.understudy.artifactKind 字段中声明。执行手册会声明其子制品,而端到端测试工具会验证完整契约——必需的输出文件、清单模式以及各阶段的执行顺序。
状态:目前已在 macOS 上实现。
Understudy 不只是一个 GUI 点击器。它是统一的桌面运行时,能够在同一个智能体循环、同一个会话和同一条策略流水线中,混合使用计算机提供的所有执行路径:
规划器会决定每一步使用哪条路径。单个任务可能会浏览网站、运行 Shell 命令、在原生应用中执行点击操作并发送消息——所有操作都在同一个会话中完成。
GUI 定位——双模型架构:主模型决定要做什么,独立的定位模型决定要点击屏幕上的什么位置。它支持 Retina 显示屏的 HiDPI,并会针对较小的目标自动进行高分辨率细化,同时提供两种定位模式(简单预测,或通过模拟叠加层进行多轮验证)。定位基准测试:30/30 个目标均成功解析——包括明确标签、歧义目标、纯图标元素和模糊提示。
有关实现细节(坐标空间、稳定机制、捕获模式),请参阅“产品设计”。
状态:目前已实现。教学功能可以录制演示、分析演示、澄清任务、选择性验证重放过程,并发布可复用的技能。
显式教学:你有意向智能体展示如何完成一项任务。它不是宏录制器——Understudy 学习的是意图,而不是坐标。
/teach start 启动双轨录制(屏幕视频 + 语义事件)
→ 使用鼠标和键盘执行一次任务
/teach stop "file the weekly expense report" AI 分析录制内容 → 提取意图、参数、 步骤和成功标准 → 创建教学草稿 → 通过多轮对话完善任务
/teach confirm [--validate] 锁定任务卡片;可选择通过重放进行验证
/teach publish <draftId> [skill-name] 生成 SKILL.md → 热加载到活跃会话中
教学隐私说明:演示视频、事件日志和追踪数据默认存储在本地。不过,教学分析和 GUI 定位可能会将选定的截图、关键帧或其他图像证据发送给你配置的模型提供商。
发布后的 SKILL.md 是一种三层抽象:意图流程(自然语言步骤)、路径选项(首选/回退路径)以及 GUI 重放提示(仅作为最后手段,每次都基于当前截图重新定位)。即使 UI 重新设计、窗口大小发生变化,甚至切换到相似的应用,只要语义目标仍然存在,该技能就能正常工作。
草稿/发布流水线不再局限于一种制品形态。当前模式可以发布 skill、worker 和 playbook 工作区制品,不过目前通过演示教学最常生成的仍是可复用技能。
有关完整的教学流水线、证据包构建和验证细节,请参阅产品设计。
第 3 层——记住奏效的方法
状态:部分实现。Understudy 现在已经具备可用于日常重复工作的工作流固化闭环,但晋升策略和自动路径升级仍处于早期阶段。
隐式学习:当你日常使用 Understudy 时,它会自动识别反复出现的模式,并固化成功路径——无需显式教学:
用户目前的体验
你可以正常使用 Understudy,无需执行 `/teach` 命令。
同一工作区中的重复多轮工作会在后台被压缩。
当某个模式重复足够多次后,Understudy 会自动发布一个工作区技能,将其热加载到活跃会话中,并发送通知,告知你固化后的工作流已准备就绪。
从这时起,AI 智能体就可以像选择教学产生的技能一样,通过常规的 `## Skills (mandatory)` 流程选择这个新技能。
这个学习闭环刻意采取保守策略:如果模式还不够清晰,Understudy 会继续探索,而不是假装自己已经学会。
分段、聚类和技能合成目前主要由 LLM 完成。
晋升阈值仍采用启发式规则,尚未完全由策略驱动。
第 4 层风格的路径升级仍然有限;目前,固化主要生成可复用技能,而非全自动替换路径。
有关实现细节(固化流水线、分段、聚类和技能合成),请参阅产品设计。
第 4 层——随着时间推移变得更快
状态:部分实现。路径偏好、教学路径标注、浏览器自动回退以及能力感知路由目前已经可用。全自动路径发现、晋升和失败驱动的路径策略仍在开发中。
同一功能可以通过多种方式实现。以“发送一条 Slack 消息”为例:
最快 ──→ 1. API 调用 直接调用 Slack API(毫秒级) 2. CLI 工具 slack-cli send(秒级) 3. 浏览器 在 Slack Web 应用中输入并发送(秒级) 最慢 ──→ 4. GUI 基于截图定位,在 Slack 桌面客户端中点击、输入(数秒至 10 秒)
第 1 天从 GUI 开始——因为 GUI 是适用于任何应用的通用回退方案。随着使用数据不断积累,Understudy 会逐步发现完成同一功能的更快方式,并在安全验证后进行升级。
用户目前的体验
系统提示词会明确引导 AI 智能体选择更快的路径:直接工具/API > Shell/CLI > 浏览器 > GUI。
教学产生的技能会为每个步骤标注首选、回退和已观察到的路径,因此当存在更快路径时,AI 智能体可以跳过 GUI。
浏览器模式同时支持托管式 Playwright 和 Chrome 扩展中继;在自动模式下,它会先尝试中继,必要时再回退到托管式 Playwright。
GUI 能力矩阵会根据可用权限动态启用或禁用工具子集,因此 AI 智能体绝不会尝试自身无法执行的路径。
有关完整的路径选择机制、升级策略和未来方向,请参阅产品设计。
第 5 层——主动自治
状态:目前主要仍是愿景。调度和运行时界面已经存在,但被动观察、隔离工作区和主动自治仍有待实现。
信任需要赢得,而非想当然。Understudy 的终极目标并不是“等待指令”,而是成为一名能够长期观察并主动行动的同事。
渐进式信任模型——每项技能都从手动模式开始,只有在持续成功后才会晋升:
┌──────────┐ ┌───────────┐ ┌─────────┐ ┌──────────┐ ┌─────────┐ │ 终端 │ │ 仪表盘 │ │ WebChat │ │ Telegram │ │ Slack │ ... └────┬─────┘ └─────┬─────┘ └────┬────┘ └────┬─────┘ └────┬────┘ └──────────────┴────────────┴────────────┴────────────┘ │ 网关(HTTP + WebSocket + JSON-RPC) │ ┌────────────┴────────────┐ │ │ 会话运行时 内置工具 + 策略流水线 ┌──────────────────────┐ │ gui_* │ browser │ │ bash │ memory │ │ web │ schedule │ │ message│ subagents │ └──────────────────────┘
本地优先——截图、录制内容和追踪数据默认存储在本地;GUI 定位和教学分析可能会将选定的图像或关键帧发送给你配置的模型提供商
单一网关——终端、Web、移动端和消息应用都通过同一个端点连接
单一会话运行时——聊天、教学、定时任务和子智能体共享同一个循环
策略流水线——每次工具调用都会经过安全、信任和日志记录钩子
npm install -g @understudy-ai/understudy understudy wizard # 引导你完成设置
从 GitHub Packages 安装
cat >> ~/.npmrc <<'EOF' @understudy-ai:registry=https://npm.pkg.github.com //npm.pkg.github.com/:_authToken=YOUR_GITHUB_TOKEN EOF
npm install -g @understudy-ai/understudy understudy wizard # 引导你完成设置
从 GitHub Packages 安装时,请使用具有 `read:packages` 权限的 GitHub token。内置的 researcher 技能默认启用,可用于基于来源的多源研究和事实核查。
git clone https://github.com/understudy-ai/understudy.git cd understudy pnpm install && pnpm build pnpm start -- wizard
understudy daemon --start # 启动网关后台进程(或者:understudy gateway --port 23333) understudy chat # 终端交互模式(自动连接到正在运行的网关)
understudy dashboard # 在浏览器中打开控制面板
understudy webchat # 浏览器聊天界面 understudy agent --message "..." # 脚本/CI 单轮调用(需要网关)
所有安装方式均需要:
源码安装/开发需要:
macOS GUI 自动化(在 macOS 上使用 GUI 工具和演示教学时需要):
Understudy 目前在 macOS 上开发和测试。核心功能(CLI、网关、浏览器和渠道)在设计上支持跨平台,但原生 GUI 自动化和演示教学目前仍需要 macOS。Linux 和 Windows GUI 后端已在规划中——欢迎贡献。
Understudy 与模型无关。请使用 `provider/model` 配置模型(例如 `anthropic/claude-sonnet-4-6`)。
真实依据是当前 Understudy 运行时内置的模型目录,以及本地模型注册表中的所有自定义条目。该目录会随时间演进,因此本 README 有意避免固化一份详尽的提供商/模型矩阵。
请使用以下任一方式查看你的安装环境实际可以使用哪些模型:
understudy models --list understudy wizard
身份验证和提供商说明:
默认值:`openai-codex/gpt-5.4`。向导会从本地运行时身份验证/模型注册表中检测到的模型里进行选择。
macOS 上完整的基于截图定位的 GUI 自动化依赖原生辅助程序和两项系统权限。缺少权限时,GUI 工具集的部分能力会降级或隐藏,而不是所有 GUI 能力都会同等失败。
可启用的功能:鼠标点击、输入、拖动、滚动、按键/快捷键、绝对坐标移动光标,以及演示事件捕获。
如果缺少此权限:输入驱动类工具将被阻止。当“屏幕录制”权限可用时,`gui_observe` 等以观察为主的工具可能仍可正常工作。
打开“系统设置”→“隐私与安全性”→“辅助功能”
点击 `+` 按钮,添加你的终端应用(Terminal.app、iTerm2、VS Code 等)
它能实现的功能:为 `gui_observe` 捕获屏幕截图、进行 GUI 定位与验证,以及录制演示视频。
如果缺少此权限:依赖屏幕截图定位的工具将被阻止。`gui_key` 和 `gui_move` 等仅使用键盘/输入的操作路径仍然可用,而 `gui_scroll` 和 `gui_type` 仍可在无目标模式下运行。
打开“系统设置”→“隐私与安全性”→“屏幕录制”
点击 `+` 按钮,添加你的终端应用
重启终端应用,使权限生效
这两项权限必须授予运行 understudy 的终端应用,而不是 Understudy 本身。
如果授予权限后 GUI 行为仍不完整,请运行 `understudy doctor --deep`,检查原生辅助程序、定位功能可用性、浏览器运行时以及教学分析依赖项。
内置技能,以及你创建或安装的工作区技能。
understudy skills --list # 浏览可用技能 understudy skills install <name-or-url> # 从注册表或 URL 安装
/teach start → 演示 → /teach stop → /teach confirm → /teach publish <draftId>
8 个内置渠道适配器:Web、Telegram、Discord、Slack、WhatsApp、Signal、LINE、iMessage。
understudy channels --list understudy channels --add telegram
apps/cli CLI 入口,20 多个操作命令 packages/core AI 智能体会话运行时、配置、身份验证、技能、策略 packages/gateway HTTP + WebSocket 网关、会话运行时、Web 界面 packages/gui 原生 GUI 运行时、屏幕截图定位、演示录制器 packages/tools 内置工具:浏览器、Web、记忆、调度、GUI、消息 packages/channels 渠道适配器(8 个平台) packages/types 共享 TypeScript 类型定义 skills/ 内置技能模块 examples/ 教学演示和已发布的技能示例 docs/ 愿景与产品设计文档
pnpm install # 安装依赖项 pnpm build # 构建所有软件包 pnpm test # 运行测试 pnpm lint # 使用 oxlint 进行代码检查 pnpm typecheck # 对所有软件包进行类型检查 pnpm check # 完整验证:构建 + 代码检查 + 类型检查 + 测试
Understudy 借鉴了多个杰出开源项目的理念和代码:
特别感谢 Mario Zechner 提供的 `pi-agent-core` 基础,它为 Understudy 的 AI 智能体循环提供支持。
感谢所有为 Understudy 做出贡献的人。
贡献指南请参阅 `CONTRIBUTING.md`。
我们正在以下领域招募贡献者:
GUI 后端——为 Linux(AT-SPI)和 Windows(UIA)提供原生 GUI 支持
技能——为热门应用和工作流开发新的技能模块
路由发现——自动检测 API 并实现升级逻辑(第 4 层)
教学改进——更完善的证据包分析与验证
文档与翻译
观察 → 学习 → 记忆 → 优化 → 预判
这就是整个产品。