iMessage(旧版:imsg)
状态:旧版外部 CLI 集成。网关启动imsg rpc,通过 stdio 以 JSON-RPC 通信(没有独立守护进程或端口)。
快速设置
要求和权限(macOS)
- 执行
imsg的 Mac 必须已登录 Messages。 - 运行 OpenClaw/
imsg的进程上下文必须具有完整磁盘访问权限(以访问 Messages 数据库)。 - 发送消息需要 Messages.app 的自动化权限。
访问控制和路由
- 私信策略
- 群组策略 + 提及
- 会话和确定性回复
channels.imessage.dmPolicy 控制私信类型:pairing(默认)allowlistopen(要求allowFrom包含"*")disabled
channels.imessage.allowFrom。允许名单条目可以是句柄或聊天目标(chat_id:*,chat_guid:*,chat_identifier:*)。部署模式
专用机器人 macOS 用户(独立 iMessage 身份)
专用机器人 macOS 用户(独立 iMessage 身份)
使用专用 Apple ID 和 macOS 用户,使机器人消息流与个人 Messages 配置隔离。通常流程:
- 创建/登录专用 macOS 用户。
- 在该用户中使用机器人 Apple ID 登录 Messages。
- 在该用户中安装
imsg。 - 创建 SSH 包装脚本,使 OpenClaw 能在该用户上下文运行
imsg。 - 将
channels.imessage.accounts.<id>.cliPath和.dbPath指向该用户配置。
通过 Tailscale 远程 Mac(示例)
通过 Tailscale 远程 Mac(示例)
常见拓扑:请使用 SSH 密钥以实现 SSH 和 SCP 的无交互认证。
确保可信任主机密钥(例如执行
- 网关运行在 Linux/虚拟机上
- iMessage +
imsg运行在 tailnet 中的 Mac 上 cliPath包装脚本使用 SSH 运行imsgremoteHost支持 SCP 附件获取
ssh bot@mac-mini.tailnet-1234.ts.net),以便填充 known_hosts。多账号模式
多账号模式
iMessage 支持在
channels.imessage.accounts 下进行多账号配置。每个账号可覆盖如 cliPath、dbPath、allowFrom、groupPolicy、mediaMaxMb、历史设置及附件根目录允许名单等字段。媒体、分块及投递目标
附件和媒体
附件和媒体
- 可选接收附件:
channels.imessage.includeAttachments - 设置
remoteHost时可通过 SCP 获取远程附件路径 - 附件路径需符合允许根目录:
channels.imessage.attachmentRoots(本地)channels.imessage.remoteAttachmentRoots(远程 SCP 模式)- 默认模式:
/Users/*/Library/Messages/Attachments
- SCP 使用严格的主机密钥检查(
StrictHostKeyChecking=yes) - 发送媒体大小限制由
channels.imessage.mediaMaxMb控制(默认 16 MB)
出站分块
出站分块
- 文本分块限制:
channels.imessage.textChunkLimit(默认 4000) - 分块模式:
channels.imessage.chunkModelength(默认)newline(优先按段落分割)
地址格式
地址格式
推荐的显式目标格式:
chat_id:123(推荐用于稳定路由)chat_guid:...chat_identifier:...
imessage:+1555...sms:+1555...user@example.com
配置写入
iMessage 默认允许通道发起的配置写入(针对启用了commands.config: true 的 /config set|unset 命令)。
禁用示例:
故障排查
找不到 imsg 或 RPC 不支持
找不到 imsg 或 RPC 不支持
验证二进制及 RPC 支持:若探测显示不支持 RPC,请更新
imsg。私信被忽略
私信被忽略
检查:
channels.imessage.dmPolicychannels.imessage.allowFrom- 配对批准(
openclaw pairing list imessage)
群组消息被忽略
群组消息被忽略
检查:
channels.imessage.groupPolicychannels.imessage.groupAllowFromchannels.imessage.groups允许名单规则- 提及模式配置(
agents.list[].groupChat.mentionPatterns)
远程附件失败
远程附件失败
检查:
channels.imessage.remoteHostchannels.imessage.remoteAttachmentRoots- 网关主机的 SSH/SCP 密钥认证
- 网关主机
~/.ssh/known_hosts是否包含主机密钥 - 运行 Messages 的 Mac 上远程路径的可读性
错过 macOS 权限提示
错过 macOS 权限提示
在相同用户/会话上下文的交互式 GUI 终端中重新运行并批准权限:确认运行 OpenClaw/
imsg 的进程上下文已授予完整磁盘访问和自动化权限。