a13nDocs

操作桌面电脑

连接共享的 macOS、Linux X11 或 Windows 桌面,通过 Envd 观测、操作并验证。

使用 Envd 让模型查看截图并操作共享桌面。WebUI 随工具结果显示每张截图。

要求与限制

平台所需桌面输入支持
macOS已登录的图形会话;屏幕录制和辅助功能权限指针手势、物理组合键、Unicode 文本、声明的滚动单位
Linux经身份验证的 X11,支持 RandR 1.5、XKB、XTEST 和 TrueColor 根 visual指针手势、物理组合键、滚轮步数;不支持字面文本输入
Windows已登录、未锁定的交互用户会话指针手势、扫描码组合键、Unicode 文本、滚轮步数

不支持 Wayland/XWayland、Windows 服务、断开的会话和登录/UAC 安全桌面。Windows 输入不能控制更高完整性级别的目标。

选择支持图像的模型和具备 dynamic_environment 工具的 agent。使用禁用的 Sandbox 和继承的出站网络。操作使用已登录用户的权限,覆盖共享桌面,而不只是工作目录。

连接桌面

  1. 在 WebUI 打开设置 → 环境 → 连接设备。
  2. 在桌面图形会话中运行显示的命令,添加启用选项:
Terminal
a13n-envd connect https://your-harness-ui.example.com --computer-use true
  1. 核对验证码,在 WebUI 批准连接。
  2. 完成下面的平台就绪步骤,保持 Envd 运行。

使用可访问的 HTTPS WebUI origin,或同机回环 HTTP。以相同命令重启可复用已配对注册。

电脑操作默认关闭,独立于命令 full_control。JSON、环境变量和优先级见守护进程配置。

等待 macOS 授权

在系统设置 → 隐私与安全性中,为 macOS 指定的进程或启动者授予屏幕录制和辅助功能权限。Envd 等待最多 120 秒,两项就绪后连接。超时或 Ctrl+C 以非零状态退出。macOS 要求时,重启启动者和 Envd。

需要更长等待时,设置 A13N_ENVD_COMPUTER_USE_PERMISSION_TIMEOUT_MS=300000。stdio 父进程须消费 stderr,并将 initialization_timeout 设为长于权限等待加启动时间:例如,默认等待 120 秒时设为 135 秒,上述等待 300 秒的配置则设为 315 秒。Python 客户端默认为十秒。

Linux X11 就绪检查

在预期 X11 会话中启动,设置 DISPLAY 和所需 XAUTHORITY。保持 X11 身份验证启用。X 服务器丢失后需要新的 Session 和截图。

使用 unit="steps",每轴最多 100 步。物理组合键遵循当前布局;Linux 没有字面文本输入。

Windows 就绪检查与输入

从要控制的桌面上的普通终端启动。锁定或断开后,手动解锁或重连,再次截图。

滚动使用 unit="steps"。即使开启显示缩放,显示几何仍采用物理像素。受保护内容可能显示为黑色。部分应用不接受 Unicode 输入,请在输入后验证。

输入前释放已按住的按键或按钮。保持 Windows 保护启用,不要为绕过失败而提升 Envd 权限。

将桌面绑定到线程

  1. 在输入区打开环境,或在对话详情 → 配置中设置下一次执行配置。
  2. 添加已连接的设备,选择已有工作目录。
  3. 将别名设为 desktop。
  4. 在允许操作中选择完全控制。此绑定预设包含设备声明的桌面操作,与守护进程 full_control 不同。
  5. 选择默认环境,或要求 agent 使用别名 desktop。
  6. 保存选择,开始新的执行。

绑定授权模型访问;只读不包含桌面操作。更改从下一次执行生效。

如需仅观测,在项目或线程配置中保存精确上限:

YAML
environment_bindings:
  - device_id: device-your-mac
    alias: desktop
    working_directory: /Users/your-account
    permission_ceiling:
      operations:
        - environment.computer.describe
        - environment.computer.observe
default_environment: desktop

替换设备 ID 和路径。只有需要控制时,才添加输入操作。

观测、操作、验证

从观测开始:

使用 desktop 环境。描述它的显示器并截取屏幕。暂时不要点击或输入。

使用返回的 observation_id 和图像像素坐标执行指针输入。键盘和文本输入使用当前前台焦点,请先点击目标字段。再次截图验证应用结果。

工具用途
computer_describe列出显示器和原生就绪状态
computer_observe截取主显示器或所选显示器;最大尺寸 256–2048 像素
computer_click, computer_move使用返回图像中的位置
computer_drag执行有界拖动并释放按钮
computer_scroll使用声明的单位;正值表示向右/向下
computer_type_text在 macOS 或 Windows 输入字面 Unicode 文本
computer_press_keys按下并释放组合键,如 ["meta", "a"]

键名包含 meta(Command/Super/Windows)、alt(Option/Alt)、enter、page_up 和 page_down。引用过期或显示布局变化需要新观测。输入结果描述原生效果和清理,不代表应用成功。对部分执行、结果不明、释放不完整或传输丢失,重试前先检查桌面。

在 WebUI 展开观测桌面查看截图。临时图像副本可能过期。及时关闭截图 reader,释放传输容量。

Python 客户端

已有就绪 EIPSession 时,使用带验证的截图 reader:

Python
async with session.observe_computer(max_dimension=1280) as reader:
    screenshot = b"".join([chunk async for chunk in reader])
    observation = reader.opened.observation
# Closing the reader releases image bytes, not the Session's geometry reference.

每个新输入动作使用新的操作上下文。用原操作身份核对不确定效果。Session 设置和传输限制见 Python EIP 客户端。

验证

可选 Linux 桌面 fixture 在临时容器中检查真实 GUI 输入和截图变化。可移植脚本化对端测试检查集成,不验证原生桌面行为。

在目标 OS 的临时应用中尝试无害输入,检查下一张截图。也要测试权限/会话丢失和显示布局变化。

本页目录