Files
Moltbot/docs/zh-CN/nodes/camera.md
Josh Palmer 5676a6b38d Docs: normalize zh-CN terminology + tone
What: switch to 你/你的 tone; standardize Skills/Gateway网关/local loopback/私信 wording
Why: align zh-CN docs with issue 6995 feedback + idiomatic tech style
Tests: pnpm docs:build
2026-02-02 16:38:25 +01:00

5.8 KiB
Raw Blame History

read_when, summary, title, x-i18n
read_when summary title x-i18n
在 iOS 节点或 macOS 上添加或修改相机捕获功能
扩展智能体可访问的 MEDIA 临时文件工作流
相机捕获iOS 节点 + macOS 应用供智能体使用照片jpg和短视频片段mp4 相机捕获
generated_at model provider source_hash source_path workflow
2026-02-01T21:17:51Z claude-opus-4-5 pi b4d5f5ecbab6f70597cf1e1f9cc5f7f54681253bd747442db16cc681203b5813 nodes/camera.md 15

相机捕获(智能体)

OpenClaw 支持智能体工作流中的相机捕获

  • iOS 节点(通过 Gateway网关配对通过 node.invoke 捕获照片jpg)或短视频片段mp4,可选音频)。
  • Android 节点(通过 Gateway网关配对通过 node.invoke 捕获照片jpg)或短视频片段mp4,可选音频)。
  • macOS 应用(通过 Gateway网关的节点通过 node.invoke 捕获照片jpg)或短视频片段mp4,可选音频)。

所有相机访问都受用户控制的设置保护。

iOS 节点

用户设置(默认开启)

  • iOS 设置标签页 → 相机允许相机camera.enabled
    • 默认:开启(缺少该键时视为已启用)。
    • 关闭时:camera.* 命令返回 CAMERA_DISABLED

命令(通过 Gateway网关 node.invoke

  • camera.list

    • 响应载荷:
      • devices{ id, name, position, deviceType } 数组
  • camera.snap

    • 参数:
      • facingfront|back(默认:front
      • maxWidth数字可选iOS 节点默认 1600
      • quality0..1(可选;默认 0.9
      • format:当前为 jpg
      • delayMs:数字(可选;默认 0
      • deviceId:字符串(可选;来自 camera.list
    • 响应载荷:
      • format: "jpg"
      • base64: "<...>"
      • widthheight
    • 载荷保护:照片会被重新压缩,以将 base64 载荷控制在 5 MB 以内。
  • camera.clip

    • 参数:
      • facingfront|back(默认:front
      • durationMs:数字(默认 3000,上限为 60000
      • includeAudio:布尔值(默认 true
      • format:当前为 mp4
      • deviceId:字符串(可选;来自 camera.list
    • 响应载荷:
      • format: "mp4"
      • base64: "<...>"
      • durationMs
      • hasAudio

前台要求

canvas.* 类似iOS 节点仅在前台允许 camera.* 命令。后台调用返回 NODE_BACKGROUND_UNAVAILABLE

CLI 辅助工具(临时文件 + MEDIA

获取附件最简单的方式是使用 CLI 辅助工具,它会将解码后的媒体写入临时文件并输出 MEDIA:<path>

示例:

openclaw nodes camera snap --node <id>               # 默认前后摄像头都拍摄2 行 MEDIA 输出)
openclaw nodes camera snap --node <id> --facing front
openclaw nodes camera clip --node <id> --duration 3000
openclaw nodes camera clip --node <id> --no-audio

注意事项:

  • nodes camera snap 默认拍摄两个朝向,以便为智能体提供两个视角。
  • 输出文件是临时的(位于操作系统临时目录中),除非你自行构建包装器。

Android 节点

用户设置(默认开启)

  • Android 设置面板 → 相机允许相机camera.enabled
    • 默认:开启(缺少该键时视为已启用)。
    • 关闭时:camera.* 命令返回 CAMERA_DISABLED

权限

  • Android 需要运行时权限:
    • CAMERA:用于 camera.snapcamera.clip
    • RECORD_AUDIO:用于 includeAudio=true 时的 camera.clip

如果缺少权限,应用会在可能时弹出提示;如果被拒绝,camera.* 请求将以 *_PERMISSION_REQUIRED 错误失败。

前台要求

canvas.* 类似Android 节点仅在前台允许 camera.* 命令。后台调用返回 NODE_BACKGROUND_UNAVAILABLE

载荷保护

照片会被重新压缩,以将 base64 载荷控制在 5 MB 以内。

macOS 应用

用户设置(默认关闭)

macOS 伴侣应用提供一个复选框:

  • 设置 → 通用 → 允许相机openclaw.cameraEnabled
    • 默认:关闭
    • 关闭时:相机请求返回"Camera disabled by user"。

CLI 辅助工具(节点调用)

使用主 openclaw CLI 在 macOS 节点上调用相机命令。

示例:

openclaw nodes camera list --node <id>            # 列出相机 ID
openclaw nodes camera snap --node <id>            # 输出 MEDIA:<path>
openclaw nodes camera snap --node <id> --max-width 1280
openclaw nodes camera snap --node <id> --delay-ms 2000
openclaw nodes camera snap --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --duration 10s          # 输出 MEDIA:<path>
openclaw nodes camera clip --node <id> --duration-ms 3000      # 输出 MEDIA:<path>(旧版标志)
openclaw nodes camera clip --node <id> --device-id <id>
openclaw nodes camera clip --node <id> --no-audio

注意事项:

  • openclaw nodes camera snap 默认 maxWidth=1600,除非被覆盖。
  • 在 macOS 上,camera.snap 在预热/曝光稳定后等待 delayMs(默认 2000ms再进行捕获。
  • 照片载荷会被重新压缩,以将 base64 控制在 5 MB 以内。

安全性 + 实际限制

  • 相机和麦克风访问会触发常规的操作系统权限提示(且需要在 Info.plist 中添加用途说明字符串)。
  • 视频片段有长度上限(当前 <= 60s以避免过大的节点载荷base64 开销 + 消息大小限制)。

macOS 屏幕录制(操作系统级别)

如需屏幕录制(非相机),请使用 macOS 伴侣应用:

openclaw nodes screen record --node <id> --duration 10s --fps 15   # 输出 MEDIA:<path>

注意事项:

  • 需要 macOS 屏幕录制权限TCC