两条路,语义完全不同
这是最容易混淆的地方——「录制」之后有两种截然不同的产物:
选择原则:要长期复用选技能,要精确重现选轨迹。技能能适应变化但不保证逐帧一致;轨迹逐步一致但页面一变就断。
路径一:录制 → 技能(macOS)
它实际怎么工作
1
开始录制
你说「录一下我的操作」,专家调
event_stream_start。屏幕上出现一个悬浮「录制中」条,带停止按钮。录制是后台系统级进程:捕获所有应用、所有窗口的点击与输入。切屏、切应用、最小化聊天窗口都不会中断录制。2
边做边说
如果返回
audioRecording: true,麦克风同时在录你的语音解说。这一步值得做——你说出来的意图比从点击里猜出来的更可靠,专家生成技能的质量会明显提升。3
停止
点悬浮条上的停止按钮(推荐),或回到对话说「录完了」。两条路都会走到分析步骤。
4
专家分析并生成技能
专家读取事件文件、截图和语音转写,理解「你做了什么」和「为什么这么做」,然后用
skill_manage(action="create") 落成一个技能。这一步成功了才算录制完成。5
下次直接用
新会话里直接说技能对应的任务名,专家按技能执行——它会在运行时重新定位按钮和字段,不依赖当初的坐标。
录制产出了什么
会话目录在~/.profy/recordings/{sessionId}/:
read 工具分段读取。events.jsonl 常有数千行,一次读完会撑爆上下文,所以专家会按 100 行为一段抽样(开头、结尾、中间补齐),并优先看 app_switch / mouse_click / key_down,跳过 scroll / mouse_move 这类噪声。
路径二:CUA 轨迹录制与回放(跨平台)
轨迹录制不是自动开启的——必须你明确要求。开启后,每一个动作类工具调用(click / right_click / scroll / type_text / press_key / hotkey / set_value)都会写一个编号文件夹;只读工具(截图、列窗口、取窗口状态)不记录。
turn-NNNNN/(五位补零编号):
回放用
replay_trajectory({dir}):按字典序遍历 turn-NNNNN/,读 action.json,用记录的参数重新调用同一工具。两个可调参数:delay_ms(步间节奏,默认 500)、stop_on_error(遇错即停,默认 true)。
适用场景
把重复劳动变成一句话
把重复劳动变成一句话
每周从系统导数据、整理格式、发报告?录一次,之后一句话触发。这是技能路径最典型的用法。
教专家用一个它不熟的软件
教专家用一个它不熟的软件
内部系统、小众工具没有公开文档,演示一遍比解释十遍有效。语音解说在这里价值最大。
回归验证
回归验证
录一条轨迹作为基线,改动后重跑对比状态快照。这是轨迹路径的主场——它本来就是为回归 diff 设计的。
训练数据采集
训练数据采集
每个 turn 文件夹天然是一个
(状态, 动作, 新状态) 三元组。内置应用技能
内置应用技能
插件自带 6 个常用应用的操作技能:时钟、Numbers、Spotify、Notion、音乐、iPhone 镜像。这些不用你自己录。
关键数值
失败与对策
计费
录制本身不消耗积分(捕获在本机进行)。产生消耗的是专家分析录制内容和执行回放时的模型调用——读事件文件、看截图都是 token,长录制的分析成本明显高于短录制,这也是建议分段录的另一个理由。核对日期 2026-08-12。来源:
services/agent-runtime/src/plugins/builtin/record-and-replay/(plugin.json、tools/event_stream.py、skills/record-replay.md、skills/cua-recording.md)、apps/desktop/src/main/lib/recorder/event-stream.ts。相关
电脑操作
了解专家如何操作桌面应用
技能
了解技能怎么存、怎么被调用

