跳转到内容

你的第一个任务

硬件已经搭好、校准完毕;现在你只需用一句平实的英文给机械臂一个目标,看它干活。本页会把一个外部 agent——Claude Desktop——接到正在运行的服务器上,给它一行任务,并展示随之而来的真实工具调用轨迹:agent 看一眼屏幕、挑中一个框、点下去,然后再看一眼。

PhysiClaw 讲 MCP(Model Context Protocol)——这是 AI 客户端发现并调用外部工具的标准方式。任何 MCP 客户端都能用;这里我们用 Claude Desktop 来当大脑。

  1. 确认服务器已启动。在你运行 physiclaw server 的那个终端里,应当能看到端点这一行:

    PhysiClaw MCP server on http://localhost:8048/mcp
  2. 把 PhysiClaw 加到 Claude Desktop 的配置里。打开 claude_desktop_config.json (Settings → Developer → Edit Config),加入 physiclaw 服务器:

    json
    {
    "mcpServers": {
    "physiclaw": {
    "type": "http",
    "url": "http://localhost:8048/mcp"
    }
    }
    }

    这是一个 streamable-HTTP 服务器——URL 直接指向正在运行的进程,所以没有需要启动的命令,客户端这边也没什么要安装的。

  3. 重启 Claude Desktop。PhysiClaw 的十二个工具——peektapswipeunlock_phone 等等——现在会出现在客户端的工具列表里。(完整清单见 MCP 工具。)

像跟人交代事情那样跟 agent 说话——一句平实的话,而不是坐标:

Set a 10-minute timer on the phone.

这就是全部指令。你不用告诉它时钟 App 在哪,也不用说怎么进到计时器标签页——agent 会自己看屏幕、做决定,一步一步地搞定。

在这一句话背后,agent 每走一步都在跑同一个看 → 做的循环。它从不发送像素或电机坐标;它通过 peek 拿到屏幕上元素的列表,每个元素都带一个 bbox——一个 [left, top, right, bottom] 的矩形,用 01 的屏幕比例表示——然后 tap 它想点的那个框,再 peek 一次来确认。下面是一段真实轨迹:

▸ peek()
← [home screen]
id kind label bbox conf
07 icon "Clock" [0.41, 0.55, 0.49, 0.63] 0.97
08 icon "Settings" [0.51, 0.55, 0.59, 0.63] 0.96
09 icon "Photos" [0.61, 0.55, 0.69, 0.63] 0.95
▸ tap([0.41, 0.55, 0.49, 0.63]) # the "Clock" box
← tapped — `peek` to verify and plan the next move
▸ peek()
← [Clock app, World Clock tab]
id kind label bbox conf
11 text "World Clock" [0.05, 0.92, 0.25, 0.98] 0.98
12 text "Timer" [0.74, 0.92, 0.95, 0.98] 0.97
▸ tap([0.74, 0.92, 0.95, 0.98]) # the "Timer" tab
← tapped — `peek` to verify and plan the next move
▸ peek()
← [Timer tab — hour / min / sec wheels, "10" already centered on minutes]
id kind label bbox conf
21 text "10" [0.40, 0.40, 0.50, 0.50] 0.95
22 text "Start" [0.55, 0.78, 0.85, 0.88] 0.98
▸ tap([0.55, 0.78, 0.85, 0.88]) # the green "Start" button
← tapped — `peek` to verify and plan the next move
▸ peek()
← [Timer running — "09:58" counting down, "Cancel" / "Pause" shown]
✓ goal reached: a 10-minute timer is running.

从头读到尾,节奏一目了然:看一眼、挑一个框、点下去、再看一眼。 每次 tap 都落在上一次 peek 真正返回的某个 bbox 上,每次 tap 之后又紧跟一次全新的 peek 去检查结果——正是这种“再看一眼”,让 agent 能察觉到点偏了并重试,而不是抱着一个错误的假设一路猛冲。

  • 连续两次完全相同的 peek 列表 → 点击落到了空白处,或者框的位置略有偏差。agent 会根据新的列表重新瞄准;如果你正盯着看,这是正常的自我纠错,不是崩溃。
  • “phone unlock failed” → 手机又锁上了。把锁屏密码设成 111111unlock_phone 用的那个一次性密码),或关掉自动锁定,然后再让它试一次。
  • 客户端里没有工具 → 客户端启动时服务器没在跑,或者 URL 写错了。确认端点那一行、修正配置、重启客户端。

更多故障形态及解决办法见排障