本页内容

本页内容

主流消息传递

iMessage 故障排除

针对 iMessage 通道的症状优先修复,以及配置参考链接。

故障排查

未找到 imsg 或 RPC 不受支持

验证二进制文件和 RPC 支持:

bash
imsg rpc --helpimsg status --jsonopenclaw channels status --probe

如果检查报告 RPC 不受支持,请更新 imsg。如果私有 API 操作不可用,请在登录的 macOS 用户会话中运行 imsg launch 并再次检查。如果网关未在 macOS 上运行,请使用 SSH](/channels/imessage/setup#remote-mac-over-ssh) 设置上的 [Remote Mac,而不是默认的本地 imsg 路径。

消息已发送,但入站 iMessage 未到达

首先确认消息是否到达了本地 Mac。如果 chat.db 没有变化,即使 imsg status --json 报告桥接器健康,OpenClaw 也无法收到该消息。

bash
imsg chats --limit 10 --jsonimsg watch --chat-id <chat-id> --jsonsqlite3 ~/Library/Messages/chat.db \  "select datetime(max(date)/1000000000 + 978307200, 'unixepoch', 'localtime'), max(ROWID) from message;"

如果手机发送的消息没有创建新的行,请先修复 macOS Messages 和 Apple Push 层,再修改 OpenClaw 配置。一次性的服务刷新通常就足够了:

bash
launchctl kickstart -k system/com.apple.apsdlaunchctl kickstart -k gui/$(id -u)/com.apple.CommCenterlaunchctl kickstart -k gui/$(id -u)/com.apple.identityservicesdlaunchctl kickstart -k gui/$(id -u)/com.apple.imagentimsg launchopenclaw gateway restart

从手机发送一条新的 iMessage,并在调试 OpenClaw 会话之前确认出现了新的 chat.db 行或 imsg watch 事件。不要把这当作周期性的桥接器重启循环来运行;在工作进行中反复执行 imsg launch 加上网关重启,可能会中断投递并让正在运行中的通道会话悬空。

网关未在 macOS 上运行

默认 cliPath: "imsg" 必须在登录消息的 Mac 上运行。在 Linux 或 Windows 上,将 channels.imessage.cliPath 设置为通过 SSH 连接到该 Mac 并运行 imsg "$@" 的包装器脚本。

bash
#!/usr/bin/env bashexec ssh -T messages-mac imsg "$@"

然后运行:

bash
openclaw channels status --probe --channel imessage
DM 被忽略

检查:

  • channels.imessage.dmPolicy
  • channels.imessage.allowFrom
  • 配对批准(openclaw pairing list imessage)
群组消息被忽略

检查:

  • channels.imessage.groupPolicy
  • channels.imessage.groupAllowFrom
  • channels.imessage.groups 白名单行为
  • 提及门控:显式模式或路由代理的身份 name/emoji;在有效根或帐户 groups 映射中为聊天设置 requireMention: false,以处理来自允许发件人的所有消息
远程附件失败

检查:

  • channels.imessage.remoteHost
  • channels.imessage.remoteAttachmentRoots
  • 网关主机上的 SSH/SCP 密钥认证
  • 网关主机的 ~/.ssh/known_hosts 中是否存在主机密钥
  • 运行 Messages 的 Mac 上远程路径是否可读
macOS 权限提示被错过

在同一 user/session 上下文中的交互式 GUI 终端中重新运行并批准提示:

bash
imsg chats --limit 1imsg send <handle> "test"

确认为运行 OpenClaw/imsg. 的进程上下文授予完全磁盘访问 + 自动化

配置参考指针

相关内容

本页有帮助吗?