Skill Recorder如何在Windows上捕获屏幕事件Koffi FFI与UI Automation实现完全指南【免费下载链接】skill-recorderDesktop app that records your on-screen work session and uses the GitHub Copilot CLI to reconstruct it as an intent ordered steps, then builds a reusable Skill or Automation for Microsoft Scout, Microsoft Copilot Cowork, or Copilot Studio.项目地址: https://gitcode.com/gh_mirrors/sk/skill-recorderSkill Recorder 是一款跨平台macOS Windows桌面应用它在 Windows 上用Koffi FFI 直接调用 Win32 API捕获窗口切换与标题事件用UI Automation读取浏览器地址栏 URL再交给 GitHub Copilot CLI 重建为意图 有序步骤最终生成可复用的 Skill 或 Automation面向 Microsoft Scout、Copilot Cowork、Copilot Studio。本文带你彻底看懂它在 Windows 上是如何捕获屏幕事件的无需深入代码也能理解全貌。Windows 上各数据源的捕获机制一览Skill Recorder 的核心录制控制器、事件总线、会话存储是平台无关的只有从操作系统里取数据这一层因平台而异。在 Windows 上各事件源的工作方式如下事件源Windows 上的实现机制与 macOS 的差距需要权限吗应用切换Koffi 调用 Win32user32/kernel32完全一致不需要窗口标题Koffi 调用 Win32user32完全一致更好无需授权不需要浏览器 URLUI Automation 读取地址栏powershell.exe托管功能可用但非字节级精确不需要剪贴板Electron 剪贴板 API完全一致不需要屏幕视频 帧desktopCapturer Chromium 快照 Sharp完全一致屏幕录制语音口述可选隐藏窗口getUserMedia 离线 Whisper完全一致麦克风 一个关键点窗口标题在 Windows 上不需要任何系统权限macOS 则需要辅助功能授权这得益于 Koffi 直接走原生 Win32 API。Koffi FFI零权限捕获窗口事件窗口切换和标题的捕获全部由 electron/collectors/windows-active-window.ts 完成。它通过 Koffikoffi.load()见 windows-active-window.ts#L14-L16直接加载三个系统库user32.dll——GetForegroundWindow当前前台窗口、GetWindowTextW窗口标题、GetWindow遍历子窗口等kernel32.dll——OpenProcess/QueryFullProcessImageNameW把窗口还原到它的宿主进程得到应用名dwmapi.dll——DwmGetWindowAttribute获取窗口真实边界含无边框扩展区域三个值得一提的工程细节预编译 FFI无需编译器。Koffi 自带win32-x64与win32-arm64的预编译 N-API 包Windows 用户装完即用依赖声明见 package.json。UWP 应用识别。Windows 现代应用UWP的前台窗口实际挂在applicationframehost.exe名下windows-active-window.ts#L68-L75 会通过findUwpOwner()向下遍历子窗口找到真正的宿主进程再映射为友好名称如 Windows app。常见应用友好命名。chrome → Google Chrome、msedge → Microsoft Edge、code → Visual Studio Code等windows-active-window.ts#L49-L59让事件流对人和 AI 都可读。UI Automation读取浏览器地址栏 URL浏览器 URL 是标题之外最有价值的信号。Windows 没有 macOS 那样的 AppleScript 脚本桥所以 electron/collectors/windows-url-provider.ts 选择了另一条路——UI AutomationUIA托管进程UIA 的 .NET 程序集UIAutomationClient/UIAutomationTypes只在 Windows PowerShell 5.1每台 Win10/11 自带powershell.exe里可靠可用。加载一次约需 0.5–1 秒因此 Skill Recorder 启动一个常驻 PowerShell 托管进程只加载一次 UIA之后每收到一行 stdin 请求就返回一行结果脚本见 windows-url-provider.ts#L56。找地址栏脚本从最前台窗口的 UIA 控件树出发做广度优先遍历寻找Edit控件且AutomationId为omnibox/addressEditBox/urlbar-input或名称含 address的控件取其ValuePattern的值。防跑偏遍历时剪掉Document子树网页的可访问性树巨大且惰性加载并设置节点数600与深度8上限重页面也不会卡死。严格尽力而为任何失败超时 2 秒、无地址栏、权限怪异都解析为null绝不抛出、绝不阻塞轮询循环。 与 macOS 相比这个 UIA 方案还有个额外优势连 Firefox 的地址栏也能读。另外看起来像搜索词含空格或无圆点的值会被直接丢弃避免把噪音当 URL 发射出去。轮询节奏事件流如何产生采集由 electron/collectors/active-window.ts 中的ActiveWindowCollector驱动构建逻辑见 electron/collectors/index.ts基础轮询 1000ms当最前台是浏览器时放慢到1600ms避免高频读 URL 拖慢浏览器 UI浏览器 URL 读取额外节流至少间隔 1500ms且仅在应用切换 / 标题变化时才触发三类事件被发布到事件总线app.activate—— 最前台应用变化含应用名、标题、窗口边界、进程信息app.title-change—— 同一应用内仅窗口标题变化browser.url—— 活动标签页 URL 变化含 host 字段这些事件最终写入会话的events.jsonl是后续 AI 重建意图 步骤的核心原料。平台选择逻辑在 active-window.ts#L113-L120Windows 走 Koffi 原生路径macOS 走get-windows包。自检Doctor 信号与健康检查打开录制 HUD底部就有doctor 行也可通过 IPC 调用doctor()。在 Windows 上应确认两项window trackingkoffi而非provider missingbrowser URLsuia当捕获级别包含 URL 时实操验证一次冒烟测试官方建议做一次真实录制来验证每个数据源都落到了events.jsonl完整清单见 docs/windows-capture.md。将捕获级别设为Full然后从 HUD 启动捕获或CtrlShiftR应用切换/标题在 Edge 和记事本之间 Alt-Tab应看到app.activate与app.title-change事件浏览器 URL在 Edge/Chrome 中访问两个站点应看到browser.url事件输入搜索词不应产生假事件剪贴板复制一段文字应看到clipboard.change事件视频确认产物含video.webm、video-frames.json、快照与保留帧停止会话在库中显示为recorded分析应产出连贯的意图 有序步骤⚠️ 某个数据源没产出时先看 doctor 行再看主进程日志里的一次性告警如 Browser URL capture is on but unavailable on this platform。已知限制来自官方文档 docs/windows-capture.md 的Known limitations浏览器 URL 是尽力而为的显示字符串不是精确标签页 URL——对按主机分段步骤已够用录制的终端仅限从录制浮窗打开的 PowerShell 会话ConPTY不监听已有的 PowerShell / Windows Terminal / cmd 窗口语义级 UI 事件焦点/调用/值变更经由 UI Automation在两个平台上都尚未实现Whisper 语音模型不随包分发首次使用时需批准约 252MB 的一次性下载录制与会话处理不等待它延伸阅读相关源码地图模块路径说明Windows 窗口事件捕获electron/collectors/windows-active-window.tsKoffi FFI 调用 user32/kernel32/dwmapiWindows URL 捕获electron/collectors/windows-url-provider.ts常驻 PowerShell 托管的 UI Automation 读取活动窗口轮询器electron/collectors/active-window.ts轮询节奏、事件发射URL 提供者接口electron/collectors/url-provider.tsmacOS AppleScript / Windows UIA 统一抽象Windows 捕获文档docs/windows-capture.md各源机制、前置条件、冒烟测试、打包一句话总结窗口事件靠 Koffi FFI 直连 Win32零权限零依赖浏览器 URL 靠 UI Automation 走常驻 PowerShell 宿主尽力而为、绝不阻塞——这两条腿就是 Skill Recorder 在 Windows 上捕获屏幕事件的全部秘密。【免费下载链接】skill-recorderDesktop app that records your on-screen work session and uses the GitHub Copilot CLI to reconstruct it as an intent ordered steps, then builds a reusable Skill or Automation for Microsoft Scout, Microsoft Copilot Cowork, or Copilot Studio.项目地址: https://gitcode.com/gh_mirrors/sk/skill-recorder创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
