ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Orca 的 orca-emulator 技能如何工作:发现桩、版本匹配指南与模拟器命令面

Orca 的 orca-emulator 技能如何工作:发现桩、版本匹配指南与模拟器命令面 Orca 的 orca-emulator 技能如何工作发现桩、版本匹配指南与模拟器命令面【免费下载链接】orcaOrca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.项目地址: https://gitcode.com/GitHub_Trending/orca48/orca本篇围绕 skills/orca-emulator/SKILL.md 展开讲清 Orca 项目中 iOS 模拟器控制技能的两层结构仓库里落地的“发现桩”discovery stub只负责路由与引导而完整、与二进制版本匹配的参考指南由orca可执行文件本身通过ORCA skills get orca-emulator提供。读完本文你能掌握在 Orca 会话中正确解析 CLI 可执行文件的方法、加载版本匹配指南的标准流程、老版本二进制的有限回退策略以及这一机制在源码中的生成管线与命令规格依据。1. orca-emulator 技能解决什么问题orca-emulator技能面向在 Orca 应用内驱动移动端iOS模拟器 / 模拟器流的场景点击taps、手势gestures、键入typing、硬件按键hardware buttons、摄像头注入camera injection、运行时权限permissions、无障碍树accessibility tree等操作——全程可在 Orca 的模拟器面板emulator pane中看到实时画面。技能 frontmatter 中给出的定位是在 Orca 内部运行 agent 时优先使用orcaCLI 的模拟器命令面而不是裸的npx serve-sim或直接simctl——因为 Orca 这一层负责设备范围device scoping、helper 生命周期helper lifecycle和 worktree 上下文worktree context。它与负责终端、worktree 和内嵌浏览器的orca-cli技能互补参见 skills/orca-cli/SKILL.mdAndroid 侧则由 skills/orca-emulator-android/SKILL.md 覆盖。2. 为什么 SKILL.md 本身只是“发现桩”打开 skills/orca-emulator/SKILL.md 会看到一句关键声明This file is a discovery stub, not the usage guide. The full, version-matched Orca emulator reference is served by theorcabinary itself — kept out of this file on purpose so it can never drift from the binary that will actually run your commands.也就是说这个文件被刻意设计得“薄”它不提供子命令清单只提供三条能力——说明何时该启用该技能、如何解析本次会话的 CLI 可执行文件、以及如何在运行任何模拟器命令之前加载完整指南。这样做的收益是安装到各 agent 目录的桩文件永远不可能与将要执行命令的那个二进制漂移drift。从源码结构看这不是人工约定而是生成产物。config/scripts/generate-bundled-skill-guides.mjs 维护了一个STUB_TOPICS列表包含orca-emulator其注释写道a stubbed topic ships a hybrid discovery stub as its installable projection whileorca skills get topicstill serves the full version-matched guide from the binary具体管线在 buildArtifacts 中完整指南源文件位于skill-guides/orca-emulator.md必须与CANONICAL_GUIDE_NAMES清单精确一致桩正文位于 skill-stubs/orca-emulator.mdcomposeStubProjection 复用指南自身的 frontmattername与description必须与指南逐字节一致保持发现面不变只替换正文为桩内容投影写入 skills/orca-emulator/SKILL.md完整指南同时被序列化进 src/cli/bundled-skill-guides.ts文件头部标注 “Generated by config/scripts/generate-bundled-skill-guides.mjs. Do not edit.”供 CLI 在运行时提供。生成器还带防漂移校验不带--write运行时会执行verifyArtifacts逐字节比对生成物与仓库现有文件发现不一致即报 “Generated bundled skill guides are stale”。3. 会话内解析 CLI 可执行文件桩文档要求“一次选择、全程复用”同一可执行文件判定顺序如下与 skills/orca-emulator/SKILL.md 的 “Resolve the CLI for this session” 一节一致若设置了环境变量ORCA_CLI_COMMAND直接使用其值。Orca 会为受管理的 WSL 会话导出该变量。否则在暴露ORCA_DEV_REPO_ROOT的开发检出dev checkout中使用orca-dev。否则在 Linux 且位于 Orca 受管终端之外时使用orca-ide。切勿在那里直接运行裸orca——在 Orca 终端之外orca通常会解析到 GNOME 的 Orca 读屏器/usr/bin/orca并会在用户机器上开始语音播报。其余情况使用orca。文档中反复出现的ORCA是一个文档占位符运行前必须用你解析出的可执行文件替换它不要创建 shell 变量、也不要字面执行ORCA。该替换约定在 POSIX shell、PowerShell 和 cmd.exe 中行为一致命令块刻意保持 shell 中立。还有一条硬性失败策略若选定的可执行文件无法运行报告其精确错误并停止不要退而求其次换另一个可执行文件因为那可能静默地把命令打到另一个 Orca 构建上例如开发会话误达生产 CLI。4. 运行模拟器命令前加载完整指南桩文档规定的加载方式是ORCA skills get orca-emulator这会由即将处理你后续命令的那个二进制打印出完整的、版本匹配的指南——涵盖设备启动、点击与手势、键入、硬件按键、摄像头注入、权限、无障碍树等内容。文档明确要求先读完整指南再执行你真正需要的那条具体命令。配套的行为约束不要凭记忆或缓存的桩副本猜测子命令和 flag。它们在不同 Orca 版本之间会变桩文件已刻意不再列出用ORCA status --json确认应用在运行必要时用ORCA open --json启动agent 驱动的调用一律优先--json。skills get的实现位于 src/cli/handlers/skills.tshandler 懒加载../bundled-skill-guides.js注释解释原因是避免大表拖累无关命令的启动路径通过 requireTopic 按名称或别名查表别名是“兼容性账本”见生成器中GUIDE_ALIASES的注释--full时输出fullMarkdown--json时输出{ name, full, markdown }信封。这也解释了桩文档中“老版本不识别skills get”这种失败模式从何而来——该命令是较新二进制才有的表面。5. 老版本 Orca 不识别skills get时的回退桩文档专门用一节定义了唯一允许的回退条件苛刻只有当所选二进制明确报告skills get是未知命令时才能走这条路径。其他任何失败都不是“二进制太老”的证据——应如实报告而不是猜测或换可执行文件。对确认属于“指南前”pre-guide二进制的场景只允许执行这个有界、只读的启动探查ORCA status --json ORCA emulator list --json随后告知用户更新 Orca 即可通过ORCA skills get orca-emulator恢复完整的版本匹配指南。超出这两条命令的范围应向用户提问而不是猜测该老版本二进制可能不支持的命令面。6. 完整指南的内容边界由二进制提供桩只做路由orca skills get orca-emulator输出的完整指南源见 skill-guides/orca-emulator.md内嵌于 src/cli/bundled-skill-guides.ts覆盖了桩文档不承载的实操细节要点包括架构心智模型orca emulator ...命令经 RPC 到达主进程的 EmulatorBridgebridge 启动并持有 serve-sim helper 进程每设备一个并维护每个 worktree 的“活动模拟器”状态使无限定命令“开箱即用”helper 通过 WebSocket 控制通道驱动模拟器帧缓冲走 60fps 的 H.264/MJPEG 流渲染进程用 serve-sim 客户端消费该流作为实时面板。常见操作表list、attach可--focus默认不抢焦点、tap归一化 0..1 坐标单击优先于 gesture、gesturebegin/move/end 序列、type仅 US ASCII、buttonhome、swipe_home、app_switcher、lock、siri、side_button、rotate、camerawebcam/file/placeholder可能重启目标 App、permissionsgrant/revoke/reset/list、axserve-sim 原始 AX 树最多 500 节点frame 归一化 0..1点击元素取其 frame 中心、exec原始透传命令串里不需要serve-sim前缀bridge 会注入活动设备上下文、kill。关键陷阱单击优先用tapgesture 的 begin/end 分离可能因 WS 开销被解释为长按坐标永远是归一化 0..1左上原点绝不使用像素每个 worktree 只有一个“活动”模拟器类比活动浏览器标签type仅 US 键盘摄像头注入常需重启目标 App私有 APISimulatorKit 等对 Xcode 版本敏感。目标寻址默认是当前 worktree 的活动模拟器显式--worktree id:repoId::path或active、--device udid|namebridge 会尽早把名称解析成 UDID规避 serve-sim 的一个控制端缺陷、--emulator idlist 返回的 Orca 生成 id适合脚本持久化--worktree all仅用于 list。前置条件macOS 主机 Xcode Command Line Toolsxcrun --version、已启动的模拟器、Node 可用摄像头注入完整功能建议 macOS 14缺失时 Orca 会给出明确错误。7. 模拟器命令面的实际规格CLI 命令注册在 src/cli/specs/emulator.ts与指南描述相互印证。当前实现的命令面包括命令用途主要 flagemulator list列出可用/运行中的模拟器Orca 管理 裸 serve-sim--worktreeemulator devices跨 iOS 与 Android 列出所有设备/AVD--worktreeemulator attach [device]附加/启动 helper 并设为该 worktree 活动--focus--device--worktreeemulator tap x y归一化 0..1 坐标单击单击首选--device--emulator--worktreeemulator type text键入文本仅 US ASCII同上emulator gesture json多点手势序列同上emulator button name硬件按键home、side_button 等同上emulator rotate orientation旋转设备同上emulator exec --command cmd原始透传如tap 0.5 0.7、ca-debug blended on同上emulator kill停止某设备的 helper--device--emulator--worktreeemulator shutdown停止 helper 并关机模拟器设备同上emulator install apkPath安装 APKAndroid--reinstallemulator launch package启动 Android 应用可带--activity同上emulator permissions op ...Android 运行时权限 grant/revoke/reset--deviceemulator ax无障碍树Android uiautomatoriOS serve-sim AXframe 0..1--device--worktreeemulator logcatAndroid 一次性 logcat 抓取--lines注意 iOS 与 Android 共享同一emulator命名空间由设备类型路由到不同后端ax在两个平台都可用但输出格式不同。agent 的典型工作循环是ORCA status --json→ORCA emulator list --json→ORCA emulator attach iPhone 16 Pro --json然后tap/type/button等操作配合 Orca 实时面板观察结果操作后需要重新获取状态类似浏览器 snapshot-interact 循环。结束工作时用ORCA emulator kill --device ... --json或依赖 Orca 退出时的孤儿清理。8. 小结一个可复用的“技能分发”模式orca-emulator 技能体现了 Orca 对 agent 技能分发的一条设计原则发现面与内容面分离。仓库里可安装的 skills/orca-emulator/SKILL.md 由生成器从 skill-stubs/orca-emulator.md 投影而来只承担“何时启用、如何解析 CLI、如何取指南、失败时如何停止”四件事真正随版本演化的命令参考内嵌在二进制中由ORCA skills get orca-emulator按需吐出。对写 agent 提示词或技能文件的人来说这是一条值得借鉴的防漂移策略把会随发布变化的细节从静态文件移入运行时自描述静态文件只保留不变的引导逻辑。【免费下载链接】orcaOrca is the ADE for working with a fleet of parallel agents. Run any coding agent with your own subscription. Available on desktop, mobile and remote runtime.项目地址: https://gitcode.com/GitHub_Trending/orca48/orca创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表