通过OpenClaw(原Moltbot、Clawdbot)调用IMessage

更新时间:
复制为 MD 格式

基于 Linux 部署 OpenClaw 网关,通过 Tailscale 构建安全隧道互联 Mac,实现通过OpenClaw管理Mac上的iMessage。

架构

┌──────────────────────────────┐          SSH (imsg rpc)          ┌──────────────────────────┐
│ Gateway host (Linux/VM)      │──────────────────────────────────▶│ Mac with Messages + imsg │
│ - clawdbot gateway           │          SCP (attachments)        │ - Messages signed in     │
│ - channels.imessage.cliPath  │◀──────────────────────────────────│ - Remote Login enabled   │
└──────────────────────────────┘                                   └──────────────────────────┘
              ▲
              │ Tailscale tailnet (hostname or 100.x.y.z)
              ▼
        user@gateway-host

计费说明

在轻量应用服务器上部署并使用OpenClaw服务将产生以下费用:

  • 轻量应用服务器费用:参见轻量应用服务器计费概述

  • 模型调用费用:目前模型调用费用来自于用户自己选择的模型供应厂商和对应模型的计费。

操作步骤

Tailscale配置

  1. Mac和服务器需要配置Tailscale,进行网络的打通。首先需要在Tailscale进行注册。

  2. Mac下载安装Tailscale,下载地址

    要求 macOS Monterey 12.0 或更高版本。也可通过 macOS App Store 下载 Tailscale。

  3. 安装后,通过命令行启动:

    /Applications/Tailscale.app/Contents/MacOS/Tailscale up
  4. Linux服务器上安装Tailscale,进入地址,获得脚本并在Linux操作系统中执行。

    在 Tailscale 控制台 Machines 页面,单击右上角 Add device 按钮,在下拉菜单中选择 Linux server,获取安装脚本。

    设置 Auth key expiration7 days(可选 1–90 天),然后单击 Generate install script 按钮生成安装脚本。

  5. 执行完成后,MacLinux位于一个局域网里,可以互相通信。

    在 Tailscale 管理控制台的 Machines 页面,两台设备均显示为 Connected 状态,确认组网成功。

  6. 发现Linux中的DNS会被Tailscale覆盖导致网络不通,所以需要配置DNS,需要配置NameServer,这里用1.1.1.1或者8.8.8.8

    Tailscale管理控制台顶部导航栏中,单击 DNS 选项卡进入DNS配置页面。

    在 Tailscale 管理控制台的 Nameservers 页面,Global nameservers 区域中添加 Google Public DNS 和 Cloudflare Public DNS,并开启 Override DNS servers 开关。

Mac配置

  1. 需要打开Mac的远程连接权限:基础设置 > 通用 > 共享 > 远程连接

  2. sshd-keygen-wrapper赋予权限:系统设置 > 隐私与安全性 > 完全磁盘访问权限

  3. 需要确保Mac上的IMessage处于登录状态。

Clawdbot配置

  1. 需要关注的配置文件/root/.clawdbot/clawdbot.json,在其中加入channel的配置。

    {
      "channels": {
        "imessage": {
          "enabled": true,
          "cliPath": "/root/.clawdbot/scripts/imsg-ssh",
          "dbPath": "/Users/{{YOUR_USER_NAME}}/Library/Messages/chat.db",
          "remoteHost": "{{YOUR_USER_NAME}}@{{YOUR_MAC_MAGIC_DNS}}",
          "dmPolicy": "pairing",
          "groupPolicy": "allowlist",
          "includeAttachments": true
        }
      }
    }

    其中需要重点关注以下参数:

    • YOUR_USER_NAME:替换为Mac的用户名。

    • YOUR_MAC_MAGIC_DNS:替换为MacTailscale中的Magic DNS。

    登录 Tailscale 管理控制台,进入 Machines 页面,在搜索框中输入目标 Mac 的设备名称,下拉列表会显示该设备的多种地址格式(主机名、MagicDNS 域名、IPv6 地址、IPv4 地址),其中带有 tailnet 域名后缀的条目(格式类似 macbook-pro.your-tailnet.ts.net)即为 MagicDNS 地址,将其复制并填入 remoteHost 配置项。

  2. 新增/root/.clawdbot/scripts/imsg-ssh,负责通过ssh将命令转发到Mac。{{YOUR_USER_NAME}}@{{YOUR_MAC_MAGIC_DNS}}要替换为上一步获取的。另外,需要给这个文件加执行权限。

    #!/usr/bin/env bash
    exec ssh -T {{YOUR_USER_NAME}}@{{YOUR_MAC_MAGIC_DNS}} /usr/local/bin/imsg "$@"
  3. 目前可通过ssh {{YOUR_USER_NAME}}@{{YOUR_MAC_MAGIC_DNS}}通过密码远程连接到Mac了,可以配置从Linux服务器免密登录到MacSSH密钥认证。

  4. 启动并初始化gateway:

    cd /home/clawdbot/
    pnpm clawdbot onboard --install-daemon

结果展示

  1. 通过TUI连接Chat。

  2. 输入:通过IMessage给+86188xxxxxxxx发送一首诗,可以看到Mac向指定账号发送了一首诗。

    如果您需要进一步的帮助,请告诉我!
    Wake up, my friend!
    Hello! I'm awake. How can I assist you today?
    你是谁
    我是您的个人助手,可以帮助您处理各种任务,比如发送消息、管理日程、查找信息等。如果您有任何需要帮助的地方,请随时告诉我!
    通过 IMessage给 +86188xxx 一首李白的诗
    已通过iMessage向+86188xxx发送了李白的《静夜思》:
    静夜思
    床前明月光,
    疑是地上霜。
    举头望明月,
    低头思故乡。
    —— 李白
    connected | idle
    agent main | session main (imessage:+86188xxx) | qwen-portal...