--- summary: "专用机器人 macOS 用户、通过 Tailscale 的远程 Mac、多帐户和 DM 历史模式" read_when: - "选择在何处运行网关和 imsg" - "将机器人流量与个人 iMessage 身份隔离" - "运行多个 iMessage 账户" title: "iMessage 部署模式" sidebarTitle: "部署模式" --- 在登录的消息帐户旁边运行 `imsg` 的拓扑,以及每个帐户所需的配置。 ## 部署模式 使用专用 Apple ID 和 macOS 用户,这样 bot 流量就会与个人 Messages 配置文件隔离开来。 典型流程: 1. Create/sign 位于专用 macOS 用户中。 2. 在该用户中使用 bot Apple ID 登录 Messages。 3. 在该用户中安装 `imsg`。 4. 创建一个 SSH 包装器,以便 OpenClaw 可以在该用户上下文中运行 `imsg`。 5. 将 `channels.imessage.accounts..cliPath` 和 `.dbPath` 指向该用户配置文件。 首次运行时,可能需要在该 bot 用户会话中进行 GUI 授权(Automation + Full Disk Access)。 常见拓扑: - 网关运行在 Linux/VM 上 - iMessage + `imsg` 运行在 tailnet 中的一台 Mac 上 - `cliPath` 包装器使用 SSH 运行 `imsg` - `remoteHost` 通过 SSH/SCP 启用入站获取以及仅限所有者的出站暂存 示例: ```json5 { channels: { imessage: { enabled: true, cliPath: "/home/openclaw/.openclaw/scripts/imsg-ssh", remoteHost: "bot@mac-mini.tailnet-1234.ts.net", includeAttachments: true, dbPath: "/Users/bot/Library/Messages/chat.db", }, }, } ``` ```bash #!/usr/bin/env bash exec ssh -T bot@mac-mini.tailnet-1234.ts.net imsg "$@" ``` `cliPath` 是网关本地的绝对包装器路径。`remoteHost` 和 `dbPath` 指向 Messages Mac;不要使用网关用户的主目录重写远程数据库路径。 使用 SSH 键,因此 SSH 和 SCP 都是非交互式的。首先信任主机密钥(例如 `ssh bot@mac-mini.tailnet-1234.ts.net`),以便填充 `known_hosts`。 iMessage 支持在 `channels.imessage.accounts` 下为每个账号进行配置。 每个帐户都可以覆盖 `cliPath`、`dbPath`、`allowFrom`、`dmPolicy`、`groupPolicy`、`mediaMaxMb`、历史记录设置和附件根白名单等字段。省略的账户策略继承频道根;明确的账户政策获胜。如果两个范围均未设置它们,则 DM 使用 `pairing`,组使用 `allowlist`。 将 `channels.imessage.dmHistoryLimit` 设为一个值,可使用该会话最近解码过的 `imsg` 历史为新的直接消息会话播种。使用 `channels.imessage.dms[""].historyLimit` 可按发送者覆盖,包括设置为 `0` 以禁用该发送者的历史。 iMessage DM 历史会按需从 `imsg` 获取。保持未设置 `dmHistoryLimit` 会禁用全局 DM 历史播种,但为某个发送者设置正值的 `channels.imessage.dms[""].historyLimit` 仍会为该发送者启用播种。