任务录制

录制不是"录宏",而是采集你在界面上的焦点与点击轨迹,再把它变成一份可读、可改的 skill 草稿。

怎么录

node apps/recorder/main.ts --seconds 15 --out .demo/recordings/rec.jsonl

录制期间正常操作电脑。它采集三类事件:

鼠标钩子跑在独立 STA 线程上,带自己的消息循环——这是 PowerShell 里能让低级钩子生效的关键。

两种模式

| 模式 | 做法 | 代价 | | --- | --- | --- | | events(默认) | UIA 焦点 + 结构变化回调,靠 Application.DoEvents() 派发 | 15 秒会话只产出 8 条事件;同样时长轮询会刷出约 50 条重复焦点 | | poll(-Poll) | 每 300 毫秒采样焦点 + 顶层窗口 | 事件注册失败时自动回退;受限机器上也能用 |

注册失败时录制器会把原因打到 stderr 并自己退回轮询——一次录制不会因为事件 API 的问题直接失败。

只写三类事件,都是真有信息量的:焦点变化、顶层窗口出现、左键点击(带光标下的元素)。

怎么变成 skill

node scripts/draft-skill.ts --recording .demo/recordings/rec.jsonl --name my-skill --only "Notepad"

生成规则:

窗口检测按 窗口标题 + 进程号 去重,所以"同一个应用又开了一个同名窗口"也算新窗口——这是实测踩出来的:只按标题去重会把第二个记事本窗口漏掉。

预览:

node apps/cli-demo/run.ts --skill packages/skills/my-skill/index.ts --mode preview

草稿不是成品

自动推断只覆盖"输入"这一类。点击之后的断言仍然是空的(post: []),因为"点了以后应该发生什么"需要人判断:

补完这些,草稿才是 skill。

已知限制

下一步