ARTICLE DETAIL

资讯详情

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

如何在 Python 或 TypeScript 应用中直接调用 Cua Driver SDK 而不经守护进程?

如何在 Python 或 TypeScript 应用中直接调用 Cua Driver SDK 而不经守护进程? 如何在 Python 或 TypeScript 应用中直接调用 Cua Driver SDK 而不经守护进程【免费下载链接】cuaScale computer-use 2.0 with open-source drivers, cross-OS fleets, and benchmarks for training, evaluation, and data generation.项目地址: https://gitcode.com/GitHub_Trending/cua/cua如果你的产品需要内建桌面自动化能力截图、读窗口、点击等又不想让自己的应用依赖cua-driver serve守护进程或 MCP 协议Cua Driver 的 Python 与 TypeScript SDK 提供了同进程路径调用CuaDriver.create()会把 Rust 运行时直接加载进导入它的进程不启动cua-driver serve不使用 IPC。这条路径适用于 Cua Driver 支持的桌面平台macOS 14Sonoma或更新的 Apple Silicon/Intel、Windows 10/11 或带交互式桌面会话的 Windows Server、以及带 X11/XWayland或显式开启的 Wayland 后端的 x86_64 Linux 桌面会话。何时选择同进程 SDKCua Driver 文档把集成方式按谁拥有运行时来划分运行时是持有权限、浏览器连接、录制和生命周期状态的那个进程你在构建的东西起步方式运行时拥有者Agent 或 harnessMCPMCP 进程或显式选择的 daemon内建 computer use 功能的应用同进程 SDK你的应用进程需要向外部 agent 暴露 MCP 的签名桌面应用App-hosted service持有权限的桌面应用本文只覆盖第二种你的应用自己拥有运行时的启动、权限、会话、取消和关闭。若外部 agent 也要连入你的签名桌面应用文档给出的替代路径是 app-hosted service见 Expose MCP from a desktop app不要在同进程 SDK 上另起第二个 host。安装 SDK 包按语言二选一python -m pip install cua-drivernpm install trycua/cua-driverPython 包名为cua-driver导入名是cua_driverTypeScript 包名为trycua/cua-driver。两个包由同一份 Rust UniFFI 契约生成方法均为异步Python 用snake_caseTypeScript 用camelCase。Python 侧的 wheel 包含生成的 UniFFI 绑定、平台相关的 Rust SDK 库和cua-driver可执行文件其中后两者是 daemon/embedded 路径用的CuaDriver.create()只需要前两者不要求可执行文件或守护进程存在。用隐式会话捕获桌面第一次有状态的调用会为该 SDK 传输创建一个隐式会话start_session是可选的会话上不存储 capture scope——每个动作调用自行指定精确的窗口或桌面目标。Pythonimport asyncio from cua_driver import ( CuaDriver, EndSessionInput, GetDesktopStateInput, ) async def main() - None: driver CuaDriver.create() try: result await driver.get_desktop_state( GetDesktopStateInput( sessionNone, screenshot_out_fileNone, ) ) if result.is_error: raise RuntimeError(result.text) print(result.images[0].mime_type) finally: await driver.end_session(EndSessionInput(sessionNone)) await driver.shutdown() asyncio.run(main())TypeScriptimport { CuaDriver, EndSessionInput, GetDesktopStateInput, } from trycua/cua-driver; const driver CuaDriver.create(undefined); try { const result await driver.getDesktopState(GetDesktopStateInput.new({})); if (result.isError) throw new Error(result.text); console.log(result.images[0]?.mimeType); } finally { await driver.endSession(EndSessionInput.new({})); await driver.shutdown(); if (uniffiDestroy in driver typeof driver.uniffiDestroy function) { driver.uniffiDestroy(); } }运行后按result.is_error/result.isError判断失败并抛出result.text成功时文档示例输出的是截图的 MIME 类型。同一传输上重复的未命名调用会复用这个隐式会话隐式会话的默认空闲 TTL 是 5 分钟过期后走与显式结束相同的清理钩子。生命周期与资源释放文档给出的规则整个应用生命周期只保留一个CuaDriver对象需要时显式结束会话shutdown()本身也会执行清理shutdown()幂等关闭后拒绝新任务但允许已受理的操作完成。两种语言的释放顺序有差异照做即可TypeScript 中shutdown()与uniffiDestroy()职责不同前者关闭运行时受理并等待已受理的操作后者立即释放生成的 UniFFI 对象句柄。JavaScript 的FinalizationRegistry只是非确定性兜底所以有序的应用按顺序调用两者。Python 的 finalization 会自动释放句柄但应用仍需await shutdown()。验证运行时状态SDK 提供几个只读检查方法PythonTypeScript返回metadata()metadata()驱动版本、协议版本和平台元数据execution_mode()executionMode()DriverExecutionModeis_available()isAvailable()运行时当前能否受理调用注意一条来自进程模型文档的硬约束桌面类入口包括CuaDriver.create()在没有交互式桌面附加时会拒绝受理动作。也就是说在 CI 容器或无桌面的会话里即使包安装成功桌面操作类调用也不会通过这属于预期行为不是安装问题。平台限制与版本边界以下几条是同进程路径下必须知道的行为边界均来自文档macOS 权限归应用所有。导入 SDK 的应用拥有 OS 权限和权限 UX。macOS 上直接调用的check_permissions即使请求prompt也只做只读检查修改 TCC 授权后需要完整重启负责的主程序才能生效。agent-cursor 叠加层受限。除非主机安装了合适的 AppKit 主线程适配器macOS 直接运行时对 agent-cursor overlay 操作返回facility_unavailable。确实需要 overlay 时文档建议改用私有 worker 或显式 service。私有 worker 是可选分支。当应用需要在受监督的子进程里使用同一份 SDK 契约时用CuaDriver.create_private_worker()/CuaDriver.createPrivateWorker()子进程经继承管道运行没有监听器、发现或重连路径关闭私有通道即结束运行时。它提供单宿主进程隔离不会创建共享桌面服务。类型化窗口 API 有版本边界。基于list_apps/list_windows/get_window_state和元素 token 点击的类型化窗口方法面向下一个 breaking release0.25 版本仅通过通用 tool 面支持 native-window 操作不暴露这些生成方法。升级时绑定与原生库要一起升级。继续深入完整示例含精确窗口发现、token 点击与二次快照验证见 Use Cua Driver in process方法、构造器和错误类型见 SDK referencecreate()、create_private_worker()与 daemon 三种执行家族的关系见 Process model集成方式选型见 Choose a Cua Driver integration。【免费下载链接】cuaScale computer-use 2.0 with open-source drivers, cross-OS fleets, and benchmarks for training, evaluation, and data generation.项目地址: https://gitcode.com/GitHub_Trending/cua/cua创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表