Cutaway 演示录制器

让你的编码代理把刚做完的界面录成带缩放、光标和 MP4 成片的精致演示。

Star 数
★ 45
最近更新
10 天前
License
MIT
主语言
JavaScript

30 秒速览

可在哪里用
通用 · 跨平台Codex · Claude Code
开始前需要
Node.js 22+Chromium(通过 npx playwright install chromium 安装)FFmpeg(通过 ffmpeg-static 随安装提供)Shell / 命令行网络访问本地文件系统
典型场景
开发者提交 PR 前需要一段能直接贴进 GitHub 的界面改动录屏,可用 --width 1280 --height 720 --quality standard 压到 10MB 以内。
主要局限
仅一个 Chromium 标签页:不支持弹窗、原生窗口、拖放、音频和摄像头,自定义 canvas/iframe 光标也不会被捕获。

这个 Agent 能做什么,适合哪些场景?

Cutaway 是一个本地运行的演示录制工具:你写一份 JSON 计划,它用 Playwright 驱动 Chromium 执行点击、输入、上传、滚动等步骤,再用 Skia 合成画面、FFmpeg 编码成 MP4。安装脚本会把仓库放到 ~/.cutaway,并把技能链接进 Claude Code 与 Codex,因此你可以直接对代理说 /cutaway record the checkout flow。产物包括 video.mp4、poster.png、无损帧 frames/*.png,以及 timeline.json、render.json、camera.json、workflow.json 等过程文件。它支持桌面浏览器和 Playwright 设备列表中的竖屏手机(含触摸指示、状态栏和 iOS 键盘),还能用 frame 子命令给单张截图套上同样的窗口或手机外框。整个流程不需要任何 AI 模型或云端服务,但每一步都是真实执行的。

CLI 入口是 src/cli.mjs,有三个子命令:record 读取 JSON 计划(url、viewport、device、captureScale、hide、colorScheme 等字段)后启动 Playwright Chromium,按 steps 依次执行 click、type、upload、focus、scroll、press、wait(手机上为 tap、swipe),每步可用 expect 断言成功元素、pause 控制停留、hold 控制长按时长;render 对已保存的录制重新导出,可调 --width/--height、--fps、--quality、--zoom、--blur、--cursor-size、--padding、--preset、--window、--keys、--pacing;frame 给外部截图(如 agent-browser screenshot 的产物)加上浏览器窗口或手机外框。录制阶段会同时写出 timeline.json、camera.json、workflow.json,导出阶段写 render.json 和 video.mp4、poster.png、frames/*.png。相机按 Screen Studio 风格自动推近正在操作的小控件,光标带弧线轨迹、Fitts 定律时长和按下反馈,无操作的等待时间会被加速。

  1. 开发者提交 PR 前需要一段能直接贴进 GitHub 的界面改动录屏,可用 --width 1280 --height 720 --quality standard 压到 10MB 以内。
  2. 复现一个 bug 并希望评审者看到真实操作路径时,用 expect 断言成功状态,录制会在步骤失败处中止。
  3. 移动端适配完成后,用 device: "iPhone 15 Pro" 加 tap/swipe 步骤录出竖屏 1080×1920 演示,含触摸指示和 iOS 键盘。
  4. 在 Claude Code 或 Codex 中让代理演示它刚写完的功能:/cutaway record the checkout flow 或 $cutaway。
  5. 只做设计评审时,用 frame 子命令把一张 viewport 截图包装成带 Safari 窗口和壁纸的静态图。
  6. 需要在无网络的本地 mock 应用上验证录制效果时,直接跑 examples/demo.json 或 examples/mobile-demo.json。

如何安装或部署这个 Agent?

需要 Node.js 22+,其余依赖(FFmpeg、Chromium)随安装脚本一起装好。

curl -fsSL https://raw.githubusercontent.com/half144/cutaway/master/install.sh | bash

安装脚本会把 Cutaway 放到 ~/.cutaway,安装依赖和 Chromium,并在检测到 Claude Code(~/.claude/skills)或 Codex(~/.codex/skills)时把技能链接进去。用 CUTAWAY_HOME 可改安装目录;安装后每天首次运行时会自动快进到 master 最新版。

从克隆安装:

git clone https://github.com/half144/cutaway.git && cd cutaway
npm ci
npx playwright install chromium
npm run demo
node scripts/install-skill.mjs
ln -s "$PWD/skills/cutaway" ~/.claude/skills/cutaway

卸载:

rm -rf ~/.cutaway ~/.claude/skills/cutaway ~/.codex/skills/cutaway

如何使用这个 Agent?

写一份 JSON 计划,描述一个人会怎么操作:

{
  "url": "http://localhost:3000",
  "hide": ["nextjs-portal"],
  "steps": [
    { "action": "click", "selector": "#edit" },
    { "action": "type", "selector": "role=textbox[name=\"Title\"]", "text": "New title" },
    { "action": "upload", "selector": "button:has-text(\"Choose cover\")", "file": "cover.jpg" },
    { "action": "click", "selector": "#save", "expect": "#saved-message" },
    { "action": "focus", "selector": "#updated-title", "duration": 1.5 }
  ]
}

选择器使用 Playwright locator,每个必须唯一匹配一个元素,模糊或缺失都会中止录制。登录后的应用可用 --storage-state /path/session.auth.json 复用已保存的 Playwright 会话。

跑完整流程:

node ~/.cutaway/src/cli.mjs record ~/.cutaway/examples/demo.json --out /tmp/cutaway-demo

只采集或重新导出:

node src/cli.mjs record plan.json --out recordings/take --capture-only
node src/cli.mjs render recordings/take --width 1280 --height 720
node src/cli.mjs render recordings/take --preset midnight --zoom 2

给截图加外框:

agent-browser set viewport 1440 810 2
agent-browser open https://app.example.com/reports
agent-browser screenshot /tmp/reports.png
node src/cli.mjs frame /tmp/reports.png --url https://app.example.com/reports

这个 Agent 有哪些优点和局限?

优点
  • 全程本地:Playwright + Skia + FFmpeg 三步链路,无云端上传、无 AI 模型,源码和产物都在自己机器上。
  • 同一份 JSON 计划可同时用于桌面和手机:加 device 字段并改用 tap/swipe 即可得到 1080×1920 竖屏演示。
  • 失败即停:expect 断言未满足、选择器模糊或元素缺失都会终止录制,导出会拒绝不完整的会话。
  • record 与 render 解耦:可以先 --capture-only 采集,再反复以不同 --preset/--zoom/--width 重导出,不必重跑步骤。
  • 安装脚本会自动把技能链接进 Claude Code 和 Codex,并每天自动快进更新(CUTAWAY_NO_UPDATE=1 可关闭)。
局限
  • 仅一个 Chromium 标签页:不支持弹窗、原生窗口、拖放、音频和摄像头,自定义 canvas/iframe 光标也不会被捕获。
  • 页面动画按浏览器节奏采集,60fps 输出不等于 60 个不同应用帧;滚动只能靠慢放补偿。
  • 合成与编码都在 CPU 上完成,没有 GPU 合成和硬件编码,长录制导出耗时明显。
  • 录制会真实执行每一步操作,README 明确警告本地前端仍可能指向生产 API 或数据库,保存/支付/发送类步骤需自行确认落点。
  • 移动端只覆盖 Chromium 模拟的竖屏手机,不含 Safari/WebKit 渲染差异,也不支持平板。

这个 Agent 与同类方案有什么区别?

README 明确把 Screen Studio 作为视觉参考,并声明 Cutaway 与其无关联、也不试图对标它的编辑器:Screen Studio 是带编辑界面的商业桌面应用,Cutaway 则是从 JSON 计划出发、由代理触发、纯命令行本地导出的工作流。

与相关度最高的同类 agent 并排比较关键指标。

Agent 源码审查 形态 / 费用 Star 最近更新 主语言 完整支持的平台
Cutaway 演示录制器 当前 47 · 缺口较多 — ★ 45 10 天前 JavaScript Codex · Claude Code
MCO 73 · 存在缺口 命令行工具免费 + 模型费 ★ 531 2 天前 Python Codex · Claude Code
NTM(Named Tmux Manager) 73 · 存在缺口 命令行工具免费 + 模型费 ★ 454 2 天前 Go Codex · Claude Code
Puppetmaster 68 · 存在缺口 命令行工具免费 + 模型费 ★ 467 今天 Python Codex · Claude Code

FollowAgents 如何评估这个 Agent?

FollowAgents 源码审查 · FARS-2.1
缺口较多
47/ 100 五分制 2.4 / 5
信任安全 12/29
可靠稳定 6/14
适用触发 9/18
规范维护 10/18
有效结果 7/13
证据核验 3/8
查看各维度的扣分理由
信任安全12 / 29 · 2.1/5

README 明确说明全部本地运行、无云端上传,且警告录制会真实执行保存/支付等操作,数据流透明度较好(2)。但安装脚本以 curl | bash 方式从 master 拉取并每日自动 fast-forward 更新,属于隐式远程代码执行与供应链风险,least_privilege 与 user_confirmation 仅得 1;依赖仅列出 playwright、@napi-rs/canvas 与 ffmpeg-static,未见锁文件或审计证据,dependency_security 得 1;录制会真实写入目标应用,external_effects 与 rollback 缺少撤销机制说明,各得 1;sensitive_data_handling 仅提到密码字段不记录键盘字符,未覆盖 storage-state 会话文件保护,得 1;source_attribution 对 Screen Studio、shadcn、agent-browser、Apple 壁纸等来源标注清楚,得 2。

可靠稳定6 / 14 · 2.1/5

README 对动作、选项、默认值描述一致,self_consistency 得 2;依赖依赖安装时下载 Chromium 与 FFmpeg,离线或镜像不可用时不可用,dependency_availability 得 1;失败信息仅笼统说明选择器歧义/元素缺失会中止录制,未给出具体错误格式,failure_messages 得 1。

适用触发9 / 18 · 2.5/5

面向编码 agent 录制演示与 PR 证据,场景描述充分(2);Limits 章节明确列出弹窗、音频、GPU、iframe 光标等边界(2);触发方式依赖 /cutaway 或 $cutaway 技能链接,缺少精确触发条件与冲突处理说明,trigger_precision 得 1;仅支持 Node 22+ 与 Chromium,未说明 Windows/Linux 差异,environment_fit 得 1。

规范维护10 / 18 · 2.8/5

README 结构清晰、目录与章节完整(2);安装、克隆、卸载步骤齐全(2);版本号 0.2.0 但无 CHANGELOG,naming_stability 与 versioning_changelog 各得 1;示例与 FAQ 丰富(2);Limits 明确(2);MIT 许可证完整(2);维护责任仅指向未验证发布者 half144,得 1。

有效结果7 / 13 · 2.7/5

输出为 MP4、poster、timeline 等,可直接用于演示与证据(2);相比手工录屏提供拟人光标、镜头与手机模拟,边际价值明确(2);但 CPU 合成编码、依赖 Chromium/FFmpeg 下载,成本收益仅得 1。

证据核验3 / 8 · 1.9/5

README 引用 examples 与 docs 文件,但本次仅提供 README、LICENSE、package.json,无法交叉核对,claim_traceability 与 cross_source_corroboration 各得 1;文档中事实与宣传性描述(如“polished”)混排,fact_inference_separation 得 1。

风险与缓解建议
  • 安装脚本通过 curl | bash 从 master 拉取并每日自动更新,属于隐式远程代码执行,建议固定版本或校验哈希。
  • 录制会真实执行保存、支付、发送等操作,且未提供回滚机制,请先在隔离环境验证目标应用。
  • storage-state 会话文件与录制帧可能包含敏感信息,README 未说明其保护措施。
  • 依赖 Chromium 与 FFmpeg 在安装时下载,离线或镜像不可用时无法运行。
  • 发布者身份未经验证,维护责任与更新路径不明确。
证据充分度:低 评估于 2026年10月9日 审查版本 89b3f855d879
查看完整评分方法 →

常见问题

需要付费订阅或 API Key 吗?
不需要。项目是 MIT 许可,不调用任何 AI 模型或云服务,也不产生按次费用。FFmpeg 由 ffmpeg-static 在安装时下载,按 GPL 单独授权;用 npm run wallpapers 导入的 macOS 壁纸属于 Apple,不在 MIT 覆盖范围内。
它会不会在我的应用里真的写出数据?
会。录制器会真实执行计划里的每一步,README 专门警告:即使是本地前端,也可能指向生产 API 或数据库。录制保存、支付或发送消息的步骤前,请先确认它写入的位置。
可以录 iPhone 上的 Safari 吗?
不可以。手机模式是用 Chromium 按 Playwright 设备列表模拟的(如 iPhone 15 Pro、Pixel 7、Galaxy S24),带触摸、状态栏和 iOS 键盘,但拿不到 Safari/WebKit 的渲染特性,也不支持平板。
录制中途某一步没生效会怎样?
录制会立即停止。选择器匹配到多个元素、找不到元素,或 expect 指定的元素未出现,都会终止本次会话,并且导出阶段会拒绝不完整的会话。
要装多大的依赖,需要 GPU 吗?
需要 Node.js 22+,安装脚本会一并装好 Chromium 和 FFmpeg,无需 GPU。合成与编码全部在 CPU 上完成,所以长视频导出会更慢,但普通 PR 级别录屏用 --quality standard 会快约 3 倍。
在 GitHub 查看 ↗ 安装 ↓

对比同类 Agent

用同一套 FARS 评审,横向比较这个 Agent 所属的短名单。

相关 Agents